OH3 - HTTP Binding - Status springt von selbst auf UNDEF

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
curius
Beiträge: 78
Registriert: 1. Aug 2019 10:10
Answers: 0

OH3 - HTTP Binding - Status springt von selbst auf UNDEF

Beitrag von curius »

Hallo Leute!

Ich habe leider schon wieder ein kleines Problem bei der Umstellung von OH2 auf OH3.
Diesmal geht es konkret um das HTTP Binding.

Ziel ist es, mittels Switch den Bildschirmschoner eines Tablets zu aktivieren bzw. wieder zu deaktivieren.
Ich habe bereits ein Thing und ein Item dafür angelegt...

Thing:

Code: Alles auswählen

Thing http:url:screen_eg "Panel_EG" [ baseURL="http://192.168.1.93:2323", commandMethod="POST"] { Channels: Type switch : switch_eg "PanelSwitch_EG" [ commandExtension="%2$s", onValue="?cmd=startScreensaver&password=XYZ", offValue="?cmd=stopScreensaver&password=XYZ"] }
Item:

Code: Alles auswählen

Switch Hab_EG_ScreenS "Screensaver HABPanel EG" { channel="http:url:screen_eg:switch_eg"}
Es funktioniert eigentlich alles einwandfrei... Ich kann mit dem Switch den Screensaver ein- und wieder ausschalten.

Nun aber zu meinem Problem...
Aus mir unerklärlichen Gründen springt das Item nach ein paar Sekunden immer wieder in den "UNDEF" Zustand.
Das Log-File sieht wie folgt aus:

Code: Alles auswählen

2021-06-05 20:58:26.182 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'Hab_EG_ScreenS' received command OFF
2021-06-05 20:58:26.182 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Hab_EG_ScreenS' predicted to become OFF
2021-06-05 20:58:26.183 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Hab_EG_ScreenS' changed from ON to OFF
2021-06-05 20:58:43.632 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Hab_EG_ScreenS' changed from OFF to UNDEF
Ich kann mir das einfach nicht erklären. Es ist egal ob ich den Switch auf EIN oder AUS stelle, nach einigen Sekunden wechselt er automatisch wieder in den undefinierten Zustand.

Weiß von euch jemand woran das liegen könnte?
Besten Dank!

Grüße
Christian

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

Re: OH3 - HTTP Binding - Status springt von selbst auf UNDEF

Beitrag von udo1toni »

Konfiguriere für das Switch Item zusätzlich ein autoupdate="false", so:

Code: Alles auswählen

Switch Hab_EG_ScreenS "Screensaver HABPanel EG" { channel="http:url:screen_eg:switch_eg",autoupdate="false"}
Äh. Quatsch... Das wird vermutlich nicht helfen. Eher müsste es autoupdate="true" sein, was aber default Verhalten ist.

Vermutlich musst Du den Channel auf writeonly konfigurieren. Ich habe nun gerade kein OH3 zur Hand...

Lege ein http Thing über die UI an, definiere dort einen Channel und lege diesen als writeonly fest. Dann lässt Du Dir den Code anzeigen und kommst so zu dem Parameternamen, den Du in der Text-Definition verwenden musst.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

curius
Beiträge: 78
Registriert: 1. Aug 2019 10:10
Answers: 0

Re: OH3 - HTTP Binding - Status springt von selbst auf UNDEF

Beitrag von curius »

Hey!

Besten Dank, das war der entscheidende Hinweis ;-)

Code: Alles auswählen

Thing http:url:screen_eg "Panel_EG" [ baseURL="http://192.168.1.93:2323", commandMethod="POST"] {
    Channels:
        Type switch : switch_eg "PanelSwitch_EG" [ commandExtension="%2$s", mode="WRITEONLY", onValue="?cmd=startScreensaver&password=PW", offValue="?cmd=stopScreensaver&password=PW"]
        Type switch : restart_eg "PanelRestart_EG" [ commandExtension="%2$s", mode="WRITEONLY", onValue="?cmd=restartApp&password=PW", offValue="?cmd=restartApp&password=PW"]
    }
Alles funktioniert nun wieder wie unter openHAB 2.5.12

Code: Alles auswählen

mode="WRITEONLY"
... führte zum Erfolg :D

Grüße
Christian

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

Re: OH3 - HTTP Binding - Status springt von selbst auf UNDEF

Beitrag von udo1toni »

Prima :)
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Lux73
Beiträge: 71
Registriert: 26. Dez 2019 12:32
Answers: 0
Wohnort: Bielefeld

Re: OH3 - HTTP Binding - Status springt von selbst auf UNDEF

Beitrag von Lux73 »

ich hatte seit meiner Umstellung auf OH3 auch Probleme mit dem ON/OFF Switch meines Tablets welcher immer nach ein paar Sekunden auf "UNDEF" umsprang...

Vielen Dank euch für den Hinweis:

Code: Alles auswählen

mode="WRITEONLY"
kann gar nicht mehr sagen wieviele Stunden ich probiert habe dieses spezifische Problem zu lösen ^^
APU2c4|Debian12.11|OpenHAB4.3.5@Zulu21|mosquitto|hostapd|dnsmasq|zigbee2mqtt / Huawei MediaPad T5|FullyKioskBrowser
Zigbee:CC2652RB|1xCC2530.ROUTER|15xHue|4xIlluminize 5110.40|Danfoss:4xAlly+4xRoomSensor
Aqara:5xMCCGQ11LM/6xWSDCGQ11LM/6xGZCGQ01LM/4xRTCGQ11LM/2xRTCGQ13LM/2xRTCGQ14LM/1xDJT11LM/1xRTCZCGQ11LM/2x WXKG02LM
TuYa:2xTS011F/3xTS0601/1xTS0001|MOES:1xUFO-R11|HEIMAN:1xHS2WD-E
MQTT:Tasmota13.4.0|6xDelock 11826|3xShelly1|3xBlitzwolf SHP8|1xGosund SP112

curius
Beiträge: 78
Registriert: 1. Aug 2019 10:10
Answers: 0

Re: OH3 - HTTP Binding - Status springt von selbst auf UNDEF

Beitrag von curius »

Hmmm, aber wie muss ich eigentlich vorgehen, wenn ich den Status zusätzlich noch regelmäßig abfragen möchte?

Beispiel:
Ich habe einen Shelly 4 PM Pro, welcher grundsätzlich mittels openHAB über HTTP geschaltet wird.
Wenn ich den Shelly jedoch manuell übers Display schalte, sollte sich der Status im openHAB natürlich auch ändern.

Folgendes File habe ich bereits angelegt:

Code: Alles auswählen

Thing http:url:warmwasser "Warmwasser" [ baseURL="http://192.168.1.96", refresh=10 ] {
    Channels:
        Type switch : switch_wasser "Warmwasser - Boiler" [ stateExtension="/rpc/Switch.GetStatus?id=0", stateTransformation="JS:wasser_get.js", commandExtension="/rpc/Switch.Set?id=0&on=%2$s", onValue="true", offValue="false"]
    }
Das Transfomation-File sieht wie folgt aus:

Code: Alles auswählen

(function (x) {
    var json = JSON.parse(x);  
    return json.output == "true" ? "ON" : "OFF"    
})(input)
Ich kann leider keinen Fehler finden - der Status springt immer wieder auf "undef" zurück

Übers Terminal funktionieren die folgenden Befehle problemlos:

Code: Alles auswählen

tux@tuxedo-ibp:~$ curl "http://192.168.1.96/rpc/Switch.GetStatus?id=0"
{"id":0, "source":"HTTP", "output":true, "apower":0.0, "voltage":234.0, "current":0.0, "pf":0.00, "aenergy":{"total":20369.725,"by_minute":[0.000,0.000,0.000],"minute_ts":1639855386},"temperature":{"tC":39.2, "tF":102.5}}
... und folgender Befehl schaltet den Switch auch:

Code: Alles auswählen

tux@tuxedo-ibp:~$ curl "http://192.168.1.96/rpc/Switch.Set?id=0&on=true"
Sobald ich die beiden Ausdrücke "stateExtension" und "stateTransformation" entferne und den mode="WRITEONLY" zur "commandExtension" hinzufüge, funktioniert der Switch einwandfrei bzw. lässt sich über openHAB schalten...
Ich würde nur gerne zusätzlich auch den Status vom Switch zyklisch abfragen - dachte mir das sollte mit dem oben genannten .things File auch gelingen.

Habt ihr eine Idee was an dem Ausdruck nicht passen könnte?
Vielen Dank!

Grüße
Christian

Antworten