Plugin Zigbee2mqtt

Voici les informations sur mon nouveau plugin :

  • Zigbee2mqtt (zigbee2mqtt)
  • Permettra d’installer Zigbee2Mqtt / MQTT / Client Mosquitto, de gérer les options d’inclusion etc…
  • Langages utilisés : FR
  • Utilise-t-il un démon ? Oui des dépendances particulières ? Oui des crons ? Oui
  • Possède-t-il un panel dédié ? Pas d’actualité
  • Payant

Le plugin permettra de positionner un Jeedom de différentes façon.

  • Zigbee2mqtt → Gestion/Intégration des équipements
  • MQTT → Gestion du serveur MQTT
  • Client MQTT → Pour l’intégration des équipements zigbee directement dans le plugin.
    Ces 3 pôles seront en option pour (par exemple) permettre de déporter le serveur zigbee2mqtt sur un autre jeedom et vice, versa.

EDIT : @laetitia Pour l’id du plugin, si zigbee2mqtt est trop long, me le dire svp que je mette zb2mqtt (idem pour le tag). Merci

3 « J'aime »

Bonjour @MrGreen,

J’ai entendu beaucoup de bien de ton plugin, et je souhaiterai l’essayer, ou peut on le trouver ?

Merci

Le plugins n’est pas encore publié. Il est en cours de dév.
Du coup, je ne comprends pas où tu en as entendu parlé ? (c’est une question lol)

Tu es sur quelle plateforme ? tu veux être testeur alpha ? :slight_smile:

On à un peut vendu ma mèche avec Nebz :rofl:

(à force de parler de zigbee2mqtt)

2 « J'aime »

