Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem IFTTT (Webhook mit Webrequest)

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

  • Problem IFTTT (Webhook mit Webrequest)

    Hallo zusammen,

    ich habe gerade versucht, bei einem Event in IFTTT einen WebRequest abzusetzen, erhalte dann aber einen HTTP 401 (nicht authorisiert). Den Webhook habe ich laut "Anleitung" erstellt, die URL die aufgerufen wird lautet wie folgt (natürlich stehen bei x die entsprechende Daten ;-):

    https:// xxx.ddns3-instar.de:8081/param.cgi?cmd=getinfrared&-usr=xxxx&-pwd=xxxx


    Im Acticity Log von IFTTT erhalte ich folgende Rückmeldung:

    Unable to make web request. Your server returned a 401

    Mittlerweile bekomme ich einen Timeout, warum auch immer.
    Unable to make web request: Error: ETIMEDOUT

    Mache ich das Ganze über den Browser, funktioniert es. Dabei lasse ich usr und pwd weg bzw. gebe es im Dialogfenster nach Aufforderung ein. Ich erhalte dann folgende Antwort:
    var infraredstat="auto";


    Die Kamera ist über DDNS erreichbar, das habe ich schon geprüft (innerhalb der INSTAR-Oberfläche): DDNS-Adresse, Portweiterleitung und Kamera Erreichbarkeit alles grün

    Ich habe nun User und Pwd mehrfach geprüft, die Daten sind in Ordnung. Hat jemand vielleicht eine Idee, woran es liegen kann?

    Danke im Voraus :-)
    Zuletzt geändert von Hummingbird77; 13.11.2019, 12:26.

  • #2
    So, den Timeout bekomme ich jetzt nicht mehr. Wenn man in IFTTT beim WebRequest keinen Body angibt, kommt es zum Timeout. Das finde ich komisch, denn diese ist als optional angegeben. Wenn ich einen leeren Body eintrage, genauergesagt {}, geht der Call wieder, aber dann bekomme ich wieder meinen 401.

    Kommentar


    • #3
      Hallo Hummingbird77 ,

      habe mir das auch gerade noch mal angeschaut und komischerweise auch anfangs Timeouts erhalten - die aber scheinbar nur auf ein Netzwerkproblem hinausliefen. Zumindest kann ich diese jetzt nicht mehr reproduzieren.

      Den 401 Fehler konnte ich reproduzieren indem ich anstatt über HTTPS zuzugreifen HTTP genutzt habe. Kann es sein, das in deinem Fall entweder die URL bei IFTTT doch mit HTTP hinterlegt ist (die URL oben schaut natürlich richtig aus) ? Oder ist der Port 8081 im Netzwerk eventuell auf den HTTP Port der Kamera durchgeleitet?


      Zum Body und Content Type - der ist bei mir scheinbar nicht wichtig. Es funktioniert wenn man nichts auswählt oder auch wenn man leeres JSON sendet:



      Kommentar


      • #4
        Ggf. kann man noch probieren die Authetifizierung einmal dem Befehl voranzustellen. Das Anhängen des Logins am Ende hat in der Vergangenheit schon mal Probleme verursacht - auch wenn in meinem Test gerade beides mit IFTTT funktioniert:


        https://admin:instar@meine.ddns3-ins...=pushhostalarm

        https://meine.ddns3-instar.de:8081/p...min&pwd=instar

        Kommentar


        • #5
          Hallo INSTAR ,

          HTTPS habe ich auf jeden Fall in der URL, das habe ich gerade noch einmal überprüft. Vielleicht noch ein paar Infos, was ich gerade mach:

          Ich habe mir in Node-Red (läuft lokal auf meinem PC auf Port 1880) einen Flow angelegt, der ein Event an IFTTT sendet. Daraufhin soll IFTTT dann einen WebRequest absetzen und zu Testzwecken einfach mal den Infrarotstatus abrufen. Die Kamera läuft auf Port 8081, meine Portweiterleitung ist wie im Screenshot angehangen eingerichtet. Ich denke, der Call in IFTTT ist falsch, weiß aber nicht, wie dieser aussehen muss. Ist das nicht richtig, dass ich den Port 8081 nehme, ich spreche ja direkt die Kamera an?


          Portweiterleitung.png

          Wenn ich die Credentials vorne anstelle, erhalte ich folgenden Fehler:

          CallMitCredentialsVorne.png
          Zuletzt geändert von Hummingbird77; 14.11.2019, 10:58.

          Kommentar


          • #6
            Hallo INSTAR ,

            ich habe gerade nochmal etwas rumgespielt. Zumindest geht es jetzt über HTTP, lieber wäre mir HTTPS, aber darüber erhalte ich einen Fehler. Hier weiß ich aktuell nicht weiter, vielleicht hat jemand einen Tipp?

            Angepasst habe ich jetzt auch die Portweiterleitung.

            AngepasstePortweiterleitung.png

            Somit bin ich jetzt in der Lage, aus Node-Red ein Event abzuschicken, welches dann in IFTTT einen WebRequest absetzt, der wiederum in einem HTTP-IN in Node-Red ankommt. Was ich jetzt noch möchte, ist, dass ich (im ersten Schritt) den IR-Status der Kamera auslesen möchte. Später soll es dann so sein, dass, wenn ich das Zuhause verlasse, IFTTT einen WebRequest absetzt, um den Alarmmodus zu aktivieren bzw. diesen zu deaktivieren, wenn ich mich dem Zuhause nähere.

            Aber warum geht das mit HTTP nicht, es erscheint folgender Fehler:

            HTTPS-Call Fehler.png

            Kommentar


            • #7
              Wenn Node-RED im Netzwerk läuft, kann man da doch einen Webhook auf der gleichen URL anlegen und sich mal schauen was IFTTT da zur Kamera sendet?

              https://wiki.instar.de/Erweitert/Node-RED_und_IFTTT/

              Kommentar


              • #8
                Schaue ich mir gleich mal an. Was ich jetzt nebenbei versucht habe, ist, nachdem IFTTT einen WebRequest abgesetzt habe, in Node-Red die Kamera zu kontaktieren. Das scheitert aktuell irgendwie am Zertifikat, so zumindest die Meldung:

                Node-Red WebRequest an Kamera.png

                Kommentar


                • #9

                  "Error: unable to verify the first certificate"

                  https://stackoverflow.com/questions/...te-in-node-red

                  Kommentar


                  • #10
                    Hallo,

                    das hatte ich vorhin schon einmal probiert und erhalte eine Antwort. Aber ist das wirklich sinnvoll, so vorzugehen?

                    Result.png

                    Kommentar


                    • INSTAR
                      INSTAR kommentierte
                      Kommentar bearbeiten
                      Man kann sich beim Debug Node noch die komplette Msg anstatt Msg.Payload anzeigen lassen - dann sieht man auch den Body der Meldung. Allerdings schaut das gut aus. IFTTT wird kontaktiert, sendet zurück, dass der Webhook ifttt_webhook ausgelöst wurde und auf der anderen Seite bekommt man den CGI Befehl von IFTTT gesendet. Das bedeutet - da ist alles richtig eingerichtet.

                      Ich würde morgen noch mal schauen was da noch schief laufen kann. Sind eventuell noch Sonderzeichen mit im Login?

                      Man kann auch mal das IFTTT Applet frisch anlegen und den JSON Body rauslassen (man kann es ja, soweit ich sehe, nicht mehr entfernen, wenn man den einmal hinzugefügt hat). Möglich das da beim probieren jetzt was in die Konfiguration gerutscht ist, was die UI einem nicht anzeigt.

                  • #11
                    Guten Morgen Hummingbird77 ,

                    Ich habe es gerade noch mit anderen Kameras probiert und ärgerlicher-weise funktioniert das ganze jetzt einfach. Ich habe es noch nicht geschafft einen neuen Fehler zu provozieren.


                    Setup:

                    - Die DDNS Adresse einer Kamera hier im Netzwerk (muß nicht die sein die man letzendlich ansprechen möchte - irgendeine)

                    - Die Kamera hat ein Admin Login ohne Sonderzeichen ~ admin/1234 (Zum Testen am besten immer was einfaches nehmen. Wenn es dann läuft kann man das richtige Login eingeben und schauen ob es Probleme verursacht. Sonderzeichen über HTTP zu senden ist manchmal etwas abenteuerlich)

                    - Die Kamera ist nach der Portweiterleitung über die DDNS Adresse und den weitergeleiteten Port erreichbar und man kann mit einem Browser CGI Befehle dorthin senden, um etwas auf der Kamera zu auszulösen.

                    - In IFTTT braucht man einen Webhook "ifttt_webhook_test_test", der wenn er kontaktiert wird den zuvor getesteten CGI Befehl raussendet "https://admin:1234@meine.ddns3-instar.de:8881/param.cgi?cmd=pushhostalarm" oder "https://meine.ddns3-instar.de:8881/param.cgi?cmd=pushhostalarm&-usr=admin&-pwd=1234"

                    - Man kann jetzt den IFTTT Webhook testen indem man ihn über den Browser aufruft "https://maker.ifttt.com/trigger/iftt...ey/meinAPI_KEY"

                    - Nachdem der IFTTT Webhook kontaktiert wurde, sendet IFTTT den Alarm CGI zur Kamera und löst einen Audioalarm aus. Man kann das im System Logbuch der Kamera nachschauen.

                    - Anwendungsbeispiel: (nach dem nächsten FW Update) kann man jetzt den IFTTT Webhook z.B. beim Alarmserver einer anderen Kamera hinterlegen, damit diese bei Alarm die erste Kamera auslöst.


                    Siehe Screenshots im Anhang:

                    Kommentar


                    • #12
                      Hallo INSTAR ,

                      das die DDNS Adresse irgendeiner Kamera genommen werden kann, ist ja selbstverständlich, da ja alle DDNS Adresse auf die IP-Adresse des Router zeigen und die Weiterleitung an die Kamera über die Portweiterleitung im Router geregelt wird. Theoretisch könnte man die DDNS-Adresse der Kamera auch für andere Sachen nutzen, quasi for free und braucht kein DynDNS oder ähnliches :-).

                      Ich habe im Passwort weitere Zeichen in Form von ! oder #, ich ändere das mal und probiere es mit einem einfachen Passwort.

                      Zumindest funktioniert es ja bei mir jetzt soweit erstmal. Woran ich gerade sitze ist die Aktivierung / Deaktivierung, wenn ich eine Location betrete / verlasse. Aber das sollte nicht so schwierig sein.

                      Was ich auch noch rausfinden möchte ist, ob man auf Events der Kamera reagieren kann, aber das ist ein anders Thema.

                      Auf jeden Fall vielen Dank für Deine Unterstützung!!

                      Kommentar


                      • #13
                        Zitat von INSTAR Beitrag anzeigen
                        - Anwendungsbeispiel: (nach dem nächsten FW Update) kann man jetzt den IFTTT Webhook z.B. beim Alarmserver einer anderen Kamera hinterlegen, damit diese bei Alarm die erste Kamera auslöst.
                        Das Update für den Alarmserver (für HTTPS und POST Requests steht jetzt im Autoupdater zur Verfügung. D.h. man kann jetzt den Alarmserver auch nutzen um direkt mit IFTTT im Alarmfall Kontakt aufzunehmen.

                        Kommentar


                        • #14
                          Danke für die Info, habe soeben aktualisiert.

                          Kommentar


                        • #15
                          Bei mir funktioniert IFTTT in direkter Verbindung mit dem Alarmserver leider nicht, da der Alarmserver zwingend einen Serverport hinzufügen möchte (:80).
                          Wenn ich das Feld leer lasse, kann ich die Einstellungen nicht abspeichern. Mache ich was falsch?


                          Kommentar

                          Lädt...
                          X