Frage zu Innogy Button_Count

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Frage zu Innogy Button_Count

Beitrag von kaloschke »

Hi,

ich möchte über die Fernbedienung von Innogy auf einen Doppelklick reagieren, was mir leider nicht gelingt.
In meinem Itemsfile steht:

Code: Alles auswählen

Number Button3_Count_AZ "Doppelklick Button 3" {channel="innogysmarthome:BRC8:SMARTHOME08:d85e0ec0133346dc9d29d71ba332ff77:button3_count"}
und in meinen rules:

Code: Alles auswählen

rule "Remote Button3"
when
    Channel "innogysmarthome:BRC8:SMARTHOME08:d85e0ec0133346dc9d29d71ba332ff77:button3" triggered PRESSED
then
    logInfo("Fernbedienung Button 3", "Ein")
    // Befehl 1
end


rule "Remote Button3 Count"
when
    Item Button3_Count_AZ changed 
then
    var CountNumber = Button3_Count_AZ.state as Number
    logInfo("CountNumber",":"+CountNumber)
    // Befehl 2
end
Bei einem Merhfachklick wird mehrfach die Info in Rule "Remote Button3" ausgegeben (was ich genau nicht will),
die Info in Rule "Remote Button3 Count" jedoch nicht (was ich ja genau will).

Hat jemand einen Tipp?
Viele Grüße

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: Frage zu Innogy Button_Count

Beitrag von eiGelbGeek »

Teste das mal so... dann wissen wir schonmal ob der Count überhaupt funktioniert. Richtig sind deine Rules noch nicht. Die erste wird immer auslösen, weil die den Count ja garnicht kennt. Aber eins nach dem anderen. Ich habe auch noch nie mit den Count gearbeitet. Stellt der sich selbst wieder auf 0 oder muss man das selbst zurückstellen?

Code: Alles auswählen

rule "Remote Button3"
when
    Channel "innogysmarthome:BRC8:SMARTHOME08:d85e0ec0133346dc9d29d71ba332ff77:button3" triggered PRESSED
then
    logInfo("Fernbedienung Button 3", "Ein")
    logInfo("Fernbedienung Button 3","Count: {}", Button3_Count_AZ.state as Number)
    //Verändert sich der Count überhaupt bei der 2ten Ausgabe? 
end

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

Re: Frage zu Innogy Button_Count

Beitrag von udo1toni »

Ich kenne das Innogy Addon nicht. Ist es so, dass der Channel button3_count die Anzahl der Klicks enthält? Dann musst Du mit einer Rule arbeiten, nicht mit zweien:

Code: Alles auswählen

rule "Remote Button3 Count"
when
    Item Button3_Count_AZ received command // es könnte auch received update sein... 
then
    logInfo("buttonCount","Remote Button 3 Count: {}",Button3_Count_AZ.state)
    if(Button3_Count_AZ.state instanceof Number)
        switch ((Button3_Count_AZ.state as Number).intValue) {
            case 1: {
                // Befehl 1
            }
            case 2: {
                // Befehl 2
            }
            case 3: {
                // Befehl 3
            }
            default: {
                // jeder andere Wert
            }
        }
    else
        logWarn("buttonCount","Kein gültiger Wert!")
end
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: Frage zu Innogy Button_Count

Beitrag von eiGelbGeek »

udo1toni hat geschrieben: 16. Aug 2019 00:57 Ich kenne das Innogy Addon nicht. Ist es so, dass der Channel button3_count die Anzahl der Klicks enthält?
Soweit ich weiß (Innogy Hardware ist ja von EQ3) zählt der Counter bis 999 jeden Klick hoch und fängt dann wieder von vorne an. Sprich man müsste erst den aktuellen Wert auslesen und dann die Differenz berechnen. Ich denke einen richtig guten Doppelklick wird man damit nicht hinbekommen, bzw. nur ziemlich Zeitverzögert.... also Licht z.b. wollte ich damit nicht schalten. Eine Rule die z.b. ne Alarmanlage einschaltet , da wäre mir die Verzögerung egal.

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

Re: Frage zu Innogy Button_Count

Beitrag von udo1toni »

Ah. das macht es dann etwas komplizierter.
Geht aber auch. Vergiss einfach den channel count und nimm nur den button. Eine Rule sähe dann so aus:

Code: Alles auswählen

// Globale Variablen immer zu Beginn der Datei definieren!
var Timer tButton = null

rule 
when
    Channel 'innogysmarthome:BRC8:SMARTHOME08:d85e0ec0133346dc9d29d71ba332ff77:button3' triggered PRESSED
