Webhooks sind eigentlich webadressen mit deren Hilfe man Parameter übermitteln kann und Befehle am Zielrechner ausführen kann.
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
....
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
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