homebridge-http-webhooks

  • Hallo, ich lege mal ein neues Thema an, da die bisherigen nicht ganz zutreffend sind.


    Bzgl. des Homebridge-http-Webhooks-Plugins hab ich mal ne Frage.

    Welche IP-Adresse und welchen Port trage ich denn dort ein?


    Mein Raspberry hat im lokalen Netzwerk z.B. die IP 192.168.178.180.

    In der Homebridge-App steht, dass der Standard-Port für den Raspberry 22 lautet.

    Aber mit der lokalen IP komme ich ja nicht weit, wenn ich das von IFTTT aus starten möchte.


    Wie gebe ich ihn denn in der Fritzbox frei?


    Ich habe bereits ein anderes Gerät über die Fritzbox freigegeben. Das hat intern den Port 80. Mit der externen IP und dem externen Port 81 kann ich auch von außen darauf zugreifen.

    Nur bei der Homebridge selbst gelingt es mir nicht...


    Ich möchte gerne einen Sensor, der nur über IFTTT verfügt mittels Webhook einen Schalter in HomeKit (über das Homebridge-http-Webhooks-Plugin) schalten lassen.


    Kann mir da jemand helfen?

  • Lies mal meinen Beitrag hier, der sollte eigentlich alle Fragen beantworten! Du brauchst einen DynDNS, sofern du keine feste IP hast (davon ist auszugehen). Der Port ist prinzipiell egal, du musst nur bei IFTTT und Plugin den gleichen einstellen. Am besten einen, der nicht für irgendwelche Standards benutzt wird. In der FritzBox musst du für diesen Port eine Freigabe erstellen und ihn auf den Raspi umleiten.

  • In der Homebridge-App steht, dass der Standard-Port für den Raspberry 22 lautet.

    Nein, der Standard-Port für den Raspi lautet nicht 22. Der Raspi hat nämlich keinen Standard-Port. Damit reiht er sich in die große Anzahl der Computer ein, die so etwas nicht haben, und das sind:


    * alle Windows-Computer, egal mit welchem Betriebssystem

    * alle Apple-Computer, egal mit welchem Betriebssystem

    * alle Unix- und Linux-Computer, egal mit welchem Betriebssystem

    * alle anderen hier nicht aufgelisteten Computer, egal mit welchem Betriebssystem.


    Es gibt keinen Standard-Port für Computer, genauso wenig wie es Standard-Hausnummern für Straßen gibt oder Standard-Telefonnummern für Wohnzimmer.


    Port 22 ist der Standard-Port für den SSH-Server, also dem Stück Software, dass es dir erlaubt, dich auf deinem Raspi per Terminal einzuloggen. Port 80 ist der Standard-Port für einen Webserver, Port 123 ist der Standard-Port für einen NTP-Server, Port 143 ist der Standard-Port für einen IMAP-Server und Port 51826 ist der Standard für den Homebridge-Server. Insgesamt können 65535 Ports geöffnet werden, und hinter jedem würde dann ein Server auf Anfragen warten. Bitte beachte, dass der Begriff Server nie etwas Viereckiges aus Metall oder Plastik bezeichnet, sondern immer eine Software, und beachte bitte auch, dass das Starten von 65535 Servern auf einer einzigen Maschine die Tat von Wahnsinnigen wäre, sogar auf größeren Rechnern als einem Raspi.


    Die dazu passenden Clients verwenden die genannten Ports, um sich mit den Servern zu verbinden. So verbindet sich dein ssh-Programm im Terminal automatisch mit Port 22, dein Webbrowser automatisch mit Port 80, dein Mailprogramm automatisch mit Port 143, irgendein Programm mit Port 51826 für die Homebridge, und wenn dein Rechner die Uhrzeit und das Datum einstellen will, dann versucht er das automatisch über Port 123.


    So weit erstmal das. Wenn du homebridge-http-webhooks installierst, dann öffnest du einen neuen Port auf deinem Raspi, und der wird dann angesprochen über einen Webbrowser oder ein anderes Programm, das HTTP kann (wie curl oder wget oder ein Homebridge-Plugin) über die Adresse http://192.168.178.180:51828. Der Port 51828 ist bitte nicht zu verwechseln mit dem Homebridge-Port 51826 und wird in der Konfiguration von homebridge-http-webhooks gesetzt.


    Aber ist denn homebridge-http-webhooks überhaupt das richtige Tool? Willst du nicht eher homebridge-ifttt verwenden? Homebridge soll doch IFTTT triggern und nicht andersherum, oder?


    Mal so nebenbei: du hast völlig recht damit, dass die Adresse 192.168.178.180 aus dem Internet nicht zu erreichen ist. Deshalb willst du dir mit einem Port-Forwarding auf dem Router behelfen. Also sowas wie <externe IP-Adresse>:51828 weiterleiten nach 192.168.178.180:51828. Ich würde Port-Forwarding auf dem Router auch immer dann einsetzen, wenn ich mir sicher wäre, dass homebridge-http-webhooks fehlerfrei programmiert ist und dass die dem Plugin zugrunde liegende homebridge fehlerfrei programmiert ist und dass das der homebridge zugrunde liegende Node fehlerfrei programmiert ist und dass das Node zugrunde liegende Linux fehlerfrei programmiert ist. Leider bin ich mir da nicht völlig sicher.


    Stefan



  • Ja, das Öffnen des Port ist natürlich ein Sicherheitsrisiko. Ich habe es bei mir trotzdem gemacht, aber nur nach dem Prinzip Hoffnung, weil ich natürlich auch nicht weiß, ob die Software nicht gehackt werden kann. Hinzu kommt noch, dass die Webhooks mitgelesen und von Dritten ausgelöst werden könnten. Insgesamt schon ein unsicheres Szenario. Ich habe damit nur eine Sprachausgabe auf der Alexa realisiert, wenn jemand meinen Webhook belauscht und faked, kann er also nur meine Alexa sprechen lassen. Wenn man wichtigere HK-Funktionen darüber steuern, wird es noch - abgesehen von den oben beschriebenen Szenario, dass über den Port eventuell der gesamte Pi gehackt werden kann - noch brenzliger.

  • So Jungs, vielen, vielen Dank!

    Jetzt läuft es tatsächlich.

    Am Ende war es gar nicht so kompliziert, wie ich dachte. Ich hatte es einfach nur selbst verkompliziert.


    Ich habe nun damit vor, Trigger aus IFTTT zu starten.

    Konkret werde ich als erstes den Regensensor meiner Netatmo Wetterstation dazu nutzen, um einen Schalter in HomeKit auf AN zu stellen, wenn es regnet. Den stell ich dann immer um 1 Uhr auf AUS und wenn es zwischen 1 und 11 Uhr regnet springt er auf AN. In diesem Fall muss der Mähroboter um 11 Uhr nicht losfahren.


    In einem anderen Fall braucht die Gartenbewässerung nicht starten, wenn es an dem Tag schon ausreichend geregnet hat.


    Auch der Netatmo-Windsensor kann ab nun bei Bedarf die Markise einfahren.


    Auch werde ich mir eine Benachrichtigung erstellen, wenn es regnet und das Dachfenster noch offen ist.


    :thumbup:

  • Ich weiß, dass man auch die Netatmo Wind- und Regensensoren mit alternativen HomeKit-Apps nutzen kann. Bisher war das bei mir aber nicht sonderlich zuverlässig. Deswegen wollte ich es nun unbedingt über ifttt probieren.

  • krs1


    Ich habe deine Mission ? verfolgt und mit gelesen.


    Das triggern aus ifttt und webhooks hört sich spannend an.


    Würdest du hier evtl. nochmals detailliert beschreiben wollen, wie du step by step vorgegangen bist?


    Das wäre super hilfreich ?

  • Anleitung für HomeBridge-Plugin „Homebridge-HTTP_Webhooks“




    In der Fritzbox:

    Unter

    Internet —> Freigaben —> Portfreigaben —> „Gerät für Freigaben hinzufügen“

    den RaspberryPi auswählen, auf dem das PlugIn installiert wird

    —> Neue Freigabe —> Portfreigabe


    Anwendung = Andere Anwendung

    Bezeichnung = (z.B.) Webhooks

    Protokoll = TCP

    Port an Gerät = 51828

    bis Port = 51828

    Port extern gewünscht = 51828


    Dann das Ganze speichern und es wird die externe IP-Adresse sichtbar.


    Jetzt noch über einen DynDNS-Service (die FritzBox hat einen in myFritz integriert) die IP-Adresse freigeben. Dazu kann ich an dieser Stelle gar nicht viel zu sagen, denn das hatte ich sowieso aktiviert über myFritz.




    Auf dem RaspberryPi in der HomeBridge das PlugIn „HomeBridge-HTTP-Webhooks“ installieren.


    Die minimale config.json sieht im Bereich platforms dann so aus:


    "platforms" : [

    {

    "sensors" : [

    {

    "id" : "ArloAuffahrt",

    "name" : "Auffahrt Bewegung",

    "type" : "motion"

    },

    ],

    "switches" : [

    {

    "id" : "Regen",

    "name" : "Regen",

    "type" : "switch"

    }

    ],

    "webhook_port" : 51828,

    "cache_directory" : "./.node-persist/storage",

    "platform" : "HttpWebHooks"

    }

    ]

  • Damit läßt sich nun einiges als Auslöser aus IFTTT einbinden.

    Z.B.

    - Alexa

    - Arlo Bewegungssensor

    - Netatmo Wetterstation (speziell Regen und Wind)

    - Nest (z.B. Rauchmelder)

    - Wireless Tag

    - Ring

    - Withings

    - Samsung Smart Things


    oder auch Services wie

    Wetter oder Aktien

  • krs1


    Vielen Dank für die schnelle Reaktion. Das werde ich bei Gelegenheit mal ausprobieren.


    Wie lege ich in IFTTT nun den webhook an bzw. welche Eingaben sind erforderlich?


    Genügt es, die ID des Sensors oder des Schalters anzugeben? Also "IF Wette=Regen THEN "Webhook "Regen"??


    Oder sind bei webhook noch weitere Parameter erforderlich?

  • <p>Wenn du in Ifttt als Sensor Regen hast (Netatmo oder auch WeatherUnderground) dann legst du als Aktor ein Webhook an, welches folgende URL aufruft:<br><a href="http://DEINEIP:51828/?accessoryId=ID&amp;state=true">http://DEINEIP:51828/?accessoryId=ID&amp;state=true</a></p>
    <p><br></p>
    <p>DEINEIP = deine externe IP die du aber am besten noch mit DynDNS einbindest. Sollte sich deine externe IP mal ändern, funktioniert der Aufruf nicht mehr. Mit DynDNS ist sichergestellt, dass die neue IP weiterhin unter der gleichen Adresse erreichbar ist. Die FritzBox bietet mit MyFritz eine DynDNS an. Da hast du dann eine sehr kryptische URL z.B. djsldieudb.myfritz.net</p>
    <p><br></p>
    <p>ID = kannst du selbst vergeben. Muss aber identisch mit der ID im HomeBridge PlugIn sein. Darf auch alphanumerisch sein. Z.B. Regen</p>
    <p><br></p>
    <p>Die URL aus den Beispielen würde also wie folgt lauten:</p>
    <p><br></p>
    <p><a href="http://djsldieudb.myfritz.net:51828/?accessoryId=Regen&amp;state=true">http://djsldieudb.myfritz.net:…ryId=Regen&amp;state=true</a></p>
    <p><br></p>
    <p>Damit würdest du dann einen Schalter in HomeKit auf An stellen.</p>
    <p><br></p>
    <p>Vorausgesetzt du hast im HomeBridge-Plugin einen Switch angelegt der die ID = Regen besitzt und beliebig benannt wurde (z.B. „Es regnet“).</p>

  • Ok, habe ich verstanden. Was ist in ifttt bei method und contrnt type einzugeben?


    Ich habe einfach mal in ifttt soweit durchgeklickt.....

    Bilder

  • Ein spannendes Thema. Eventuell macht sich von euch jemand die Arbeit und erstellt eine komplette Anleitung. Hundt bestimmt einigen.



    Sent from my iPhone using Community

  • krs1


    Hi, ich bins nach langer Zeit mal wieder. Bis jetzt bin ich immer um eine andere Lösung drum herum gekommen, jetzt werde ich das webhook-plugin benötigen.


    Läuft bei dir noch alles? Wie sind deine Erfahrungen mit diesem Plugin seit den letzten Monaten?

  • Alles bestens. Habe auf der HB nur dieses eine Plugin und ich kann mich an keinen Ausfall erinnern. Rollos werden darüber mehrmals täglich gesteuert. Ist also zu empfehlen 👍

  • Danke dir für die Rückmeldung 👍

  • Nachdem heute meine neue Kaffeemaschine gekommen ist, musste ich natürlich gleich testen, ob ich mit dem Webhooks plugin den Zustand der Kaffeemaschine angezeigt bekomme.


    Ich habe mir einen Belegungssensor angelegt, der über IFTTT Webhooks getigert wird, sobald die Kaffeemaschine ein oder ausgeschaltet wird.


    Wenn die Kaffeemaschine jedoch manuell angeschaltet wird, dann löst ifttt nicht aus........ hier muss ich mal noch testen. Ich werde die Kaffeemaschine jedoch zum anschalten in Automationen integrieren, sodass dann meistens auch der Zustand getriggert wird..........

    Bilder

  • Hallo,

    ich habe mich heute mal ein wenig mit webhooks beschäftigt und wollte ursprünglich mit Homebridge ein paar Befehle an einen Webserver senden. Das plugin ließ sich problemlos installieren (habe es auch inzwischen deinstalliert und neu installiert) und mit meiner config.json sollte auch alles stimmen (habe sie jedenfalls mit JSNONLint geprüft und konnte auch selbst keinen Fehler feststellen).



    Jetzt wollte ich über das webhooks plugin den ersten Sensor einbinden und zumindest das Abspeichern über das Webinterface scheint problemlos zu funktionieren. Falls mal ein Komma fehlt, schimpft ja an dieser Stelle bereits die GUI. Nach einem Neustart hängt sich homebridge allerdings auf, mit folgender Bemerkung in den LOGs:



    Besonders diese Zeile ist mir ins Auge gesprungen:


    Code
    Nov 29 16:40:32 Raspberry homebridge[13357]: [2019-11-29 16:40:32] Error: EACCES: permission denied, mkdir '/.node-persist'


    Kann es sein, dass an irgendwelche Stelle die Zugriffsrechte fehlen? Leider kenne ich mich noch nicht gut genug mit Raspberry aus, um irgendwelche schlauen Schlüsse daraus zu ziehen und hoffe ihr könnt mir weiterhelfen?


    Viele Grüße