Binding Configuration per Rule ändern

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Antworten
klaus1
Beiträge: 89
Registriert: 11. Jan 2022 13:48

Binding Configuration per Rule ändern

Beitrag von klaus1 »

Hallo,

ich verwende das Awattar bestprice binding.
in diesem Binding kann man im Thing die length einstellen, über wieviele Stunden der Bestpreis gesucht werden soll.
im Winter würde ich hier gerne die Einstellung 14 verwenden, und im Sommer 4.
(Winter brauch ich mehr Heizphasen, als im Sommer für rein Warmwasser).

da ich lieber nicht manuell umstellen möchte im Winter / Sommer, würde ich gerne ab bspw. 30.05 jeweils length auf 4 Stellen wollen, und ab ca. Anfang September wieder auf 14h. (Auch bei neustart openhab).
eventuell auch per Cronjob falls per Rule nicht möglich.
Wie kann man auf Things Einstellungen zugreifen?
Danke

Benutzeravatar
udo1toni
Beiträge: 13859
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Binding Configuration per Rule ändern

Beitrag von udo1toni »

Prinzipiell könnte man das über die REST API erreichen.

Die einzelnen Schritte sind, über die API einmal die Konfiguration auszulesen (Main UI -> Administration -> Entwickler Tools -> API Explorer -> things -> GET /things/{thingUID} -> rechts Try it out -> ThingUID eintragen -> Execute), in der JSON Antwort siehst Du einen Teil, der Knoten heißt configuration. Dort siehst Du die korrekte Schreibweise für den Wert, den Du beeinflussen willst.
Als nächsten Schritt erzeugst Du die passende JSON Payload mit dem angepassten Wert und kannst nun ausprobieren, ob Du das Thing erfolgreich umschalten kannst, mit PUT /things/{thingUID}/config (ein paar Zeilen unter dem gerade verwendeten Punkt...) Auch hier musst Du natürlich die Thing UID eintragen, aber zusätzlich noch die JSON Payload. Das Format ist exakt so, wie es in der JSON Antwort oben war, es handelt sich aber um den Knoten configuration, das heißt, innerhalb der Klammern { } stehen nur die Parameter des Things, welche Du anpassen willst, also z.B.

Code: Alles auswählen

{
    "length": 14
}
Da ich das Binding nicht nutze, musst Du selbst darauf achten, dass der Parameter korrekt geschrieben ist :) Es könnte z.B. sein, dass die 14 in Anführungszeichen übergeben werden muss.

Nun kannst Du direkt über Execute ausprobieren, ob der API-Aufruf korrekt ist. Ist das der Fall, siehst Du eine Server Response 200 mit dem Thing als Payload.
Zusätzlich bekommst Du einen curl Aufruf angezeigt, diesen kopierst Du.

An dieser Stelle hast Du nun zwei Möglichkeiten... Option 1: Du legst ein bash-Script an und fügst dort einfach den curl Befehl ein. Du kannst den konkret zu setzenden Wert über die bash-Variable %1 dynamisch übergeben. Das Script kannst Du nun von der Shell aus ausprobieren. Anschließend kannst Du über das Exec Binding das Script aus openHAB heraus aufrufen.
Alternativ erzeugst Du ein http Thing, über das Du das PUT mitsamt dem Authorization Bearer absetzen kannst. Auch dort kannst Du den Wert dynamisch über den Channel einfügen.

Hört sich recht kompliziert an, aber das meiste davon ist eigentlich stumpfes Geklicke. Wichtig ist aber, dass Du ein gültiges Token für den Zugriff auf die API hast (das ist im curl Aufruf enthalten).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten