Ankündigung

Einklappen
Keine Ankündigung bisher.

Node-RED und IFTTT

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Markus2806
    antwortet
    Danke hat gekappt Komischerweise war der Pfad aber richtig
    Habe nun ein SSL Zertifikat erstellt und unter Common Name habe ich die lokale IP Adresse angegeben.
    Den Pfad habe ich in settings.js angepasst aber leider klappt es nicht mit dem Admin-Panel über https://<IP-Adresse>:1880/admin/ -> ERR_SSL_PROTOCOL_ERROR


    Einen Kommentar schreiben:


  • INSTAR
    antwortet
    Die Anleitungen unter:

    https://wiki.instar.de/Software/Linux/

    sind mehr ein Step-by-Step um Debian zu einer Smarthome Überwachungstation zu machen und bauen aufeinander auf. Ich denke das einfach der Benutzer nodeadmin auf dem System fehlt. In dem Fall liegt das Node-RED Verzeichnis im home Verzeichnis des Nutzers, den man während der Installation aktiv hatte. Um rauszufinden wo es ist, einfach mal das folgende eingeben:

    Code:
    cd ~
    ls -la
    Der erste Befehl bringt einen in das home Verzeichnis des aktiven Users, der zweite listet alle Dateien und Ordner in dem Verzeichnis. Wenn .node-red darunter ist:

    Code:
    cd ./.node-red
    pwd

    Mit dem ersten Befehl betritt man das Verzeichnis und der zweite zeigt einem den Pfad an, wo man sich gerade befinden - z.B. /home/meinnutzer/.node-red. Dann kann man den Befehl entsprechend ändern:


    Einen Kommentar schreiben:


  • Markus2806
    antwortet
    Danke INSTAR

    So offen würde ich das Node-Red sowieso nicht betreiben wollen
    Muss mir das mit der Authentifizierung nochmals anschauen.

    Ich habe jetzt nochmals Node-Red unter folgender Anleitung https://wiki.instar.de/Software/Linux/Node-RED/ neu installiert.
    Habe alle Befehle mit dem Nodeadmin ausgeführt. Nur bei dem Befehl erhalte ich die Rückmeldung dass das Verzeichnis nicht existiert.


    Wenn ich das geschafft habe, kommt dann die Einbindung der zweiten Kamera dran.
    Zuletzt geändert von Markus2806; 24.11.2019, 17:38.

    Einen Kommentar schreiben:


  • INSTAR
    antwortet
    Zitat von Markus2806 Beitrag anzeigen
    Hallo INSTAR
    Jetzt frage ich mich, kann ich die adminAuth trotzdem aktivieren, dann müsste ich aber den Benutzer und Passwort mitgeben?
    http://benutzerasswort@xy.ddns.net...alarm/md/areas
    Kurz - Ja

    Man muß zwingend die Authentifizierung bei Node-RED aktivieren, wenn man die Oberfläche im Router durchleitet. Es gibt da draußen leider böse Menschen, die einem sonst Crypto-Miner oder schlimmeres auf dem Pi installieren.


    Zitat von Markus2806 Beitrag anzeigen
    Hallo INSTARWie löse ich das ganze mit einer zweiten Kamera? Ich habe für jede Kamera einen eigenen Flow erstellt.
    Kann ich irgendwo mitgeben, dass entweder Flow1 oder Flow2 ausgeführt wird?

    Wir haben hier ein Tutorial wie man mit URL Queries des Alarmservers in Node-RED arbeitet:

    https://wiki.instar.de/Erweitert/Ala...our_Smarthome/

    Genau so kann man auch in IFTTT im Body des Request Informationen mitgeben - z.B.:


    {
    "val": on,
    "camera": "front_door"
    }


    Und dann in Node-RED nicht nur nach on/off sortieren, sondern auch nach der Kamera die man ansprechen möchte - im Beispiel die Kamera an der Eingangstür.

    Einen Kommentar schreiben:


  • Markus2806
    antwortet
    Hallo INSTAR

    vielen Dank für das FAQ.
    Leider musste ich meinen Raspi komplett neu installieren, weil ich mir die Settings.js Datei verhunzt hatte und nicht mehr auf das Node-Red gekommen bin.
    Hab dann alles nochmals installiert und bin der FAQ gefolgt. Jetzt funktioniert es auch
    Einziger Unterschied ist, dass ich diesmal keine Änderungen in der Settings.js Datei durchgeführt habe.
    Hier hatte ich ja die "adminAuth" aktiviert. Dies wird wahrscheinlich auch der Grund gewesen sein, wieso er nicht weiter gekommen ist.

    Jetzt frage ich mich, kann ich die adminAuth trotzdem aktivieren, dann müsste ich aber den Benutzer und Passwort mitgeben?
    http://benutzer:passwort@xy.ddns.net...alarm/md/areas

    Wie löse ich das ganze mit einer zweiten Kamera? Ich habe für jede Kamera einen eigenen Flow erstellt.
    Kann ich irgendwo mitgeben, dass entweder Flow1 oder Flow2 ausgeführt wird?

    Einen Kommentar schreiben:


  • INSTAR
    antwortet
    Hallo Markus2806 ,

    Ich habe mir das ganze nochmal - basierend auf deinem Code - angeschaut und zum Laufen gebracht. Damit es etwas übersichtlicher formatiert ist, habe ich es hier in ein FAQ gepackt:

    https://wiki.instar.de/Frequently_As...RED_and_IFTTT/

    Ich hatte ein paar Dinge geändert - z.B. einmal die DDNS einer AVM Fritzbox genommen, anstatt der INSTAR DDNS und auch den Zugriff ohne HTTPS eingerichtet. Aber auch mit dieser Konfiguration funktioniert es.


    Als Debug-Schritte ist es wichtig den Hook auf der Node-RED Seite erst einmal über die lokale IP auszuprobieren. Und auch den IFTTT Webhook kann man über den Browser aufrufen und schauen ob man da eventuell eine Fehlermeldung erhält. Ich hatte anfangs ein paar Tip- und Klickfehler in meinem Setup, die man damit schnell ausmerzen konnte.

    Einen Kommentar schreiben:


  • Markus2806
    antwortet
    Hallo, hier ist der Flow.
    Es fehlt halt der Übergang von IFTTT zum Node-Red. Ersetz ich den IFTTT Trigger mit einem Inject Node funktioniert der Rest ohne Probleme.


    Code:
    [{"id":"25641f1f.b629","type":"tab","label":"IN-8015","disabled":false,"info":""},{"id":"7612d9fe.cb1dc8","type":"http in","z":"25641f1f.b629","name":"IFTTT Trigger","url":"/alarm/md/areas","method":"post","upload":false,"swaggerDoc":"","x":250,"y":300,"wires":[["f07530.ffbc0ad","8efc297d.66e588"]]},{"id":"f07530.ffbc0ad","type":"http response","z":"25641f1f.b629","name":"","statusCode":"","headers":{},"x":494,"y":242,"wires":[]},{"id":"14d778c5.570777","type":"function","z":"25641f1f.b629","name":"Enable Area 1","func":"var ip = \"x.x.x.x\";\nvar user = \"x\";\nvar password = \"x\";\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 update: \" + 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":675,"y":130,"wires":[["5cfd8031.25c58"]]},{"id":"ae34e974.79a838","type":"function","z":"25641f1f.b629","name":"Disable Area 1","func":"var ip = \"x.x.x.x\";\nvar user = \"x\";\nvar password = \"x\";\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 update: \" + 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":675,"y":310,"wires":[["ea882aa0.ed4468"]]},{"id":"ea882aa0.ed4468","type":"change","z":"25641f1f.b629","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":310,"wires":[["3ccae916.416666"]]},{"id":"5cfd8031.25c58","type":"change","z":"25641f1f.b629","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":130,"wires":[["d1adb163.6422f"]]},{"id":"3ccae916.416666","type":"http request","z":"25641f1f.b629","name":"m1_disable","method":"GET","ret":"txt","url":"","tls":"","x":974,"y":310,"wires":[["a7a2d77c.9fda68"]]},{"id":"d1adb163.6422f","type":"http request","z":"25641f1f.b629","name":"m1_enable","method":"GET","ret":"txt","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":974,"y":130,"wires":[["a7a2d77c.9fda68"]]},{"id":"c82cd44a.cfc898","type":"switch","z":"25641f1f.b629","name":"Push","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"{\"val\":\"on\"}","vt":"str"},{"t":"eq","v":"{\"val\":\"off\"}","vt":"str"}],"checkall":"false","repair":false,"outputs":2,"x":493,"y":280,"wires":[["14d778c5.570777","7e2c1c23.c625d4","346e6961.9a43c6","379e803b.2d0ef"],["ae34e974.79a838","99b85162.d2b4c","31aae64a.0edc6a","345120b3.d0b7b"]]},{"id":"a7a2d77c.9fda68","type":"debug","z":"25641f1f.b629","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1179,"y":278,"wires":[]},{"id":"7e2c1c23.c625d4","type":"function","z":"25641f1f.b629","name":"Enable Area 2","func":"var ip = \"x.x.x.x\";\nvar user = \"x\";\nvar password = \"x\";\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 update: \" + 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":675,"y":172,"wires":[["d3453aa.68b3fc8"]]},{"id":"d3453aa.68b3fc8","type":"change","z":"25641f1f.b629","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":172,"wires":[["893d21f4.c172c"]]},{"id":"893d21f4.c172c","type":"http request","z":"25641f1f.b629","name":"m1_enable","method":"GET","ret":"txt","url":"","tls":"","x":974,"y":172,"wires":[["a7a2d77c.9fda68"]]},{"id":"346e6961.9a43c6","type":"function","z":"25641f1f.b629","name":"Enable Area 3","func":"var ip = \"x.x.x.x\";\nvar user = \"x\";\nvar password = \"x\";\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 update: \" + 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":675,"y":212,"wires":[["44d399f3.bc4be8"]]},{"id":"44d399f3.bc4be8","type":"change","z":"25641f1f.b629","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":212,"wires":[["6e7f5a3e.16a664"]]},{"id":"6e7f5a3e.16a664","type":"http request","z":"25641f1f.b629","name":"m1_enable","method":"GET","ret":"txt","url":"","tls":"","x":974,"y":212,"wires":[["a7a2d77c.9fda68"]]},{"id":"379e803b.2d0ef","type":"function","z":"25641f1f.b629","name":"Enable Area 4","func":"var ip = \"x.x.x.x\";\nvar user = \"x\";\nvar password = \"x\";\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 update: \" + 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":675,"y":252,"wires":[["54d49c1b.160124"]]},{"id":"54d49c1b.160124","type":"change","z":"25641f1f.b629","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":252,"wires":[["43896642.430e38"]]},{"id":"43896642.430e38","type":"http request","z":"25641f1f.b629","name":"m1_enable","method":"GET","ret":"txt","url":"","tls":"","x":974,"y":252,"wires":[["a7a2d77c.9fda68"]]},{"id":"99b85162.d2b4c","type":"function","z":"25641f1f.b629","name":"Disable Area 2","func":"var ip = \"x.x.x.x\";\nvar user = \"x\";\nvar password = \"x\";\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 update: \" + 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":675,"y":352,"wires":[["ab481c53.f4cd4"]]},{"id":"ab481c53.f4cd4","type":"change","z":"25641f1f.b629","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":352,"wires":[["be42b319.a78c4"]]},{"id":"be42b319.a78c4","type":"http request","z":"25641f1f.b629","name":"m1_disable","method":"GET","ret":"txt","url":"","tls":"","x":974,"y":352,"wires":[["a7a2d77c.9fda68"]]},{"id":"31aae64a.0edc6a","type":"function","z":"25641f1f.b629","name":"Disable Area 3","func":"var ip = \"x.x.x.x\";\nvar user = \"x\";\nvar password = \"x\";\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 update: \" + 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":675,"y":392,"wires":[["de0080a3.f3239"]]},{"id":"de0080a3.f3239","type":"change","z":"25641f1f.b629","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":392,"wires":[["b3d312b9.3e345"]]},{"id":"b3d312b9.3e345","type":"http request","z":"25641f1f.b629","name":"m1_disable","method":"GET","ret":"txt","url":"","tls":"","x":974,"y":392,"wires":[["a7a2d77c.9fda68"]]},{"id":"345120b3.d0b7b","type":"function","z":"25641f1f.b629","name":"Disable Area 4","func":"var ip = \"x.x.x.x\";\nvar user = \"x\";\nvar password = \"x\";\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 update: \" + 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":675,"y":432,"wires":[["7adea3fb.3ec5cc"]]},{"id":"7adea3fb.3ec5cc","type":"change","z":"25641f1f.b629","name":"Set URL","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":432,"wires":[["4a58620a.6533cc"]]},{"id":"4a58620a.6533cc","type":"http request","z":"25641f1f.b629","name":"m1_disable","method":"GET","ret":"txt","url":"","tls":"","x":974,"y":432,"wires":[["a7a2d77c.9fda68"]]},{"id":"8efc297d.66e588","type":"json","z":"25641f1f.b629","name":"","property":"payload","action":"","pretty":false,"x":487,"y":323,"wires":[["c82cd44a.cfc898"]]},{"id":"29b4474a.a01088","type":"inject","z":"25641f1f.b629","name":"","topic":"","payload":"{\"val\":\"off\"}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":160,"y":40,"wires":[[]]},{"id":"653e7d1e.d5fe54","type":"ifttt out","z":"25641f1f.b629","eventName":"event1","x":340,"y":140,"wires":[]}]

    Bei den Kameras handelt es sich um eine IN-8015 und eine IN-9020.
    Zertifikat ist auch vorhanden, nur muss ich das jetzt irgendwo installieren? Wo kann ich das Instar Zertifikat herunterladen, um es in der settings.js einzubinden?

    ssl.jpg
    Zuletzt geändert von Markus2806; 16.11.2019, 13:48.

    Einen Kommentar schreiben:


  • INSTAR
    antwortet
    Markus2806 Sollte es überhaupt nicht weitergehen auch gerne den Node-Red Flow exportieren und hier reinstellen (Die Exportfunktion spart den API Key aus - wenn man noch die DDNS Adresse/Login abändert beinhaltet der JSON Export keine persönlichen Daten). Dann können wir da gerne einmal drüber schauen.

    NACHTRAG: Ich hatte die letzte Antwort zu spät gesehen. Man braucht auf jeden Fall SSL für den Node-RED Webhook. Wenn die Kamera sich im gleichen Netzwerk befindet wie der Node-RED Server, kann man aber die INSTAR DDNS (und damit das - vorrausgesetzt, dass es sich um eine Full HD Kamera mit HTTPS Support handelt - INSTAR Zertifikat) verwenden, um per HTTPS auf die Node-RED Oberfläche zu kommen.


    Wenn man keine Full HD Kamera hat, müsste man sich selbst ein Zertifikat austellen - wir haben z.B. hier beschrieben, wie man unter LINUX an sowas rankommt:

    https://wiki.instar.de/Software/Linu...inzuf%C3%BCgen


    Den Benutzernamen und Kennwort für Node-RED kann man in der Konfigurationsdatei im Node-RED Installationsverzeichnis hinterlegen:

    https://wiki.instar.de/Software/Linu...-konfiguration


    Wenn man dann über IFTTT einen Webhook in Node-RED kontaktieren möchte, muß man das Login entsprechend mit angeben. Ich meine man könnte es dort als basicAuth der URL voranstellen:


    https://meinname:meinkennwort@instar...3/mein/webhook






    estimator Wir warten geraden noch, dass das Update freigegeben wird. Aber mit der nächsten Firmware Version wird die Einbindung bei IFTTT - für Full HD Kameramodelle - auch ohne Node-RED möglich sein. Das macht es einfacher es mal kurz auszuprobieren. Wobei Node-RED in der Heimautomatisierung ein extrem mächtiges Tool das sich natürlich lohnt zu lernen. Wenn man es einmal beherrscht gibt es wenig was man damit nicht umsetzen kann.



    https://wiki.instar.de/Erweitert/IFT...R_FHD_Kameras/

    https://wiki.instar.de/Erweitert/IFTTT_als_Alarmserver/


    (Der SSL Support und die Möglichkeit POST Anfragen zu senden fehlen z.Z. - 11.11.2019 - noch in der Firmware. Daher steht die Alarmserver Funktion erst mit dem nächsten Update für die IFTTT Einbindung bereit.)



    INSTAR Support

    Einen Kommentar schreiben:


  • Markus2806
    antwortet
    Hallo @Instar,

    mit dem IFTTT Out Node kontaktiere ich ja den IFTTT-Webhook.
    Beim ersten Beispiel z.B löse ich eine Aktion durch das Klicken auf das Inject Node aus, wo dann das IFTTT Webhook
    konkaktiert wird (IF THIS) und dann ein Mail verschickt wird (THEN THAT).
    Nun bräuchte ich das aber umgekehrt, wenn ich eine Location verlasse (IF THIS),
    dann soll ein Web Request ausgelöst werden (THEN THAT), der die jeweilige JSON-Variable (on/off) an das Node-Red übergibt.
    Daher bräuchte ich einen IFTTT In Node, der Daten vom IFTTT Webhook entgegen nimmt, oder? Nur wo finde ich diesen Eingangsknoten?

    Wenn ich die Seite https://meine.ddns.addresse:1881/mein/webhook über extern aufrufe erhalte ich einen SSL_PROTOCOL_ERROR.
    Ohne https - also nur mit http, komme ich die Meldung "Anmelden - für http://meine.ddns.addresse:1881 sind ein Nutzername und ein Passwort erforderlich."
    Die Verbindung zu dieser Webseite ist nicht sicher. Leider funktioniert hier nicht der Benutzer (Admin) mit dem ich mich auch anmelde wenn ich
    https://meine.ddns.addresse:1881 aufrufe.
    Wo genau müsste ich diese Benutzer Authentifizierung im IFTTT hinterlegen?
    Zuletzt geändert von Markus2806; 09.11.2019, 23:35.

    Einen Kommentar schreiben:


  • Markus2806
    antwortet
    Hallo. Leider bin ich bisher noch nicht dazu gekommen mir das ganze weiter anzusehen.
    Möchte mir morgen aber wieder etwas Zeit dafür nehmen und dann werde ich natürlich berichten

    Einen Kommentar schreiben:


  • estimator
    antwortet
    Markus2806 : Hat es jetzt geklappt mit Node-RED oder ist Deine Nose red?
    Wie ist denn jetzt der Workflow? Ich möchte schliesslich auch was lernen.

    Einen Kommentar schreiben:


  • INSTAR
    antwortet
    Wenn man einen Account bei IFTTT anlegt, bekommt man einen persönlichen API Schlüssel zugewiesen. Wenn man auf der Seite angemeldet ist, wird einem unter dem folgenden Link der Key angezeigt:

    https://ifttt.com/services/maker_webhooks/settings

    Dieser Schlüssel darf nicht weitergegeben werden, da er einem Zugriff auf die in IFTTT angelegten Schnittstellen gibt - z.B. die Webhooks für die Kamera. Es ist also das "Schnittstellen-Login" das IFTTT braucht um Anfragen an den richtigen Benutzer-Account weiterzuleiten.

    Einen Kommentar schreiben:


  • estimator
    antwortet
    INSTAR Ich habe mal eine Nachfrage zu dem API-Key. Ist das Euer persönlicher Key oder bekommt jeder User einen eigenen Key? Wird der in Node-RED und IFTTT benötigt? Ihr schreibt nämlich im Wiki, https://wiki.instar.de/Erweitert/Node-RED_und_IFTTT/
    4. Um Zugang zu unserem persönlichen API-Schlüssel zu erhalten, müssen Sie sich zunächst bei unserem IFTTT-Konto anmelden und die folgende Seite öffnen https://ifttt.com/services/maker_webhooks/settings. Kopieren Sie den alphanumerischen Schlüssel aus den Webhook Einstellungen

    Einen Kommentar schreiben:


  • INSTAR
    antwortet
    Zitat von Markus2806 Beitrag anzeigen
    Die einzige Möglichkeit wäre über den IFTTT Out Node - nur erwartet dieser einen Event Name, den ich im Web Request aber nicht mitgeben kann, weil es kein Feld dafür gibt.

    Servus Markus,

    Ich habe den Thread gerade einmal überflogen und bin etwas verwirrt. Wenn ich das richtig sehe benögtigt der Flow einen IFTTT Eingang um die Alarmbereiche zu schalten?

    Ein IFTTT Eingangsknoten benötigt ein IFTTT Applet, dass einen Webhook kontaktiert (THEN-Bedingung). Dieser Webhook muß dann in Node-RED über einen Eingangsknoten angelegt werden und kann beliebig benannt werden. Daraus ergibt sich dann die URL die bei IFTTT hinterlegt werden muß. Um es zu testen kann man dann auch einmal die URL im Browser aufrufen - z.B. https://meine.ddns.addresse:1881/mein/webhook. Der Port 1881 muß dafür auf den Raspberry Pi durchgeleitet sein - und Achtung, bei manchen Router (z.B. Telekom Speedport) kann man nicht aus dem lokalen Netz auf eine URL zugreifen die über Portweiterleitung wieder ins lokale Netz führt. Da würde der Test fehlschlagen, obewohl alles richtig konfiguriert ist.


    Ich gehe davon aus, dass bei Node-RED auch eine Benutzer Authentifizierung hinterlegt wurde. Dann müsste man das Benutzer-Login natürlich noch bei IFTTT mit hinterlegen.


    ----

    Einen IFTTT Ausgang würde einen Webhook bei IFTTT über die folgenden URL ansprechen: https://maker.ifttt.com/trigger/EVEN...th/key/API_KEY


    Der EVENT_NAME und API_KEY sind dann jeweils direkt in dem Ausgangsknoten hinterlegt. D.h. man müsste dann nur noch bei IFTTT einen Webhook Eingang (IF-Bedingung) mit einem Namen (EVENT_NAME) anlegen und schon hat man die Verbindung.


    INSTAR Support

    Einen Kommentar schreiben:


  • Markus2806
    antwortet
    Die einzige Möglichkeit wäre über den IFTTT Out Node - nur erwartet dieser einen Event Name, den ich im Web Request aber nicht mitgeben kann, weil es kein Feld dafür gibt.

    ifttt_out.jpg

    Einen Kommentar schreiben:

Lädt...
X