Note de ce sujet :
  • Moyenne : 5 (1 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[TUTO] KNX --> Home Assistant via Node-Red
#1
Objectif général : piloter un appareil non KNX depuis un bouton KNX comme, par exemple, un prise commandée Wifi. 
N'ayant pas ce type d'appareil dans mon installation, j'ai utilisé une entité "Light" de Home Assistant afin de vérifier le code proposé.

Objectif du tuto: Changer l'état d'une entité "light" de Home Assistant lors d'une action sur un bouton KNX (paramétré en mode toggle)



1) Prérequis
- Installer l’add-on Node-Red dans HA : HA/Paramètres/Modules complémentaires / Boutique des modules complémentaires 
- Installer KNX Ultimate dans Node-Red 
  •    NR/Menu/ Manage Palette

[Image: dvnk.jpg]
  • Onglet Install : rechercher « node-red-contrib-knx-ultimate » et l’installer puis redémarrer Node-Red
 
2) Bouton KNX à Entity Light de HA

- ETS : GA du bouton
[Image: k8cx.jpg]

-Node Red
[Image: pag3.jpg]

Pour insérer le flux dans Node Red
1) Copier le code ci-dessous
Code :
[{"id":"a56face98308896e","type":"tab","label":"TUTO KNX --> HA","disabled":false,"info":"","env":[]},{"id":"253831be1e41e303","type":"knxUltimate","z":"a56face98308896e","server":"e91643e.d9013c","topic":"0/0/20","outputtopic":"","dpt":"1.003","initialread":0,"notifyreadrequest":false,"notifyresponse":false,"notifywrite":true,"notifyreadrequestalsorespondtobus":false,"notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized":"0","listenallga":false,"name":"0/0/20 TUTO BP KNX","outputtype":"write","outputRBE":false,"inputRBE":false,"formatmultiplyvalue":1,"formatnegativevalue":"leave","formatdecimalsvalue":999,"passthrough":"no","x":460,"y":140,"wires":[["082ee042b5cc9957"]]},{"id":"91e2030146d0f4c3","type":"api-call-service","z":"a56face98308896e","name":"Call service Tuto knx -->NR","server":"f462add6.8e0bc","version":5,"debugenabled":false,"domain":"light","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.bureau_meuble"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":960,"y":140,"wires":[[]]},{"id":"082ee042b5cc9957","type":"switch","z":"a56face98308896e","name":"","property":"payload","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":690,"y":140,"wires":[["91e2030146d0f4c3"],[]]},{"id":"e91643e.d9013c","type":"knxUltimate-config","host":"192.168.0.201","port":"3671","physAddr":"15.15.22","hostProtocol":"TunnelUDP","suppressACKRequest":false,"csv":"","KNXEthInterface":"Auto","KNXEthInterfaceManuallyInput":"","statusDisplayLastUpdate":true,"statusDisplayDeviceNameWhenALL":true,"statusDisplayDataPoint":false,"stopETSImportIfNoDatapoint":"skip","loglevel":"error","name":"Passerelle IP-KNX","localEchoInTunneling":true,"delaybetweentelegrams":"40","delaybetweentelegramsfurtherdelayREAD":"1","ignoreTelegramsWithRepeatedFlag":false},{"id":"f462add6.8e0bc","type":"server","name":"Home Assistant","addon":true}]

2) Node Red/menu/Import

3) Coller le code dans la zone rose et sélectionner "new flow" puis import et Import copy

4) Effectuer les modifications pour l'adapter à votre configuration (adresse de la passerelle, GA du bouton, Entity HA)

5) Cliquer sur "Deploy"
Répondre
#2
Tuto 2
 
Objectif général : après le premier tuto relatif au passage d’informations de KNX vers HA via Node-Red, voici un exemple de passage d’informations de HA vers KNX via Node-Red.
 
Objectif du tuto : changer le mode de chauffage de tous les thermostats de la maison :
  • soit directement par sélection depuis le Dashboard HA ;
  • soit par une programmation calendaire effectuée depuis le Dashboard HA.
 
A noter que HA et Node Red ne font qu’écrire les données dans des GA (dates, heures, etc.) et que c’est le contrôleur logique ABB ABA/S 1.2.1 qui traite les données ; en cas de plantage de HA/Node Red ou du NUC, le changement de mode sera tout de même effectué par KNX en utilisant les dernières dates et heures saisies.

1) HA
- Dashboard
Avant d’insérer la carte ci-dessous dans le Dashboard, il faut auparavant créer depuis HA/Paramètres/Appareils et services/Entrées, les entrées :
  • Liste déroulante (une pour le mode Direct et une pour le mode PROG)
  • Entrée booléenne (Autorisation programmation Dates/Heures)
  • Date début période
  • Date fin de période
  • Heure ON
  • Heure OFF
    [Image: p8g2.jpg]


