Your home at your fingertips

Mise en route – Automatisation avec Node-RED


Le saviez-vous :

Problèmes de confidentialité graves avec les assistants personnels en ligne : Lire la critique


 

Jump directly the Node-RED application library:  Node-RED App Library – ready-to-use applications in security, heating, smart senior living and more (recommended reading).

Introduction

Nous utilisons le language de programmation graphique Node-Red qui va permettre de faire des fonctions d’automatisation et de logique pour le KNX. Ce language de programmation est très simple. Notre node realKNX récupére l’ensemble des informations du proServ et ne nécessite donc aucune programmation supplémentaire hormis celle du proServ effectué par ETS.

1) realKNX:

 

–> realknx-in: Listens to state changes of a selected realKNX Item.

–> realknx-get: Gets an realKNX Item on an input message.

–> realknx-monitor: Monitors the realknx-controller node.

–> realknx-out: Sends commands or state updates to a selected realKNX Item.

Exemple de programmation

Sommaire: 

1)Logic ET / OU / XOR:

2)Invert

3)Push notification

4)HTTP Request

5)Google Home – Text-en-parole avec état [1bit]

6)Google Home – Text-en-parole avec état [1byte]

7) Google Home – Information vocale avec Aux

8) Fonction logique en fonction d’une horloge ou de l’état du soleil

9)Mathématiques

1)Logic ET / OU / XOR:

Lors de la configuration, vous devez impérativement sélectionner l’option  ” -> Convert output to boolean:  “ dans le module realknx-in

Module nécessaire: 

  • realknx-in
  • boolean logic
  • realknx-out  ou autre pour la commande.

ET: Si l’ensemble des entrées sont égales à “true” alors le résultat sera “true”. Si une entrée est “false”, le résultat sera donc “false”.
OU: Si une seule entrée est “true” alors le résultat sera “true”. “False” sera envoyé uniquement lorsque l’ensemble des entrées sont “false”.
OU EXCLUSIF: Le résultat est “true” uniquement si l’ensemble des entrées sont différentes. Donc si toutes les entrées sont “true” ou “false”, le résultat sera “false”

Exemple:

Nous avons le retour d’état de trois lampes KNX qui vont me permettre grâce à la logique de m’indiquer si une des lampes est allumée ou pas. Cela est utile car je peux savoir si j’ai bien éteint TOUTE les lumières dans une pièce. Je peux renvoyer cette information sur un objet d’état [1bit] grâce a un realknx-out.

Code


[{"id":"3c3fe9e.0537896","type":"realknx-in","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Garage - Appliques","passthru":false,"booleanoutput":true,"outputatstartup":true,"x":251,"y":160,"wires":[["3bee6971.de7ad6"]]},{"id":"9d1c8922.b81be","type":"realknx-in","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Garage - Sol","passthru":false,"booleanoutput":true,"outputatstartup":true,"x":229,"y":208,"wires":[["3bee6971.de7ad6"]]},{"id":"4ec00c31.05d30c","type":"realknx-in","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Garage - Spots","passthru":false,"booleanoutput":true,"outputatstartup":true,"x":239,"y":256,"wires":[["3bee6971.de7ad6"]]},{"id":"3bee6971.de7ad6","type":"BooleanLogic","z":"b8c9a488.f73c78","name":"","operation":"OR","inputCount":"3","topic":"startup","x":557.0000152587891,"y":214,"wires":[["b70b887c.6514d"]]},{"id":"b70b887c.6514d","type":"realknx-out","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Garage - Etat Lumière","topic":"","payload":"","booleaninput":true,"x":800,"y":214,"wires":[]},{"id":"b1d2fbe.d184108","type":"realknx-controller","z":"","name":"realknx-ctrl","host":"localhost","port":"3000"}]

2)Invert

Lors de la configuration, vous devez impérativement sélectionner l’option  ” -> Convert output to boolean:  “ dans le module realknx-in

Module nécessaire:

  • realknx-in
  • Invert
  • realknx-out  ou autre pour la commande.

INVERT: Si le realknx-in envoie un “true”, alors Invert le convertira en “false”. Et inversement!

