Wlan Steckdose anbinden?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Wlan Steckdose anbinden?

Beitrag von peter-pan »

Während ich noch umständlich am Basteln war hat Udo schon die Lösung gepostet. Klasse, werd ich mir gleich mal "klauen".

Aber falls du doch mal mit einer Regel arbeiten willst, hier ein Beispiel:

Code: Alles auswählen

rule "test Shelly-Firmware"

  when
    Item Dummy6 changed to ON
  then
    ShellyAudioBeamerJson.postUpdate(transform("JSONPATH", "$.properties.updateAvailable", sendHttpGetRequest("http://meineIP:8080/rest/things/shelly%3A ... ugs%3A69abc3")))
    logInfo("test Regel", " Update Status ist {} ", ShellyAudioBeamerJson.state)
end
Zum Testen hab ich einfach einen Dummy-Schalter als Trigger genommen.
Und nicht vergessen "%3A" zu nehmen. Das wird aber normalerweise in der RESTApi auch angezeigt.
rest.jpg
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

int5749
Beiträge: 1161
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Wlan Steckdose anbinden?

Beitrag von int5749 »

udo1toni hat geschrieben: 5. Apr 2020 12:30 http bietet direkt Unterstützung für JSONPATH. Es erscheint mir nicht sinnvoll, das über ein Profile zu lösen.
In der Adresse sind Doppelpunkte, was zu Problemen führt, da das http Binding den Doppelpunkt auch verwendet, um die einzelnen Parameter voneinander zu trennen. Ohne das jetzt ausprobiert zu haben, denke ich, dass man den Doppelpunkt jeweils mit %3A ersetzen muss, damit die Adresse korrekt verwendet wird.
Es geht ja um ein Firmwareupdate, da sollte es ausreichen, einmal pro Stunde nachzuschauen, ob sich was getan hat. Entsprechend sind das 3600000 Millisekunden. Zum Schluss kommt dann direkt JSONPATH als Transformation.

Das Item sollte also so aussehen:

Code: Alles auswählen

String ShellyAudioBeamerJson "Beamer: [%s]" {http="<[http://meineIP%3A8080/rest/things/shelly%3Ashellyplugs%3A69abc3:3600000:JSONPATH($.properties.updateAvailable)]"}
Falls das nicht funktioniert, musst Du vermutlich einen http cache verwenden, da die Adresse hier allein steht.
Die Zeitangabe hatt ich noch nicht eingebaut, aber mit den %3A mag er immer noch nicht :-/ stumpf mit den : geht es dann aber ohne Probleme (zumindest für dieses Item) und ja, bei solchen Werten reicht stündlich mehr als vollkommen aus

Was bei mir nun direkt im item funktioniert ist:

Code: Alles auswählen

String ShellyAudioBeamerJson	"Update: [%s]"		{http="<[http://meinIP:8080/rest/things/shelly:shellyplugs:69abc3:3600000:JSONPATH($.properties.updateAvailable)]"}
Wenn ich dann dies dann auf ein anderes Thing, welches in einer Bridge liegt, adaptiere, geht dies wiederum nicht mehr :-/

Code: Alles auswählen

String ShaunID					"Shaun ID [%s]"		{http="<[http://meineIP:8080/rest/things/worxlandroid:mower:MyWorxBridge:SerienNummer:6000:JSONPATH($.properties.product_id)]"}
Dies Zeit ist für die Tests so niedrig ;-)
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Wlan Steckdose anbinden?

Beitrag von peter-pan »

...schau doch nochmal die Request URL im RESTApi an !!!. Die solltest du eigentlich dort einfach rauskopieren können und dann in deinen String reinkopieren können.
Zwischen deiner IP-Adresse und "8080" sollte noch ein "Doppelpunkt" sein und anschliessend dann "%3A". So wird es zumindest bei mir angezeigt.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

int5749
Beiträge: 1161
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Wlan Steckdose anbinden?

Beitrag von int5749 »

peter-pan hat geschrieben: 5. Apr 2020 13:58 ...schau doch nochmal die Request URL im RESTApi an !!!. Die solltest du eigentlich dort einfach rauskopieren können und dann in deinen String reinkopieren können.
Zwischen deiner IP-Adresse und "8080" sollte noch ein "Doppelpunkt" sein und anschliessend dann "%3A". So wird es zumindest bei mir angezeigt.
Ja, geau so habe ich es eingebaut und bei dem Property für Shelly geht dies, bei dem für den Mower nicht.
Bei der Rule geht dies auch mit dem "%3A", wenn ich dies als Item definiere (habe 2 unterschiedliche zum Test) dann will er auch hinten ":".

Unterschied zum Mower ist die Anzahl der Segmente für den http String (beide aus der Rest API) bei kann ich über den Browser aufrufen. Nur der Befehl in der Rule mag dies iwie nicht.
14:35:52.219 [ERROR] [untime.internal.engine.RuleEngineImpl] - Rule 'Schalter_Test': The name 'sendHttpGetREquest' cannot be resolved to an item or type; line 116, column 74, length 118
Dies ist

Code: Alles auswählen

ShaunIDRule.postUpdate(transform("JSONPATH", "$.properties.product_id", sendHttpGetREquest("http://192.100.100.1:8080/rest/things/worxlandroid%3Amower%3AMyWorxBridge%3A333Seriennummer333")))
Der Http Teil ist 1:1 aus der Rest API und funktioniert auch im Browser und mittels http://jsonpath.com/ kann ich mit $.properties.product_id den richtigen Wert abfragen.

;)
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: Wlan Steckdose anbinden?

Beitrag von udo1toni »

Es heißt auch sendHttpGetRequest, nicht sendHttpGetREquest.

Jedes einzelne Zeichen muss korrekt geschrieben sein, Groß/Kleinschreibung wird beachtet. Das gilt im Übrigen für den überwiegenden Teil von openHAB (sprich, es gibt ein paar wenige Stellen, wo das System Groß/Kleinschreibung nicht beachtet, ansonsten aber überall.)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

int5749
Beiträge: 1161
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Wlan Steckdose anbinden?

Beitrag von int5749 »

udo1toni hat geschrieben: 5. Apr 2020 14:44 Es heißt auch sendHttpGetRequest, nicht sendHttpGetREquest.
Ohh man(n) , da bin ich die Zeile gefühlte 758x durchgegangen und übersehe ständig diesen ein blöden Buchstaben :oops: :oops:

Wenn ich das für den Mower im Item definiere, geht es dort immer noch nicht, aber der Weg über die Rule reicht mir da völligst aus.

Danke wie immer für Hilfe und Geduld!!!!
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Wlan Steckdose anbinden?

Beitrag von peter-pan »

...schau mal hier rüber. Da hat mir Udo ein tolles Feature für VSCode gezeigt, da brauchst du den Evaluator gar nicht mehr. Klasse-Teil, nochmals Danke an Udo.
Das Kommando "sendHttpGetRequest" gilt natürlich nur für die Regel, nicht für den Item-Channel (nur zur Sicherheit), aber das weisst du ja.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

int5749
Beiträge: 1161
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Wlan Steckdose anbinden?

Beitrag von int5749 »

peter-pan hat geschrieben: 5. Apr 2020 16:30 ...schau mal hier rüber. Da hat mir Udo ein tolles Feature für VSCode gezeigt, da brauchst du den Evaluator gar nicht mehr. Klasse-Teil, nochmals Danke an Udo.
Installiert habe ich dies (beides) nun werde ich mal schauen, wir man eine JSON Datei erstellt.
peter-pan hat geschrieben: 5. Apr 2020 16:30 Das Kommando "sendHttpGetRequest" gilt natürlich nur für die Regel, nicht für den Item-Channel (nur zur Sicherheit), aber das weisst du ja.
Ja, dies weiß ich ausnahmsweise wirklich ;-) Im Item sieht es etwas anders aus, dafür kann ich dann dort mit einem Refresh Parameter arbeiten. Bestenfall höher als 1x pro Sekunde ;)
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Antworten