ich bin dieses Jahr von FHEM auf OpenHab umgestiegen. Bisher habe ich meine Homematic-Automatisierung in Openhab abgebildet und bin sehr happy mit dem neuen System.
Aktuell kämpfe ich mit der Umsetzung meiner Astro-abhängigen Rolledensteuerung, und komme irgendwie nicht weiter.
Aufbauzustand:
Da ich Rolladenmotoren mit einem mir nicht bekannten Rolling-Code verwende (Jarolift) , muss ich die Steuerung über eine Fernbedienung (Up,Stop, Down und Kanal-Wahl Taster (hat 4 Kanäle)), die über GPIO am Raspi hängt, ansteuern. Das Funktioniert alles schon (war unter FHEM aktiv).
Dieser Aufbauzustand bedingt eine Eigenheiten, da dies kein intelligentes System ist:
-ich muss den zuletzt ausgeführten Kanal (z.B. Kanal 1 - Rolladen Ost) irgendwo speichern, damit ich diesen in einer nächsten Rule verwenden kann. Ich dachte hier an die Speicherung in einem eigenen Item.
Ich habe nun folgende Item- und Rules Datei geschrieben. Leider funktioniert das so noch nicht. Ich habe schon viel gelesen, aber bestimmt gibt es hier noch div. Syntax-Fehler oder Logikfehler. Bestimmt habe ich mein Vorhaben auch kompliziert umgesetzt und es gibt einen "einfacheren" Weg. Ich würde mich sehr über Anregungen dazu freuen.
Im nächsten Schritt möchte ich dann eine direkte Ansteuerung der einzelnen Kanäle umsetzte, dies aber erst im zweiten Step.
Hier also mal die zwei Dateien die ich beschrieben habe:
Zusatz-Info zur Fernbedieung:
Die Fernbedienung wechselt den Kanal bei jedem einmaligen Druck einen Kanal weiter. Sprich beim Systemstart Default Alle 4 Kanäle zusammen aktiviert, beim nächsten Tastendruck Kanal 1 aktiviert, nächster Tastendruck Kanal 2 aktiviert, ..., nach dem 4. Kanal folgt wieder "alle Kanäle aktiviert"
Ich habe noch eine Init-Datei (System Started - Rule) die das Kanal-Item beim Start mit dem Wert 0 belegt (Ausgangszustand)
Items:
Code: Alles auswählen
Switch Rolladen_Up "Rolladen Up" { gpio="pin:19 activelow:yes initialValue:low" }
Switch Rolladen_Stop "Rolladen Stop" { gpio="pin:13 activelow:yes initialValue:low" }
Switch Rolladen_Down "Rolladen Down" { gpio="pin:6 activelow:yes initialValue:low" }
Number Rolladen_Channel_Ist "Kanal [%s]"
Code: Alles auswählen
rule "Rolladenautomatik"
var Timer tDelay = null
var Number rolladen_channel_ist_var = Rolladen_Channel_Ist
when
Channel 'astro:sun:091d0939:set#event' triggered START
then
val rolladen_channel_soll_wz_ez = 1 //Rolladen Ost auf Kanal 1 der Fernbedienung
if (rolladen_channel_ist_var !== rolladen_channel_soll_wz_ez)
{
while(rolladen_channel_ist_var !== rolladen_channel_soll_wz_ez)
Rolladen_Channel.sendCommand(ON)
Thread::sleep(300)
Rolladen_Channel.sendCommand(OFF)
rolladen_channel_ist_var = rolladen_channel_ist_var + 1
if (rolladen_channel_ist_var = 5)
{
rolladen_channel_ist_var = 0
}
}
Rolladen_Down.sendCommand(ON)
Thread::sleep(300)
Rolladen_Down.sendCommand(OFF)
tDelay?.cancel
tDelay = createTimer(now.plusSeconds(10))
Rolladen_Stop.sendCommand(ON)
Thread::sleep(300)
Rolladen_Stop.sendCommand(OFF)
Rolladen_Channel_Ist.postUpdate(Rolladen_channel_soll_wz_ez)
end