Exemple:

Possibilité d’allumer une lampe lorsqu’une autre vient de s’éteindre.

Code


[{"id":"e9b09c5d.d73498","type":"realknx-in","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Home cinema - Floor","passthru":false,"booleanoutput":true,"outputatstartup":true,"x":280,"y":480,"wires":[["f02983b1.243f5"]]},{"id":"3a85553b.314fc2","type":"realknx-out","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Home cinema - Table","topic":"","payload":"","booleaninput":true,"x":660,"y":480,"wires":[]},{"id":"f02983b1.243f5","type":"Invert","z":"b8c9a488.f73c78","name":"Invert","x":468.7840881347656,"y":479.34090423583984,"wires":[["3a85553b.314fc2"]]},{"id":"b1d2fbe.d184108","type":"realknx-controller","z":"","name":"realknx-ctrl","host":"localhost","port":"3000"}]

 

3)Push notification

Lors de la configuration, vous devez impérativement sélectionner l’option  ” -> Convert output to boolean:  “ dans le module realknx-in

Module nécessaire:

  • realknx-in
  • pushbullet

PUSHBULLET: En fonction de l’état du realknx-in, vous allez pouvoir recevoir une notification sur vos smartphones

Installation du module: 

a) Menu de Node-Red (hamburger en haut à droite)
b) Manage Palette
c) Install (partie gauche de l’écran)
d) Copier ceci : node-red-node-pushbullet puis Install
e) A la fin de l’installation, mettre le module pushbullet-out dans votre flow

Configuration du Node: 

a) Se connecter sur https://www.pushbullet.com/
b) Créer un compte
c) Aller dans Settings puis dans Account
d) Puis créer un Access Token.
e) Copier le code API
f) Retourner sur Node-Red
g) Cliquer sur le menu de Node-Red (hamburger en haut à droite)
h) Cliquer sur Configuration Nodes
i) Double-click sur “PushBullet Config” et coller le code API
j) Télécharger l’application smartphone pushbullet et se connecter avec votre compte.

Paramètrage:

Quand votre pushbullet va recevoir un msg.payload, il sera envoyé sur les appareils que vous aurez sélectionné. Le titre (Title) est le message qui apparait directement sur votre écran et le msg.payload est la description qui sera uniquement visible à partir de l’application pushbullet sur votre smartphone.

Exemple:

Recevoir une push notification sur votre smartphone en fonction d’un état KNX

Code


[{"id":"ba7a85a1.07fe98","type":"realknx-in","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Salon - Porte","passthru":false,"booleanoutput":true,"outputatstartup":false,"x":356,"y":700,"wires":[["775ea7a1.00d32"]]},{"id":"775ea7a1.00d32","type":"switch","z":"b8c9a488.f73c78","name":"","property":"payload","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","outputs":2,"x":510,"y":700,"wires":[["a017101e.aebce"],["a1f60797.dbba7"]]},{"id":"a017101e.aebce","type":"change","z":"b8c9a488.f73c78","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"La porte est ouverte","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":680,"y":680,"wires":[["833d043e.dcdbb8"]]},{"id":"a1f60797.dbba7","type":"change","z":"b8c9a488.f73c78","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"La porte est fermée","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":680,"y":720,"wires":[["cd5639c0.4f288"]]},{"id":"833d043e.dcdbb8","type":"pushbullet","z":"b8c9a488.f73c78","config":"","pushtype":"note","title":"","chan":"","name":"","x":890,"y":680,"wires":[]},{"id":"cd5639c0.4f288","type":"pushbullet","z":"b8c9a488.f73c78","config":"","pushtype":"note","title":"","chan":"","name":"","x":890,"y":720,"wires":[]},{"id":"b1d2fbe.d184108","type":"realknx-controller","z":"","name":"realknx-ctrl","host":"localhost","port":"3000"}]

 

4)HTTP Request

Lors de la configuration, vous devez impérativement sélectionner l’option  ” -> Convert output to boolean:  “ dans le module realknx-in

Module nécessaire:

  • realknx-in
  • HTTP request

HTTP REQUEST: En fonction de l’état du realknx-in, vous allez pouvoir envoyer une requête HTTP vers un équipement.

Exemple:

Envoyer une requête HTTP à votre télévision en fonction de l’état de votre enceinte..

Code


[{"id":"f8cb8e8.22a45f","type":"http request","z":"b8c9a488.f73c78","name":"","method":"GET","ret":"txt","url":"// TAP HER YOUR HTTP REQUEST // ","tls":"","x":810,"y":982,"wires":[[]]},{"id":"b2755673.6edbb8","type":"switch","z":"b8c9a488.f73c78","name":"","property":"payload","propertyType":"msg","rules":[{"t":"true"}],"checkall":"true","outputs":1,"x":657.2159118652344,"y":982.6590881347656,"wires":[["f8cb8e8.22a45f"]]},{"id":"6d35eaec.797f3c","type":"switch","z":"b8c9a488.f73c78","name":"","property":"payload","propertyType":"msg","rules":[{"t":"false"}],"checkall":"true","outputs":1,"x":656.2159118652344,"y":1043.6590881347656,"wires":[["ff34358b.70dda8"]]},{"id":"f1874af0.0150e8","type":"realknx-in","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Living Room - Speaker","passthru":true,"booleanoutput":true,"outputatstartup":false,"x":456.2159118652344,"y":1013.6590957641602,"wires":[["b2755673.6edbb8","6d35eaec.797f3c"]]},{"id":"ff34358b.70dda8","type":"http request","z":"b8c9a488.f73c78","name":"","method":"GET","ret":"txt","url":"// TAP HER YOUR HTTP REQUEST // ","tls":"","x":810,"y":1043,"wires":[[]]},{"id":"b1d2fbe.d184108","type":"realknx-controller","z":"","name":"realknx-ctrl","host":"localhost","port":"3000"}]

 

5)Google Home – Text-en-parole avec état [1bit]

Lors de la configuration, vous devez impérativement sélectionner l’option  ” -> Convert output to boolean:  “ dans le module realknx-in

Module nécessaire:

  • realknx-in
  • googlehome-notify-nj4

 

googlehome-notify-nj4 : Lorsque ce module reçoit un msg.payload, il va le traduire en parole sur le Google Home sélectionné.

Configuration du Node: 

a) Menu de Node-Red (hamburger en haut à droite)
b) Cliquer sur Configuration Nodes
c) Double-click sur “GoogleHome-config-node” et tapez l’adresse IP du Google Home

Exemple:

Faire dire à un Google Home une information concernant votre installation comme si la porte est en train de s’ouvrir ou pas.

Code


[{"id":"33ab6bc6.fb20d4","type":"realknx-in","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Salon - Porte","passthru":false,"booleanoutput":true,"outputatstartup":false,"x":301,"y":1240,"wires":[["db683951.359918"]]},{"id":"db683951.359918","type":"change","z":"b8c9a488.f73c78","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"true","fromt":"bool","to":"La porte est ouverte","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"false","fromt":"bool","to":"La porte est fermé","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":504,"y":1240,"wires":[["b3250fb4.5acc1"]]},{"id":"b3250fb4.5acc1","type":"googlehome-notify-nj4","z":"b8c9a488.f73c78","server":"","name":"Google Home","x":720,"y":1240,"wires":[]},{"id":"b1d2fbe.d184108","type":"realknx-controller","z":"","name":"realknx-ctrl","host":"localhost","port":"3000"}]

 

6)Google Home – Text-en-parole avec état [1byte]

Lors de la configuration, vous ne devez pas sélectionner l’option  ” -> Convert output to boolean:  “ dans le module realknx-in

Module nécessaire:

  • realknx-in
  • googlehome-notify-nj4

googlehome-notify-nj4 : Lorsque ce module reçoit un msg.payload, il va le traduire en parole sur le Google Home sélectionné.

Configuration du Node: 

a) Menu de Node-Red (hamburger en haut à droite)
b) Cliquer sur Configuration Nodes
c) Double-click sur “GoogleHome-config-node” et tapez l’adresse IP du Google Home

Configuration de la fonction: 

a) Double-Click sur la fonction “[var] Volume”
b) Modifier le texte qui en vert car c’est celui qui va être dit par Google. Veuillez respecter la mise en forme.

Exemple:

Faire dire à un Google Home une information concernant votre installation comme le niveau de votre volume..

Code


[{"id":"c6a115fa.a8cc68","type":"realknx-in","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Salon - Volume","passthru":false,"booleanoutput":false,"outputatstartup":false,"x":340,"y":1480,"wires":[["4ba41f76.45f718"]]},{"id":"a1c6650c.c32788","type":"function","z":"b8c9a488.f73c78","name":"[var] Volume","func":"var nombre = Number(msg.payload);\n// Please choose your text in green then integrate your variable with \n var msg1 = { payload : \"Le volume est à \"+ nombre + \" pourcents\" }; \n return [msg1]; ","outputs":"1","noerr":0,"x":730,"y":1480,"wires":[["2ad828bc.d5c9d"]]},{"id":"4ba41f76.45f718","type":"delay","z":"b8c9a488.f73c78","name":"","pauseType":"queue","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"6","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":540,"y":1480,"wires":[["a1c6650c.c32788"]]},{"id":"2ad828bc.d5c9d","type":"googlehome-notify-nj4","z":"b8c9a488.f73c78","server":"","name":"Google Home","x":920,"y":1480,"wires":[]},{"id":"b1d2fbe.d184108","type":"realknx-controller","z":"","name":"realknx-ctrl","host":"localhost","port":"3000"}]

 

7) Google Home – information vocale avec Aux

Lors de la configuration, vous ne devez pas sélectionner l’option  ” -> Convert output to boolean:  “ dans le module realknx-in pour un [AUX-1byte]

Lors de la configuration, vous devez impérativement sélectionner l’option  ” -> Convert output to boolean:  “ dans le module realknx-in pour un [AUX-1bit-ON]

Module nécessaire: 

  • realknx-in
  • googlehome-notify-nj4

 

Exemple:

Avec cet exemple, Google Home va dire “Il est l’heure de venir à table” lorsque d’un appui sur notre bouton KNX. Cela peut être utile pour prévenir le reste de la maison d’un événement:

  • A table
  • Au lit
  • Debout
  • etc…

 

Code


[{"id":"dd2a1a75.b6bed8","type":"change","z":"b8c9a488.f73c78","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"Il est l'heure de venir à table","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":780,"y":1680,"wires":[["8f53c325.db62a"]]},{"id":"9668f26a.1e2518","type":"realknx-in","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Maison - A table","passthru":true,"booleanoutput":false,"outputatstartup":false,"x":342,"y":1680,"wires":[["588bf36e.4e415c"]]},{"id":"588bf36e.4e415c","type":"trigger","z":"b8c9a488.f73c78","op1":"0","op2":"1","op1type":"str","op2type":"str","duration":"1","extend":false,"units":"s","reset":"","name":"","x":500,"y":1680,"wires":[["4a4b6d45.d0f4fc"]]},{"id":"8003f40e.5d68a8","type":"change","z":"b8c9a488.f73c78","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"Il est l'heure de venir à table","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":780,"y":1744,"wires":[["371b87c6.16a428"]]},{"id":"88426965.3d0ce8","type":"realknx-in","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Maison - A table","passthru":true,"booleanoutput":true,"outputatstartup":false,"x":342,"y":1744,"wires":[["d49fe69.a4c8b18"]]},{"id":"d49fe69.a4c8b18","type":"trigger","z":"b8c9a488.f73c78","op1":"false","op2":"true","op1type":"bool","op2type":"bool","duration":"1","extend":false,"units":"s","reset":"","name":"","x":500,"y":1744,"wires":[["806745fb.aeffa"]]},{"id":"806745fb.aeffa","type":"switch","z":"b8c9a488.f73c78","name":"","property":"payload","propertyType":"msg","rules":[{"t":"false"}],"checkall":"true","outputs":1,"x":630,"y":1744,"wires":[["8003f40e.5d68a8"]]},{"id":"4a4b6d45.d0f4fc","type":"switch","z":"b8c9a488.f73c78","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"str"}],"checkall":"true","outputs":1,"x":630,"y":1680,"wires":[["dd2a1a75.b6bed8"]]},{"id":"b7955ee3.2e3a38","type":"comment","z":"b8c9a488.f73c78","name":"[AUX-1byte]","info":"","x":174,"y":1681,"wires":[]},{"id":"492097ed.01972","type":"comment","z":"b8c9a488.f73c78","name":"[AUX-1bit-ON]","info":"","x":174,"y":1744,"wires":[]},{"id":"8f53c325.db62a","type":"googlehome-notify-nj4","z":"b8c9a488.f73c78","server":"","name":"Google Home","x":963,"y":1680,"wires":[]},{"id":"371b87c6.16a428","type":"googlehome-notify-nj4","z":"b8c9a488.f73c78","server":"","name":"Google Home","x":963,"y":1744,"wires":[]},{"id":"b1d2fbe.d184108","type":"realknx-controller","z":"","name":"realknx-ctrl","host":"localhost","port":"3000"}]

 

