Seite 2 von 2
Re: Unterstützung bei Rule für Beleuchtung
Verfasst: 22. Jan 2021 12:31
von ThomasW
Schön zu hören das es läuft.
ja das ausschalten geht tatsächlich nicht da hat sich in der else if ein Fehler eingeschlichen richtig wäre hier
Code: Alles auswählen
}else if(Shellie_Dimmer_KW_Gross_RelayBrightness.state != 0 && Shellie_Dimmer_KW_Klein_RelayBrightness.state != 0) { //Wenn KW Groß an ist und KW Klein an
logInfo("Spotklein", "KW Klein aus")
//hier KW Klein ausschalten und wen WW Klein aus ist Relay ausschalten
}
und deine Rule für das syncronisierte dimmen sollte auch möglich sein mit einer kleinen klammer
Code: Alles auswählen
rule "spot klein ww synchron"
when
Item Shellie_Dimmer_WW_Gross_RelayBrightness changed
then
if(Shellie_Dimmer_WW_Klein_RelayON.state == ON){
logInfo("Spotklein", "WW synchron")
Shellie_Dimmer_WW_Klein_RelayBrightness.sendCommand(Shellie_Dimmer_WW_Gross_RelayBrightness.state)
}
end
Re: Unterstützung bei Rule für Beleuchtung
Verfasst: 22. Jan 2021 14:52
von udo1toni
Frage zum Shelly Input: Könnte man den auch so konfigurieren, als wenn ein Schalter angeschlossen ist? Mit verbundenem Taster kämme dann beim Drücken ein ON und beim Loslassen ein OFF.
Der nächste Schritt wäre dann eine Rule in openHAB, die auswertet, wie lange der Taster gedrückt wurde. Ist die ON-Phase z.B. unter 150 Millisekunden, wäre es ein kurzer Tastendruck. dauert der Tastendruck länger, so wird der Dimmvorgang gestartet und gestoppt, sobald das OFF kommt.
Nicht ganz unwichtig ist in dem Zusammenhang natürlich, wie zuverlässig das Timing ausgewertet wird, das müsste man dann halt ausgiebig testen.
Re: Unterstützung bei Rule für Beleuchtung
Verfasst: 22. Jan 2021 19:42
von Backbe01
@ThomasW
Vielen Dank, ich habe schon nicht mehr daran geglaubt, aber jetzt läuft es genau so, wie es soll! Vielen Dank! Ich hoffe für mich, dass Du dich nicht erst seit deinem Registrierungsdatum mit OH befasst, echt Klasse dein Wissen!
@udo1toni
Ich bin mir sicher, du kannst da eine Rule aus dem Hut zaubern. Die Frage für mich ist, ob sich das lohnt. Wie auch du schreibst, könnte ich mir vorstellen, dass das Ganze immer Fehleranfälliger wird.
Mein Gedanke war jetzt eher: Im Paper UI gibts ja den Eintrag "Enable Switch events" so wie er jetzt läuft. Mein Gedanke war, ich brücke den Input 2 mit dem Input1(der derzeit nicht in Benutzung ist). Hier könnte ich dann leichter das ON/OFF Signal abgreifen. Noch komme ich relativ einfach an den Shelly2.5 ran. (Aber neugierig wäre ich schon, wie so eine Rule aussehen könnte, ich habe ja noch viele Taster

)
Nochmals vielen Dank für Eure sehr freundliche und kompetente Unterstützung!!!!
Re: Unterstützung bei Rule für Beleuchtung
Verfasst: 22. Jan 2021 22:22
von udo1toni
Die Rule sollte nicht all zu kompliziert sein. Für OH3 muss der createTimer Aufruf angepasst werden. Die Rule muss zwingend aus einer .rules-Datei heraus ausgeführt werden, weil die Timer-Variable zwingend eine globale Variable sein muss. Oder man baut die Rule in Java Script nach...
Code: Alles auswählen
var Timer tStart = null
rule "short of long press with stop"
when
Item Taster received command
then
if(receivedCommand == ON) {
tStart?.cancel
tStart = createTimer(now.plusMillis(150),[ |
// long press started
tStart = null
])
} else {
if(tStart !== null) {
tStart.cancel
tStart = null
// short press
} else {
// long press stopped
}
}
end
Re: Unterstützung bei Rule für Beleuchtung
Verfasst: 2. Feb 2021 15:39
von Backbe01
letzte Frage..
ist dieser Text
oder lieber
für den Teil mit der Dimmung in Ordnung in dem Teil "Abbruchbedingung Schalter losgelassen"? Der Inputschalter ist immer OFF. Wenn des Steuersignal anliegt (Taster gedrückt) wechselt es so lange auf ON bis der Taster wieder losgelassen wird und wechselt wieder auf OFF.
Code: Alles auswählen
var i = 1 //als schalter ob heller oder dunkler
if (LEDstripe_EG_EsszimmerDH.state instanceof DecimalType) {
percent = ((LEDstripe_EG_EsszimmerDH.state as DecimalType)/5).intValue * 5 //round to 5
fade_Timer = createTimer(now.plusMillis(200)) [|
LEDstripe_EG_EsszimmerDH.sendCommand(percent)
if (percent < 5){ //Richtungswechsel
i=0
}else if (percent > 95){
i=1
}
if (i == 1 ) { //runterdimmen
percent = percent - 5
fade_Timer.reschedule(now.plusMillis(200))
}
else if (i == 0){ //hochdimmen
percent = percent + 5
fade_Timer.reschedule(now.plusMillis(200))
}
// if (/* Abbruchbedingung Schalter lossgelassen*/){
// fade_Timer.cancel
//}
]
}