Enocean via enoceanmqtt

@mak-dev Je vais avoir besoin de votre aide. Où peut-on trouver les xml des EEP qui ne sont pas encore dans la librairie python ? En l’occurrence, D2-01-12… Il faut les faire soi-même ou il y a une librairie « toute faite » ?

Désolé je viens seulement de voir les nouveaux messages.
Parfait donc ! :+1:

Concernant EEP.xml, il faut rajouter soit-même les EEP manquants en s’aidant de l’EEP Viewer disponible sur le site de l’alliance enocean.

Je l’ai déjà fait pour gérer quelques commandes des D2-01-12.

      <profile type="0x12" description="Slot-in Module with 2 channels and no metering capabilities">
        <command description="Command identifier" shortcut="CMD" offset="4" size="4">
          <item description="Actuator Set Output" value="1" />
          <item description="Actuator Status Query" value="3" />
          <item description="Actuator Status Response" value="4" />
        </command>
        <data command="3" bits="2">
          <enum description="Command identifier" shortcut="CMD" offset="4" size="4">
            <rangeitem description="Command ID {value}" start="0" end="13" />
          </enum>
          <enum description="I/O channel" shortcut="IO" offset="11" size="5">
            <rangeitem description="Output channel {value} (to load)" start="0" end="29" />
            <item description="All output channels supported by the device" value="30" />
            <item description="Input channel (from mains supply)" value="31" />
          </enum>
        </data>
        <data command="4" bits="3">
          <enum description="Power Failure" shortcut="PF" offset="0" size="1">
            <item description="Power Failure Detection disabled/not supported" value="0" />
            <item description="Power Failure Detection enabled" value="1" />
          </enum>
          <enum description="Power Failure Detection" shortcut="PFD" offset="1" size="1">
            <item description="Power Failure Detection not detected/not supported/disabled" value="0" />
            <item description="Power Failure Detection Detected" value="1" />
          </enum>
          <enum description="Command identifier" shortcut="CMD" offset="4" size="4">
            <rangeitem description="Command ID {value}" start="0" end="13" />
          </enum>
          <enum description="Over current switch off" shortcut="OC" offset="8" size="1">
            <item description="Over current switch off: ready / not supported" value="0" />
            <item description="Over current switch off: executed" value="1" />
          </enum>
          <enum description="Error level" shortcut="EL" offset="9" size="2">
            <item description="Error level 0: hardware OK" value="0" />
            <item description="Error level 1: hardware warning" value="1" />
            <item description="Error level 2: hardware failure" value="2" />
            <item description="Error level not supported" value="3" />
          </enum>
          <enum description="I/O channel" shortcut="IO" offset="11" size="5">
            <rangeitem description="Output channel {value} (to load)" start="0" end="29" />
            <item description="Not applicable, do not use" value="30" />
            <item description="Input channel (from mains supply)" value="31" />
          </enum>
          <enum description="Local control" shortcut="LC" offset="16" size="1">
            <item description="Local control disabled / not supported" value="0" />
            <item description="Local control enabled" value="1" />
          </enum>
          <enum description="Output value" shortcut="OV" offset="17" size="7">
            <item description="Output value 0% or OFF" value="0" />
            <rangeitem description="Output value {value}% or ON" start="1" end="100" />
            <rangeitem description="Not used" start="101" end="126" />
            <item description="output value not valid / not set" value="127" />
          </enum>
        </data>
        <data command="1" bits="3">
          <enum description="Command identifier" shortcut="CMD" offset="4" size="4">
            <rangeitem description="Command ID {value}" start="0" end="13" />
          </enum>
          <enum description="Dim value" shortcut="DV" offset="8" size="3">
            <item description="Switch to new output value" value="0" />
            <item description="Dim to new output level - dim timer 1" value="1" />
            <item description="Dim to new output level - dim timer 2" value="2" />
            <item description="Dim to new output level - dim timer 3" value="3" />
            <item description="Stop dimming" value="4" />
          </enum>
          <enum description="I/O channel" shortcut="IO" offset="11" size="5">
            <rangeitem description="Output channel {value} (to load)" start="0" end="29" />
            <item description="All output channels supported by the device" value="30" />
            <item description="Input channel (from mains supply)" value="31" />
          </enum>
          <enum description="Output value" shortcut="OV" offset="17" size="7">
            <item description="Output value 0% or OFF" value="0" />
            <rangeitem description="Output value {value}% or ON" start="1" end="100" />
            <rangeitem description="Not used" start="101" end="126" />
            <item description="output value not valid / not set" value="127" />
          </enum>
        </data>
      </profile>

Il faut le rajouter dans la section telegram rorg="0xD2" / profiles func="0x01"

Je pourrai partager plus tard mon fichier EEP.xml via mon github. J’ai quelques uns des D2-01-XX.

Super merci !
J’avais commencé à faire un truc dans le genre pour la commande 1, mais entre temps j’ai fait autre chose. C’est étonnant qu’il n’y soit pas par « défaut ». Peut-être une pull request sur le dépot git ? Ce sont des modules assez courants.

Sinon, j’ai réussi à fermer un VR via un script HA :raised_hands: grand progrès ! Prochaine étape : la communication dans l’autre sens pour connaitre l’état d’un VR par exemple (enfin idéalement qu’il se mette à jour tout seul).
Je viens aussi de mettre ma clé zigbee, et enocean continue à tourner correctement… Vraiment étrange ce bug.

Par contre, je n’y connais vraiment rien sur enocean, donc j’ai du mal à saisir. Lorsque je mets en mode appairage, le « learning » se fait automatiquement quand enoceanmqtt tourne. Mais il appaire avec quoi ? Avec la clé ? Si je mets la clé sur un autre RPi (ou sur mon ordi) ce sera toujours appairé ?

Il appaire avec la clé effectivement.
Sur une autre Pi, plus besoin d’appairer. Il faut juste redéclarer le module dans le fichier de config enoceanmqtt.

Pour avoir l’état dans HA, vous avez la plateforme cover MQTT

Pour avoir l’état dans HA, vous avez la plateforme cover MQTT

Ok, j’irai regarder ça merci. J’avais pensé le faire à la main, mais s’il y a déjà une intégration pour ça c’est encore mieux.

Sur une autre Pi, plus besoin d’appairer. Il faut juste redéclarer le module dans le fichier de config enoceanmqtt.

Ok :+1: Mais par contre le déclarer dans le fichier de conf ne suffit pas pour l’appairer, il faut aller physiquement le mettre en mode appairage la première fois c’est bien ça ?
Comment sait-on quels modules doivent être appairés et lesquels non ? Par exemple, pas besoin pour les interrupteurs, les thermomètres…
A propos d’interrupteurs : si j’ai déclaré un interrupteur et un VR (que j’ai appairé également) dans mon fichier de conf, pensez-vous qu’il est possible d’appairer le VR à l’interrupteur par enoceanmqtt ? Pour que l’interrupteur ouvre/ferme le volet, même en absence de enoceanmqtt ou toute autre plateforme.

Non, le fichier de conf permet uniquement de définir les modules d’intérêt, ceux qu’on souhaite gérer.

C’est le module qui nous donne l’info. C’est souvent indiqué dans le manuel du module. Il y est indiqué comment faire l’appairage.

Dans ce cas, vous pouvez appairer directement le volet à l’interrupteur. Mettez le volet en mode appairage et appuyez sur l’interrupteur. Le volet et l’interrupteur devraient être appairés et l’interrupteur pilotera le VR.
Mais encore une fois, la doc du VR vous dira comment faire tout ça plus précisément.

En fait, c’est un logement qui était déjà tout équipé avec ces modules, et on n’a eu aucune doc.
Et concernant l’interrupteur et le VR, le problème c’est que l’interrupteur est loin du VR, donc je n’ai pas le temps de parcourir la distance le temps qu’il reste en mode appairage :rofl: Du coup je me suis dit que si j’arrivais à les appairer via la librairie ça serait plus simple. Mais c’est un détail ça.

En tous cas, merci pour votre aide ! C’est dommage que enocean ne soit pas intégré mieux que ça dans HA !

De rien. Je reste disponible si vous avez besoin d’aide.

Mauvaise nouvelle : ce matin j’ai à nouveau l’erreur Serial port exception! :frowning:
Je pense que je vais essayer d’installer HA autrement que par HAOS, c’est peut-être un problème avec ça…

@Pulpy-Luke Je pense avoir trouvé comment faire pour lancer enoceanmqtt (ou toute autre librairie) dans HA OS même après un reboot. C’est peut-être un peu tiré par les cheveux, et il y a peut-être plus « propre », mais voilà une solution :

  • script bash qui installe la librairie & co
  • shell_command dans mon fichier configuration.yaml:
shell_command:
    enoceanmqtt: bash /config/enocean/configure_enoceanmqtt.sh
  • automatisation pour appeler ce script au démarrage de HA:
trigger:
  - platform: homeassistant
    event: start
condition: []
action:
  - service: shell_command.enoceanmqtt
    data: {}

ça revient en qq sorte au même que de rajouter ces lignes de shell dans le RUN du dockerfile…

Oui ça techniquement ça doit fonctionner. Je pense par contre que faire ça hors container c’est beaucoup plus propre

L’idéal serait de modifier le dockerfile de HA OS non ? Mais là je n’ai pas les compétences (déjà que dockerfile est tout nouveau ^^). Il vaut mieux que j’installe HA autrement que par HA OS, comme vous avez fait.

Techniquement c’est faisable aussi, par contre tu va être emmerdé pour déployer ton image avec le superviseur (qui va chercher l’image officielle et pas la tienne).
Si tu veux garder le principe des containers, il faut penser ça comme un addon. ça nécessite de toute façon les mêmes connaissances + la partie liaison avec HA pour la reconnaissance comme addon.
L’autre solution immédiate c’est de faire un service sur la VM debian (et donc HA en mode docker supervised). Comme ça les 2 fonctionnent sans bidouille

Je partage l’avis de @Pulpy-Luke, refaire l’installation en mettant debian sur votre RPi (Raspberry Pi OS ?) avec HA en mode supervisé via docker.
enoceanmqtt sera lancé à chaque démarrage via le service systemd fourni.

Oui oui, c’était aussi ma conclusion.

Il vaut mieux que j’installe HA autrement que par HA OS, comme vous avez fait.

Par contre, je me pencherai dessus plus tard car je n’ai aucune idée de comment faire.

Installer Home Assistant sur RPi (ou autres SBC), Debian (Méthode Docker & Supervisor)

Hello, j’hijack le topic vu que j’ai un soucis sur le même module :slight_smile:
Donc j’ai bien rajouté le snippet plus haut, mes modules sont maintenant bien reconnu par enocean2mqtt mais j’ai pas encore toute les infos qui remonte, je vois sur le bouton qui a été appuyé via IO ( canal 0 ou 1 ) et la CMD est toujours à 4, quelques soit le bouton que j’appuie.

@Judzk
Hello,
Je crois savoir ce qui se passe.
Dans la déclaration de votre module dans le fichier de configuration enoceanmqtt.conf, rajoutez la ligne command = CMD comme indiqué ici.
Ça devrait être bon ensuite.

Effectivement ca fonctionne, je récup bien toutes les infos. J’ai vu la suite du sujet qui explique comment envoyer l’action en fonction du canal, je testerais ca plus tard.
Si jamais t’as besoin de testeur hésite pas, j’ai aussi du D2-01-0F ( controleur de prise ) et du D2-02-00 ( volet )

J’arrive pas a éditer mon message donc je me répond.
J’ai réussi a intégrer un volet via un bouton sur HA, ca fonctionne niquel, c’est laborieux le temps de comprendre la logique, surtout si on est nouveau sur MQTT, mais ca fonctionne très bien.
Encore merci à toi

Parfait :+1:
Effectivement une fois qu’on a compris la logique, ça va vite :slightly_smiling_face: