OpenHAB: Konfigurationsbeispiele für Smarte Geräte

OpenHAB: Konfigurationsbeispiele für Smarte Geräte

letzte Aktualisierung: 11. Juli 2020
#

Konfiguration Bridge

//home.things
Bridge mqtt:broker:brokerhome [ host="192.168.1.5", secure=false ]
{
// Hier werden die verschiedenen Geräte als Thing eingefügt
//Beispiel
 Thing topic SteckdoseCouch {
      Channels:
          Type switch : WoZiLicht "Lampe Couch" [ stateTopic="stat/Steckdose_Couch/POWER", commandTopic="cmnd/Steckdose_Couch/POWER", on="ON", off="OFF" ] 
   }
}

Sonoff S26

Things

//home.things  
 Thing topic SteckdoseCouch {
      Channels:
          Type switch : WZLicht "Lampe Couch" [ stateTopic="stat/Steckdose_Couch/POWER", commandTopic="cmnd/Steckdose_Couch/POWER", on="ON", off="OFF" ] 
   }

Items

// home.items
// itemname ["labeltext"] [<iconname>] [(group1, group2, ...)] [{bindingconfig}]
// https://github.com/arendst/Sonoff-Tasmota/wiki

// WOHNZIMMER WZ
// ***
   Switch        WZLicht		        "Lampe Couch" 	 <light>    (gWZLicht)    { channel="mqtt:topic:brokerhome:SteckdoseCouch:WZLicht" }

Sitemap

sitemap home label="Zu Hause" {
    Frame label="Wohnzimmer Lampe Couch" icon="sofa" {
        Switch item=WZLicht
    }
}

Sonoff POW

Things

   Thing topic bad_boiler {
      Channels:   
         Type switch : EG_Bad_Boiler      "Bad Boiler"               [stateTopic="bad/powr2-02/stat/POWER", commandTopic="bad/powr2-02/cmnd/POWER", on="ON", off="OFF" ]
         Type string : reachable          "Schaltzustand"            [ stateTopic="bad/powr2-02/tele/LWT" ]
         Type switch : power              "Power"                    [ stateTopic="bad/powr2-02/stat/POWER", commandTopic="bad/powr2-02/cmnd/POWER" ]
         Type number : powerload          "Leistung"                 [ stateTopic="bad/powr2-02/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Power"]
         Type number : voltage            "Spannung"                 [ stateTopic="bad/powr2-02/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Voltage"]
         Type number : current            "Strom"                    [ stateTopic="bad/powr2-02/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current"]
         Type number : Verbr_heute        "Gesamtverbrauch heute"    [ stateTopic="bad/powr2-02/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Today"]
         Type number : Verbr_gestern      "Gesamtverbrauch gestern"  [ stateTopic="bad/powr2-02/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Yesterday"]
         Type number : Verbr_gesamt       "Gesamtverbrauch"          [ stateTopic="bad/powr2-02/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total"]
         Type number : rssi               "WiFi Signalstärke"        [ stateTopic="bad/powr2-02/tele/STATE", transformationPattern="JSONPATH:$.Wifi.RSSI"]
   }
}

Items

// home.items
// itemname ["labeltext"] [<iconname>] [(group1, group2, ...)] [{bindingconfig}]
// https://github.com/arendst/Sonoff-Tasmota/wiki

// BAD
// ***
Switch EG_Bad_Boiler                  "Bad Boiler"                     (EG_BAD)   {channel="mqtt:topic:brokerhome:bad_boiler:EG_Bad_Boiler"}
Number EG_Bad_Boiler_Verbr_ges        "Verbrauch gesamt [%.3f kWh]"    (EG_BAD)   {channel="mqtt:topic:brokerhome:bad_boiler:Verbr_gesamt"}
Number EG_Bad_Boiler_Verbr_heute      "Verbrauch heute [%.3f kWh]"     (EG_BAD)   {channel="mqtt:topic:brokerhome:bad_boiler:Verbr_heute"}
Number EG_Bad_Boiler_Verbr_gestern    "Verbrauch gestern [%.3f kWh]"   (EG_BAD)   {channel="mqtt:topic:brokerhome:bad_boiler:Verbr_gestern"}
Number EG_Bad_Boiler_Strom            "Strom [%.1f A]"                 (EG_BAD)   {channel="mqtt:topic:brokerhome:bad_boiler:current"}
Number EG_Bad_Boiler_Spannung         "Spannung [%.1f V]"              (EG_BAD)   {channel="mqtt:topic:brokerhome:bad_boiler:voltage"}
Number EG_Bad_Boiler_Leistung         "Leistung [%.1f W]"              (EG_BAD)   {channel="mqtt:topic:brokerhome:bad_boiler:powerload"}

Sitemap

sitemap home label="Zu Hause" {
  Text item=EG_Bad_Boiler_Leistung label="Bad" icon="bath" {
     Frame label="Schalter"{
       Switch item=EG_Bad_Boiler
     }
     Frame {
        Default item=EG_Bad_Boiler_Spannung
        Default item=EG_Bad_Boiler_Strom
        Default item=EG_Bad_Boiler_Leistung
        Default item=EG_Bad_Boiler_Verbr_ges  
        Default item=EG_Bad_Boiler_Verbr_heute
        Default item=EG_Bad_Boiler_Verbr_gestern
     }
  }
}

Sonoff RF Bridge

Türkontakt

Am Anfang müssen die Codes des Kontaktes ausgelesen werden, die beim Öffnen und Schließen des Schalters verschickt werden. Dies geschieht über de Konsole der RF-Bridge. Eine Ausgabe könnte dabei so aussehen:

tele/rf-bridge/RESULT {"RfReceived":{"Sync":12300,"Low":450,"High":1250,"Data":"082FBA","RfKey":"None"}}
tele/rf-bridge/RESULT {"RfReceived":{"Sync":12290,"Low":440,"High":1250,"Data":"082FBB","RfKey":"None"}}

Der Sonoff DW1 liefert leider nur ein Öffnen-Signal und ist somit für viele Anwendungen unbrauchbar. Besser funktioniert der DIGOO DG HOSA 433MHz New Door & Window Alarm Sensor, der für jeden Statuswechsel ein Signal sendet.

.THINGS

Bridge mqtt:broker:brokerhome [ host="192.168.1.5", secure=false ] 
{
	Thing topic rfbridge  {
      Channels:
         Type string : reachable     "Reachable"            [ stateTopic="tele/rf-bridge/LWT" ]
         Type string : recieveddata  "Received Data"        [ stateTopic="tele/rf-bridge/RESULT", transformationPattern="JSONPATH:$.RfReceived.Data"]
         Type string : recievedsync  "Received Sync"        [ stateTopic="tele/rf-bridge/RESULT", transformationPattern="JSONPATH:$.RfReceived.Sync"]
         Type string : recievedlow   "Received Low"         [ stateTopic="tele/rf-bridge/RESULT", transformationPattern="JSONPATH:$.RfReceived.Low"]
         Type string : recievedhigh  "Received High"        [ stateTopic="tele/rf-bridge/RESULT", transformationPattern="JSONPATH:$.RfReceived.High"]
         Type string : recievedrfkey "Received RfKey"       [ stateTopic="tele/rf-bridge/RESULT", transformationPattern="JSONPATH:$.RfReceived.RfKey"]
         Type number : rssi          "WiFi Signal Strength" [ stateTopic="tele/rf-bridge/STATE", transformationPattern="JSONPATH:$.Wifi.RSSI"]

        Type contact : door1         "Door 1"               [ stateTopic="tele/sonoff-bridge/RESULT", transformationPattern="JSONPATH:$.RfReceived.Data" ,allowedStates="082FBA,082FBB", off="082FBA", on="082FBB"]
        }
}

.ITEMS

Contact GF_Sonoff_RF_Door_1         "Door 1:"     (GF_Sonoff_RF) { channel="mqtt:topic:rfbridge:door1" }

.SITEMAP

Group item=GF_Sonoff_RF {
             Text item=GF_Sonoff_RF_Reachable label="Status [%s]"
             Text item=GF_Sonoff_RF_Received_Data label="Data [%s]"
             Text item=GF_Sonoff_RF_Received_Sync label="Sync [%s]"
             Text item=GF_Sonoff_RF_Received_Low label="Low [%s]"
             Text item=GF_Sonoff_RF_Received_High label="High [%s]"
             Text item=GF_Sonoff_RF_Received_RfKey label="RfKey [%s]"
             Text item=GF_Sonoff_RF_RSSI label="WiFi Signal Strength [%d %%]"
             Text item=GF_Sonoff_RF_Door_1 label="Door [%s]"
         }

Es ist ebenfalls möglich einen Schaltvorgang per Regel auszulösen. In diesem Beispiel wird bei jedem empfangenen Code, je nach vorherigem Zustand des zu schaltenden Gerätes, dieses Ein oder Aus geschaltet. (toogle Modus) Wenn mehrere Geräte oder Auslöser erfasst werden sollen, kann man dies elegant mit case lösen. Extra Items sind nicht nötig.

.RULES

rule "BUTTON TOGGLE"
when
    Item GF_Sonoff_RF_Received_Data received update
 then
    var rfData = GF_Sonoff_RF_Received_Data.state.toString
    Thread::sleep(100)
        switch (rfData) {
            case "43D128":  // Fernbedienung Taste 1
                {
                    if (WoZiLicht.state == ON) 
                        { 
                            WoZiLicht.sendCommand(OFF) 
                        }
                    else 
                        { 
                            WoZiLicht.sendCommand(ON) 
                        }
                    // Reset Last Received Code
                    rfData=""
                    GF_Sonoff_RF_Received_Data.postUpdate(rfData)
                }
            case "ACAA99": //Türkontakt 1
                {
                    if (WoZiLicht.state == ON) 
                        { 
                            WoZiLicht.sendCommand(OFF) 
                        }
                    else 
                        { 
                            WoZiLicht.sendCommand(ON) 
                        }
                    // Reset Last Received Code
                    rfData=""
                    GF_Sonoff_RF_Received_Data.postUpdate(rfData)
                }
            case "F71E2E": //Bewegungsmelder 1
                {
                    if (WoZiLicht.state == ON) 
                        { 
                            WoZiLicht.sendCommand(OFF) 
                        }
                    else 
                        { 
                            WoZiLicht.sendCommand(ON) 
                        }
                    // Reset Last Received Code
                    rfData=""
                    GF_Sonoff_RF_Received_Data.postUpdate(rfData)
                }
        }
end

Sonoff DC 5V Relais

Commands

  • PulseTime1 5 – Setzt die Zeit in der der Schalter automatisch wieder ausschaltet (0,5 s)

Quellen