- Automations
Il faut créer une première automation liée à la liste déroulante « Sélection mode de chauffage (Direct) » puis une seconde liée à « Sélection mode de chauffage (PROG) ».
[Image: v66b.jpg]
automations.yaml
Code :
- id: '1671667431895'
 alias: Mode chauffage
 description: ''
 trigger:
 - platform: state
   entity_id:
   - input_select.choix_mode_chauffage
 action:
 - choose:
   - conditions:
     - condition: state
       entity_id: input_select.choix_mode_chauffage
       state: Confort
     sequence:
     - service: input_number.set_value
       target:
         entity_id: input_number.mode_chauffage
       data:
         value: 1
   - conditions:
     - condition: state
       entity_id: input_select.choix_mode_chauffage
       state: Absent
     sequence:
     - service: input_number.set_value
       target:
         entity_id: input_number.mode_chauffage
       data:
         value: 2
   - conditions:
     - condition: state
       entity_id: input_select.choix_mode_chauffage
       state: Nuit
     sequence:
     - service: input_number.set_value
       target:
         entity_id: input_number.mode_chauffage
       data:
         value: 3
   - conditions:
     - condition: state
       entity_id: input_select.choix_mode_chauffage
       state: Hors-gel
     sequence:
     - service: input_number.set_value
       target:
         entity_id: input_number.mode_chauffage
       data:
         value: 4
- Procéder de façon similaire pour créer l’automation « Sélection mode de chauffage (PROG) »

2) Définir les GA dans ETS
[Image: x6cm.jpg]

3) Node -Red

[Image: ajal.jpg]
Pour insérer le flux dans Node Red

