Seite 2 von 3

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

Verfasst: 10. Jan 2021 13:18
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

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

Verfasst: 12. Jan 2021 20:53
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.

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

Verfasst: 12. Jan 2021 23:30
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.

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

Verfasst: 15. Jan 2021 20:23
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

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

Verfasst: 15. Jan 2021 21:42
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.

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

Verfasst: 17. Jan 2021 20:24
von LutzTH
Hallo Udo, ich denke mal da fehlt noch eine Klammer wenn nicht sogar mehr. :roll:

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

Verfasst: 18. Jan 2021 00:03
von udo1toni
Ja, eine, ich hab sie oben ergänzt....

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

Verfasst: 18. Jan 2021 20:05
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!

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

Verfasst: 18. Jan 2021 20:35
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": 

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

Verfasst: 18. Jan 2021 20:38
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.