Seite 1 von 1
Frage zu Innogy Button_Count
Verfasst: 15. Aug 2019 14:29
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
Re: Frage zu Innogy Button_Count
Verfasst: 15. Aug 2019 20:57
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
Re: Frage zu Innogy Button_Count
Verfasst: 16. Aug 2019 00:57
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
Re: Frage zu Innogy Button_Count
Verfasst: 16. Aug 2019 01:20
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.
Re: Frage zu Innogy Button_Count
Verfasst: 16. Aug 2019 13:50
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...
Re: Frage zu Innogy Button_Count
Verfasst: 16. Aug 2019 20:00
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
Re: Frage zu Innogy Button_Count
Verfasst: 17. Aug 2019 11:38
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.
Re: Frage zu Innogy Button_Count
Verfasst: 17. Aug 2019 17:56
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
Re: Frage zu Innogy Button_Count
Verfasst: 17. Aug 2019 18:43
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
Re: Frage zu Innogy Button_Count
Verfasst: 17. Aug 2019 18:49
von kaloschke
Klappt. Soo geil
Vielen Dank dafür