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
Binding Configuration per Rule ändern
- udo1toni
- Beiträge: 13859
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Binding Configuration per Rule ändern
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.
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).
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
}
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