Fehler Schalten mit 8 fach Switch zrc-90eu

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Fehler Schalten mit 8 fach Switch zrc-90eu

Beitrag von udo1toni »

Ah. Sieh mal die letzten beiden Zeilen des Logs. Da hat sich dann ja doch noch was getan.

Wenn ich es richtig verstehe, sendet ein kurzer Druck nur ein event x.0, wobei x die Taste ist. Wird die Taste weiterhin gehalten wird anschließend ein x.2 gesendet. Nur dann wird auch beim Loslassen noch ein x.1 hinterhergeschoben. Da es sich also um float Values handelt, muss die Rule entsprechend angepasst werden, also statt intValue floatValue eintragen. Der Vergleichswert muss aber nur mit Nachkommastelle geschrieben werden, wenn sie sich von 0 unterscheidet.


Gesendet von iPad mit Tapatalk
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

LutzTH
Beiträge: 35
Registriert: 22. Feb 2020 18:43
Answers: 0

Re: Fehler Schalten mit 8 fach Switch zrc-90eu

Beitrag von LutzTH »

Hallo Udo, ich würde es gerne angleichen. bin aber in programmieren nicht so erfahren. Meinst du das ich nur "intValue" gegen eine "0"
Also auf dieses Art
switch((L_Switch_Wall.state as Number).0)
Dieses wird aber mit error im log angezeigt. Als Anfänger bin ich durch Zufall darauf gestoßen, das im log Syntax Fehler angezeigt werden. Das hat mir oft geholfen.

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

Re: Fehler Schalten mit 8 fach Switch zrc-90eu

Beitrag von udo1toni »

Nein, Du musst stattdessen .floatValue schreiben.

Code: Alles auswählen

switch((L_Switch_Wall.state as Number).floatValue)
Dann kannst Du mit

Code: Alles auswählen

case 2.2 :
auch das Ende des langen Tastendrucks erkennen.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

LutzTH
Beiträge: 35
Registriert: 22. Feb 2020 18:43
Answers: 0

Re: Fehler Schalten mit 8 fach Switch zrc-90eu

Beitrag von LutzTH »

Hallo Udo,

sorry habe deine Antwort jetzt erst gehen.
da scheint noch immer ein Fehler zu sein.:-(
Ich habe als Wert immer "case X.0:" eingesetzt.

==> /var/log/openhab2/openhab.log <==

2021-01-15 20:17:18.076 [INFO ] [eclipse.smarthome.model.script.src90] - Taste 2.0 gedrückt

2021-01-15 20:17:18.082 [WARN ] [eclipse.smarthome.model.script.src90] - Diese Taste gibt es nicht!

==> /var/log/openhab2/events.log <==

2021-01-15 20:17:27.725 [vent.ItemStateChangedEvent] - L_Switch_Wall changed from 2.0 to 1.0

==> /var/log/openhab2/openhab.log <==

2021-01-15 20:17:27.741 [INFO ] [eclipse.smarthome.model.script.src90] - Taste 1.0 gedrückt

2021-01-15 20:17:27.749 [WARN ] [eclipse.smarthome.model.script.src90] - Diese Taste gibt es nicht!
var Timer tSRC90 = null

rule "Wall Switch SRC90"
when
Item L_Switch_Wall received update
then
if(tSRC90 !== null) // Rule läuft schon, Abbruch
return;
tSRC90 = createTimer(now.plusMillis(200), [ | // Sperre der Rule
tSRC90 = null // Sperre aufheben
])
if(!(L_Switch_Wall.state instanceof Number)) { // keine Zahl im Status
logWarn("src90","Rule mit ungültigem Code getriggert!")
return;
}
logInfo("src90","Taste {} gedrückt",L_Switch_Wall.state)
switch((L_Switch_Wall.state as Number).floatValue) {
//L_Switch_Wall.state as Number).intValue)
case 1.0: {
// Befehle für Taste 1
L_Bild_Light.sendCommand(if(L_Bild_Light.state != ON) ON else OFF)
//L_LED_Light.sendCommand(if(L_Light.state != ON) ON else OFF)
}
case 2.0: {
L_Light.sendCommand(if(L_Light.state != ON) ON else OFF)
}
case 3.0: {
// Befehle für Taste 3
L_Fan.sendCommand(if(L_Fan.state != ON) ON else OFF)

}
case 4.0: {
// Befehle für Taste 4
Bedroom_Light.sendCommand(if(Bedroom_Light.state != ON) ON else OFF)
Bedroom_Radio.sendCommand(if(Bedroom_Radio.state != ON) ON else OFF)
}
case 5.0: {
// Befehle für Taste 5
}
case 6.0: {
// Befehle für Taste 6
}
case 7.0: {
// Befehle für Taste 7
Bedroom_Light.sendCommand(if(Bedroom_Light.state != ON) ON else OFF)
}
case 8.0: {
// Befehle für Taste 8
Bedroom_Radio.sendCommand(if(Bedroom_Radio.state != ON) ON else OFF)
}
default: {
// Da stimmt was nicht...
logWarn("src90","Diese Taste gibt es nicht!")
}
}
end

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

Re: Fehler Schalten mit 8 fach Switch zrc-90eu

Beitrag von udo1toni »

Ergänze bitte ma ldas logWarn am Ende so:

Code: Alles auswählen

default: {
    // Da stimmt was nicht...
    logWarn("src90","Diese Taste {} ({}) gibt es nicht!",L_Switch_Wall.state,(L_Switch_Wall.state as Number).floatValue)
}
So kannst Du im Fehlerfall sowohl den Status als auch den errechneten Float Value sehen.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

LutzTH
Beiträge: 35
Registriert: 22. Feb 2020 18:43
Answers: 0

Re: Fehler Schalten mit 8 fach Switch zrc-90eu

Beitrag von LutzTH »

Hallo Udo, ich denke mal da fehlt noch eine Klammer wenn nicht sogar mehr. :roll:

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

Re: Fehler Schalten mit 8 fach Switch zrc-90eu

Beitrag von udo1toni »

Ja, eine, ich hab sie oben ergänzt....
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

LutzTH
Beiträge: 35
Registriert: 22. Feb 2020 18:43
Answers: 0

Re: Fehler Schalten mit 8 fach Switch zrc-90eu

Beitrag von LutzTH »

Hallo Udo,
danke für die Verbesserung. :-) Bei meinen Versuch habe ich leider die fehlende Klammer an der falschen Stelle gesetzt.
Folgende Meldung erscheint im log, egal ob ich "case 2" oder "case 2.0" verwende.
2021-01-18 18:40:12.788 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'Wall_Switch_all.rules'

2021-01-18 18:40:20.185 [INFO ] [eclipse.smarthome.model.script.src90] - Taste 2.0 gedrückt

2021-01-18 18:40:20.196 [WARN ] [eclipse.smarthome.model.script.src90] - Diese Taste 2.0 (2.0) gibt es nicht!
Wenn ich z.B. die Taste 3 drücke, zeigt das log den Wechsel zur anderen Taste an.
2021-01-18 18:43:33.834 [vent.ItemStateChangedEvent] - L_Switch_Wall changed from 2.0 to 3.0

==> /var/log/openhab2/openhab.log <==

2021-01-18 18:43:33.851 [INFO ] [eclipse.smarthome.model.script.src90] - Taste 3.0 gedrückt

2021-01-18 18:43:33.862 [WARN ] [eclipse.smarthome.model.script.src90] - Diese Taste 3.0 (3.0) gibt es nicht!

ThomasW
Beiträge: 33
Registriert: 9. Jan 2021 16:12
Answers: 1

Re: Fehler Schalten mit 8 fach Switch zrc-90eu

Beitrag von ThomasW »

So wie es aussieht wird die Zahl nicht richtig verglichen

manchmal helfen Anführungszeichen versuch mal

Code: Alles auswählen

case: "1.0": 
OH3 auf RPI4,
Heizungssteuerung: Fritz DECT,
Zigbee: Conbee2 über Phoscon-GW: Aqara Opple Schalter, Aqara Temperatursensoren, Aqara Fenstersensoren, Aqara Aktoren, IKEA Lichter
Astro Binding
DWDUnwetter Binding
OpenWeatherMap Binding
FritzBox TR 064 Binding
iRobot Binding
Telegramm Binding für Benachrichtigungen und Steuerung von unterwegs
Rolladensteuerung: Rademacher DuoFern über HTTP Binding

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

Re: Fehler Schalten mit 8 fach Switch zrc-90eu

Beitrag von udo1toni »

Boah, nee... Anführungszeichen machen aus der Zahl einen String. Du kannst einen String nur mit einem String vergleichen, das heißt, Du müsstest dann statt .floatValue .toString schreiben. Das kann man auch machen, aber man muss dann schon an beiden Stellen ändern.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten