[Plugin Zigbee2MQTT] et Sonoff ZbBridge

Salut,

Bravo et merci pour la documentation de ce plugin alors qu’il est encore en bêta test.

Je souhaiterais utiliser comme contrôleur le Sonoff ZbBridge (en mode Tasmota Zigbee) sans passer par un adaptateur Conbee II ou Zigate.
Est-ce possible ? Si oui, comment ?

Merci.

Bonjour @midi30,

Contrairement au plugin zigbee, qui permet d’utiliser une passerelle distante IP:PORT, telle que Zigate-wifi, silvercrest (Lidl)+hack, Sonoff ZbBridge+Tasmota (en mode TCPBridge), à ce stade, si Zigbee2MQTT est installé sur la box Jeedom, le type d’adaptateur sélectionnable est :

  • Conbee II
  • ZiGate USB-TTL

*documentation du plugin-zigbee2mqtt : Plugin ZigbeeLinker (Jeedom) : Documentation – Pasteck, le passe technique
*Zigbee2MQTT supporte officiellement les adaptateurs suivants : | Zigbee2MQTT

Toutefois le ZbBridge flashé Tasmota (en mode Zigbee2Tasmota / MQTT) étant reconnu par le plugin jMQTT, en faisant une installation du plugin Zigbee2mqtt en mode « Client MQTT seulement » (pas d’installation de Zigbee2mqtt et serveur MQTT sur la box Jeedom), il est possible que ça puisse fonctionner, moyennant une petite adaptation (Topic de base /ZbBridge et pas /zigbee2mqtt). A vérifier.

Sinon il est possible d’utiliser le plugin-jmqtt :

exemple du capteur d’ouverture Xiaomi, références :

→ il est compatible avec ZHA, Tasmota, zigbee2mqtt, deconz.

-dans le zbbridge tasmota- : Topic = zbbridge
-dans le plugin-jmqtt :
équipement zbbridge, inscrit au topic tele/zbbridge/#
Ajout automatique des commandes
action sur capteur d’ouverture Xiaomi => Topic tele/zbbridge/SENSOR :

{
  "ZbReceived": {
    "0x40FD": {
      "Device": "0x40FD",
      "ModelId":"lumi.sensor_magnet",
      "Contact": 1,
      "BatteryVoltage": 3,
      "BatteryPercentage": 100,
      "Endpoint": 1,
      "LinkQuality": 173
    }
  }
}

création manuelle des commandes :
passage en mode affichage JSON
saisie d’un nom :

Nom----------------------------Topic
MagnetMi16-Contact----------------tele/zbbridge/SENSOR{ZbReceived}{0x40FD}{Contact}              
MagnetMi16-BatteryPercentage---tele/zbbridge/SENSOR{ZbReceived}{0x40FD}{BatteryPercentage} 
MagnetMi16-BatteryVoltage------tele/zbbridge/SENSOR{ZbReceived}{0x40FD}{BatteryVoltage}
MagnetMi16-LinkQuality---------tele/zbbridge/SENSOR{ZbReceived}{0x40FD}{LinkQuality}
MagnetMi16-ModelId---------tele/zbbridge/SENSOR{ZbReceived}{0x40FD}{ModelId}

akenad :slight_smile:

1 « J'aime »

Merci pour cette réponse.
Je vais regarder dans ce sens.

Mais je ne comprends pas la remarque:

(Topic de base /ZbBridge et pas /zigbe2mqtt)

En dialogue mqtt, tu as une phrase : topic_base/Nom équipement/get ou set pour faire simple.
Le topic de base, c’est le nom de l’émetteur en gros. ça ne changera rien au fonctionnement, c’est transparent dans le plugin z2m

D’accord, merci @MrGreen.
Je vais essayer.

@MrGreen
J’ai installé le plugin et initialisé en mode « client MQTT uniquement ».
J’ai donné l’adresse d’un autre jeedom disposant de JMQTT.

Log Zigbee2mqtt

[2021-04-07 10:25:04][INFO] : ############ Démarrage des service ############
[2021-04-07 10:25:06][INFO] : ##### Démarrage du service Client MQTT (Sonoff)#####
[2021-04-07 10:25:06][INFO] : ##### Le service Client MQTT a démarré (Sonoff) #####
[2021-04-07 10:25:06][INFO] : ##### Le service Client MQTT ([Test][Sonoff]) s'est connecté. #####
[2021-04-07 10:25:06][DEBUG] : [Test][Sonoff] : Client MQTT subscribe : 1
[2021-04-07 10:25:06][DEBUG] : [Test][Sonoff] : Jeedom-->MQTT, topic=zigbee2mqtt/bridge/request/options, json={"options":{"mqtt":{"include_device_information":true}}}
[2021-04-07 10:30:03][INFO] : ############ Arrêt des services ############
[2021-04-07 10:30:03][INFO] : ##### Arrêt du service Client MQTT (Sonoff)#####
[2021-04-07 10:30:03][DEBUG] : ##### Le service Client MQTT ([Test][Sonoff]) s'est déconnecté. #####
[2021-04-07 10:30:04][INFO] : ##### Le service Client MQTT (Sonoff) s'est arrêté correctement #####
[2021-04-07 10:30:05][INFO] : ############ Arrêt des services ############
[2021-04-07 10:30:05][INFO] : ############ Démarrage des service ############
[2021-04-07 10:30:07][INFO] : ##### Démarrage du service Client MQTT (Sonoff)#####
[2021-04-07 10:30:07][INFO] : ##### Le service Client MQTT a démarré (Sonoff) #####
[2021-04-07 10:30:07][INFO] : ##### Le service Client MQTT ([Test][Sonoff]) s'est connecté. #####
[2021-04-07 10:30:07][DEBUG] : [Test][Sonoff] : Client MQTT subscribe : 1
[2021-04-07 10:30:07][DEBUG] : [Test][Sonoff] : Jeedom-->MQTT, topic=zigbee2mqtt/bridge/request/options, json={"options":{"mqtt":{"include_device_information":true}}}

(j’ai la même chose avec zigbee2mqqt sans le préfixe bridge.

Console Sonoff (1h de décalage)

09:23:19.810 MQT: zigbee2mqtt/bridge/tele/STATE = {"Time":"2021-04-07T09:23:19","Uptime":"0T12:45:11","UptimeSec":45911,"Vcc":3.477,"Heap":29,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":2,"Wifi":{"AP":1,"SSId":"BobNet","BSSId":"70:FC:8F:4D:97:8B","Channel":8,"RSSI":22,"Signal":-89,"LinkCount":2,"Downtime":"0T00:00:45"}}
09:28:19.780 MQT: zigbee2mqtt/bridge/tele/STATE = {"Time":"2021-04-07T09:28:19","Uptime":"0T12:50:11","UptimeSec":46211,"Vcc":3.477,"Heap":29,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":2,"Wifi":{"AP":1,"SSId":"BobNet","BSSId":"70:FC:8F:4D:97:8B","Channel":8,"RSSI":18,"Signal":-91,"LinkCount":2,"Downtime":"0T00:00:45"}}
09:33:19.807 MQT: zigbee2mqtt/bridge/tele/STATE = {"Time":"2021-04-07T09:33:19","Uptime":"0T12:55:11","UptimeSec":46511,"Vcc":3.475,"Heap":29,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":2,"Wifi":{"AP":1,"SSId":"BobNet","BSSId":"70:FC:8F:4D:97:8B","Channel":8,"RSSI":12,"Signal":-94,"LinkCount":2,"Downtime":"0T00:00:45"}}

@akenad Sur le jeedom distant (JMqtt), j’ai bien création de commandes correspondant aux messages du Sonoff, mais la traduction json est inexploitable (tourne indéfiniment). Mais je crois que JMQTT a des problèmes dans ce domaine, d’après ce que j’ai vu par ailleurs.

Avez-vous une idée de ce qu’il se passe ?
Merci de votre aide …

Dans l’interface de zigbee2mqtt le sonoff remonte bien ?
ou le sonoff est uniquement mqtt certainement.
Mon plugin n’intègre que zigbee2mqtt, pas les autres équipements qui sont dialogue mqtt.

Le mqtt est juste une interface qui permet de connecter deux éléments sur le même mode de dialogue…
Cela ne veut pas dire que zigbee2mqtt va l’intégrer tu comprends

En fait, le Sonoff est bien ZigBee ET MQTT.

J’ai des messages ZigBee de ce type :

18:12:58.812 ZIG: ZbData 0x672E,0639B46D604C64
18:12:58.825 ZIG: ZbData 0xD474,06FBB16D609064
18:12:58.837 ZIG: ZbData 0xAE5F,06EAE76D604CFF0506010F0000
18:12:58.850 ZIG: ZbData 0xF00B,0605E86D602FFF0506010F0000
18:12:58.863 ZIG: ZbData 0x296A,060BE86D602F640803010F000030E400

qui sont sans doute en lien avec les messages MQTT suivants :

18:16:09.536 MQT: zigbee2mqtt/SENSOR = {"SW_02":{"Device":"0xAE5F","Name":"SW_02","Power":0,"Endpoint":1,"LinkQuality":73}}
18:16:13.905 MQT: zigbee2mqtt/SENSOR = {"SW_01":{"Device":"0xF00B","Name":"SW_01","Power":0,"Endpoint":1,"LinkQuality":34}}

ou aussi :

18:24:16.201 ZIG: Auto-responder: ZbSend {"Device":"0xD474","Cluster":"0x000A","Endpoint":1,"Response":"000A/0007":671135056}

Mais je ne récupère malheureusement rien dans zigbee2mqtt …

Qu’en penses-tu ?

SI c’est du tasmota ça ne remonte pas dans le topic zigbee2mqtt

Si, on peut paramétrer le Sonoff avec le topic que l’on souhaite

tu peut nous montrer par exemple avec mqtt exlorer ton topic de ton sonoff ?

Je ne connais pas, je viens d’installer à l’instant mqtt explorer.
Est-ce que c’est ça que tu veux ?

zigbee2mqtt
bridge
state = offline
info = {"commit":"99274c7","config":{"advanced":{"adapter_concurrent":null,"adapter_delay":null,"availability_blacklist":[],"availability_blocklist":[],"availability_passlist":[],"availability_timeout":0,"availability_whitelist":[],"cache_state":true,"cache_state_persistent":true,"cache_state_send_on_startup":true,"channel":11,"elapsed":false,"ext_pan_id":[221,221,221,221,221,221,221,221],"homeassistant_…
devices = [{"definition":null,"endpoints":{"1":{"bindings":[],"clusters":{"input":[],"output":[]},"configured_reportings":[]},"10":{"bindings":[],"clusters":{"input":[],"output":[]},"configured_reportings":[]},"11":{"bindings":[],"clusters":{"input":["ssIasAce"],"output":["ssIasZone","ssIasWd"]},"configured_reportings":[]},"110":{"bindings":[],"clusters":{"input":[],"output":[]},"configured_reportings":[]},…
groups = []
config = {"commit":"99274c7","coordinator":{"meta":{"maintrel":3,"majorrel":2,"minorrel":6,"product":0,"revision":20190608,"transportrev":2},"type":"zStack12"},"log_level":"info","network":{"channel":11,"extendedPanID":"0xdddddddddddddddd","panID":6754},"permit_join":true,"version":"1.17.1"}
tele
tele
LWT = Offline
LWT = Online
STATE = {"Time":"2021-04-07T19:02:55","Uptime":"0T06:50:17","UptimeSec":24617,"Vcc":3.493,"Heap":22,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Wifi":{"AP":1,"SSId":"BobNet","BSSId":"70:FC:8F:4D:97:8B","Channel":8,"RSSI":10,"Signal":-95,"LinkCount":1,"Downtime":"0T00:00:05"}}
SENSOR = {"SW_02":{"Device":"0xAE5F","Name":"SW_02","Power":0,"Endpoint":1,"LinkQuality":73}}
STATE = {"Time":"2021-04-07T19:02:55","Uptime":"0T06:50:17","UptimeSec":24617,"Vcc":3.493,"Heap":22,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Wifi":{"AP":1,"SSId":"BobNet","BSSId":"70:FC:8F:4D:97:8B","Channel":8,"RSSI":10,"Signal":-95,"LinkCount":1,"Downtime":"0T00:00:05"}}
SENSOR = {"PIR_01":{"Device":"0x296A","Name":"PIR_01","Illuminance":45,"Occupancy":1,"Endpoint":1,"LinkQuality":45}}

A ta disposition pour plus d’info …

Par exemple, pour le Sonoff Zigbee Bridge Tasmota, avec Topic = zbbridge :

akenad :slight_smile:

D’accord @akenad.

Citation
Par exemple, pour le Sonoff Zigbee Bridge Tasmota, avec Topic = zbbridge :

Comme ceci, alors ?

Bon j’ai un peut regarder le problème

1 pour que ce soit plus propre dans l’arbre je pense qu’il vaut mieux mettre un niveau en plus

Dans mon test sur mon objet tasmota qui est un esp mini et je l’ait placé sous le topic

zigbee2mqtt/ESPMINI01

ceci a fin d’être au même niveau que les topic des équipements de zigbee2mqtt

Il en ressort au premier essai

Je pense que l’info est bonne et au bon endroit mais que ce n’est pas suffisant.

Si l’on regarde de plus près il y a un autre topic générer lui par zigbee2mqtt

bridge/device semble contenir la liste de tout les devices trouvés

hors comme notre sonoff mini n’est pas renseigner dans le json …

je pense que le problème est par la …

voilà faute de temps je n’ai pas été plus loin mais je pense qu’il soit nécessaire que la définition
d’un nouveau module soit inclue dans le json …

le json partie 1
{
    "definition": null,
    "endpoints": {
      "1": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      },
      "2": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      },
      "3": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      },
      "4": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      },
      "5": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      },
      "6": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      },
      "8": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      },
      "10": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      },
      "11": {
        "bindings": [],
        "clusters": {
          "input": [
            "ssIasAce"
          ],
          "output": [
            "ssIasZone",
            "ssIasWd"
          ]
        },
        "configured_reportings": []
      },
      "12": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      },
      "13": {
        "bindings": [],
        "clusters": {
          "input": [
            "genOta"
          ],
          "output": []
        },
        "configured_reportings": []
      },
      "47": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      },
      "110": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      },
      "242": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      }
    },
    "friendly_name": "Coordinator",
    "ieee_address": "0x00124b001ccc4be0",
    "interview_completed": true,
    "interviewing": false,
    "network_address": 0,
    "supported": false,
    "type": "Coordinator"
  },
  {
    "date_code": "20200124",
    "definition": {
      "description": "Hue white and color ambiance E26/E27",
      "exposes": [
        {
          "features": [
            {
              "access": 7,
              "description": "On/off state of this light",
              "name": "state",
              "property": "state",
              "type": "binary",
              "value_off": "OFF",
              "value_on": "ON",
              "value_toggle": "TOGGLE"
            },
            {
              "access": 7,
              "description": "Brightness of this light",
              "name": "brightness",
              "property": "brightness",
              "type": "numeric",
              "value_max": 254,
              "value_min": 0
            },
            {
              "access": 7,
              "description": "Color temperature of this light",
              "name": "color_temp",
              "presets": [
                {
                  "description": "Coolest temperature supported",
                  "name": "coolest",
                  "value": 150
                },
                {
                  "description": "Cool temperature (250 mireds / 4000 Kelvin)",
                  "name": "cool",
                  "value": 250
                },
                {
                  "description": "Neutral temperature (370 mireds / 2700 Kelvin)",
                  "name": "neutral",
                  "value": 370
                },
                {
                  "description": "Warm temperature (454 mireds / 2200 Kelvin)",
                  "name": "warm",
                  "value": 454
                },
                {
                  "description": "Warmest temperature supported",
                  "name": "warmest",
                  "value": 500
                }
              ],
              "property": "color_temp",
              "type": "numeric",
              "unit": "mired",
              "value_max": 500,
              "value_min": 150
            },
            {
              "access": 7,
              "description": "Color temperature after cold power on of this light",
              "name": "color_temp_startup",
              "presets": [
                {
                  "description": "Coolest temperature supported",
                  "name": "coolest",
                  "value": 150
                },
                {
                  "description": "Cool temperature (250 mireds / 4000 Kelvin)",
                  "name": "cool",
                  "value": 250
                },
                {
                  "description": "Neutral temperature (370 mireds / 2700 Kelvin)",
                  "name": "neutral",
                  "value": 370
                },
                {
                  "description": "Warm temperature (454 mireds / 2200 Kelvin)",
                  "name": "warm",
                  "value": 454
                },
                {
                  "description": "Warmest temperature supported",
                  "name": "warmest",
                  "value": 500
                },
                {
                  "description": "Restore previous color_temp on cold power on",
                  "name": "previous",
                  "value": 65535
                }
              ],
              "property": "color_temp_startup",
              "type": "numeric",
              "unit": "mired",
              "value_max": 500,
              "value_min": 150
            },
            {
              "description": "Color of this light in the CIE 1931 color space (x/y)",
              "features": [
                {
                  "access": 7,
                  "name": "x",
                  "property": "x",
                  "type": "numeric"
                },
                {
                  "access": 7,
                  "name": "y",
                  "property": "y",
                  "type": "numeric"
                }
              ],
              "name": "color_xy",
              "property": "color",
              "type": "composite"
            },
            {
              "description": "Color of this light expressed as hue/saturation",
              "features": [
                {
                  "access": 7,
                  "name": "hue",
                  "property": "hue",
                  "type": "numeric"
                },
                {
                  "access": 7,
                  "name": "saturation",
                  "property": "saturation",
                  "type": "numeric"
                }
              ],
              "name": "color_hs",
              "property": "color",
              "type": "composite"
            }
          ],
          "type": "light"
        },
        {
          "access": 2,
          "description": "Triggers an effect on the light (e.g. make light blink for a few seconds)",
          "name": "effect",
          "property": "effect",
          "type": "enum",
          "values": [
            "blink",
            "breathe",
            "okay",
            "channel_change",
            "finish_effect",
            "stop_effect"
          ]
        },
        {
          "access": 1,
          "description": "Link quality (signal strength)",
          "name": "linkquality",
          "property": "linkquality",
          "type": "numeric",
          "unit": "lqi",
          "value_max": 255,
          "value_min": 0
        }
      ],
      "model": "9290022166",
      "supports_ota": true,
      "vendor": "Philips"
    },
    "endpoints": {
      "11": {
        "bindings": [],
        "clusters": {
          "input": [
            "genBasic",
            "genIdentify",
            "genGroups",
            "genScenes",
            "genOnOff",
            "genLevelCtrl",
            "touchlink",
            "manuSpecificSamsungAccelerometer",
            "lightingColorCtrl",
            "manuSpecificUbisysDimmerSetup"
          ],
          "output": [
            "genOta"
          ]
        },
        "configured_reportings": []
      },
      "242": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": [
            "greenPower"
          ]
        },
        "configured_reportings": []
      }
    },
    "friendly_name": "LAMPE_SALON",
    "ieee_address": "0x00178801082c648d",
    "interview_completed": true,
    "interviewing": false,
    "model_id": "LCA001",
    "network_address": 8053,
    "power_source": "Mains (single phase)",
    "software_build_id": "1.65.9_hB3217DF4",
    "supported": true,
    "type": "Router"
  },
  {
    "definition": {
      "description": "Aqara vibration sensor",
      "exposes": [
        {
          "access": 1,
          "description": "Remaining battery in %",
          "name": "battery",
          "property": "battery",
          "type": "numeric",
          "unit": "%",
          "value_max": 100,
          "value_min": 0
        },
        {
          "access": 1,
          "description": "Triggered action (e.g. a button click)",
          "name": "action",
          "property": "action",
          "type": "enum",
          "values": [
            "vibration",
            "tilt",
            "drop"
          ]
        },
        {
          "access": 1,
          "name": "strength",
          "property": "strength",
          "type": "numeric"
        },
        {
          "access": 3,
          "name": "sensitivity",
          "property": "sensitivity",
          "type": "enum",
          "values": [
            "low",
            "medium",
            "high"
          ]
        },
        {
          "access": 1,
          "description": "Measured electrical potential value",
          "name": "voltage",
          "property": "voltage",
          "type": "numeric",
          "unit": "V"
        },
        {
          "access": 1,
          "description": "Link quality (signal strength)",
          "name": "linkquality",
          "property": "linkquality",
          "type": "numeric",
          "unit": "lqi",
          "value_max": 255,
          "value_min": 0
        }
      ],
      "model": "DJT11LM",
      "supports_ota": false,
      "vendor": "Xiaomi"
    },
    "endpoints": {
      "1": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      },
      "2": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      }
    },
    "friendly_name": "VIBRATION",
    "ieee_address": "0x00158d0003235253",
    "interview_completed": true,
    "interviewing": false,
    "model_id": "lumi.vibration.aq1",
    "network_address": 61554,
    "power_source": "Battery",
    "supported": true,
    "type": "EndDevice"
  },
  {
    "definition": {
      "description": "Aqara door & window contact sensor",
      "exposes": [
        {
          "access": 1,
          "description": "Remaining battery in %",
          "name": "battery",
          "property": "battery",
          "type": "numeric",
          "unit": "%",
          "value_max": 100,
          "value_min": 0
        },
        {
          "access": 1,
          "description": "Indicates if the contact is closed (= true) or open (= false)",
          "name": "contact",
          "property": "contact",
          "type": "binary",
          "value_off": true,
          "value_on": false
        },
        {
          "access": 1,
          "description": "Measured temperature value",
          "name": "temperature",
          "property": "temperature",
          "type": "numeric",
          "unit": "°C"
        },
        {
          "access": 1,
          "description": "Measured electrical potential value",
          "name": "voltage",
          "property": "voltage",
          "type": "numeric",
          "unit": "V"
        },
        {
          "access": 1,
          "description": "Link quality (signal strength)",
          "name": "linkquality",
          "property": "linkquality",
          "type": "numeric",
          "unit": "lqi",
          "value_max": 255,
          "value_min": 0
        }
      ],
      "model": "MCCGQ11LM",
      "supports_ota": false,
      "vendor": "Xiaomi"
    },
    "endpoints": {
      "1": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      }
    },
    "friendly_name": "PORTE 1",
    "ieee_address": "0x00158d00057b42cd",
    "interview_completed": true,
    "interviewing": false,
    "model_id": "lumi.sensor_magnet.aq2",
    "network_address": 49354,
    "power_source": "Battery",
    "supported": true,
    "type": "EndDevice"
  },
  {
    "date_code": "",
    "definition": {
      "description": "Temperature & humidity sensor with display",
      "exposes": [
        {
          "access": 1,
          "description": "Remaining battery in %",
          "name": "battery",
          "property": "battery",
          "type": "numeric",
          "unit": "%",
          "value_max": 100,
          "value_min": 0
        },
        {
          "access": 1,
          "description": "Measured temperature value",
          "name": "temperature",
          "property": "temperature",
          "type": "numeric",
          "unit": "°C"
        },
        {
          "access": 1,
          "description": "Measured relative humidity",
          "name": "humidity",
          "property": "humidity",
          "type": "numeric",
          "unit": "%"
        },
        {
          "access": 1,
          "description": "Measured electrical potential value",
          "name": "voltage",
          "property": "voltage",
          "type": "numeric",
          "unit": "V"
        },
        {
          "access": 1,
          "description": "Link quality (signal strength)",
          "name": "linkquality",
          "property": "linkquality",
          "type": "numeric",
          "unit": "lqi",
          "value_max": 255,
          "value_min": 0
        }
      ],
      "model": "TS0201",
      "supports_ota": false,
      "vendor": "TuYa"
    },
    "endpoints": {
      "1": {
        "bindings": [],
        "clusters": {
          "input": [
            "genBasic",
            "genPowerCfg",
            "msTemperatureMeasurement",
            "msRelativeHumidity"
          ],
          "output": [
            "genOta"
          ]
        },
        "configured_reportings": []
      }
    },
    "friendly_name": "TUYA TEMP HUM",
    "ieee_address": "0xec1bbdfffee4da8f",
    "interview_completed": true,
    "interviewing": false,
    "model_id": "TS0201",
    "network_address": 56418,
    "power_source": "Battery",
    "supported": true,
    "type": "EndDevice"
  },
  {
    "definition": {
      "description": "Aqara human body movement and illuminance sensor",
      "exposes": [
        {
          "access": 1,
          "description": "Remaining battery in %",
          "name": "battery",
          "property": "battery",
          "type": "numeric",
          "unit": "%",
          "value_max": 100,
          "value_min": 0
        },
        {
          "access": 1,
          "description": "Indicates whether the device detected occupancy",
          "name": "occupancy",
          "property": "occupancy",
          "type": "binary",
          "value_off": false,
          "value_on": true
        },
        {
          "access": 1,
          "description": "Measured temperature value",
          "name": "temperature",
          "property": "temperature",
          "type": "numeric",
          "unit": "°C"
        },
        {
          "access": 1,
          "description": "Measured electrical potential value",
          "name": "voltage",
          "property": "voltage",
          "type": "numeric",
          "unit": "V"
        },
        {
          "access": 1,
          "description": "Measured illuminance in lux",
          "name": "illuminance_lux",
          "property": "illuminance",
          "type": "numeric",
          "unit": "lx"
        },
        {
          "access": 1,
          "description": "Measured illuminance in lux",
          "name": "illuminance",
          "property": "illuminance",
          "type": "numeric",
          "unit": "lx"
        },
        {
          "access": 1,
          "description": "Link quality (signal strength)",
          "name": "linkquality",
          "property": "linkquality",
          "type": "numeric",
          "unit": "lqi",
          "value_max": 255,
          "value_min": 0
        }
      ],
      "model": "RTCGQ11LM",
      "supports_ota": false,
      "vendor": "Xiaomi"
    },
    "endpoints": {
      "1": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      }
    },
    "friendly_name": "DETECTEUR 6",
    "ieee_address": "0x00158d00046633c3",
    "interview_completed": true,
    "interviewing": false,
    "model_id": "lumi.sensor_motion.aq2",
    "network_address": 10976,
    "power_source": "Battery",
    "supported": true,
    "type": "EndDevice"
  },
  {
    "date_code": "20191128",
    "definition": {
      "description": "Hue smart button",
      "exposes": [
        {
          "access": 1,
          "description": "Remaining battery in %",
          "name": "battery",
          "property": "battery",
          "type": "numeric",
          "unit": "%",
          "value_max": 100,
          "value_min": 0
        },
        {
          "access": 1,
          "description": "Triggered action (e.g. a button click)",
          "name": "action",
          "property": "action",
          "type": "enum",
          "values": [
            "on",
            "off",
            "skip_backward",
            "skip_forward",
            "press",
            "hold",
            "release"
          ]
        },
        {
          "access": 1,
          "description": "Link quality (signal strength)",
          "name": "linkquality",
          "property": "linkquality",
          "type": "numeric",
          "unit": "lqi",
          "value_max": 255,
          "value_min": 0
        }
      ],
      "model": "8718699693985",
      "supports_ota": true,
      "vendor": "Philips"
    },
    "endpoints": {
      "1": {
        "bindings": [
          {
            "cluster": "genOnOff",
            "target": {
              "endpoint": 1,
              "ieee_address": "0x00124b001ccc4be0",
              "type": "endpoint"
            }
          },
          {
            "cluster": "genLevelCtrl",
            "target": {
              "endpoint": 1,
              "ieee_address": "0x00124b001ccc4be0",
              "type": "endpoint"
            }
          },
          {
            "cluster": "manuSpecificPhilips",
            "target": {
              "endpoint": 1,
              "ieee_address": "0x00124b001ccc4be0",
              "type": "endpoint"
            }
          },
          {
            "cluster": "genPowerCfg",
            "target": {
              "endpoint": 1,
              "ieee_address": "0x00124b001ccc4be0",
              "type": "endpoint"
            }
          }
        ],
        "clusters": {
          "input": [
            "genBasic",
            "genPowerCfg",
            "genIdentify",
            "manuSpecificPhilips",
            "touchlink"
          ],
          "output": [
            "genOta",
            "genBasic",
            "genIdentify",
            "genGroups",
            "genOnOff",
            "genLevelCtrl",
            "genScenes",
            "touchlink"
          ]
        },
        "configured_reportings": [
          {
            "attribute": "batteryPercentageRemaining",
            "cluster": "genPowerCfg",
            "maximum_report_interval": 62000,
            "minimum_report_interval": 3600,
            "reportable_change": 0
          }
        ]
      }
    },
    "friendly_name": "Bouton Philips",
    "ieee_address": "0x0017880106076a4a",
    "interview_completed": true,
    "interviewing": false,
    "model_id": "ROM001",
    "network_address": 49066,
    "power_source": "Battery",
    "software_build_id": "2.30.0_r30777",
    "supported": true,
    "type": "EndDevice"
  },
  {
    "date_code": "20160302",
    "definition": {
      "description": "Hue dimmer switch",
      "exposes": [
        {
          "access": 1,
          "description": "Remaining battery in %",
          "name": "battery",
          "property": "battery",
          "type": "numeric",
          "unit": "%",
          "value_max": 100,
          "value_min": 0
        },
        {
          "access": 1,
          "description": "Triggered action (e.g. a button click)",
          "name": "action",
          "property": "action",
          "type": "enum",
          "values": [
            "on-press",
            "on-hold",
            "on-hold-release",
            "up-press",
            "up-hold",
            "up-hold-release",
            "down-press",
            "down-hold",
            "down-hold-release",
            "off-press",
            "off-hold",
            "off-hold-release"
          ]
        },
        {
          "access": 1,
          "description": "Link quality (signal strength)",
          "name": "linkquality",
          "property": "linkquality",
          "type": "numeric",
          "unit": "lqi",
          "value_max": 255,
          "value_min": 0
        }
      ],
      "model": "324131092621",
      "supports_ota": true,
      "vendor": "Philips"
    },
    "endpoints": {
      "1": {
        "bindings": [
          {
            "cluster": "genOnOff",
            "target": {
              "endpoint": 1,
              "ieee_address": "0x00124b001ccc4be0",
              "type": "endpoint"
            }
          },
          {
            "cluster": "genLevelCtrl",
            "target": {
              "endpoint": 1,
              "ieee_address": "0x00124b001ccc4be0",
              "type": "endpoint"
            }
          }
        ],
        "clusters": {
          "input": [
            "genBasic"
          ],
          "output": [
            "genBasic",
            "genIdentify",
            "genGroups",
            "genOnOff",
            "genLevelCtrl",
            "genScenes"
          ]
        },
        "configured_reportings": []
      },
      "2": {
        "bindings": [
          {
            "cluster": "manuSpecificPhilips",
            "target": {
              "endpoint": 1,
              "ieee_address": "0x00124b001ccc4be0",
              "type": "endpoint"
            }
          },
          {
            "cluster": "genPowerCfg",
            "target": {
              "endpoint": 1,
              "ieee_address": "0x00124b001ccc4be0",
              "type": "endpoint"
            }
          }
        ],
        "clusters": {
          "input": [
            "genBasic",
            "genPowerCfg",
            "genIdentify",
            "genBinaryInput",
            "manuSpecificPhilips"
          ],
          "output": [
            "genOta"
          ]
        },
        "configured_reportings": [
          {
            "attribute": "batteryPercentageRemaining",
            "cluster": "genPowerCfg",
            "maximum_report_interval": 62000,
            "minimum_report_interval": 3600,
            "reportable_change": 0
          }
        ]
      }
    },
    "friendly_name": "TELECOMMANDE 4B 1",
    "ieee_address": "0x001788010636827a",
    "interview_completed": true,
    "interviewing": false,
    "model_id": "RWL021",
    "network_address": 20954,
    "power_source": "Battery",
    "software_build_id": "5.45.1.17846",
    "supported": true,
    "type": "EndDevice"
  },
  {
    "definition": {
      "description": "Mi/Aqara smart home cube",
      "exposes": [
        {
          "access": 1,
          "description": "Remaining battery in %",
          "name": "battery",
          "property": "battery",
          "type": "numeric",
          "unit": "%",
          "value_max": 100,
          "value_min": 0
        },
        {
          "access": 1,
          "description": "Measured electrical potential value",
          "name": "voltage",
          "property": "voltage",
          "type": "numeric",
          "unit": "V"
        },
        {
          "access": 1,
          "description": "Triggered action (e.g. a button click)",
          "name": "action",
          "property": "action",
          "type": "enum",
          "values": [
            "shake",
            "wakeup",
            "fall",
            "tap",
            "slide",
            "flip180",
            "flip90",
            "rotate_left",
            "rotate_right"
          ]
        },
        {
          "access": 1,
          "description": "Link quality (signal strength)",
          "name": "linkquality",
          "property": "linkquality",
          "type": "numeric",
          "unit": "lqi",
          "value_max": 255,
          "value_min": 0
        }
      ],
      "model": "MFKZQ01LM",
      "supports_ota": false,
      "vendor": "Xiaomi"
    },
    "endpoints": {
      "1": {
        "bindings": [],
        "clusters": {
          "input": [
            "genBasic",
            "genIdentify",
            "genOta",
            "genMultistateInput"
          ],
          "output": [
            "genBasic",
            "genGroups",
            "genIdentify",
            "genScenes",
            "genOta",
            "genMultistateInput"
          ]
        },
        "configured_reportings": []
      },
      "2": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      },
      "3": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      }
    },
    "friendly_name": "CUBE Z2M",
    "ieee_address": "0x00158d0005304829",
    "interview_completed": true,
    "interviewing": false,
    "model_id": "lumi.sensor_cube.aqgl01",
    "network_address": 41676,
    "power_source": "Battery",
    "software_build_id": "3000-0001",
    "supported": true,
    "type": "EndDevice"
  },
  {
    "definition": {
      "description": "MiJia wireless switch",
      "exposes": [
        {
          "access": 1,
          "description": "Remaining battery in %",
          "name": "battery",
          "property": "battery",
          "type": "numeric",
          "unit": "%",
          "value_max": 100,
          "value_min": 0
        },
        {
          "access": 1,
          "description": "Triggered action (e.g. a button click)",
          "name": "action",
          "property": "action",
          "type": "enum",
          "values": [
            "single",
            "double",
            "triple",
            "quadruple",
            "hold",
            "release",
            "many"
          ]
        },
  

comme c’était trop gros j’ai sinder le json

json partie 2
      {
          "access": 1,
          "description": "Measured electrical potential value",
          "name": "voltage",
          "property": "voltage",
          "type": "numeric",
          "unit": "V"
        },
        {
          "access": 1,
          "description": "Link quality (signal strength)",
          "name": "linkquality",
          "property": "linkquality",
          "type": "numeric",
          "unit": "lqi",
          "value_max": 255,
          "value_min": 0
        }
      ],
      "model": "WXKG01LM",
      "supports_ota": false,
      "vendor": "Xiaomi"
    },
    "endpoints": {
      "1": {
        "bindings": [],
        "clusters": {
          "input": [],
          "output": []
        },
        "configured_reportings": []
      }
    },
    "friendly_name": "BOUTON XIAOMI",
    "ieee_address": "0x00158d000394ac2d",
    "interview_completed": true,
    "interviewing": false,
    "model_id": "lumi.sensor_switch",
    "network_address": 3539,
    "power_source": "Battery",
    "supported": true,
    "type": "EndDevice"
  },
  {
    "date_code": "20160630",
    "definition": {
      "description": "Hue motion sensor",
      "exposes": [
        {
          "access": 1,
          "description": "Measured temperature value",
          "name": "temperature",
          "property": "temperature",
          "type": "numeric",
          "unit": "°C"
        },
        {
          "access": 1,
          "description": "Indicates whether the device detected occupancy",
          "name": "occupancy",
          "property": "occupancy",
          "type": "binary",
          "value_off": false,
          "value_on": true
        },
        {
          "access": 1,
          "description": "Remaining battery in %",
          "name": "battery",
          "property": "battery",
          "type": "numeric",
          "unit": "%",
          "value_max": 100,
          "value_min": 0
        },
        {
          "access": 1,
          "description": "Measured illuminance in lux",
          "name": "illuminance_lux",
          "property": "illuminance_lux",
          "type": "numeric",
          "unit": "lx"
        },
        {
          "access": 1,
          "description": "Raw measured illuminance",
          "name": "illuminance",
          "property": "illuminance",
          "type": "numeric"
        },
        {
          "access": 7,
          "name": "motion_sensitivity",
          "property": "motion_sensitivity",
          "type": "enum",
          "values": [
            "low",
            "medium",
            "high"
          ]
        },
        {
          "access": 7,
          "description": "Blink green LED on motion detection",
          "name": "led_indication",
          "property": "led_indication",
          "type": "binary",
          "value_off": false,
          "value_on": true
        },
        {
          "access": 7,
          "name": "occupancy_timeout",
          "property": "occupancy_timeout",
          "type": "numeric",
          "unit": "second",
          "value_max": 65535,
          "value_min": 0
        },
        {
          "access": 1,
          "description": "Link quality (signal strength)",
          "name": "linkquality",
          "property": "linkquality",
          "type": "numeric",
          "unit": "lqi",
          "value_max": 255,
          "value_min": 0
        }
      ],
      "model": "9290012607",
      "supports_ota": true,
      "vendor": "Philips"
    },
    "endpoints": {
      "1": {
        "bindings": [],
        "clusters": {
          "input": [
            "genBasic"
          ],
          "output": [
            "genBasic",
            "genIdentify",
            "genGroups",
            "genOnOff",
            "genLevelCtrl",
            "lightingColorCtrl",
            "genScenes"
          ]
        },
        "configured_reportings": []
      },
      "2": {
        "bindings": [
          {
            "cluster": "genPowerCfg",
            "target": {
              "endpoint": 1,
              "ieee_address": "0x00124b001ccc4be0",
              "type": "endpoint"
            }
          },
          {
            "cluster": "msIlluminanceMeasurement",
            "target": {
              "endpoint": 1,
              "ieee_address": "0x00124b001ccc4be0",
              "type": "endpoint"
            }
          },
          {
            "cluster": "msTemperatureMeasurement",
            "target": {
              "endpoint": 1,
              "ieee_address": "0x00124b001ccc4be0",
              "type": "endpoint"
            }
          },
          {
            "cluster": "msOccupancySensing",
            "target": {
              "endpoint": 1,
              "ieee_address": "0x00124b001ccc4be0",
              "type": "endpoint"
            }
          }
        ],
        "clusters": {
          "input": [
            "genBasic",
            "genPowerCfg",
            "genIdentify",
            "msOccupancySensing",
            "msIlluminanceMeasurement",
            "msTemperatureMeasurement"
          ],
          "output": [
            "genOta"
          ]
        },
        "configured_reportings": [
          {
            "attribute": "batteryPercentageRemaining",
            "cluster": "genPowerCfg",
            "maximum_report_interval": 62000,
            "minimum_report_interval": 3600,
            "reportable_change": 0
          },
          {
            "attribute": "occupancy",
            "cluster": "msOccupancySensing",
            "maximum_report_interval": 3600,
            "minimum_report_interval": 0,
            "reportable_change": 0
          },
          {
            "attribute": "measuredValue",
            "cluster": "msTemperatureMeasurement",
            "maximum_report_interval": 3600,
            "minimum_report_interval": 10,
            "reportable_change": 100
          },
          {
            "attribute": "measuredValue",
            "cluster": "msIlluminanceMeasurement",
            "maximum_report_interval": 3600,
            "minimum_report_interval": 10,
            "reportable_change": 5
          }
        ]
      }
    },
    "friendly_name": "DECTEUR PHILIPS INTERIEUR",
    "ieee_address": "0x001788010864db4d",
    "interview_completed": true,
    "interviewing": false,
    "model_id": "SML001",
    "network_address": 33973,
    "power_source": "Battery",
    "software_build_id": "6.1.0.18912",
    "supported": true,
    "type": "EndDevice"
  }
]

