Webhooks

Webhooks sind eigentlich webadressen mit deren Hilfe man Parameter übermitteln kann und Befehle am Zielrechner ausführen kann.



Funktionsweise

Am Rechner A sendet man über Browser oder Kommandozeile einen Webhook: https://RechnerB:Port/verzeichnis/Webhookname

Beispiel: 192.168.1.123:9000/hooks/webhook_sendeWPdaten

Auf Rechner B läuft ein Listener, der auf dem Webhook Port schaut, ob ein Webhook ankommt. 

Huui plötzlich kommt ein Webhook an: webhook_sendeWPdaten

die webhook software schaut in ihrer Übersetzungsdatei hooks.json nach, da steht drin bei welchem webhook welches Script wo wie ausgeführt werden soll. Zu webhook_sendeWPdaten findet sie das Script sendHeatpumpdata.sh also wird sofortigst das Script gestartet (das beinhaltet, das die WP Daten des letzten Tages per mail an Kraweuschuastas mailadresse gesendet werden....)


Praktische Anwendung:

Aus dem Internet vom Urlaub aus die Heizung ein/ausschalten oder Temperatur drosseln/erhöhen

Aus dem Internet vom Urlaub aus die Bewässerung ein/ausschalten

Aus dem Internet vom Urlaub aus die Poolpumpe ein/ausschalten

....


Installieren und Einrichten (Linux)

Ich hab webhook auf meinem Raspi eingerichtet, rein amal zu akademischen Zwecken, und weil der 24/7 läuft

sudo apt-get install webhook

hooks file anlegen

Webhook starten
webhook -hooks hooks.json -port 9000 -verbose


Eine gute Schritt für Schritt Anleitung findet man bei  https://www.tutonaut.de/webhooks-lokal-empfangen-und-skripte-starten

Webhook (die Software) findet man hier https://github.com/adnanh/webhook


Beispiel - Webhook mit Parametern schicken

An Webhook schicken, der nur ein Script startet, ist relativ watscheneinfach, drauf gehe ich ned näher ein. Was mich aber etwas mehr Zeit und Nerven gekostet hat, war herauszufinden, wie ma richtig Parameter übergibt.

Hier ein (bei mir funktionierendes) Beispiel:

Sender (Shelly am/im Fronius Wechselrichter, mit 4 Kanälen sendet bei Kanal1 ON bei mehr als 1kW verfügbarer Leistung und OFF bei weniger als 200W)

http://192.168.1.123:9000/hooks/froniusid4in?&kanal=1&status=on

http://192.168.1.123:9000/hooks/froniusid4in?&kanal=1&status=off


Empfänger (Raspberry Pi mit webhook listener, Auszug meiner hooks.json)

[
  {
    "id": "froniusid4in",
    "execute-command": "/home/pi/Desktop/webhooks/froniusswitchmail.sh",
    "command-working-directory": "/home/pi/Desktop/webhooks",
    "response-message": "got it.",
    "pass-arguments-to-command":
    [
      {
        "source": "url",
        "name": "kanal"
      },
      {
        "source": "url",
        "name": "status"
      },
    ]
  },
]


Das Shellscript froniusswitchmail.sh erwartet 2 Parameter, Kanal 1..4 und Status on oder off