8) Fonction logique en fonction d’une horloge ou de l’état du soleil

Lors de la configuration, vous devez impérativement sélectionner l’option  ” -> Convert output to boolean:  “ dans le module realknx-in

Lors de la configuration, vous devez impérativement sélectionner l’option  ” -> If msg arrives on input, always pass through to output: “ dans le module realknx-in

Module nécessaire:

  • realknx-in
  • Big Timer
  • Invert
  • Boolean logic
  • realknx-out

 

Big Timer : Ce module permet de faire de faire des actions en fonction d’une horloges, du coucher/lever du soleil, à l’aube/crépuscule, et au debut/fin de nuit.

 

 

 

 

 

 

 

 

 

Configuration du Node: 

a) Double-click sur “Big Timer” 
b) Renseigner obligatoirement la latitude et la longitude de votre position pour permettre de calculer les informations en fonction du soleil.
c) Choisir le moment pour On time et OFF time

Exemple:

Lors de l’appui sur la touche l’interrupteur KNX “Cosy/Off”, je vais activer un scénario d’ambiance pour ma pièce avec un “true”. Si il fait nuit, cela sera le Cosy Night qui sera mis en route avec un éclairage faible pour ne pas agresser les yeux. En revanche, si il fait jour, c’est le scénario Cosy day qui sera activé dans le but de créer une ambiance beaucoup plus intense. Lorsque d’un second appui sur cette touche, je vais envoyer un “false” qui va couper l’ensemble des lumières de ma pièce.

Code


