RETEX Smart Air Box integration

Suite a l’achat de Smart Air Box

image
j’ai du suivre la procédure d’intégration de zigbee2mqtt pour que ce produit soit reconnu.

à faire :
créer dans le même dossier que configuration.yaml
un fichier SEA802-Zigbee.js
contenu du fichier :
edit swap du dp 2 et 22

const fz = require("zigbee-herdsman-converters/converters/fromZigbee");
const tz = require("zigbee-herdsman-converters/converters/toZigbee");
const exposes = require("zigbee-herdsman-converters/lib/exposes");
const {
  calibrateAndPrecisionRoundOptions,
} = require("zigbee-herdsman-converters/lib/utils");
const reporting = require("zigbee-herdsman-converters/lib/reporting");
const extend = require("zigbee-herdsman-converters/lib/extend");
const tuya = require("zigbee-herdsman-converters/lib/tuya");
const e = exposes.presets;
const ea = exposes.access;

const definition = {
  // Since a lot of Tuya devices use the same modelID, but use different data points
  // it's usually necessary to provide a fingerprint instead of a zigbeeModel
  fingerprint: [
    {
      // The model ID from: Device with modelID 'TS0601' is not supported
      // You may need to add \u0000 at the end of the name in some cases
      modelID: "TS0601",
      // The manufacturer name from: Device with modelID 'TS0601' is not supported.
      // manufacturerName: "_TZE200_8ygsuhe1",
      manufacturerName: "_TZE200_ryfmq5rl",
    },
  ],
  model: "SEA802-Zigbee",
  vendor: "Tuya",
  description: "Smart air box",
  supports: "temperature, humidity",
  fromZigbee: [
    fz.ignore_basic_report,
    {
      cluster: "manuSpecificTuya",
      type: [
        "commandSetDataResponse",
        "commandGetData",
        "commandActiveStatusReport",
      ],
      convert: (model, msg, publish, options, meta) => {
        const dp = msg.data.dp;
        const value = tuya.getDataValue(msg.data.datatype, msg.data.data);

        switch (dp) {
          case 22:
            return { co2: value };
          case 18:
            return {
              temperature: calibrateAndPrecisionRoundOptions(
                value / 10.0,
                options,
                "temperature"
              ),
            };
          case 19:
            return {
              humidity: calibrateAndPrecisionRoundOptions(
                value / 10.0,
                options,
                "humidity"
             ),
            };
          case 21:
            return { hcho: value };
          case 2:
            return { voc: value };
          default:
            meta.logger.warn(`zigbee-herdsman-converters:SaswellThermostat: NOT RECOGNIZED DP #${dp} with data ${JSON.stringify(msg.data)} => (${value})`);
        }

        return null;
      },
    },
  ],
  toZigbee: [
    //tz.tuya_data_point_test, // Another debug converter
  ],
  onEvent: tuya.setTime, // Add this if you are getting no converter for 'commandSetTimeRequest'
  /* meta: {
    configureKey: 1,
  }, */
  /* configure: async (device, coordinatorEndpoint, logger) => {
    const endpoint = device.getEndpoint(1);
    await bind(endpoint, coordinatorEndpoint, ["genBasic"]);
  }, */
  exposes: [e.temperature(), e.humidity(), e.co2(), e.voc(), e.hcho()],
};

module.exports = definition;

Verifiez bien le nom du constructeur dans la ligne
manufacturerName: "_TZE200_ryfmq5rl",
(j’ai du la mettre en phase avec qui était en debug)

Une fois fait allez dans setting onglet External Converters
cliquez sur +
ajouter le nom de votre fichier js ici SEA802-Zigbee.js
puis SUBMIT

Redémarrez

setting tools restart zigbee2mqtt

Capture d’écran du 2021-09-05 09-01-02

Voila

Capture d’écran du 2021-09-06 10-22-12

Capture d’écran du 2021-09-06 10-20-12

Have a fun
Bon Dimanche

credit

5 « J'aime »

Salut, CO2 2ppm ? C’est possible ca ? Je pensais que le minimum se situait environ à 400ppm
Ou alors c’est du monoxyde de carbone et non du co2 ?

Salut @xavax59
Pas faux faudrait poser la question a Tuya en même temps c’est peut-être une histoire d’unité qui serait peut-être des % qui serait plus réaliste …
Bon Dimanche

Tu n’aurais pas une inversion entre COV (VOC) et Co ???Capture2

bonjour, @coritoni
C’est une bonne piste j’ai pris le code dans une discution ici :

Tu est sur quel plugin ? @coritoni

edit je viens d’inverser le DP 2 et le 22 ça se présente mieux (édité dans le 1er post)

faut que je fasse des essais avec des gaz et poluants …

a tu un fichier de configuration.js ?

Merci

j’utilise Zigbee2Mqtt

1 « J'aime »

Hello,

Je suis en train de le tester avec le plugin zigbee.
Ca remonte mais j’ai des valeurs assez étonnantes…

C02 : 0.000361
COV : 0.000001
Hcho : 0.000002

Je creuse je creuse…

Guillaume

1 « J'aime »

je m’auto réponds… il faut multiplier par un million… particule par million (ppm).

C’est ce que je me suis dit aussi, mais les chiffres semblent fantaisistes quand même… C’est vraiment bizarre.
image
Ca, ce sont les données théoriques de Tuya.

Quand je le sature (Acetone), il monte à 2000.
Donc, vu qu’il est censé aller jusqu’à 100 MAX, on peut penser qu’en fait il va jusqu’à 200 MAX.
A ce moment là, il ne faut pas multiplier par 1 000 000 mais par 100 000 la valeur.

Vu que j’en ai 2, le aqara et le Tuya, je les ai mis a côté.
Voila ce qu’ils me retournent (ne pas faire attention aux unités car je les cherche)

Et ça, c’est la théorie sur les COV en air intérieur - ppb=particules per BILLION (miliard)

Je pense que vu les données fantaisistes, il vaut mieux prendre la borne supérieure et retourner des % au lieu de chiffres qui ne veulent pas dire grand chose.

J’en suis là pour ma part :

image

(Mon dieu qu’il fait chaud dans la chambre de mon fils :smiley: )

Guillaume

bonjour,
Il semble que ce soit encore pas le même modèle le miens répond au petit nom
de _TZE200_ryfmq5rl

tu a pas l’info formaldehyd ?

fait voir une copie écran dans z2m de l’onglet expose du device.

merci

Le mien: _TZE200_yvx5lh6k

Je ne comprends pas leur naming dans les modèles !

c’est un vrais bazar chez tuya …

{
    "ieee": "84:fd:27:ff:fe:d6:98:22",
    "nwk": 36357,
    "status": 2,
    "lqi": "255",
    "rssi": "-70",
    "last_seen": "1638476975.5798323",
    "node_descriptor": "01:40:8e:02:10:52:52:00:00:2c:52:00:00",
    "endpoints": [
        {
            "id": 1,
            "status": 1,
            "device_type": 256,
            "profile_id": 260,
            "manufacturer": "_TZE200_8ygsuhe1",
            "model": "TS0601",
            "output_clusters": [
                {
                    "id": 10,
                    "name": "Time",
                    "attributes": []
                },
                {
                    "id": 25,
                    "name": "Ota",
                    "attributes": []
                }
            ],
            "input_clusters": [
                {
                    "id": 0,
                    "name": "Basic",
                    "attributes": [
                        {
                            "id": 0,
                            "name": "zcl_version",
                            "value": 3
                        },
                        {
                            "id": 1,
                            "name": "app_version",
                            "value": 68
                        },
                        {
                            "id": 2,
                            "name": "stack_version",
                            "value": 0
                        },
                        {
                            "id": 3,
                            "name": "hw_version",
                            "value": 1
                        },
                        {
                            "id": 4,
                            "name": "manufacturer",
                            "value": "_TZE200_8ygsuhe1"
                        },
                        {
                            "id": 5,
                            "name": "model",
                            "value": "TS0601"
                        },
                        {
                            "id": 6,
                            "name": "date_code",
                            "value": ""
                        },
                        {
                            "id": 7,
                            "name": "power_source",
                            "value": 1
                        }
                    ]
                },
                {
                    "id": 4,
                    "name": "Groups",
                    "attributes": []
                },
                {
                    "id": 5,
                    "name": "Scenes",
                    "attributes": []
                },
                {
                    "id": 61184,
                    "name": "Tuya Manufacturer Specific",
                    "attributes": []
                },
                {
                    "id": 1037,
                    "name": "Carbon Dioxide (CO\u2082) Concentration",
                    "attributes": [
                        {
                            "id": 0,
                            "name": "measured_value",
                            "value": 0.000372
                        }
                    ]
                },
                {
                    "id": 1067,
                    "name": "Formaldehyde Concentration",
                    "attributes": [
                        {
                            "id": 0,
                            "name": "measured_value",
                            "value": 2.0e-6
                        }
                    ]
                },
                {
                    "id": 1029,
                    "name": "Relative Humidity Measurement",
                    "attributes": [
                        {
                            "id": 0,
                            "name": "measured_value",
                            "value": 3420
                        }
                    ]
                },
                {
                    "id": 1026,
                    "name": "Temperature Measurement",
                    "attributes": [
                        {
                            "id": 0,
                            "name": "measured_value",
                            "value": 2480
                        }
                    ]
                },
                {
                    "id": 1070,
                    "name": "VOC Level",
                    "attributes": [
                        {
                            "id": 0,
                            "name": "measured_value",
                            "value": 1.0e-6
                        }
                    ]
                }
            ]
        }
    ],
    "signature": {
        "manufacturer": "_TZE200_8ygsuhe1",
        "model": "TS0601",
        "node_desc": {
            "logical_type": 1,
            "complex_descriptor_available": 0,
            "user_descriptor_available": 0,
            "reserved": 0,
            "aps_flags": 0,
            "frequency_band": 8,
            "mac_capability_flags": 142,
            "manufacturer_code": 4098,
            "maximum_buffer_size": 82,
            "maximum_incoming_transfer_size": 82,
            "server_mask": 11264,
            "maximum_outgoing_transfer_size": 82,
            "descriptor_capability_field": 0
        },
        "endpoints": {
            "1": {
                "profile_id": 260,
                "device_type": 256,
                "input_clusters": [
                    0,
                    4,
                    5,
                    61184,
                    1037,
                    1067,
                    1029,
                    1026,
                    1070
                ],
                "output_clusters": [
                    10,
                    25
                ]
            }
        }
    },
    "class": "zhaquirks.tuya.air.ts0601_air_quality"
}

@guilloome tu est hors sujet avec le plugin zigbee

mais tes Formaldehyde sont la

oui pardon je voulais juste sortir le Formaldehyde et j’ai « peut être » eu la flemme de faire autre chose qu’un copier/coller …

1 « J'aime »