moi je veux bien, x64. mais mon mosquitto et mon zigbee2mqtt sont dans deux containers séparés de jeedom sur mon proxmox
tu vas utiliser nodejs 14 je suppose ? (voir ici : NodeJS 12 - Migration - #46 par nebz )

si tu veux pour mes plugins j’utilise un installeur unique :

Je ne dirais rien sur les sources de l’information :wink: , mais bon, tu as ouvert une page sur forum
Ayant dit cela, je suis partant pour tester

1 « J'aime »

faut que je regarde tout cela oui pour NodeJS 14.
Merci ! :slight_smile:

Et bien je vois qu’il y a des volontaires pour les tests, c’est plutôt cool :wink:


ça avance, ça avance :grin: :grin:

Le plugins permettra d’installer zigbee2mqtt, mais aussi de gérer (ou pas) le serveur mqtt, et le client mqtt ou pas, mais si activé : Avec création des équipements avec les jolies photos.

Il y aura une bonne période en Alpha où le plugin sera en privé le temps que vous m’aidiez à tout bien stabiliser !!

3 « J'aime »

Cool et pret :+1:

1 « J'aime »

très intéressant, à suivre !

1 « J'aime »

cool :slight_smile: tu gèreras aussi si zigbee2mqtt est distant ? (je suppose que tu vas chercher les images dans leur dossier… faudra passer par ssh ou alors via le frontend, il y a peut-etre une url pour les images.)

je suppose aussi que tu vas chercher les infos directement sur zigbee2mqtt (genre les min/max, les types de commandes etc) ?

Nop j’ai pas encore poncé le moyen de récupérer les infos dans leur répertoire. L’image est récupéré du git (download de l’image, et stockage en local).

Si tu as une piste je prends.

ah non c’est encore mieux du git !! comme ca tu dois pas te connecter au frontend !

pour les définitions aussi ? tu vas chercher là dedans ? https://github.com/Koenkk/zigbee-herdsman-converters/blob/master/devices.js ou bien tu as trouvé mieux ?

apparemment il se base sur ca pour construire ses devices et la doc : https://github.com/Koenkk/zigbee2mqtt.io/blob/master/docgen/supported-devices.js

J’vais regarder cela, mais pour le moment, je créé la commande de l’équipement lorsque elle arrive dans le payload. Du coup si battery → Je dis que c’est un type batterie par exemple, si humidity, c’est de l’humidité.
(du cas par cas).

Je me demande si je ne vais pas continuer comme cela, car c’est quand même très très redondent.

Je n’ai pas trouvé dans leurs fichiers des infos comme les min max, les unités etc… pour le moment.

Ok, tu vas en avoir vite besoin pour les temperature couleur sur les lumières etc. Je vais chercher ou ils ont mis ça :wink:

Tout est là, exemple pour une ikea :

https://github.com/Koenkk/zigbee-herdsman-converters/blob/master/devices.js#L2316

Donc faut faire un require de ce fichier comme c’était fait dans le fichier supported devices que je t’ai envoyé plus haut et tu devrais récupérer l’info… je veux bien te faire un POC demain.

Voilà, donc mon POC :

git clone https://github.com/Koenkk/zigbee-herdsman-converters.git
cd zigbee-herdsman-converters
npm ci
cd ..
nano test.js

const devices = [...require('./zigbee-herdsman-converters').devices];
console.log(JSON.stringify(devices,null, "\t"));

nodejs test.js > devices.json

et résultat un array contenant des équipements comme ceci :

{
        "exposes": [{
                "type": "light",
                "features": [{
                        "type": "binary",
                        "name": "state",
                        "property": "state",
                        "access": 7,
                        "value_on": "ON",
                        "value_off": "OFF",
                        "value_toggle": "TOGGLE",
                        "description": "On/off state of this light"
                    }, {
                        "type": "numeric",
                        "name": "brightness",
                        "property": "brightness",
                        "access": 7,
                        "value_min": 0,
                        "value_max": 254,
                        "description": "Brightness of this light"
                    }, {
                        "type": "numeric",
                        "name": "color_temp",
                        "property": "color_temp",
                        "access": 7,
                        "unit": "mired",
                        "value_min": 150,
                        "value_max": 500,
                        "description": "Color temperature of this light",
                        "presets": [{
                                "name": "coolest",
                                "value": 150,
                                "description": "Coolest temperature supported"
                            }, {
                                "name": "cool",
                                "value": 250,
                                "description": "Cool temperature (250 mireds / 4000 Kelvin)"
                            }, {
                                "name": "neutral",
                                "value": 370,
                                "description": "Neutral temperature (370 mireds / 2700 Kelvin)"
                            }, {
                                "name": "warm",
                                "value": 454,
                                "description": "Warm temperature (454 mireds / 2200 Kelvin)"
                            }, {
                                "name": "warmest",
                                "value": 500,
                                "description": "Warmest temperature supported"
                            }
                        ]
                    }
                ]
            }, {
                "type": "enum",
                "name": "effect",
                "property": "effect",
                "access": 2,
                "values": ["blink", "breathe", "okay", "channel_change", "finish_effect", "stop_effect"],
                "description": "Triggers an effect on the light (e.g. make light blink for a few seconds)"
            }, {
                "type": "numeric",
                "name": "linkquality",
                "property": "linkquality",
                "access": 1,
                "unit": "lqi",
                "description": "Link quality (signal strength)",
                "value_min": 0,
                "value_max": 255
            }
        ],
        "fromZigbee": [{
                "cluster": "lightingColorCtrl",
                "type": ["attributeReport", "readResponse"]
            }, {
                "cluster": "genOnOff",
                "type": ["attributeReport", "readResponse"]
            }, {
                "cluster": "genLevelCtrl",
                "type": ["attributeReport", "readResponse"]
            }, {
                "cluster": "genLevelCtrl",
                "type": ["attributeReport", "readResponse"]
            }, {
                "cluster": "genOnOff",
                "type": ["attributeReport", "readResponse"]
            }, {
                "cluster": "genBasic",
                "type": ["attributeReport", "readResponse"]
            }, {
                "cluster": "genBasic",
                "type": ["attributeReport", "readResponse"]
            }, {
                "cluster": "msOccupancySensing",
                "type": ["attributeReport", "readResponse"]
            }, {
                "cluster": "msRelativeHumidity",
                "type": ["attributeReport", "readResponse"]
            }, {
                "cluster": "msPressureMeasurement",
                "type": ["attributeReport", "readResponse"]
            }, {
                "cluster": "msTemperatureMeasurement",
                "type": ["attributeReport", "readResponse"]
            }
        ],
        "toZigbee": [{
                "key": ["state", "brightness", "brightness_percent"]
            }, {
                "key": ["color_temp", "color_temp_percent"]
            }, {
                "key": ["transition"],
                "attr": []
            }, {
                "key": ["rate"],
                "attr": []
            }, {
                "key": ["brightness_move", "brightness_move_onoff"]
            }, {
                "key": ["colortemp_move", "color_temp_move"]
            }, {
                "key": ["brightness_step", "brightness_step_onoff"]
            }, {
                "key": ["color_temp_step"]
            }, {
                "key": ["level_config"]
            }, {
                "key": ["power_on_behavior"]
            }, {
                "key": ["color_options"]
            }, {
                "key": ["effect", "alert", "flash"]
            }, {
                "key": ["scene_store"]
            }, {
                "key": ["scene_recall"]
            }, {
                "key": ["scene_add"]
            }, {
                "key": ["scene_remove"]
            }, {
                "key": ["scene_remove_all"]
            }
        ],
        "meta": {
            "configureKey": 2
        },
        "zigbeeModel": ["lumi.light.aqcn02"],
        "model": "ZNLDP12LM",
        "vendor": "Xiaomi",
        "description": "Aqara smart LED bulb"
    }

dans exposes tu as quasi une liste de commande a créer avec le nom de la propriété etc :slight_smile:

c’est sur base de ce json qu’ils créent les équipements dans le frontend zigbee2mqtt :

et hop ! 1358 équipements déjà tout faits :slight_smile:

1 « J'aime »

tant que je suis lancé :wink: autre POC, détourer les images des équipements :

sudo apt-get install imagemagick
wget https://www.zigbee2mqtt.io/images/devices/9CZA-M350ST-Q1A.jpg
convert 9CZA-M350ST-Q1A.jpg -fuzz 2% -fill none -draw "matte 0,0 floodfill" -channel alpha -blur 0x2 -level 50x100% +channel result.png

image avant :
image

result.png :
image
(j’ai capturé le résultat sur mon visionneur d’image car Communauté déconne avec les png avec transparence)

source : python - How to remove white background of image and make it transparent? - Stack Overflow

1 « J'aime »