[{"id":"a74a8206.e8374","type":"bigtimer","z":"b8c9a488.f73c78","outtopic":"fromBigTimer","outpayload1":"true","outpayload2":"false","name":"BigTimer","lat":"43.623753","lon":"7.046926","starttime":"5000","endtime":"5001","startoff":0,"endoff":0,"offs":0,"outtext1":"","outtext2":"","timeout":1440,"sun":true,"mon":true,"tue":true,"wed":true,"thu":true,"fri":true,"sat":true,"jan":true,"feb":true,"mar":true,"apr":true,"may":true,"jun":true,"jul":true,"aug":true,"sep":true,"oct":true,"nov":true,"dec":true,"day1":0,"month1":0,"day2":0,"month2":0,"day3":0,"month3":0,"day4":0,"month4":0,"day5":0,"month5":0,"d1":0,"w1":0,"d2":0,"w2":0,"d3":0,"w3":0,"d4":0,"w4":0,"d5":0,"w5":0,"suspend":false,"random":false,"repeat":true,"atstart":true,"x":300,"y":1980,"wires":[["86192dfe.3b06d8","cf44dfe2.d785e8"],[],[]]},{"id":"85cc8dd8.eb1e78","type":"inject","z":"b8c9a488.f73c78","name":"Day","topic":"","payload":"on","payloadType":"str","repeat":"","crontab":"","once":false,"x":112,"y":1960,"wires":[["a74a8206.e8374"]]},{"id":"19cf71c.158890e","type":"inject","z":"b8c9a488.f73c78","name":"Night","topic":"","payload":"off","payloadType":"str","repeat":"","crontab":"","once":false,"x":112,"y":2000,"wires":[["a74a8206.e8374"]]},{"id":"86192dfe.3b06d8","type":"BooleanLogic","z":"b8c9a488.f73c78","name":"","operation":"AND","inputCount":2,"topic":"result","x":568,"y":2044.5,"wires":[["148658a6.d55757"]]},{"id":"df511ab8.528158","type":"realknx-in","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Garage - Cosy/Off","passthru":true,"booleanoutput":true,"outputatstartup":false,"x":130,"y":2124,"wires":[["5a4031b4.27b858","f3867525.c0ad"]]},{"id":"5a4031b4.27b858","type":"switch","z":"b8c9a488.f73c78","name":"","property":"payload","propertyType":"msg","rules":[{"t":"true"}],"checkall":"true","outputs":1,"x":298,"y":2101,"wires":[["681e0db.51b04f4"]]},{"id":"148658a6.d55757","type":"switch","z":"b8c9a488.f73c78","name":"","property":"payload","propertyType":"msg","rules":[{"t":"true"}],"checkall":"true","outputs":1,"x":694,"y":2044.5,"wires":[["375024a7.ac9d04"]]},{"id":"ab9c5d03.dc7ec","type":"BooleanLogic","z":"b8c9a488.f73c78","name":"","operation":"AND","inputCount":2,"topic":"result","x":568,"y":2098,"wires":[["1624889e.45d31f"]]},{"id":"681e0db.51b04f4","type":"trigger","z":"b8c9a488.f73c78","op1":"true","op2":"false","op1type":"bool","op2type":"bool","duration":"1","extend":false,"units":"s","reset":"","name":"","x":428,"y":2100,"wires":[["86192dfe.3b06d8","ab9c5d03.dc7ec"]]},{"id":"1624889e.45d31f","type":"switch","z":"b8c9a488.f73c78","name":"","property":"payload","propertyType":"msg","rules":[{"t":"true"}],"checkall":"true","outputs":1,"x":696,"y":2098,"wires":[["e09afd00.f47d8"]]},{"id":"cf44dfe2.d785e8","type":"Invert","z":"b8c9a488.f73c78","name":"Invert","x":430,"y":2046,"wires":[["ab9c5d03.dc7ec"]]},{"id":"5c60b768.e54f48","type":"comment","z":"b8c9a488.f73c78","name":"BigTimer (more..)","info":"The BigTimer sends 'true' during daytime and night time its sends 'false'.\n\n**Note** You must change the location, make sure to use '.'' and not ',' in the lat/long.","x":300,"y":1920,"wires":[]},{"id":"8d1ac3e2.7989e","type":"comment","z":"b8c9a488.f73c78","name":"Force day & night","info":"For test for example","x":100,"y":1920,"wires":[]},{"id":"f3867525.c0ad","type":"switch","z":"b8c9a488.f73c78","name":"","property":"payload","propertyType":"msg","rules":[{"t":"false"}],"checkall":"true","outputs":1,"x":297,"y":2147,"wires":[["e9858590.1d3278"]]},{"id":"e9858590.1d3278","type":"realknx-out","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Garage - All OFF","topic":"","payload":"","booleaninput":true,"x":1077,"y":2147,"wires":[]},{"id":"51131f7d.3dc3b8","type":"comment","z":"b8c9a488.f73c78","name":"replace these (more..)","info":"The 'Cosy day' and 'Cosy night' are debug nodes to show the output values.\n\nReplace the 'Cosy day' and 'Cosy night' debug nodes with your realKNX-out nodes.\n","x":1100,"y":1980,"wires":[]},{"id":"fee0912b.5a3ef","type":"realknx-out","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Garage - Cosy Day","topic":"ItemCommand","payload":"","booleaninput":true,"x":1075,"y":2044,"wires":[]},{"id":"eed010be.beb638","type":"realknx-out","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Garage - Cosy Night","topic":"ItemCommand","payload":"","booleaninput":true,"x":1085.7840881347656,"y":2098.34090423584,"wires":[]},{"id":"8dc69f49.54c86","type":"inject","z":"b8c9a488.f73c78","name":"","topic":"","payload":"false","payloadType":"bool","repeat":"","crontab":"","once":true,"x":1308,"y":2099,"wires":[["fee0912b.5a3ef","eed010be.beb638","e9858590.1d3278"]]},{"id":"375024a7.ac9d04","type":"change","z":"b8c9a488.f73c78","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"true","fromt":"bool","to":"29","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":861,"y":2044,"wires":[["fee0912b.5a3ef"]]},{"id":"e09afd00.f47d8","type":"change","z":"b8c9a488.f73c78","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"true","fromt":"bool","to":"30","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":864,"y":2098,"wires":[["eed010be.beb638"]]},{"id":"d2aa59a.f9539a8","type":"comment","z":"b8c9a488.f73c78","name":"number of your scene (0..63)","info":"","x":860,"y":1980,"wires":[]},{"id":"95d66bca.bc4a4","type":"comment","z":"b8c9a488.f73c78","name":"Don't remove..","info":"The next version will be delete this function... ","x":1313,"y":2051,"wires":[]},{"id":"b1d2fbe.d184108","type":"realknx-controller","z":"","name":"realknx-ctrl","host":"localhost","port":"3000"}]

 