-  Copier le code ci-dessous
Code :
[{"id":"ac078a80b3e083a0","type":"tab","label":"Chauffage","disabled":false,"info":"","env":[]},{"id":"1af2d64ac81f8162","type":"server-state-changed","z":"ac078a80b3e083a0","name":"","server":"f462add6.8e0bc","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_number.mode_chauffage","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":400,"y":220,"wires":[["77eb487c5f7d5f7b"]]},{"id":"ddeb2d00c531fad5","type":"knxUltimate","z":"ac078a80b3e083a0","server":"e91643e.d9013c","topic":"4/2/20","outputtopic":"","dpt":"5.100","initialread":0,"notifyreadrequest":false,"notifyresponse":false,"notifywrite":true,"notifyreadrequestalsorespondtobus":false,"notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized":"0","listenallga":false,"name":"4/2/20 Mode chauffage PROG","outputtype":"write","outputRBE":true,"inputRBE":false,"formatmultiplyvalue":1,"formatnegativevalue":"leave","formatdecimalsvalue":999,"passthrough":"no","x":840,"y":280,"wires":[[]]},{"id":"519882efaba0d0ec","type":"server-state-changed","z":"ac078a80b3e083a0","name":"Mode Chauffage Validation ","server":"c45201c8a1aa256f","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_boolean.validation_prog_chauffage","entityidfiltertype":"exact","outputinitially":false,"state_type":"habool","haltifstate":"unavailable","halt_if_type":"str","halt_if_compare":"is_not","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":270,"y":100,"wires":[["e195ad2ce92cf84b"],[]]},{"id":"e195ad2ce92cf84b","type":"knxUltimate","z":"ac078a80b3e083a0","server":"e91643e.d9013c","topic":"4/2/21","outputtopic":"","dpt":"1.002","initialread":false,"notifyreadrequest":true,"notifyresponse":false,"notifywrite":false,"notifyreadrequestalsorespondtobus":false,"notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized":"0","listenallga":false,"name":"4/2/21 ABA/S 1.2.1","outputtype":"write","outputRBE":false,"inputRBE":false,"formatmultiplyvalue":1,"formatnegativevalue":"leave","formatdecimalsvalue":999,"passthrough":"no","x":610,"y":100,"wires":[[]]},{"id":"1efdb8a5f3d22764","type":"knxUltimate","z":"ac078a80b3e083a0","server":"e91643e.d9013c","topic":"4/2/24","outputtopic":"","dpt":"10.001","initialread":false,"notifyreadrequest":true,"notifyresponse":false,"notifywrite":false,"notifyreadrequestalsorespondtobus":false,"notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized":"0","listenallga":false,"name":"4/2/24 ABA/S 1.2.1","outputtype":"write","outputRBE":false,"inputRBE":false,"formatmultiplyvalue":1,"formatnegativevalue":"leave","formatdecimalsvalue":999,"passthrough":"no","x":530,"y":460,"wires":[[]]},{"id":"aa552cbf98e7a0ba","type":"server-state-changed","z":"ac078a80b3e083a0","name":"Mode chauffage Heure OFF","server":"c45201c8a1aa256f","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_datetime.heure_fin_mode_chauffage","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"unavailable","halt_if_type":"str","halt_if_compare":"is_not","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":240,"y":520,"wires":[["7c3ae40ee9516463"],[]]},{"id":"7c3ae40ee9516463","type":"knxUltimate","z":"ac078a80b3e083a0","server":"e91643e.d9013c","topic":"4/2/25","outputtopic":"","dpt":"10.001","initialread":false,"notifyreadrequest":true,"notifyresponse":false,"notifywrite":false,"notifyreadrequestalsorespondtobus":false,"notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized":"0","listenallga":false,"name":"4/2/25 ABA/S 1.2.1","outputtype":"write","outputRBE":false,"inputRBE":false,"formatmultiplyvalue":1,"formatnegativevalue":"leave","formatdecimalsvalue":999,"passthrough":"no","x":530,"y":520,"wires":[[]]},{"id":"aec122b1446fea59","type":"server-state-changed","z":"ac078a80b3e083a0","name":"Mode chauffage - Heure ON","server":"c45201c8a1aa256f","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_datetime.heure_debut_mode_chauffage","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"unavailable","halt_if_type":"str","halt_if_compare":"is_not","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":240,"y":460,"wires":[["1efdb8a5f3d22764"],[]]},{"id":"724ded923c2930db","type":"knxUltimate","z":"ac078a80b3e083a0","server":"e91643e.d9013c","topic":"4/2/22","outputtopic":"","dpt":"11.001","initialread":false,"notifyreadrequest":false,"notifyresponse":false,"notifywrite":true,"notifyreadrequestalsorespondtobus":false,"notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized":"0","listenallga":false,"name":"4/2/22 ABA/1.2.1","outputtype":"write","outputRBE":false,"inputRBE":false,"formatmultiplyvalue":1,"formatnegativevalue":"leave","formatdecimalsvalue":999,"passthrough":"no","x":530,"y":340,"wires":[[]]},{"id":"c6c8dea083966592","type":"server-state-changed","z":"ac078a80b3e083a0","name":"Mode chauffage - Date ON","server":"c45201c8a1aa256f","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_datetime.date_debut_mode_chauffage","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"unavailable","halt_if_type":"str","halt_if_compare":"is_not","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":210,"y":340,"wires":[["724ded923c2930db"],[]]},{"id":"20180881365c7a90","type":"knxUltimate","z":"ac078a80b3e083a0","server":"e91643e.d9013c","topic":"4/2/23","outputtopic":"","dpt":"11.001","initialread":false,"notifyreadrequest":false,"notifyresponse":false,"notifywrite":true,"notifyreadrequestalsorespondtobus":false,"notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized":"0","listenallga":false,"name":"4/2/23 ABA/1.2.1","outputtype":"write","outputRBE":false,"inputRBE":false,"formatmultiplyvalue":1,"formatnegativevalue":"leave","formatdecimalsvalue":999,"passthrough":"no","x":510,"y":400,"wires":[[]]},{"id":"b82a95a670a21aec","type":"server-state-changed","z":"ac078a80b3e083a0","name":"Mode chauffage- Date OFF","server":"c45201c8a1aa256f","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_datetime.date_fin_mode_chauffage","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"unavailable","halt_if_type":"str","halt_if_compare":"is_not","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":210,"y":400,"wires":[["20180881365c7a90"],[]]},{"id":"244b79147c454205","type":"server-state-changed","z":"ac078a80b3e083a0","name":"","server":"f462add6.8e0bc","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_number.mode_chauffage_prog","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":410,"y":280,"wires":[["ddeb2d00c531fad5"]]},{"id":"77eb487c5f7d5f7b","type":"knxUltimate","z":"ac078a80b3e083a0","server":"e91643e.d9013c","topic":"4/2/19","outputtopic":"","dpt":"5.100","initialread":0,"notifyreadrequest":false,"notifyresponse":false,"notifywrite":true,"notifyreadrequestalsorespondtobus":false,"notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized":"0","listenallga":false,"name":"4/2/19 Mode chauffage DIRECT","outputtype":"write","outputRBE":true,"inputRBE":false,"formatmultiplyvalue":1,"formatnegativevalue":"leave","formatdecimalsvalue":999,"passthrough":"no","x":850,"y":220,"wires":[[]]},{"id":"f462add6.8e0bc","type":"server","name":"Home Assistant","addon":true},{"id":"e91643e.d9013c","type":"knxUltimate-config","host":"192.168.1.100","port":"3671","physAddr":"15.15.22","hostProtocol":"TunnelUDP","suppressACKRequest":false,"csv":"","KNXEthInterface":"Auto","KNXEthInterfaceManuallyInput":"","statusDisplayLastUpdate":true,"statusDisplayDeviceNameWhenALL":true,"statusDisplayDataPoint":false,"stopETSImportIfNoDatapoint":"skip","loglevel":"error","name":"Passerelle IP-KNX","localEchoInTunneling":true,"delaybetweentelegrams":"40","delaybetweentelegramsfurtherdelayREAD":"1","ignoreTelegramsWithRepeatedFlag":false},{"id":"c45201c8a1aa256f","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]
- Node Red/menu/Import
- Coller le code dans la zone rose et sélectionner "new flow" puis import et Import copy
- Effectuer les modifications pour l'adapter à votre configuration
- Cliquer sur "Deploy"

4) ABA/1.2.1
[Image: m92i.jpg]

[Image: 65bg.jpg]

Calendar_S jour et Nuit : télécharger le bloc fonction ici
Répondre
#3
bammmmmmmm !!!!!! ca marche et c'est mortel !!!!! le top, tu rentres dans ton bureau et tu commandes ta prise qui n'est hélas pas seul en direct au tableau mais avec une prise wifi ca fait le job !!!
J'ai déjà poussé le truc avec des requetes http pour mon multiroom, tu arrives dans ta pièces et tu appuis sur ton intérupteur knx pour lancer ta musique, très bon, je vais pousser la config pour choisir les playlists, gestion volume etc...

Merci Ives, t'es au top, ca fonctionne super bien !
Répondre
#4
Effectivement c'est une bonne méthode pour commander en KNX, les devices qui ne sont pas compatible avec KNX.
Répondre
#5
(16/01/2023, 10:42:34)geoninja a écrit : bammmmmmmm !!!!!!  ca marche et c'est mortel !!!!! le top, tu rentres dans ton bureau et tu commandes ta prise qui n'est hélas pas seul en direct au tableau mais avec une prise wifi ca fait le job !!!
J'ai déjà poussé le truc avec des requetes http pour mon multiroom, tu arrives dans ta pièces et tu appuis sur ton intérupteur knx pour lancer ta musique, très bon, je vais pousser la config pour choisir les playlists, gestion volume etc...

Merci Ives, t'es au top, ca fonctionne super bien !

Tu pourras ensuite ajouter des tutos à la suite de celui-ci pour en faire profiter la communauté !  Tongue 

Une communauté HA existe, de même pour Node-Red mais on trouve peu d'installations KNX supervisées par HA (la très grande majorité des installations KNX sont réalisées par des pros qui installent des superviseurs typés KNX sur lesquels il peuvent faire une marge et surtout qui sont moins chronophages à paramétrer).
La communauté de ceux qui utilisent Node-Red /HA pour piloter du KNX est inexistante (sauf quelques personnes ici) et j'ai pas mal galéré pour implémenter les liens HA vers ABA/S1.2.1 via Node Red. Des idées d'autres membres avec les copies des flux Node Red sont donc les bienvenues. 

Concernant le multiroom, j'utilise la commande vocale avec Alexa pour les lecteurs Sonos mais la solution du bouton KNX est bonne une alternative, surtout qu'il est possible sur un bouton déjà utilisé d'ajouter l'appui long (encore un avantage du KNX).
Répondre
#6
(16/01/2023, 12:28:13)Ives a écrit :
(16/01/2023, 10:42:34)geoninja a écrit : bammmmmmmm !!!!!!  ca marche et c'est mortel !!!!! le top, tu rentres dans ton bureau et tu commandes ta prise qui n'est hélas pas seul en direct au tableau mais avec une prise wifi ca fait le job !!!
J'ai déjà poussé le truc avec des requetes http pour mon multiroom, tu arrives dans ta pièces et tu appuis sur ton intérupteur knx pour lancer ta musique, très bon, je vais pousser la config pour choisir les playlists, gestion volume etc...

Merci Ives, t'es au top, ca fonctionne super bien !

Tu pourras ensuite ajouter des tutos à la suite de celui-ci pour en faire profiter la communauté !  Tongue

Personnellement j'utilise la commande vocale avec Alexa pour les lecteurs Sonos mais la solution du bouton KNX est bonne une alternative, surtout qu'il est possible sur un bouton déjà utilisé d'ajouter l'appui long (encore un avantage du KNX).

Oui, le use case est que j'entre dans ma piscine ( presque a poile  Big Grin ) et je lance ma playlist ou ma radio, j'ai intégré 2 enceintes dans le plafond de la piscine. Plus besoin de se balader avec son téléphone partout; il y aura pas Alexa dans la pièce piscine, dans les autres pièces oui il faudrait que je commande le multiroom avec Alexa c'est beaucoup mieux.  Par rapport a Sonos, ca chiffre vraiment très vite, je suis partie sur du DIY Arylic, ca se pilote en API, ca fait le job facilement, je suis en train de réalisé le tiroir pour la baie 19 pouce, je ferais un poste quand il sera fini.
Répondre
#7
Mais c'est que je vais pouvoir piloter mon multiroom avec ca dit donc...
Répondre
#8
(16/01/2023, 12:52:02)geoninja a écrit :
(16/01/2023, 12:28:13)Ives a écrit :
(16/01/2023, 10:42:34)geoninja a écrit : bammmmmmmm !!!!!!  ca marche et c'est mortel !!!!! le top, tu rentres dans ton bureau et tu commandes ta prise qui n'est hélas pas seul en direct au tableau mais avec une prise wifi ca fait le job !!!
J'ai déjà poussé le truc avec des requetes http pour mon multiroom, tu arrives dans ta pièces et tu appuis sur ton intérupteur knx pour lancer ta musique, très bon, je vais pousser la config pour choisir les playlists, gestion volume etc...

Merci Ives, t'es au top, ca fonctionne super bien !

Tu pourras ensuite ajouter des tutos à la suite de celui-ci pour en faire profiter la communauté !  Tongue

Personnellement j'utilise la commande vocale avec Alexa pour les lecteurs Sonos mais la solution du bouton KNX est bonne une alternative, surtout qu'il est possible sur un bouton déjà utilisé d'ajouter l'appui long (encore un avantage du KNX).

Oui, le use case est que j'entre dans ma piscine ( presque a poile  Big Grin ) et je lance ma playlist ou ma radio, j'ai intégré 2 enceintes dans le plafond de la piscine. Plus besoin de se balader avec son téléphone partout; il y aura pas Alexa dans la pièce piscine, dans les autres pièces oui il faudrait que je commande le multiroom avec Alexa c'est beaucoup mieux.  Par rapport a Sonos, ca chiffre vraiment très vite, je suis partie sur du DIY Arylic, ca se pilote en API, ca fait le job facilement, je suis en train de réalisé le tiroir pour la baie 19 pouce, je ferais un poste quand il sera fini.

Tu sais exploiter indépendamment le canal gauche du droit avec Arylic ? Histoire de pas devoir acheter un ampli pour chaque zone...
Répondre
#9
(16/01/2023, 15:26:56)Jonathan007 a écrit :
(16/01/2023, 12:52:02)geoninja a écrit :
(16/01/2023, 12:28:13)Ives a écrit :
(16/01/2023, 10:42:34)geoninja a écrit : bammmmmmmm !!!!!!  ca marche et c'est mortel !!!!! le top, tu rentres dans ton bureau et tu commandes ta prise qui n'est hélas pas seul en direct au tableau mais avec une prise wifi ca fait le job !!!
J'ai déjà poussé le truc avec des requetes http pour mon multiroom, tu arrives dans ta pièces et tu appuis sur ton intérupteur knx pour lancer ta musique, très bon, je vais pousser la config pour choisir les playlists, gestion volume etc...

Merci Ives, t'es au top, ca fonctionne super bien !

Tu pourras ensuite ajouter des tutos à la suite de celui-ci pour en faire profiter la communauté !  Tongue

Personnellement j'utilise la commande vocale avec Alexa pour les lecteurs Sonos mais la solution du bouton KNX est bonne une alternative, surtout qu'il est possible sur un bouton déjà utilisé d'ajouter l'appui long (encore un avantage du KNX).

Oui, le use case est que j'entre dans ma piscine ( presque a poile  Big Grin ) et je lance ma playlist ou ma radio, j'ai intégré 2 enceintes dans le plafond de la piscine. Plus besoin de se balader avec son téléphone partout; il y aura pas Alexa dans la pièce piscine, dans les autres pièces oui il faudrait que je commande le multiroom avec Alexa c'est beaucoup mieux.  Par rapport a Sonos, ca chiffre vraiment très vite, je suis partie sur du DIY Arylic, ca se pilote en API, ca fait le job facilement, je suis en train de réalisé le tiroir pour la baie 19 pouce, je ferais un poste quand il sera fini.

Tu sais exploiter indépendamment le canal gauche du droit avec Arylic ? Histoire de pas devoir acheter un ampli pour chaque zone...

J'ai vu qu'on pouvais le faire avec leur appli, effectivement on peut gagner avec les amplis. J'ai pas checker avec l'api pour L/R ou LR, tu la fais toi ?
Répondre
#10
Merci Yves pour le tuto
Répondre
#11
Merci Yves, cela m'a bien aidé dans ma (pénible) mise en place de HA dans le but de remplacer Lifedomus (cela fait une semaine que je passe mon temps dessus...).
Je focalise sur les choses problèmatiques donc tout ce qui n'est pas KNX, et le plus gros problème chez moi ce sont ces sa........ de volets roulant somfy rts.
Avec la LD, ça se gérait comme un charme. Grace à ce tuto, j'ai facilement réussit à les commander via les inters KNX (jy ai perdu 2 jours avant cela à essayer du yaml et des automations... pour rien).
En revanche c'est lent comparé à la LD.

En revanche, je n'arrive pas à faire un truc qui était super simple à faire dans LD, et qui est :
Quand GA nuit = 1 alors fermer tous les volets (ça, ça marche).
MAIS si porte fenetre ouverte alors ne pas fermer son volet (afin de ne pas me retrouver enfermé dehors...)

Si quelqu'un à une piste pour me guider...
Répondre
#12
Bon j'ai un peu avancé, il semblerait qu'il faut utiliser les bloc Fonction puis coder à l'intérieur les if the else, mais j'ai pas encore trouvé dans quelle variables retrouver les GA...
Répondre
#13
Dans le menu "Paramètres/appareils et services/ onglet entités" tu retrouves toutes les entités KNX (comme par exemple cover.bureau_volet) que tu peux les utiliser dans les automatisations.
Pour créer une automatisation, sans avoir à écrire la totalité du code, tu vas dans "Paramètres/ Automatisations et scènes" puis "Créer une automatisation" ; il est possible depuis cette de basculer entre le mode yaml et éditeur.
Répondre
#14
(02/05/2023, 07:33:35)Ives a écrit : Dans le menu "Paramètres/appareils et services/ onglet entités" tu retrouves toutes les entités KNX (comme par exemple cover.bureau_volet) que tu peux les utiliser dans les automatisations.
Pour créer une  automatisation, sans avoir à écrire la totalité du code, tu vas dans "Paramètres/ Automatisations et scènes" puis "Créer une automatisation" ; il est possible depuis cette de basculer entre le mode yaml et éditeur.

J'avais déja vu cela mais je n'aivais pas tilté ! Donc merci Yves encore une fois. Avec de la chance, cela pourrait m'aider à me passer de node red.

Pour le moment je suis coincé car HA ne fait pas l'include de tous les fichiers qui sont dans le dossier Packages, et ce malgré le code suivant dans configaration.yaml (en fait in inclus que 2 fichiers, tous ce que je rajoute en plus n'est pas pris en compte...)

homeassistant:
  packages: !include_dir_named Packages
Répondre
#15
Bonjour,

Je pense qu'il manque le / à la fin.
==> packages: !include_dir_named Packages/

Moi je fais cela.

Dans ton configuration.yaml

homeassistant:
packages: !include_dir_named domaine/

pour un repertoire qui s'appelle domaine

Puis si je veux un sous repertoire dans le repertoire domaine ( exemple : repertoire hangar ), je crée un fichier .yaml avec les ligne ci dessous ou chaque ligne est egal à un sous repertoire

homeassistant:
!include_dir_named hangar/
!include_dir_named 1_maison/
!include_dir_named 2_maison/
!include_dir_named energies/
!include_dir_named gite_2p/
!include_dir_named gite_4p/
!include_dir_named piscine/
!include_dir_named rdc_maison/
!include_dir_named equestre/

Ne pas oublié le .yaml a la fin de chaque fichier.

Ca doit marcher car je crée un fichier par appareil ou canal KNX et je dois avoir à l'heure actuelle plus de 400 fichiers dans le repertoire domaine ou dans des sous repertoires de celui ci
Répondre
#16
Hello

Pas de / chez moi et cela fonctionne sans soucis.

Code :
homeassistant:
 packages: !include_dir_named packages

Et dans le dossier packages j'ai mis mes différents yaml

   

