Steuerung der Garagentore / Torantriebe mit openHAB

Ich konnte unsere beiden Garagentore schon immer per EIB / KNX und per Infrarottaster im Auto aktivieren. Da ich durch die Umstellung auf openHAB jetzt auch eine mobile App auf einen Endgeräten habe, wollte ich auch die Steuerung ohne Infrarottaster durchführen können (damit ich nicht noch ein weiteren Taster mitschleppen muss).

Die Konfiguration war eigentlich ganz einfach, aber im Detail doch etwas aufwändiger (darum beschreibe ich das hier noch einmal). Gelöst habe ich für mich noch nicht, dass ich bis zur Garage keine WLAN-Verbindung mehr habe. Entweder muss ich openHAB noch über das Internet verfügbar machen (was ich eigentlich nicht will) oder ich muss einen WLAN-Repeater in der Garage aufstellen (macht wahrscheinlich Sinn, weil ich dann generell im Garten mehr Empfang habe).

Die Besonderheit der technischen Realisierung ist das Mapping in der Sitemap, damit ein Button anstatt ein „Slider“ dargestellt wird. Außerde musste ich in der Regel etwas „tricksen“, damit ein Timer 3 Sekunden wartet und die richtigen Stati an das Bus-System gemeldet werden.

Aufbau der Items

Ich habe die Torantriebe als Items wie folgt definiert:

Switch Garage_Links_Torantrieb "Torantrieb Garage (Links)" (gTor_Garage, gGarage_Links) {knx="0/0/1"}
Switch Garage_Rechts_Torantrieb "Torantrieb Garage (Rechts)" (gTor_Garage, gGarage_Rechts) {knx="0/0/2"}

Aufbau der Sitemap

Die Sitemap habe ich wie folgt aufgebaut:

Frame {
   Switch item=Garage_Links_Torantrieb label="Torantrieb Garage (Links)" icon="garage_detached" mappings=[ON="@"]
   Switch item=Garage_Rechts_Torantrieb label="Torantrieb Garage (Rechts)" icon="garage_detached" mappings=[ON="@"] 
 }

Aufbau der Regel

Zusätzlich habe ich noch folgende Regel pro Garagentor implementiert:

import org.openhab.core.library.types.*
import org.openhab.model.script.actions.*
import org.openhab.core.transform.actions.*

var Timer timer = null
var Timer Garage_OnTime = null

rule "Garagentor Links"
 when
    Item Garage_Links_Torantrieb received command or
    Time cron "0 0/3 * * * ?"
then
    if(receivedCommand==ON) {
        if(Garage_OnTime == null) {
            Garage_OnTime = createTimer(now.plusSeconds(3)) [
                sendCommand(Garage_Links_Torantrieb, OFF)
                postUpdate(Garage_Links_Torantrieb, OFF)
                Garage_OnTime.cancel
                Garage_OnTime = null
            ]
            logInfo("Gargentor (Links)","Garagentor auf/zu wurde ausgeführt")
        }
    } 
end
0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.