[Addon] EnOcean MQTT (dev) By @mak-dev

@Loudramin,

Tu es sûr que tu vérifies le bon module ?

@otokarl,

Tu as le même message d’erreur ou c’est différent ?
Peut être un dernier petit truc, est-ce que depuis ton HAOS tu arrive à « pinguer » l’adresse 192.168.0.17 ? Il n’y a peut être pas de route entre les deux.

oui, j’ai même essayé la même manip sur un autre module, malheureusement sans succès également …

Oui j’ai le même message d’erreur.
Je peux également pinger 192.168.0.17 depuis un shell de HAOS.
D’ailleurs, mes équipements intégrés avec MQTT (sur 192.168.0.17) marchent.
J’ai encore tellement de chose à apprendre sur HA.
Je viens du monde jeedom, il me reste ce micromodule que j’ai pas réussi à intégrer.
Je le gère pour l’instant avec l’API rest de jeedom. Je reviens dessus quand j’aurais mis en place les automatisations de base que j’avais.

Merci

Bonjour à tous,

Cela fait quelques heures que je me casse les dents sur la bonne installation de cet addon. J’ai au départ utilisé l’application Enocean native de HA, mais la version avec le MQTT semble bien tentante. J’ai donc désinstallé la version native au profit de la version Home Assistant Addon Installation de [mak-gitdev] (Merci).

Configuration dans le YAML:

device_file: /config/enoceanmqtt.conf
mapping_file: ""
eep_file: ""
log_file: /config/enoceanmqtt.log
enocean_port: /dev/serial/by-id/usb-EnOcean_GmbH_USB_300_DE_EO7BBRVL-if00-port0
debug: true
log_packets: true
mqtt_broker: {}
mqtt_discovery_prefix: homeassistant
mqtt_prefix: enoceanmqtt
mqtt_client_id: enocean_gateway
mqtt_keepalive: 60

Or je veux pour le moment juste synchroniser un capteur de température (lire ci dessous) mais aucune valeur ne remonte via le MQTT (bien que tout semble OK, sauf une ligne du journal qui me turlupine:

2023-09-02 19:00:02,939 DEBUG: Created sensor: {'name': 'enoceanmqtt/Temperature_Enocean', 'address': 94134837, 'rorg': 165, 'func': 2, 'type': 19, 'persistent': 1, 'log_learn': 1, 'publish_rssi': 1}

Elle ne correspond pas aux identifiants de mon capteur (voir ci après), et me demande bien d’ou ca sort ?
De plus, le capteur possédant un bouton d’appairage, la procédure décrite sur le GIT, ne produit rien …

Journal

s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
Preparing to start...
Retrieved devices file: /config/enoceanmqtt.conf
Starting EnOceanMQTT...
/usr/lib/python3.11/site-packages/bs4/builder/__init__.py:545: XMLParsedAsHTMLWarning: It looks like you're parsing an XML document using an HTML parser. If this really is an HTML document (maybe it's XHTML?), you can ignore or filter this warning. If it's XML, you should know that using an XML parser will be more reliable. To parse this document as XML, make sure you have the lxml package installed, and pass the keyword argument `features="xml"` into the BeautifulSoup constructor.
  warnings.warn(
2023-09-02 19:00:02,938 INFO: Logging to file: /config/enoceanmqtt.log
2023-09-02 19:00:02,939 INFO: Loading config file /data/enoceanmqtt.conf
2023-09-02 19:00:02,939 DEBUG: Created sensor: {'name': 'enoceanmqtt/Temperature_Enocean', 'address': 94134837, 'rorg': 165, 'func': 2, 'type': 19, 'persistent': 1, 'log_learn': 1, 'publish_rssi': 1}
2023-09-02 19:00:02,940 DEBUG: Global config: {'enocean_port': '/dev/ttyUSB0', 'log_packets': 'true', 'overlay': 'HA', 'db_file': '/data/enoceanmqtt_db.json', 'mapping_file': '', 'mqtt_discovery_prefix': 'homeassistant/', 'mqtt_host': 'core-mosquitto', 'mqtt_port': '1883', 'mqtt_client_id': 'enocean_gateway', 'mqtt_keepalive': '60', 'mqtt_prefix': 'enoceanmqtt/', 'mqtt_user': 'addons', 'mqtt_pwd': '*****', 'mqtt_debug': 'true'}
2023-09-02 19:00:02,940 INFO: Selected overlay : Home Assistant
2023-09-02 19:00:03,193 INFO: Mapping file correctly read: /app/enocean-mqtt/enoceanmqtt/overlays/homeassistant/mapping.yaml
2023-09-02 19:00:03,194 INFO: Device database /data/enoceanmqtt_db.json correctly read/created
2023-09-02 19:00:03,194 INFO: Authenticating: addons
2023-09-02 19:00:03,194 DEBUG: Connecting to host core-mosquitto, port 1883, keepalive 60
2023-09-02 19:00:03,199 INFO: SerialCommunicator started
2023-09-02 19:00:03,199 INFO: Auto Teach-in is disabled
2023-09-02 19:00:03,199 DEBUG: Sending CONNECT (u1, p1, wr0, wq0, wf0, c1, k60) client_id=b'enocean_gateway'
2023-09-02 19:00:03,200 WARNING: Replacing Packet.optional with default value.
2023-09-02 19:00:03,307 INFO: Sending packet
2023-09-02 19:00:03,308 DEBUG: 0x05 ['0x8'] [] OrderedDict()
2023-09-02 19:00:03,323 DEBUG: Received CONNACK (0, 0)
2023-09-02 19:00:03,324 INFO: Succesfully connected to MQTT broker.
2023-09-02 19:00:03,324 DEBUG: Sending SUBSCRIBE (d0, m1) [(b'enoceanmqtt/Temperature_Enocean/req/#', 0)]
2023-09-02 19:00:03,325 DEBUG: Sending PUBLISH (d0, q0, r1, m2), 'b'homeassistant/sensor/enocean_A50213_059C6235_NONE_t_raw/config'', ... (511 bytes)
2023-09-02 19:00:03,325 DEBUG: Sending PUBLISH (d0, q0, r1, m3), 'b'homeassistant/sensor/enocean_A50213_059C6235_NONE_tempC/config'', ... (491 bytes)
2023-09-02 19:00:03,326 DEBUG: Sending PUBLISH (d0, q0, r1, m4), 'b'homeassistant/sensor/enocean_A50213_059C6235_NONE_rssi/config'', ... (514 bytes)
2023-09-02 19:00:03,326 DEBUG: Sending PUBLISH (d0, q0, r1, m5), 'b'homeassistant/sensor/enocean_A50213_059C6235_NONE_last_seen/config'', ... (554 bytes)
2023-09-02 19:00:03,327 DEBUG: Sending SUBSCRIBE (d0, m6) [(b'homeassistant/sensor/enocean_A50213_059C6235_NONE_t_raw/config/#', 0)]
2023-09-02 19:00:03,327 DEBUG: Sending SUBSCRIBE (d0, m7) [(b'enoceanmqtt/Temperature_Enocean/__system/#', 0)]
2023-09-02 19:00:03,335 INFO: Device enoceanmqtt/Temperature_Enocean (UID: A50213_059C6235_NONE / EEP: A5-02-13) updated on device database
2023-09-02 19:00:03,335 DEBUG: List of remaining UIDS: []
2023-09-02 19:00:03,408 DEBUG: 0x02 ['0x0', '0xff', '0x94', '0x2', '0x80'] ['0xa'] OrderedDict()
2023-09-02 19:00:03,409 INFO: got response packet: OK
2023-09-02 19:00:04,336 INFO: Waiting for device base ID
2023-09-02 19:00:04,337 DEBUG: Sending PUBLISH (d0, q0, r1, m8), 'b'homeassistant/switch/enoceanmqtt_learn_FF940280/config'', ... (374 bytes)
2023-09-02 19:00:04,337 DEBUG: Sending SUBSCRIBE (d0, m9) [(b'enoceanmqtt/__system/learn/req/#', 0)]
2023-09-02 19:00:04,338 DEBUG: Sending PUBLISH (d0, q0, r1, m10), 'b'enoceanmqtt/__system/learn'', ... (3 bytes)
2023-09-02 19:00:04,341 DEBUG: Received SUBACK
2023-09-02 19:00:04,343 DEBUG: Received SUBACK
2023-09-02 19:00:04,344 DEBUG: Received PUBLISH (d0, q0, r1, m0), 'homeassistant/sensor/enocean_A50213_059C6235_NONE_t_raw/config', ...  (511 bytes)
2023-09-02 19:00:04,385 DEBUG: Received SUBACK
2023-09-02 19:00:04,388 DEBUG: Received SUBACK

Création des Variables MQTT

Focus sur le capteur de température TrioSys (/config/enoceanmqtt.conf)

[Temperature_Enocean_Tryo2sys]
address         = 0x059C6235
rorg            = 0xA5
func            = 0x02
type            = 0x13
persistent      = 1
log_learn       = 1
publish_rssi    = 1

Un petit coup de main (sur une erreur de débutant) serait le bienvenue,

merci

Petite précision , ma config HA:

 "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2023.9.0b2",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.11.5",
    "docker": true,
    "arch": "x86_64",
    "timezone": "Europe/Paris",
    "os_name": "Linux",
    "os_version": "6.1.45",
    "supervisor": "2023.08.3",
    "host_os": "Home Assistant OS 10.5",
    "docker_version": "23.0.6",
    "chassis": "vm",
    "run_as_root": true
  },

Hello @foux44,

Il s’agit bien de ton capteur qui est juste affiché en valeur décimale:

  • address : 94134837 (decimal) = 0x059C6235 (hexadecimal)
  • rorg : 165 (dec) = 0xA5 (hex)
  • pareil pour func et type

D’ailleurs tu peux remarquer dans ta 3e capture d’écran, dans la section « Informations appareil », que la config de ton capteur est bien reconnue.

D’ailleurs, concernant la config de ton capteur, tu peux supprimer les 3 dernières lignes et relancer l’addon.
Ces champs (persistent, publish_rssi, et log_learn) sont gérés automatiquement par l’addon.

Concernant l’appairage, tu n’as pas besoin d’appairer ton capteur à HA.
Ton capteur, pour indiquer la température, va envoyer un message en broadcast qui peut être écouté par tout le monde, donc pas besoin d’appairage.

Si tu n’as toujous pas de valeur remontées dans HA, dans le log, vérifies que tu as bien des messages lorsque tu appuies sur le bouton learn de ton capteur.
Bien que l’appairage ne soit pas nécessaire comme indiqué ci-dessus, le bouton learn est un moyen simple de « faire parler » ton device, et donc de s’assurer que ses messages sont bien reçus et qu’il est bien configuré.
Si rien ne s’affiche dans le log, c’est que ton device n’a soit pas assez d’énergie pour envoyer ses données, soit est hors de portée.
Partage ton log une fois que tu auras fait ça, on comprendra pourquoi rien ne remonte dans HA.

s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
Preparing to start...
Retrieved devices file: /config/enoceanmqtt.conf
Starting EnOceanMQTT...
/usr/lib/python3.11/site-packages/bs4/builder/__init__.py:545: XMLParsedAsHTMLWarning: It looks like you're parsing an XML document using an HTML parser. If this really is an HTML document (maybe it's XHTML?), you can ignore or filter this warning. If it's XML, you should know that using an XML parser will be more reliable. To parse this document as XML, make sure you have the lxml package installed, and pass the keyword argument `features="xml"` into the BeautifulSoup constructor.
  warnings.warn(
2023-09-03 09:36:41,412 INFO: Logging to file: /config/enoceanmqtt.log
2023-09-03 09:36:41,412 INFO: Loading config file /data/enoceanmqtt.conf
2023-09-03 09:36:41,413 DEBUG: Created sensor: {'name': 'enoceanmqtt/Temperature_Enocean_Tryo2sys', 'address': 94134837, 'rorg': 165, 'func': 2, 'type': 19}
2023-09-03 09:36:41,413 DEBUG: Global config: {'enocean_port': '/dev/ttyUSB1', 'log_packets': 'true', 'overlay': 'HA', 'db_file': '/data/enoceanmqtt_db.json', 'mapping_file': '', 'mqtt_discovery_prefix': 'homeassistant/', 'mqtt_host': 'core-mosquitto', 'mqtt_port': '1883', 'mqtt_client_id': 'enocean_gateway', 'mqtt_keepalive': '60', 'mqtt_prefix': 'enoceanmqtt/', 'mqtt_user': 'addons', 'mqtt_pwd': '*****', 'mqtt_debug': 'true'}
2023-09-03 09:36:41,413 INFO: Selected overlay : Home Assistant
2023-09-03 09:36:41,621 INFO: Mapping file correctly read: /app/enocean-mqtt/enoceanmqtt/overlays/homeassistant/mapping.yaml
2023-09-03 09:36:41,622 INFO: Device database /data/enoceanmqtt_db.json correctly read/created
2023-09-03 09:36:41,622 INFO: Authenticating: addons
2023-09-03 09:36:41,622 DEBUG: Connecting to host core-mosquitto, port 1883, keepalive 60
2023-09-03 09:36:41,626 INFO: SerialCommunicator started
2023-09-03 09:36:41,626 INFO: Auto Teach-in is disabled
2023-09-03 09:36:41,628 WARNING: Replacing Packet.optional with default value.
2023-09-03 09:36:41,629 DEBUG: Sending CONNECT (u1, p1, wr0, wq0, wf0, c1, k60) client_id=b'enocean_gateway'
2023-09-03 09:36:41,727 INFO: Sending packet
2023-09-03 09:36:41,727 DEBUG: 0x05 ['0x8'] [] OrderedDict()
2023-09-03 09:36:41,741 DEBUG: Received CONNACK (0, 0)
2023-09-03 09:36:41,742 INFO: Succesfully connected to MQTT broker.
2023-09-03 09:36:41,742 DEBUG: Sending SUBSCRIBE (d0, m1) [(b'enoceanmqtt/Temperature_Enocean_Tryo2sys/req/#', 0)]
2023-09-03 09:36:41,743 DEBUG: Sending PUBLISH (d0, q0, r1, m2), 'b'homeassistant/sensor/enocean_A50213_059C6235_NONE_t_raw/config'', ... (538 bytes)
2023-09-03 09:36:41,743 DEBUG: Sending PUBLISH (d0, q0, r1, m3), 'b'homeassistant/sensor/enocean_A50213_059C6235_NONE_tempC/config'', ... (518 bytes)
2023-09-03 09:36:41,743 DEBUG: Sending PUBLISH (d0, q0, r1, m4), 'b'homeassistant/sensor/enocean_A50213_059C6235_NONE_rssi/config'', ... (541 bytes)
2023-09-03 09:36:41,743 DEBUG: Sending PUBLISH (d0, q0, r1, m5), 'b'homeassistant/sensor/enocean_A50213_059C6235_NONE_last_seen/config'', ... (581 bytes)
2023-09-03 09:36:41,743 DEBUG: Sending SUBSCRIBE (d0, m6) [(b'homeassistant/sensor/enocean_A50213_059C6235_NONE_t_raw/config/#', 0)]
2023-09-03 09:36:41,744 DEBUG: Sending SUBSCRIBE (d0, m7) [(b'enoceanmqtt/Temperature_Enocean_Tryo2sys/__system/#', 0)]
2023-09-03 09:36:41,747 INFO: Device enoceanmqtt/Temperature_Enocean_Tryo2sys (UID: A50213_059C6235_NONE / EEP: A5-02-13) added to device database
2023-09-03 09:36:41,747 DEBUG: List of remaining UIDS: []
2023-09-03 09:36:41,828 DEBUG: 0x02 ['0x0', '0xff', '0x94', '0x2', '0x80'] ['0xa'] OrderedDict()
2023-09-03 09:36:41,829 INFO: got response packet: OK
2023-09-03 09:36:42,748 INFO: Waiting for device base ID
2023-09-03 09:36:42,749 DEBUG: Sending PUBLISH (d0, q0, r1, m8), 'b'homeassistant/switch/enoceanmqtt_learn_FF940280/config'', ... (374 bytes)
2023-09-03 09:36:42,749 DEBUG: Sending SUBSCRIBE (d0, m9) [(b'enoceanmqtt/__system/learn/req/#', 0)]
2023-09-03 09:36:42,749 DEBUG: Sending PUBLISH (d0, q0, r1, m10), 'b'enoceanmqtt/__system/learn'', ... (3 bytes)
2023-09-03 09:36:42,750 DEBUG: Received SUBACK
2023-09-03 09:36:42,752 DEBUG: Received SUBACK
2023-09-03 09:36:42,753 DEBUG: Received PUBLISH (d0, q0, r1, m0), 'homeassistant/sensor/enocean_A50213_059C6235_NONE_t_raw/config', ...  (538 bytes)
2023-09-03 09:36:42,754 DEBUG: Received SUBACK
2023-09-03 09:36:42,755 DEBUG: Received SUBACK
2023-09-03 09:37:41,809 DEBUG: Sending PINGREQ
2023-09-03 09:37:41,810 DEBUG: Received PINGRESP
2023-09-03 09:38:41,868 DEBUG: Sending PINGREQ
2023-09-03 09:38:41,868 DEBUG: Received PINGRESP
2023-09-03 09:39:41,923 DEBUG: Sending PINGREQ
2023-09-03 09:39:41,923 DEBUG: Received PINGRESP

Au passage, pourquoi le nom de ma variable MQTT est e2m_Temperature_Enocean_Tryo2sys _tempC alors que dans la config de l’Addon j’ai mqtt_prefix: enoceanmqtt ?

@foux44,

Si malgré plusieurs appuis, il n’y a rien dans le log et que le capteur est juste à côté, alors je pense que ton capteur est à plat effectivement.
Est-ce que la température évolue dans Enki ? Si oui alors assures toi de rafraichir le log après chaque appui.

Concernant le nom, mqtt_prefix correspond au topic MQTT racine où les devices vont remonter leurs infos et où HA pourra envoyer des commandes. Ça n’intervient pas dans le nommage des devices et entités.
Le nom du device est de la forme e2m_<nom_du_device_dans_la_config> d’où le fait que ton device s’appelle e2m_Temperature_Enocean_Tryo2sys.
C’est un choix arbitraire que j’ai fait et ça facilite la recherche de ces appareils et entités EnOcean, il suffit juste de rechercher « e2m_ »

Bon je pouvais m’agacer longtemps le module semble HS car après un séjour au frigo il ressort 25°C et aucun sniff de détecté sur Dolphin (que je viens de découvrir).

Je passe le relais (car encore des problèmes) sur ce sujet en rapport avec des modules Evology :

rorg            = 0xD2
func            = 0x01
type            = 0x12

/t/module-recepteur-connecte-enocean-pour-eclairage-evology/14364/2

Bonjour,
lorsque j’install le module, j’ai une erreur de lecture sur le fichier « enoceanmqtt.devices »
PB de droits?
voici les logs:

s6-rc: info: service legacy-services successfully started
Preparing to start…
Retrieved devices file: /config/enoceanmqtt.devices
cat: read error: Is a directory
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped

Hello @patrice_dijoux,

Je suppose que tu as installé l’addon, exact ?
Où se trouve ton fichier enoceanmqtt.devices ?

bonjour, j’ai plusieurs module enocean qui fonctionne parfaitement avec mqtt mais j’ai un récalcitrant qui pourtant a l’air d’être compatible.

le capteur de température a5-04-01, il remonte bien dans mes appareils enocean sous mqtt mais le journal est vide et les température affiche inconnu (aucune valeur)

Petite question au passage, peut on écrire ce que l’on veut devant le nom, ex ci-dessous « pilotwire »

dans le fichier enoceanmqtt.devices :
[pilotwire/tcuisine]
address = 0xadresse de mon capteur
rorg = 0xA5
func = 0x04
type = 0x01

merci de votre aide

Hello @tutur45,

Ton capteur n’a peut être plus assez d’énergie pour émettre ses infos.
Je t’invite à relire la discussion à partir de ce message pour trouver les actions à exécuter pour s’en assurer.

Concernant le nommage des appareils, il faut juste savoir que le nom choisi sert à créer le topic MQTT de l’appareil. Et rajouter un / dans un topic MQTT revient à créer une classification.
Donc tu peux ne pas mettre de / dans le nom de ton appareil tout comme tu peux l’utiliser si tu veux regrouper tes appareils suivant une certaine classification.
C’est très utile lorsqu’on veut explorer son réseau MQTT avec par exemple MQTT Explorer comme ci-dessous:
image
Dans mon cas, tout les radiateurs qui sont contrôlés par fil pilote (pilot wire) vont avoir pilotwire/ en préfixe. Les lumières vont avoir comme préfixe light/ et ainsi de suite.
Tu peux faire ce que tu veux et ce n’est pas obligatoire.
La seule règle est d’éviter les espaces et caractères spéciaux dans les noms d’appareils.

Merci pour les infos, j’ai commencer a relire, j’ai allumer puis éteint « enocean_Learn » sur mqtt tout en appuyant derrière le périphérique puis j’ai voulu lire les diagnostiques sur mon appareil et faire le mqtt info et la d’un seul coup, les valeurs sont arrivés. je ne sais pas si quelque chose du dessus a réveillé le capteur mais tout fonctionne. Cela n’était pas un problème de charge, il est à la lumière toute la journée et fonctionnait sur l’eedomus avant le transfert.

1 « J'aime »

Hello,

Je suis revenu sur mon problème que j’ai mis de côté.
En cherchant un peu finalement il fallait pas mettre le prefix mqtt_ donc host au lieu de mqtt_host
Et puis sur mon module SIN-2-2-01 j’ai mis dans enoceanmqtt.devices

rorg            = 0xD2
func            = 0x01
type            = 0x0D

Merci @mak-dev pour ce addon !!!
voilà ma VM jeedom eteint maintenant :smile:

1 « J'aime »

Bonjour a tous,

J’ai un problème au niveau du lancement enocean_mqtt, celui-ci ce coupe au lancement.

j’ai l’impression qu’il me trouve pas le fichier enoceanmqtt.devices, alors qu’il est bien déclarer dans la configuration yaml, et j’ai déjà redémarrer plusieurs fois mon HA.

image

Merci par avance :slight_smile:

Hello @Alexis_Rolland,

Dans ton cas, il faut que tu mettes device_file = /config/config/enoceanmqtt.devices.

Salut @mak-dev :slight_smile:

Est-ce que tu peux me faire un exemple ?

Merci par avance :slight_smile:

Hello @Alexis_Rolland,

Dans la configuration de l’addon, tu as une entrée qui s’appelle device_file dans laquelle tu as actuellement mis /config/enoceanmqtt.devices.
Il faut plutôt mettre /config/config/enoceanmqtt.devices.

L’explication c’est que le chemin de ton fichier est /homeassistant/config/enoceanmqtt.devices.
Dans l’addon, le dossier /homeassistant est vu comme étant un dossier qui s’appelle /config se qui donne donc, du point de vu de l’addon, /config/config/enoceanmqtt.devices.