Node-RED und IFTTT

Tut es doch.

Ich glaub das Problem liegt woanders: „Unable to make a web request. Your server returned a 404“
Über extern komme ich aber über https://dnsname.dnsprovider.net : portnummer auf die Kamera

Im Browser https://dnsname.dnsprovider.net : portnummer /pushalarm/trigger/recording bekomme ich

Error 404: Not Found
File not found.

Ok so wie es aussieht ist dieser Pfad für den Alarmserver, den ich aber nicht aktiviert habe.

Bei Fehler 404 kann die Webadresse nicht erreicht werden. Wenn Du im internen Netzwerk mit Deinem Browser bist, in dem auch die Kamera hängt, braucht man zumindest nicht mehr die WAN-Adresse, für die der DDNS-Name steht. Probier es stattdessen mit der internen IP-Adresse inkl. Port.

Das ist schon klar, nur der Webhook Service greift doch generell von außerhalb zu.
Denke es ist wirklich eher der deaktivierte Alarmserver.
Werde jetzt aber mal den Punkt „Deaktivieren des Alarms wenn man nach Hause kommt“ ansehen, der für mich sowieso mehr Relevanz hat.

Stimmt, Du testest ja die Funktionen über den IFTTT-Service und nicht vom Browser direkt. :smiley_emoticons_do

Ich habe jetzt mal das /pushalarm/trigger/recording durch /alarm/md/areas ersetzt.
Aber auch hier bekomme ich den 404 Error.

Wenn die Kamera von aussen konfiguriert werden soll (hier: Abschalten des Bewegungsalarms), dann muss es über CGI-Befehle gehen. In Deinem Beispiel sehe ich keinen Befehl, eher das Anspringen eines Verzeichnisses. Schau mal im Wiki bei den entsprechenden Kommandos nach.

Ja stimmt. So wie ich es verstanden habe sende ich mit IFTTT einen Befehl an Node-Red und dieser wiederum wendet die CGI-Befehle intern an die Kamera an. Dann muss ich sowieso diesen Flow hier verwenden, obwohl der wieder anders aussieht als im Wiki:

Einen Inject-Trigger brauche ich ja jetzt nicht mehr, da das ganze sowieso dann ausgelöst werden soll wenn ich einen Bereich betrete oder verlasse.
Aber auch hier brauche ich doch den API-Key damit man weiß dass der Web Request von mir kommt. Einen Event Namen gibt es hier ja nicht mehr.
Ich betrete z.b einen Bereich, dann wird ein Web Request gemacht, nur was passiert dann?

Ich habe außerdem gerade bemerkt, dass ich den Port der Kamera und nicht vom Node-Red-Server genommen habe :smiley_emoticons_ve
Jetzt erklärt sich auch der 404 Fehler. Wenn ich jetzt auf …/alarm/md/areas gehe komme ich zu einer Anmeldung.
Nur welche Daten muss ich hier eintragen? Sind das nicht die Log-in Daten vom Node-Red?

Die GCI-Befehle befinden sich in der Function-Node (z.b Enable Area 1):

Ich habe jetzt mal testweise statt dem „IFTTT Trigger“ einen „Inject Trigger“ gesetzt um das ganze auszuprobieren:

Und es funktioniert :smiley_emoticons_br
Jetzt muss es nur noch mit dem „IFTTT-Trigger“ funktionieren und ich bin glücklich :grin:

Ich habe das ganze mit einem „Push Button“ IFTTT Befehl probiert:

mit https://xxx.xxx.net:yyyy/alarm/md/areas bekomme ich „Unable to make web request: Error: write EPROTO xxx:error:xxxFC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:…/deps/openssl/openssl/ssl/s…“ zurück

mit http://xxx.xxx.net:yyyy/alarm/md/areas bekomme ich „Unable to make web request. Your server returned a 401“ zurück
Im Browser komme ich hier auch zu einem Anmeldefenster. Denke auch das es auch deshalb scheitert. Nur welche Anmeldedaten sind das?
Bzw. wo gebe ich diese Daten mit?

:smiley_emoticons_ug

Anmeldedaten beziehen sich vielleicht auf den Admin-Account der Kamera, um Änderungen an den Einstellungen vornehmen zu können. Du kannst doch statt dem ganzen Node-Red Gedönse auch direkt per Smartphone einen CGI-Command absetzen, damit die Alarme abgeschaltet werden?
Oder gleich die App von Instar nutzen.
Im Forum hatte mal jemand was dazu geschrieben, dass er bei Heimkehr nach Hause automatisiert (?) den Alarm abschalten lassen wollte und bei Verlassen des Hauses alles wieder scharf schalten wollte. Musst mal die Suchfunktion befragen. Ich kann mich nur nicht erinnern, ob das mit Node-Red gemacht wurde.

Wenn ich den Befehl direkt im Node-Red mit dem Inject-Trigger auslöse funktioniert es ja und die Daten für den Zugriff auf die Kamera stehen ja in der „function-node“
Bei mir scheitert er aber beim Zugriff auf den Node-Red Server (Raspberry). Der Webhook Befehl im IFTTT gibt die Daten ja nur an den Node-Red weiter und nicht direkt an die Kameras.
Ja ich kann auch direkt einen CGI Befehl aussenden, was auch funktioniert. Aber dann muss ich für jede Kamera eine Portweiterleitung einrichten. Soo muss ich nur eine Portweiterleitung auf den Raspberry machen, der dann intern den Befehl auf die Kamera sendet. In der App von Instar kann ich leider nicht sagen, dass er die Alarme deaktivieren soll, wenn ich nach Hause komme. Soll ja automatisch passieren. Ich werde mal die Suchfunktion bemühen und vielleicht hat ja noch jemand einen Tipp für mich wieso es hier scheitert.

Den Port vom RasPI hast Du im Router weitergeleitet?

Ja natürlich. Ich komme von außerhalb auch auf den Raspi drauf.

Im Web-Request des IFTTT-Applets muss korrekt der DDNS der Kamera (für den Raspi) und Dein API-Key verbaut sein. Da würde ich nochmal nachsehen. Die Zeile dürfte wohl auch ausserhalb Deines Netzwerkes per Browser überprüfbar sein und am Raspi was auslösen.

Ja das mit dem API-Key habe ich mir auch schon gedacht, aber wie gebe ich den mit?

Vielleicht wird der Key nur in einer Richtung gebraucht und zwar von IFTTT nach Node-Red.

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/EVENT_NAME/with/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

@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/

  1. 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

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.