Regel: Welche Taste vom Doppeltaster wurde gedrückt ?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
schaedelweh
Beiträge: 11
Registriert: 15. Jan 2020 10:33

Regel: Welche Taste vom Doppeltaster wurde gedrückt ?

Beitrag von schaedelweh »

Hallo zusammen,
mein Name ist Boris und bin der neue :ugeek:
Mit OH 2 verbringe ich momentan meine Krankentage zu Hause. :|

Ein paar Aktoren, wie Steckdosen etc habe ich erfolgreich am laufen. Allerdings habe ich viel über die Paper UI gemacht.
Das reicht nun nicht mehr. Nun hab ich im VisualCode mit den Regeln so meine Verständnisprobleme. Leider ist die Syntax nicht so einfach wie im VBA im Excel :lol:
Mein Problem:
ich habe einen Doppeltaster (Hardware von AQARA). Diesen habe ich über Paper UI als Thing angelegt. (Ein ConBee2 ist die Brücke) Das funzt hervorragend !! Das Item habe ich dann über VisualCode angelegt
ITEM:

Code: Alles auswählen

Number               Taster01Button         "Button"                     {channel="deconz:switch:b2314bf5:00158d0004094a31010012:button"}
Herausgefunden habe ich, das die Taster "1002", bzw "2002" bei einem einfachen Druck ausgeben.(Wenn ich mit der Maus auf das Item in der Regel fahre, kommt die Info)

Meine Regel:

Code: Alles auswählen

rule "Beide Tasten machen das gleiche"
when
    Item Taster01Button received update  
then    
    val SwitchNum = if (SSchalter02Weihnachsstern.state == ON) OFF else ON
    SSchalter02Weihnachsstern.sendCommand(SwitchNum) 
end
Diese Regel funktioniert .... aber beide Taster machen das gleiche.
Das Ziel soll sein, das eine Taste unterschiedliche Aktoren wie z.B den Shelly am Garagentor schaltet.

Mein Versuch den "Tastendruck" auszuwerten ! (oh so was miserables .... :oops:

Code: Alles auswählen

rule "Nur die zweite (2002) Taste soll was machen"
when
    Item Taster01Button received update
    then
    if (Taster01Button.state.toString = "2002")
    {
        val SwitchNum = if (HS1001Switch.state == ON) OFF else ON
        HS1001Switch.sendCommand(SwitchNum)
    }
end
Ich bekomme das nicht gebacken, eine Bedingung zu schreiben, die herausfindet welche Taste gedrückt wurde.
Könnt ihr mir hier Helfen ?
Vielen Dank an Euch

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: Regel: Welche Taste vom Doppeltaster wurde gedrückt ?

Beitrag von KellerK1nd »

Normalerweise müsstest du doch für den Taster zwei Items haben. Eins für die linke Wippe eins für die Rechte, oder wenn du nur ein Item hast, dann kann sein dass der Taster unterschiedliche Nummern ausspuckt. Dann müsstest du jetzt erst einmal prüfen. Theoretisch hättest du dann 1002, 2002, 3002 und 4002, jeder Wert steht dann für ein Tastkontakt. Einfach mal das Log auslesen. Dann kann man mit der Regel weiter machen.
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

schaedelweh
Beiträge: 11
Registriert: 15. Jan 2020 10:33

Re: Regel: Welche Taste vom Doppeltaster wurde gedrückt ?

Beitrag von schaedelweh »

Servus,
ich habe nur ein Item ! Der Tastendruck spukt unterschiedliche Nummer aus .... "Herausgefunden habe ich, das die Taster "1002", bzw "2002" bei einem einfachen Druck ausgeben.(Wenn ich mit der Maus auf das Item in der Regel fahre, kommt die Info)"
Eine Taste hat bei einem kurzen Druck "1002" und für einen langen Druck auf die gleiche Taste "1004" ausgegeben. Die anders Taste dann eben "2002" bzw. "2004".
Das auszuwerten ist mein Problem
Das Log auslesen, tja .... mein Frontail bekomme ich nicht zum laufen .... Nur Probleme. Da kann ich nicht nachschauen. tut mir leid....

schaedelweh
Beiträge: 11
Registriert: 15. Jan 2020 10:33

Re: Regel: Welche Taste vom Doppeltaster wurde gedrückt ?

Beitrag von schaedelweh »

Hallo nochmal,
in der Papar UI habe ich im Thing noch das hier gefunden
Button Trigger
deconz:switch:b2314bf5:00158d0004094a31010012:buttonevent

Danke

schaedelweh
Beiträge: 11
Registriert: 15. Jan 2020 10:33

Re: Regel: Welche Taste vom Doppeltaster wurde gedrückt ?

Beitrag von schaedelweh »

Servus
Meint ihr, das kann man lösen 😎

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: Regel: Welche Taste vom Doppeltaster wurde gedrückt ?

Beitrag von KellerK1nd »

Bring erstmal Frontnail zum laufen. Sonst tappst du nur im dunklen. Hast du den Taster mit zwei Wippen?
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

schaedelweh
Beiträge: 11
Registriert: 15. Jan 2020 10:33

Re: Regel: Welche Taste vom Doppeltaster wurde gedrückt ?

Beitrag von schaedelweh »

Servus
Jepp. 2 Taster. Also 2 Wippen.

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

Re: Regel: Welche Taste vom Doppeltaster wurde gedrückt ?

Beitrag von udo1toni »

Also, in der Doku zum Binding ist das so erklärt:
https://www.openhab.org/addons/bindings/deconz/#events
Das konkrete Beispiel löst die Rule aus, wenn die Taste den Code 34 sendet. Ein Number Item kannst Du aber ebenso gut verwenden:

Code: Alles auswählen

rule "Deconz Tasten auswerten"
when
    Item Taster01Button received update
then
    if((!Taster01Button.state instanceof Number)) {
        logWarn("deconz","Tastencode ungültig! {}",Taster01Button.state )
        return;
    }
    switch()Taster01Button.state as Number).intValue) {
        case 2002:{
			HS1001Switch.sendCommand(if(HS1001Switch.state != ON) ON else OFF)
		}
        case 1002:{
			...
		}
        case 2004:{
			...
		}
        case 1004:{
			...
		}
		default: {
			logWarn("deconz","Unbekannter Tastencode: {}",Taster01Button.state)
		}
    }
end
Zu Beginn wird geprüft, ob ein gültiger Code empfangen wurde. Ist dies nicht der Fall, wird im Log eine Warnmeldung ausgegeben und die Rule bricht ab. Danach wird abhängig vom Tastencode in den zuständigen Code verzweigt (switch case ist hier einfach eleganter als if). Falls man eine neue Taste einbaut, kann man sogar den Code bequem als Warnmeldung nachlesen... ;)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

schaedelweh
Beiträge: 11
Registriert: 15. Jan 2020 10:33

Re: Regel: Welche Taste vom Doppeltaster wurde gedrückt ?

Beitrag von schaedelweh »

Hallo,
vielen Dank an udo1toni ! Ich wusste das es nicht allzu schwer ist. Nun ist einiges klarer. Werde das so umsetzen.
In der Zwischenzeit ist mein Openhab mal neu gestartet worden. Dann ging dieses hier plötzöich.

Code: Alles auswählen

rule "Beide Tasten machen nun nicht mehr das gleiche"
when
    
    Item Taster01Button received update  
then
     
    
    val SwitchNum = if (SSchalter02Weihnachsstern.state == ON) OFF else ON
if (Taster01Button.state.toString == "2002") {
     SSchalter02Weihnachsstern.sendCommand(SwitchNum)

}   
end
Vielen Dank !

Antworten