then
    if(tButton !== null) {
        tButton.cancel
        tButton = null
        // Befehl(e) für Doppelklick ausführen
    } else {
        tButton = createTimer(now.plusMillis(500), [|
            // Befehle für Einfachklick ausführen
            tButton = null
        ])
    }
end
Der Trigger startet die Rule.
Ist der Timer bereit existent, muss vor weniger als 500Millisekunden die Rule schon mal getriggert worden sein -> Doppelklick. Da Doppelklick, muss der Timer abgebrochen werden.
Andernfalls handelt es sich um den ersten Klick. Damit wird der Einfach-Schaltvorgang mit der Verzögerung der Doppelklick-Erkennung geplant.

Mit dem Wert des Timers muss man im Zweifel etwas spielen...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Frage zu Innogy Button_Count

Beitrag von kaloschke »

Cool. Vielen Dank für Eure Antworten. Ich werde es morgen gleich mal testen.
Ich wollte damit die Helligkeit meiner Netatmo Presence ändern, also 1 Klick -> einschalten, "Doppelklick" -> Helligkeit erhöhen usw.
Bis dann

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Frage zu Innogy Button_Count

Beitrag von kaloschke »

Hi,
sehr seltsam. Ich denke, ich habe von udo1toni alles richtig übernommen.
Mein Code sieht so aus:

Code: Alles auswählen

var Timer tButton = null
rule "Remote Button 3 Click and DoubleClick"
when
    Channel 'innogysmarthome:BRC8:SMARTHOME08:d85e0ec0133346dc9d29d71ba332ff77:button3' triggered PRESSED
then
    if(tButton !== null) {
        tButton.cancel
        tButton = null
        // Befehl(e) für Doppelklick ausführen
        logInfo("Button 3","Doppelklick")
    } else {
        tButton = createTimer(now.plusMillis(500), [|
            logInfo("Button 3","Einfachklick")
            tButton = null
        ])
    }
end
In events.log sehe ich, dass und wie oft Button3 gedrückt wurde, im openhab.log erscheint jedoch keine Info. Infos von anderen Ereignisse werden problemos angezeigt. Auch ein Neustart von Openhab ändert daran nicht.

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: Frage zu Innogy Button_Count

Beitrag von eiGelbGeek »

Setze mal die Millis von 500 auf 2000 ... ich schätze die 500 reichen nicht um den Befehl zwischen CCU und Openhab auszutauschen, wobei eigentlich sollte dann immer der LOG Einfachklick auftauchen.

Tauchen evt. Javafehler auf ?

Teste das ganz mal wie folgt, dann siehst du ob die Rule überhaupt getriggert wird.

Code: Alles auswählen

var Timer tButton = null
rule "Remote Button 3 Click and DoubleClick"
when
    Channel 'innogysmarthome:BRC8:SMARTHOME08:d85e0ec0133346dc9d29d71ba332ff77:button3' triggered PRESSED
then
   logInfo("Button 3","Rule gestartet")
    if(tButton !== null) {
     logInfo("Button 3","Rule im if Zweig")
        tButton.cancel
        tButton = null
        // Befehl(e) für Doppelklick ausführen
        logInfo("Button 3","Doppelklick")
    } else {
       logInfo("Button 3","Rule im else Zweig")
        tButton = createTimer(now.plusMillis(2000), [|
            logInfo("Button 3","Einfachklick")
            tButton = null
        ])
    }
end
Füge dann mal den Openhab Log hier ein.... (also nur den relevanten Teil... ;-) )

PS: Denkt dran das folgende Zeile ganz oben in der Rule Datei sein muss

Code: Alles auswählen

var Timer tButton = null

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Frage zu Innogy Button_Count

Beitrag von kaloschke »

Danke für den Tipp:

Warum muss ich immer so blöd sein :-(
Ich habe zwei Fernbedienungen und mein Code sieht normalerweise so aus:

Code: Alles auswählen

rule "Remote Button 3 Click and DoubleClick"
when
    Channel "innogysmarthome:BRC8:SMARTHOME08:d85e0ec0133346dc9d29d71ba332ff77:button3" triggered PRESSED or
    Channel "innogysmarthome:BRC8:SMARTHOME08:009044d17edf4236addd88d521a1c626:button3" triggered PRESSED
then
---
Habe nur die falsche zum testen genutzt.

Ok. Dann teste ich mal den Doppelklick :-)

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Frage zu Innogy Button_Count

Beitrag von kaloschke »

Klappt. Soo geil :-)
Vielen Dank dafür

Antworten