Merci @olive.

1- Pour le niveau supplémentaire, il en existe aussi un en standard chez Tasmota : c’est le préfixe (tele, stat, cmnd). Je l’avais supprimé.
2- Comment fait-on pour inclure un nouveau modèle dans le json ? Est-ce une demande à faire à @MrGreen ?

Mais il faut que ton module soit compatible zigbee et z2m : Qu’il arrive dans l’interface de z2m en unsupported

Sinon restes avec JMQTT qui est très bien pour cela, et il sera utilisé aussi pour z2m

1 « J'aime »

Le problème est que, pour le moment JMQTT n’est plus supporté (je sais qu’il y a des travaux en cours), et que les plugins zigbee et zigbee2mqtt ont des atouts que JMQTT n’a pas.
C’est pour cela que j’ai acheté ces deux plugins :

  • Le plugin zigbee fonctionne bien avec le sonoff comme contrôleur, mais en mode ZHA. Le sonoff perd toutes ses commandes spécifiques Zigbee,

  • J’espérais que le plugin zigbee2mqtt saurait aussi accepter ce sonoff comme contrôleur, mais en mode TASMOTA (en non ZHA). Je n’ai pas très bien compris ce qui manque pour cela.
    Est-ce que l’intégration du Zigbee Bridge Sonoff dans le plugin zigbee2mqtt (qui, je crois comprendre s’appelle désormais ZigbeeLinker) comme contrôleur est envisageable ?
    Ou du moins, sans nécessiter de contrôleur USB ?

Je pense que ce module est bien compatible zigbee et z2m.
Je ne comprends pas comment il peut arriver en unsupported.

Merci de ton aide.

1 « J'aime »

J’ai lu cette documentation : j’ai cru comprendre qu’elle permet d’intégrer un « device » et non un contrôleur.
Mon but serait d’intégrer le ZigBeeBridge Sonoff comme contrôleur pour éviter les problèmes USB.