9)Mathématiques:

Lors de la configuration, vous ne devez pas sélectionner l’option  ” -> Convert output to boolean:  “ dans le module realknx-in

Module nécessaire: 

  • realknx-in
  • Fonction
  • realknx-out si nécéssaire pour une commande

 

Exemple:

Nous avons le retour d’état de trois lampes KNX qui vont me permettre grâce à la logique de m’indiquer si une des lampes est allumée ou pas. Cela est utile car je peux savoir si j’ai bien éteint TOUTE les lumières dans une pièce. Je peux renvoyer cette information sur un objet d’état [1bit] grâce a un realknx-out.

 

Code


[{"id":"416f8540.e4dabc","type":"function","z":"b8c9a488.f73c78","name":"Addition","func":"// Replace the name in green with the name of your variable1\nif (msg.topic===\"Cinéma - Sol\") {\n context.global.Y0 = msg.payload;\n }\n // Replace the name in green with the name of your variable2\nif (msg.topic===\"Cinéma - Plafonnier\"){\n context.global.Y1 = msg.payload;\n }\n // Write the type of operation\nmsg.payload= context.global.Y0 + context.global.Y1 ;\n\n// The result is sent to msg.payload\nreturn msg ; ","outputs":"1","noerr":0,"x":720,"y":2940,"wires":[["c72cfc55.472828"]]},{"id":"e8844ec3.fb664","type":"realknx-in","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Cinéma - Plafonnier","passthru":false,"booleanoutput":false,"outputatstartup":false,"x":530,"y":3060,"wires":[["b59826a.9f4ae58","cf040a0b.4f1af8","a52721a5.df419","eab83c28.b13048","416f8540.e4dabc"]]},{"id":"c72cfc55.472828","type":"debug","z":"b8c9a488.f73c78","name":"Addition","active":true,"console":"false","complete":"payload","x":940,"y":2940,"wires":[]},{"id":"b9f53d2f.2e6cc","type":"debug","z":"b8c9a488.f73c78","name":"Soustraction","active":true,"console":"false","complete":"payload","x":950,"y":2978,"wires":[]},{"id":"1c4fee2a.35e71a","type":"debug","z":"b8c9a488.f73c78","name":"Multiplication","active":true,"console":"false","complete":"payload","x":960,"y":3014,"wires":[]},{"id":"eab83c28.b13048","type":"function","z":"b8c9a488.f73c78","name":"Soustraction","func":"// Replace the name in green with the name of your variable1\nif (msg.topic===\"Cinéma - Sol\") {\n context.global.Y0 = msg.payload;\n }\n // Replace the name in green with the name of your variable2\nif (msg.topic===\"Cinéma - Plafonnier\"){\n context.global.Y1 = msg.payload;\n }\n // Write the type of operation\nmsg.payload= context.global.Y0 - context.global.Y1 ;\n\n// The result is sent to msg.payload\nreturn msg ; ","outputs":"1","noerr":0,"x":730,"y":2978,"wires":[["b9f53d2f.2e6cc"]]},{"id":"a52721a5.df419","type":"function","z":"b8c9a488.f73c78","name":"Multiplication","func":"// Replace the name in green with the name of your variable1\nif (msg.topic===\"Cinéma - Sol\") {\n context.global.Y0 = msg.payload;\n }\n // Replace the name in green with the name of your variable2\nif (msg.topic===\"Cinéma - Plafonnier\"){\n context.global.Y1 = msg.payload;\n }\n // Write the type of operation\nmsg.payload= context.global.Y0 * context.global.Y1 ;\n\n// The result is sent to msg.payload\nreturn msg ; ","outputs":"1","noerr":0,"x":740,"y":3014,"wires":[["1c4fee2a.35e71a"]]},{"id":"cf040a0b.4f1af8","type":"function","z":"b8c9a488.f73c78","name":"Division","func":"// Replace the name in green with the name of your variable1\nif (msg.topic===\"Cinéma - Sol\") {\n context.global.Y0 = msg.payload;\n }\n // Replace the name in green with the name of your variable2\nif (msg.topic===\"Cinéma - Plafonnier\"){\n context.global.Y1 = msg.payload;\n }\n // Write the type of operation\nmsg.payload= context.global.Y0 / context.global.Y1 ;\n\n// The result is sent to msg.payload\nreturn msg ; ","outputs":"1","noerr":0,"x":720,"y":3050,"wires":[["fc88ed97.e348e"]]},{"id":"fc88ed97.e348e","type":"debug","z":"b8c9a488.f73c78","name":"Divison","active":true,"console":"false","complete":"payload","x":940,"y":3050,"wires":[]},{"id":"b59826a.9f4ae58","type":"function","z":"b8c9a488.f73c78","name":"Moyenne","func":"// Replace the name in green with the name of your variable1\nif (msg.topic===\"Cinéma - Sol\") {\n context.global.Y0 = msg.payload;\n }\n // Replace the name in green with the name of your variable2\nif (msg.topic===\"Cinéma - Plafonnier\"){\n context.global.Y1 = msg.payload;\n }\n // Write the type of operation\nmsg.payload= (context.global.Y0 + context.global.Y1)/2 ;\n\n// The result is sent to msg.payload\nreturn msg ; ","outputs":"1","noerr":0,"x":720,"y":3086,"wires":[["e342c2b8.5d6c8"]]},{"id":"e342c2b8.5d6c8","type":"debug","z":"b8c9a488.f73c78","name":"Moyenne","active":true,"console":"false","complete":"payload","x":940,"y":3086,"wires":[]},{"id":"b1e43f52.61307","type":"realknx-in","z":"b8c9a488.f73c78","name":"","controller":"b1d2fbe.d184108","itemname":"Cinéma - Sol","passthru":false,"booleanoutput":false,"outputatstartup":false,"x":510,"y":2960,"wires":[["416f8540.e4dabc","eab83c28.b13048","a52721a5.df419","cf040a0b.4f1af8","b59826a.9f4ae58"]]},{"id":"b1d2fbe.d184108","type":"realknx-controller","z":"","name":"realknx-ctrl","host":"localhost","port":"3000"}]

 

10) Phillips HUE: Envoie état (On/Off) d’une lampe Phillips HUE pour realknx-node

Lors de la configuration, vous ne devez pas sélectionner l’option  ” -> Convert output to boolean:  “ dans le module realknx-in

Module nécessaire: 

  • realknx-in
  • Fonction
  • realknx-out si nécéssaire pour une commande

 

Exemple:

Nous avons le retour d’état de trois lampes KNX qui vont me permettre grâce à la logique de m’indiquer si une des lampes est allumée ou pas. Cela est utile car je peux savoir si j’ai bien éteint TOUTE les lumières dans une pièce. Je peux renvoyer cette information sur un objet d’état [1bit] grâce a un realknx-out.

 

Code


abc