Il me semble que le / est nécessaire si tu crée des sous-dossiers. S'il n'y a que des fichiers yaml, pas besoin du /

@jdrenne: as-tu fait gaffe à la majuscule du nom de ton dossier Packages? Le dossier que tu as créé a bien cette majuscule?
Répondre
#17
Voici ma structure knx dans le configuration.yaml
   
Répondre
#18
Je viens de trouver, j'avais oublié de mettre l'extension.yaml à la fin de mes nouveaux fichier à inclure... ET juste après avoir trouvé je suis tombé sur ton message Octhib !
Donc ça c'est réglé, j'y ai juste perdue une journée...

Du coup mon 1er automate fonctionne (fermer volet somfy rts si fenêtre ouverte et qu'il pleut). Je vais devoir le dupliquer pour chaque fenêtres, c'est pas super, avec LD j'avais un seul automate pour toute la maison, c'est plus simple à gérer.

Donc je devrais pouvoir me passer de red node pour piloter ces volets somfy via bouton KNX... A tester.

CE qui est long c'est de se palucher les yaml pour déclarer les GA...
Répondre
#19
(02/05/2023, 15:57:42)jdrenne.. a écrit : CE qui est long c'est de se palucher les yaml pour déclarer les GA...

 C’est effectivement long. Du coup j’ai choisi d’archiver tous mes fichiers HA dans GitHub.
Cela permet d’avoir des archives et des versionning
Répondre
#20
(02/05/2023, 17:37:30)richardpub a écrit :
(02/05/2023, 15:57:42)jdrenne.. a écrit : CE qui est long c'est de se palucher les yaml pour déclarer les GA...

 C’est effectivement long. Du coup j’ai choisi d’archiver tous mes fichiers HA dans GitHub.
Cela permet d’avoir des archives et des versionning

Pour les gros groupes de GA j'ai fais un export en xml de mes GA (export via ETS), cela permet de ne pas avoir à se palucher les adresses x/y/z, mais il faut quand même retaper beaucoup de choses, même en utilisant la fonction recherche/remplace de n'importe quel éditeur de fichiers.
De mon coté je fais des sauvegardes des fichiers yaml, et des sauvegardes HA complètes. 

J'ai une question; je ne comprends pas la difference entre "button" et "switch" ?
Répondre
#21
(02/05/2023, 19:03:44)jdrenne a écrit : J'ai une question; je ne comprends pas la difference entre "button" et "switch" ?

Dans les Helpers (Entrées):
- Button (Bouton) permet de définir un bouton sur lequel appuyer via l'interface utilisateur. Ce type d'entité expose un seul service :button.press
On peut faire l'analogie avec le bouton physique (également appelé bouton-poussoir) qui est un "interrupteur momentané" (non verrouillable) qui provoque un changement temporaire de l'état d'un circuit électrique uniquement lorsqu'il est enfoncé. Un ressort ramène automatiquement le bouton à sa position dès qu'il n'est plus appuyé, rétablissant l'état initial du circuit.

- Toggle (Interrupteur) : lorsqu'il est activé par l'utilisateur, reste dans cet état jusqu'à ce qu'il soit à nouveau activé.
Ce type d'entités expose plusieurs services : turn_on, turn_off, toggle

Les deux types entités sont utilisables via l'interface utilisateur et dans les automatismes.
Répondre
#22
(02/05/2023, 23:31:49)Ives a écrit :
(02/05/2023, 19:03:44)jdrenne a écrit : J'ai une question; je ne comprends pas la difference entre "button" et "switch" ?

Dans les Helpers (Entrées):
- Button (Bouton) permet de définir un bouton sur lequel appuyer via l'interface utilisateur. Ce type d'entité expose un seul service :button.press
On peut faire l'analogie avec le bouton physique (également appelé bouton-poussoir) qui est un "interrupteur momentané" (non verrouillable) qui provoque un changement temporaire de l'état d'un circuit électrique uniquement lorsqu'il est enfoncé. Un ressort ramène automatiquement le bouton à sa position dès qu'il n'est plus appuyé, rétablissant l'état initial du circuit.

- Toggle  (Interrupteur) : lorsqu'il est activé par l'utilisateur, reste dans cet état jusqu'à ce qu'il soit à nouveau activé.
Ce type d'entités expose plusieurs services : turn_on, turn_off, toggle

Les deux types entités sont utilisables via l'interface utilisateur et dans les automatismes.

Merci Yves pour ces précisions.

J'ai réussit à faire un automate HA (en remplacement de ce que j'avais fait avec node red), pour gerer l'appuie d'un BP KNX qui va ouvrir/fermer un VR somfy rts. Ceci en ayant découvert que le "if then else" n'est pas dans la section "conditions" mais dans "actions" ... c'est très logique ... 
Mais bon, c'est pas encore parfait, car ayant 3 conditions à tester (up/down/stop) le if then else ne suffit pas, il me faudrait un while ou je ne sais quoi.
Répondre
#23
Hello

Je n'ai pas encore joué avec les automations et scripts mais as tu essayé d'utiliser le switch/case?

ex:

Code :
switch (local_var) {
       case 0: return std::string("Not Charging");
       case 1: return std::string("Float Charging");
       case 2: return std::string("Boost Charging");
       case 3: return std::string("Equalizing");
       default: return std::string("Unknown");
     }

Ou alors sur le même mode que l'exemple d'Ives sur la gestion du chauffage (Choose):

Code :
- id: '1671667431895'
alias: Mode chauffage
description: ''
trigger:
- platform: state
  entity_id:
  - input_select.choix_mode_chauffage
action:
- choose:
  - conditions:
    - condition: state
      entity_id: input_select.choix_mode_chauffage
      state: Confort
    sequence:
    - service: input_number.set_value
      target:
        entity_id: input_number.mode_chauffage
      data:
        value: 1
  - conditions:
    - condition: state
      entity_id: input_select.choix_mode_chauffage
      state: Absent
    sequence:
    - service: input_number.set_value
      target:
        entity_id: input_number.mode_chauffage
      data:
        value: 2
  - conditions:
    - condition: state
      entity_id: input_select.choix_mode_chauffage
      state: Nuit
    sequence:
    - service: input_number.set_value
      target:
        entity_id: input_number.mode_chauffage
      data:
        value: 3
  - conditions:
    - condition: state
      entity_id: input_select.choix_mode_chauffage
      state: Hors-gel
    sequence:
    - service: input_number.set_value
      target:
        entity_id: input_number.mode_chauffage
      data:
        value: 4
combiné avec des conditions multiples, du type:
Code :
condition:
 - condition: or
   conditions:
     - condition: state
       entity_id: binary_sensor.tybf9292188b826c3ed6cqac
       state: 'on'
     - condition: state
       entity_id: binary_sensor.tybf82b920231699632bjhni
       state: 'on'
Répondre
#24
(03/05/2023, 13:54:33)Kevlille a écrit : Hello

Je n'ai pas encore joué avec les automations et scripts mais as tu essayé d'utiliser le switch/case?

ex:

Code :
switch (local_var) {
       case 0: return std::string("Not Charging");
       case 1: return std::string("Float Charging");
       case 2: return std::string("Boost Charging");
       case 3: return std::string("Equalizing");
       default: return std::string("Unknown");
     }

Ou alors sur le même mode que l'exemple d'Ives sur la gestion du chauffage (Choose):

Code :
- id: '1671667431895'
alias: Mode chauffage
description: ''
trigger:
- platform: state
  entity_id:
  - input_select.choix_mode_chauffage
action:
- choose:
  - conditions:
    - condition: state
      entity_id: input_select.choix_mode_chauffage
      state: Confort
    sequence:
    - service: input_number.set_value
      target:
        entity_id: input_number.mode_chauffage
      data:
        value: 1
  - conditions:
    - condition: state
      entity_id: input_select.choix_mode_chauffage
      state: Absent
    sequence:
    - service: input_number.set_value
      target:
        entity_id: input_number.mode_chauffage
      data:
        value: 2
  - conditions:
    - condition: state
      entity_id: input_select.choix_mode_chauffage
      state: Nuit
    sequence:
    - service: input_number.set_value
      target:
        entity_id: input_number.mode_chauffage
      data:
        value: 3
  - conditions:
    - condition: state
      entity_id: input_select.choix_mode_chauffage
      state: Hors-gel
    sequence:
    - service: input_number.set_value
      target:
        entity_id: input_number.mode_chauffage
      data:
        value: 4
combiné avec des conditions multiples, du type:
Code :
condition:
 - condition: or
   conditions:
     - condition: state
       entity_id: binary_sensor.tybf9292188b826c3ed6cqac
       state: 'on'
     - condition: state
       entity_id: binary_sensor.tybf82b920231699632bjhni
       state: 'on'

Alors effectivement c'est ce qu'il me faudrait, mais accessible via les automations car je ne sais pas beaucoup programmer (Je suis reté à l'assembleur 370 ou 6502, et ça remonte à plus de 35 ans en arrière...).


Déja j'ai identifié un autre problème c'est que quand tu défini un VR (Cover), HA ne te donne pas accès aux différentes GA dans la partie automation... Donc soit je n'utilise pas de "Cover" et le remplace par des "switch" soit il est possible de bricoler le code yaml de automation, mais la... je suis pas à la hauteur !

Bref, je regrette vraiment ma Lifedomus !
Répondre
#25
Hello

N'ayant pas encore joué avec les automations je ne vais pas trop pouvoir t'aider mais lorsque tu dis que "HA ne te donne pas accès au différentes GA dans la partie automation", tu veux parler de l'interface GUI?

Tu as surement plus de possibilité en passant directement par le code, ou alors peut-être te créer un template cover plus complet.

Pour l'instant je suis sur une installation "basique" de HA (pas de script et automation etc...) par manque de temps, mais vu la puissance de HA je doute que ne puisse pas faire ce que tu veux.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet :