De Node-Red 'only' à HA (+Node-Red, etc ...) | Newbee

Bonjour,

J’ai une installation domotique ‹ full dyi › (arduinos, capteurs, etc …).

J’avais, à l’origine, décidé de fonctionner avec Node-Red uniquement. J’ai fait des flows qui me permettent de voir le statut des différents éclairages de la maison via le dashboard NR et d’en changer l’état.

En gros, tout fonctionne avec MQTT. Des arduinos surveillent l’état des circuits d’éclairage via des capteurs ZHT-103 et remontent l’info sur Mosquitto sous forme de JSON.

Ces mêmes arduinos sont aussi connectés à des ‹ batteries › de relais. Sur base d’un abonnement MQTT, ils activent ces relais (qui, eux mêmes, activent des télérupteurs). Ca me permet d’avoir une installation ‹ normale › avec télérupteurs et boutons poussoirs qui est fonctionnelle même si la domotique est HS.

Au vu de l’évolution de HA et de mes besoins … j’ai décidé de m’y mettre. Donc, j’ai réinstallé mon serveur de domotique (un micro-pc industriel, i5, 8Gb RAM, SSD nvme + SSD 2.5 sata pour du stockage + Coral PCIe).

Sont installés debian 12 + docker

Niveau containers, j’ai portainer, HA, mosquitto, NR & frigate.

J’ai installé les intégrations suivantes :

  • MQTT
  • Frigate
  • Node-Red Companion
  • HACS

Tout cela fonctionne visiblement correctement et l’import de mes ‹ anciens › flows ND me permettent d’interagir sur les éclairages comme avant, via le dashboard NR.

Là où je bloque, en tant que noob HA, c’est quand je veux ‹ transformer › mes flows NR en flows qui me permettent d’utiliser le dashboard HA et plus le dashboard NR. J’ai beau chercher des tutos et d’autres vidéos … je ne m’en sors pas …

Comme vous le voyez, j’ai un noeud qui récupère le JSON, puis différentes fonctions qui récupèrent chaque parties du JSON lié à un circuit d’éclairage (j’ai fait ca ‹ bêtement ›, je ferai des boucles propres par la suite), ensuite la valeur du capteur est testée, si elle dépasse 20, le switch est mis sur ON.

Si on ‹ clique › le switch, ca active un relais qui change l’état du télérupteur lié à ce circuit en envoyant un autre message MQTT (qui est récupéré par l’arduino qui se charge des relais).

Ce que je souhaite faire, c’est une ‹ copie › de ce flow mais que ce ne soit plus un switch ‹ NR › mais un ‹ switch › HA qui, du coup, apparaisse dans le dashboard HA …

Je ne sais pas si c’est faisable en remplacant simplement le noeud (mes essais ont tous été foireux car il n’y a pas les mêmes options sur les switchs NR … J"aimerais aussi, si c’est possible, créer les entités directement depuis NR …

Merci d’avance pour le coup de pouce !!

Ma configuration


[center]## System Information

version core-2023.9.1
installation_type Home Assistant Container
dev false
hassio false
docker true
user root
virtualenv false
python_version 3.11.5
os_name Linux
os_version 6.1.0-12-amd64
arch x86_64
timezone Europe/Brussels
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4974
Installed Version 1.32.1
Stage running
Available Repositories 1283
Downloaded Repositories 3
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Dashboards
dashboards 2
resources 0
views 1
mode storage
Recorder
oldest_recorder_run 11 septembre 2023 à 08:39
current_recorder_run 21 septembre 2023 à 19:53
estimated_db_size 1.88 MiB
database_engine sqlite
database_version 3.41.2
[/center]




3 « J'aime »

Salut,

installation intéressante! J’aime bien la façon de gérer les télérupteurs!

Comme tu as tout en MQTT maison, une possibilité, un poil fastidieuse, mais qui te permettrait de ne pas toucher ton installation, c’est de déclarer des entités MQTT.
Avec un type « light » tu peux inclure en une seule entité tes capteur pour savoir si la lumière est allumée et contrôler tes relais directement.
Ce n’est qu’une question de définir correctement tes topics et payloads.
Et ensuite répliquer pour chaque lampe.

1 « J'aime »

merci pour l’info, je vais creuser tout ca :slight_smile:

J’espérais pouvoir continuer a tout faire dans NR, y créer les entités HA etc … mais je ne suis pas vraiment contre le changement, tant que c’est une évolution :slight_smile:

pour le reste, merci pour le petit commentaire, j’ai pas précisé que tous les circuits de controle (relais, télérupteurs, …) sont en 12v, histoire de ne pas tout faire cramer avec l’électronique chinese pas chère :slight_smile:

Il y a une une autre possibilité qui est d’utiliser l’intégration NodeRed disponible sur HACS qui permet effectivement de créer des entités à partir de Node Red.
Je n’ai jamais utilisé donc je ne peux pas aider plus :wink:

1 « J'aime »

@o0_NaGa_0o , bienvenue dans le monde fabuleux de HA

C’ est en effet faisable et je le fais avec cette palette
image

Par contre à choisir entre créer les devices direct dans HA via MQTT ou passer par la création des device dans NR, je prends la première solution.

1 « J'aime »

Voici ce que je fais par exemple pour declarer ces bêtes dans HA via MQTT:

mqtt:
  switch:
    - name: "couloir_inter"
      unique_id: couloir_inter
      state_topic: "shellies/couloir_inter/relay/0"
      command_topic: "shellies/couloir_inter/relay/0/command"
      payload_on: "on"
      payload_off: "off"
      retain: false
  light:
    - name: "cellier"
      unique_id: cellier
      state_topic: "shellies/cellier/relay/0"
      command_topic: "shellies/cellier/relay/0/command"
      payload_on: "on"
      payload_off: "off"
      retain: false
  sensor:
    - name: "temperature_vmc"
      unique_id: "temperature_vmc"
      state_topic: "shellies/vmc/temperature"
      device_class: temperature
      unit_of_measurement: "°C"

Intéressant, j’ai trouvé un truc similaire qui m’avait ‹ tapé › dans l’oeil :slight_smile: (Arduino RELAY switches over WiFi, controlled via HASS / MQTT, comes with OTA Support - Share your Projects! - Home Assistant Community)

Par contre, dans ma config, je n’ai pas un topic par circuit d’éclairage mais bien 15 circuits d’éclairage par topic (formatté en JSON).

En gros, mon topic ressemble a ca :

{« ZHT_4_0 »:« 0.68 »,« ZHT_4_1 »:« 2.25 »,« ZHT_4_2 »:« 0.17 »,« ZHT_4_3 »:« 0.18 »,« ZHT_4_4 »:« 0.82 »,« ZHT_4_5 »:« 0.21 »,« ZHT_4_6 »:« 0.17 »,« ZHT_4_7 »:« 0.17 »,« ZHT_4_8 »:« 0.16 »,« ZHT_4_9 »:« 0.16 »,« ZHT_4_10 »:« 0.17 »,« ZHT_4_11 »:« 0.17 »,« ZHT_4_12 »:« 0.17 »,« ZHT_4_13 »:« 0.18 »,« ZHT_4_14 »:« 0.17 »}

ZHT_4, c’est le nom d’un des arduinos. Et chaque entrée du JSON correspond à un capteur + sa valeur.

Ca, c’est pour la partie ‹ récupération de l’état ›. Pour la partie changement d’état, c’est plus ‹ simpliste ›. J’ai un topic surveillé par chaque arduino (exemple Relays_4), si le contenu du topic change, l’arduino active le relais correspondant au payload récupéré (0-9, abcdefg).

Je suis prêt a tout modifier le cas échéant, j’ai par contre envie que ce soit ‹ la bonne facon de faire › en fonction de ma config et, surtout, je ne veux pas augmenter les latences :slight_smile:

Pas obligé en faisant comme expliqué dans la doc officielle

mais si tu c’est pas trop contraignant pour toi, j’éclaterais tout pour avec un topic par entité

J’galère lol …

Actuellement, les capteurs sont gérés par NR. Le JSON est récupéré, découpé et ca marche plutot pas mal (et ca, je maitrise à peu pres lol). Ce qui pêche, c’est le ‹ switch › HA.

Je viens de faire quelques essais et j’ai pas le résultat attendu. J’arrive a créer une entité ‹ switch › depuis NR dans HA, je l’ai affecté à une ‹ pièce › et ai affiché la carte de la pièce sur mon dashboard. J’ai un petit switch qui s’affiche. C’est un bon début lol

Dans NR, ca ressemble à ca :

Je parviens a allumer et éteindre le circuit de luminaires mais j’ai un comportement indésirable si j’active l’input du noeud … la lumière s’allume, puis s’éteint, puis se rallume … sans arrêt.

Et si je n’active pas l’input, je ne récupère pas l’état de la lumière … et donc mon switch se dissocie si j’utilise le bouton poussoir ‹ mural › ou si j’utilise le dashboard NR …

Bref, je dois apprendre a utiliser ces noeuds HA, la doc est quand meme pas super facile a appréhender … donc, va falloir potasser je pense :slight_smile:

bon, ben j’ai trouvé :slight_smile:

En creusant un peu la doc des noeuds de l’intégration NR, j’ai trouvé mon bonheur.

J’ai désormais un switch dans HA, créé via NR, qui fonctionne correctement (allume, éteint et change d’état si luminaire allumé et éteint ‹ autrement ›). Et tout ca sans faire trop de changements dans mon système (très peu, au final). Je vais probablement faire évoluer tout ca dans le futur mais pour ce soir, je suis heureux :slight_smile:

La solution était de gérer un msg.enable au niveau du message envoyé au noeud. Si ce message.enable existe et est booleen, il modifie l’état du switch sans que ce dernier ne génère d’output et donc, pas de lumière qui s’allume et s’éteint mais bien un switch qui ‹ colle › a la réalité.

Par contre, quand je clique dessus sur HA, il change directement d’état, puis rechange et rechange a nouveau … ce qui est un peu ‹ moche › mais pas mortel. Je pense qu’il doit y avoir moyen d’arranger ca, mais ce sera pour un autre soir !!

Merci encore a tous !