Design
Web-Anfrage
Schickt Web-Anfragen (GET, POST) und Webhooks an eine Adresse. Der Weg zu allem, wofür es kein eigenes Plugin gibt.
| Eigenschaft | Wert |
|---|---|
| Fach | Werkzeuge |
| Schlüssel | http (so heißt das Plugin in Makros) |
| Bei frischer Installation | aus (im Marktplatz einschalten) |
| Befehle | 3 |
| Einrichtung | 2 Felder |
Wofür
Der Weg zu allem, wofür es kein eigenes Plugin gibt: Eine Taste schickt eine Web-Anfrage (GET oder POST) oder einen Webhook an eine Adresse. Alles, was HTTP spricht, lässt sich so auslösen: ein selbst gebauter Dienst, WLED, ein Webhook, ein Schalter in einem Hausnetz.
Eine Taste löst etwas aus, sie liest nichts: Was zurückkommt, wird nicht angezeigt. Das Plugin gibt nur Auskunft, ob es geklappt hat.
Einrichten
Beides ist freiwillig:
| Feld | Hinweis |
|---|---|
| Feste Adresse davor, z.B. http://homeassistant.local:8123 | Beispiel: leer lassen, wenn jede Aktion die volle Adresse traegt |
| Token (wird als Authorization: Bearer ... gesendet) | geheim: wird nach dem Speichern nie wieder angezeigt |
- Feste Adresse davor: Ist sie eingetragen, genügt in jeder Aktion ein Pfad (
/api/schalter). Ohne sie braucht jede Aktion die volle Adresse. Sonst meldet die Software „Das ist nur ein Pfad - trage eine feste Adresse in den Einstellungen ein oder schreibe die volle Adresse hin.“ - Token: Wird als
Authorization: Bearer …mitgeschickt, bei jeder Anfrage dieses Plugins. Trage es nur ein, wenn alle Ziele es verlangen und vertrauenswürdig sind.
Befehle
| Befehl | Name im Makro | Felder | Passt auf |
|---|---|---|---|
| Adresse abrufen (GET) | http.get | url Adresse oder Pfad * | Taste |
| Etwas senden (POST) | http.post | url Adresse oder Pfad *body Inhalt, z.B. {"state": "on"}content_type Art des Inhalts (leer = JSON) | Taste |
| Nachricht an einen Webhook | http.webhook | url Webhook-Adresse *text Text *field Feldname (leer = content, wie bei Discord) | Taste |
* ist ein Pflichtfeld.
- Adresse abrufen (GET): schickt eine Anfrage ohne Inhalt.
- Etwas senden (POST): Inhalt (zum Beispiel
{"state": "on"}) und Art des Inhalts. Leer heißt JSON (application/json). - Nachricht an einen Webhook: schickt
{"content": "<Text>"}als JSON. Mit Feldname änderst ducontentin ein anderes Feld. So sprechen auch die Webhooks von Discord und vielen anderen Diensten.
Eine Adresse darf nur mit http oder https beginnen. Ein Tastendruck soll nicht file: oder ein anderes Protokoll erreichen.
Beispiele
http.get url=http://192.168.1.50/relay/0?turn=on
http.post url=/api/szene body={"name": "film"} content_type=application/json
http.webhook url=https://example.org/hook text=Ich bin live! field=messageGut zu wissen
- Zeitlimit: acht Sekunden. Antwortet der Server nicht, meldet die Software „keine Antwort innerhalb von acht Sekunden“. Ein Tastendruck darf das Backend nicht aufhängen.
- Von der Antwort wird nur der Anfang (4 KB) gelesen. Ein Fehlertext des Servers erscheint in der Meldung („404 Not Found: …“).
- Dieses Plugin folgt Weiterleitungen, und das Token geht dabei mit. (Die Plugins für Home Assistant, Hue, Elgato und ntfy tun das nicht.) Trage ein Token deshalb nur ein, wenn alle Ziele vertrauenswürdig sind.
- Für Home Assistant gibt es mit Home Assistant ein eigenes Plugin. Auch Discord hat mit Discord eines für Nachrichten.
- Webhook-Adressen sind Geheimnisse. Halte sie in den Einstellungen des Plugins und nicht in der Belegung. Siehe Datenschutz.
- Das Plugin hat nichts zu verbinden. Der Zustand ist immer bereit, und es ist bei einer frischen Installation aus.