Alle Node-RED Tutorials
- Alexa Sprachkontrolle ohne Cloud-Anbindung
- Node-RED Alarm Ereigniszeitstrahl
- Node-RED und IFTTT
- Node-RED und MQTT
- Node-RED und Alarmserver Queries
- Node-RED und der INSTAR Cloud Webhook
- Node-RED und SQL-Logging
- Node-RED und ONVIF
- Node-RED Dashboard Live Video
- Node-RED in Docker
- Node-RED unter Android
- INSTAR MQTT - Node-RED
Alle Node-RED FAQs
Node-RED und IFTTT
Q: Ich bin gerade dabei das Tutorial über Node-RED und IFTTT durchzuarbeiten.
Nur leider hänge ich bei dem Punkt: IFTTT - Kontakt zu einem Node-RED-Endpunkt. Bei der Ausführung bekomme ich die Error Meldungen: "IFTTT Read error" und "SyntaxError: Unexpected token o in JSON at position 1" Leider bin ich noch ein absoluter Anfänger in Node-Red, hoffe aber dass ihr mir weiterhelfen könnt.
A: Starten Sie zuerst mit dem Import der folgenden Node-RED Sequenz:
[{"id":"b494a047.b16e1","type":"inject","z":"7daa2c74.0caa74","name":"","topic":"","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":"","x":90,"y":60,"wires":[["dd733d09.e62"]]},{"id":"dd733d09.e62","type":"ifttt out","z":"7daa2c74.0caa74","eventName":"ifttt_webhook","key":"ed06780a.3466e8","x":234,"y":60,"wires":[]},{"id":"5ab42578.62ff9c","type":"http in","z":"7daa2c74.0caa74","name":"IFTTT POST Trigger","url":"/pushalarm/post/trigger/recording","method":"post","upload":false,"swaggerDoc":"","x":110,"y":160,"wires":[["6bc5487e.e34b78","6723978.979e168"]]},{"id":"6bc5487e.e34b78","type":"http response","z":"7daa2c74.0caa74","name":"Webhook","statusCode":"","headers":{"content-type":"application/json"},"x":296,"y":161,"wires":[]},{"id":"6723978.979e168","type":"debug","z":"7daa2c74.0caa74","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":310,"y":120,"wires":[]},{"id":"1fc3d4d.88f2a2b","type":"http in","z":"7daa2c74.0caa74","name":"IFTTT GET Trigger","url":"/pushalarm/get/trigger/recording","method":"get","upload":false,"swaggerDoc":"","x":110,"y":280,"wires":[["28ef78be.5ac678","725de5ab.46260c"]]},{"id":"28ef78be.5ac678","type":"http response","z":"7daa2c74.0caa74","name":"Webhook","statusCode":"","headers":{"content-type":"application/json"},"x":296,"y":281,"wires":[]},{"id":"725de5ab.46260c","type":"debug","z":"7daa2c74.0caa74","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":310,"y":240,"wires":[]},{"id":"ed06780a.3466e8","type":"ifttt-key","z":""}]
Diese hat einen Inject-Node zum Auslösen eines IFTTT Webhooks mit dem Event Name ifttt_webhook
- den wir später in der IFTTT Oberfläche anlegen müssen (die Benennung hier ist beliebig):
Vergessen Sie hier nicht Ihren IFTTT API Key zu hinterlegen, den Sie in Ihrem IFTTT Account Einstellungen nachschauen kkönnen.
Im folgenden haben wir zwei Webhooks in Node-RED angelegt - einen für einen POST und einen für einen GET Request. Ob IFTTT POST oder GET verwendet können Sie später in der IFTTT Konfiguration festlegen. Wir werden hier erstmal beides testen und später entscheiden, welchen wir nehmen wollen.
Der POST Webhook hat die URL /pushalarm/post/trigger/recording
- dass bedeutet wenn Sie ihn im lokalen Netzwerk aufrufen wollen, müssten Sie einen POST Request an http://IP-der-Node-RED-Installation:1880/pushalarm/post/trigger/recording senden. Dies funktioniert nur im lokalen Netzwerk. Für IFTTT müssen Sie entsprechend einen DDNS Adresse - z.B. von einer INSTAR IP Kamera im gleichen Netzwerk - anstatt der lokalen IP Adresse von Node-RED verwenden und es muß ein (externer) Port auf den internen Port Ihrer Node-RED Installation durchgeleitet werden:
Sie können hier direkt den Port 1880 durchleiten oder als externen Port einen anderen wählen.
Der POST Webhook hat die URL /pushalarm/get/trigger/recording
- dass bedeutet wenn Sie ihn im lokalen Netzwerk aufrufen wollen, können Sie einen diese URL http://IP-der-Node-RED-Installation:1880/pushalarm/get/trigger/recording direkt in Ihrem Browser aufrufen. Sie werden hier eine leere JSON Antwort {}
erhalten, wenn alles richtig konfiguriert ist.
Diese leere Antwort wird in dem als Webhook benannten HTTP Response Node erzeugt. Sie können hier alles leer lassen.
Für den POST Request müssen Sie den Webhook in IFTTT wie folgt anlegen (das Beispiel nutzt die DDNS Adresse einer AVM Fritzbox - hier kann genauso eine INSTAR DDNS Adresse verwendet werden). Der hier verwendete Port - abgetrennt durch einen Doppelpunkt von der DDNS Adresse - muß dem Port entsprechen, den Sie in Ihrem Router auf die Node-RED Installation durchgeleitet haben.
Sie sehen, dass wir hier als Body den JSON Ausdruck {"val":"on"}
mitgeben. Diesen möchten wir später zum Einschalten der Bewegungserkennungs-Bereiche nutzen.
Für den GET Request wählen Sie einfach GET als Methode aus und ändern Sie das post
zu einem get
in der URL die aufgerufen werden soll.
Sie können den IFTT Webhook jetzt testen, indem Sie die folgende URL aufrufen https://maker.ifttt.com/trigger/ifttt_webhook/with/key/c3oL9WnAbz8Z08KumJWS
. Hierbei ist ifttt_webhook
der Name den wir dem Webhook gegeben haben und c3oL9WnAbz8Z08KumJWS
Ihr persönlicher IFTTT API Schlüssel (sehr wichtig - geben Sie diesen Schlüssel nicht an Dritte weiter. Er ermöglicht Zugriff auf alle Webhooks, die Sie in IFTTT anlegen.)
Alternativ können Sie auch den node-red-contrib-ifttt Node in der Node-RED Sequenz anstoßen, um den Webhook zu kontaktieren.
Jetzt zu etwas praktischen. Kopieren Sie den folgenden Flow in Ihre Node-RED installation:
[{"id":"ead56e0c.9001","type":"http in","z":"7daa2c74.0caa74","name":"IFTTT Trigger","url":"/alarm/md/areas","method":"post","upload":false,"swaggerDoc":"","x":150,"y":539,"wires":[["db2cbc36.5d91e","6664558a.f6708c","dbe8067d.bb8a28"]]},{"id":"db2cbc36.5d91e","type":"http response","z":"7daa2c74.0caa74","name":"Webhook","statusCode":"","headers":{"content-type":"application/json"},"x":300,"y":500,"wires":[]},{"id":"ed404972.3504d8","type":"function","z":"7daa2c74.0caa74","name":"Enable Area 1","func":"var ip = \"192.168.2.165\";\nvar user = \"admin\";\nvar password = \"instar\";\n\n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nvar currenttime= hh + \":\" + mmm + \":\" + ss;\nvar currentdate= dd + \".\" + mm + \".\" + yyyy;\n\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last updateChanged: \" + currentdate + \" - \" + currenttime});\n\nmsg.topic = \"area 1\";\nmsg.payload = ip+\"/param.cgi?cmd=setmdattr&-name=1&-enable=1&-usr=\"+user+\"&-pwd=\"+password;\nreturn msg;","outputs":1,"noerr":0,"x":535,"y":390,"wires":[["c2d5879e.abb308"]]},{"id":"2e3134ea.2896bc","type":"function","z":"7daa2c74.0caa74","name":"Disable Area 1","func":"var ip = \"192.168.2.165\";\nvar user = \"admin\";\nvar password = \"instar\";\n\n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nvar currenttime= hh + \":\" + mmm + \":\" + ss;\nvar currentdate= dd + \".\" + mm + \".\" + yyyy;\n\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last updateChanged: \" + currentdate + \" - \" + currenttime});\n\nmsg.topic = \"area 1\";\nmsg.payload = ip+\"/param.cgi?cmd=setmdattr&-name=1&-enable=0&-usr=\"+user+\"&-pwd=\"+password;\nreturn msg;","outputs":1,"noerr":0,"x":535,"y":570,"wires":[["23d3f1c2.2207de"]]},{"id":"23d3f1c2.2207de","type":"change","z":"7daa2c74.0caa74","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":570,"wires":[["ae6b249f.2bd9b8"]]},{"id":"c2d5879e.abb308","type":"change","z":"7daa2c74.0caa74","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":390,"wires":[["d214ac4.329e15"]]},{"id":"ae6b249f.2bd9b8","type":"http request","z":"7daa2c74.0caa74","name":"m1_disable","method":"GET","ret":"txt","url":"","tls":"","x":834,"y":570,"wires":[["e46d691e.6c1a68"]]},{"id":"d214ac4.329e15","type":"http request","z":"7daa2c74.0caa74","name":"m1_enable","method":"GET","ret":"txt","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":834,"y":390,"wires":[["e46d691e.6c1a68"]]},{"id":"6664558a.f6708c","type":"switch","z":"7daa2c74.0caa74","name":"Push","property":"payload.val","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"false","repair":false,"outputs":2,"x":330,"y":539,"wires":[["ed404972.3504d8","3ceb937e.88f20c","96be2992.947a38","93c60eb7.d9497"],["2e3134ea.2896bc","e3f362a8.041ef","26ac4b9c.4632e4","ed93967b.79c908"]]},{"id":"e46d691e.6c1a68","type":"debug","z":"7daa2c74.0caa74","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1039,"y":538,"wires":[]},{"id":"3ceb937e.88f20c","type":"function","z":"7daa2c74.0caa74","name":"Enable Area 2","func":"var ip = \"192.168.2.165\";\nvar user = \"admin\";\nvar password = \"instar\";\n\n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nvar currenttime= hh + \":\" + mmm + \":\" + ss;\nvar currentdate= dd + \".\" + mm + \".\" + yyyy;\n\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last updateChanged: \" + currentdate + \" - \" + currenttime});\n\nmsg.topic = \"area 2\";\nmsg.payload = ip+\"/param.cgi?cmd=setmdattr&-name=2&-enable=1&-usr=\"+user+\"&-pwd=\"+password;\nreturn msg;","outputs":1,"noerr":0,"x":535,"y":432,"wires":[["98144281.8d951"]]},{"id":"98144281.8d951","type":"change","z":"7daa2c74.0caa74","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":432,"wires":[["c7bfd8c6.b8f6e8"]]},{"id":"c7bfd8c6.b8f6e8","type":"http request","z":"7daa2c74.0caa74","name":"m1_enable","method":"GET","ret":"txt","url":"","tls":"","x":834,"y":432,"wires":[["e46d691e.6c1a68"]]},{"id":"96be2992.947a38","type":"function","z":"7daa2c74.0caa74","name":"Enable Area 3","func":"var ip = \"192.168.2.165\";\nvar user = \"admin\";\nvar password = \"instar\";\n\n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nvar currenttime= hh + \":\" + mmm + \":\" + ss;\nvar currentdate= dd + \".\" + mm + \".\" + yyyy;\n\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last updateChanged: \" + currentdate + \" - \" + currenttime});\n\nmsg.topic = \"area 3\";\nmsg.payload = ip+\"/param.cgi?cmd=setmdattr&-name=3&-enable=1&-usr=\"+user+\"&-pwd=\"+password;\nreturn msg;","outputs":1,"noerr":0,"x":535,"y":472,"wires":[["a4c727eb.e93508"]]},{"id":"a4c727eb.e93508","type":"change","z":"7daa2c74.0caa74","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":472,"wires":[["6cb7cabe.3103d4"]]},{"id":"6cb7cabe.3103d4","type":"http request","z":"7daa2c74.0caa74","name":"m1_enable","method":"GET","ret":"txt","url":"","tls":"","x":834,"y":472,"wires":[["e46d691e.6c1a68"]]},{"id":"93c60eb7.d9497","type":"function","z":"7daa2c74.0caa74","name":"Enable Area 4","func":"var ip = \"192.168.2.165\";\nvar user = \"admin\";\nvar password = \"instar\";\n\n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nvar currenttime= hh + \":\" + mmm + \":\" + ss;\nvar currentdate= dd + \".\" + mm + \".\" + yyyy;\n\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last updateChanged: \" + currentdate + \" - \" + currenttime});\n\nmsg.topic = \"area 4\";\nmsg.payload = ip+\"/param.cgi?cmd=setmdattr&-name=4&-enable=1&-usr=\"+user+\"&-pwd=\"+password;\nreturn msg;","outputs":1,"noerr":0,"x":535,"y":512,"wires":[["d3c05e5.8e40da"]]},{"id":"d3c05e5.8e40da","type":"change","z":"7daa2c74.0caa74","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":512,"wires":[["bd3b3647.c5a998"]]},{"id":"bd3b3647.c5a998","type":"http request","z":"7daa2c74.0caa74","name":"m1_enable","method":"GET","ret":"txt","url":"","tls":"","x":834,"y":512,"wires":[["e46d691e.6c1a68"]]},{"id":"e3f362a8.041ef","type":"function","z":"7daa2c74.0caa74","name":"Disable Area 2","func":"var ip = \"192.168.2.165\";\nvar user = \"admin\";\nvar password = \"instar\";\n\n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nvar currenttime= hh + \":\" + mmm + \":\" + ss;\nvar currentdate= dd + \".\" + mm + \".\" + yyyy;\n\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last updateChanged: \" + currentdate + \" - \" + currenttime});\n\nmsg.topic = \"area 2\";\nmsg.payload = ip+\"/param.cgi?cmd=setmdattr&-name=2&-enable=0&-usr=\"+user+\"&-pwd=\"+password;\nreturn msg;","outputs":1,"noerr":0,"x":535,"y":612,"wires":[["9e948381.1b5bf"]]},{"id":"9e948381.1b5bf","type":"change","z":"7daa2c74.0caa74","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":612,"wires":[["758ed212.5c8c6c"]]},{"id":"758ed212.5c8c6c","type":"http request","z":"7daa2c74.0caa74","name":"m1_disable","method":"GET","ret":"txt","url":"","tls":"","x":834,"y":612,"wires":[["e46d691e.6c1a68"]]},{"id":"26ac4b9c.4632e4","type":"function","z":"7daa2c74.0caa74","name":"Disable Area 3","func":"var ip = \"192.168.2.165\";\nvar user = \"admin\";\nvar password = \"instar\";\n\n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nvar currenttime= hh + \":\" + mmm + \":\" + ss;\nvar currentdate= dd + \".\" + mm + \".\" + yyyy;\n\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last updateChanged: \" + currentdate + \" - \" + currenttime});\n\nmsg.topic = \"area 3\";\nmsg.payload = ip+\"/param.cgi?cmd=setmdattr&-name=3&-enable=0&-usr=\"+user+\"&-pwd=\"+password;\nreturn msg;","outputs":1,"noerr":0,"x":535,"y":652,"wires":[["b6569fcb.32091"]]},{"id":"b6569fcb.32091","type":"change","z":"7daa2c74.0caa74","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":652,"wires":[["6676cfed.b231"]]},{"id":"6676cfed.b231","type":"http request","z":"7daa2c74.0caa74","name":"m1_disable","method":"GET","ret":"txt","url":"","tls":"","x":834,"y":652,"wires":[["e46d691e.6c1a68"]]},{"id":"ed93967b.79c908","type":"function","z":"7daa2c74.0caa74","name":"Disable Area 4","func":"var ip = \"192.168.2.165\";\nvar user = \"admin\";\nvar password = \"instar\";\n\n// Update the status with current timestamp\nvar now = new Date();\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nvar currenttime= hh + \":\" + mmm + \":\" + ss;\nvar currentdate= dd + \".\" + mm + \".\" + yyyy;\n\nnode.status({fill:\"blue\",shape:\"ring\",text:\"Last updateChanged: \" + currentdate + \" - \" + currenttime});\n\nmsg.topic = \"area 4\";\nmsg.payload = ip+\"/param.cgi?cmd=setmdattr&-name=4&-enable=0&-usr=\"+user+\"&-pwd=\"+password;\nreturn msg;","outputs":1,"noerr":0,"x":535,"y":692,"wires":[["ed9704cc.f69a18"]]},{"id":"ed9704cc.f69a18","type":"change","z":"7daa2c74.0caa74","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":692,"wires":[["bd53e77a.f197f8"]]},{"id":"bd53e77a.f197f8","type":"http request","z":"7daa2c74.0caa74","name":"m1_disable","method":"GET","ret":"txt","url":"","tls":"","x":834,"y":692,"wires":[["e46d691e.6c1a68"]]},{"id":"dbe8067d.bb8a28","type":"debug","z":"7daa2c74.0caa74","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":290,"y":580,"wires":[]}]
Diese Sequenz gibt Ihnen einen neuen POST Webhook auf der URL /alarm/md/areas
:
Sortiert dann ob ein {"val":"on"}
oder {"val":"off"}
gesendet wurde (dies hatten wir in der IFTTT Konfiguration festgelegt):
Im folgenden werden dann die Bereiche entweder ein oder ausgeschaltet auf der Kamera, die in den 8 Function-Nodes festgelegt wird: