Ankündigung

Einklappen
Keine Ankündigung bisher.

openHAB 1 -> 2 .... noch einmal die Rules

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    openHAB 1 -> 2 .... noch einmal die Rules

    Der Umstieg war ja generell ganz einfach....WENN es die rules nicht gäbe :-)

    Das hat in V.1 alles funktioniert, jetzt in der V.2 geht das nicht mehr:

    1.) Systeminizialisierung beim Start:
    Code:
    rule "Initializing" // Systeminitialisierung beim Start von openHAB
        when
            System started
        then
            Alarm?.members.forEach(alarm|alarm.postUpdate(CLOSED))
            Alarm?.members.forEach(tamper|tamper.postUpdate(CLOSED))
            Alarm?.members.forEach(heat|heat.postUpdate(CLOSED))
            postUpdate(Klingel, CLOSED)
            postUpdate(Ereignis, OFF)
            executeCommandLine("/Applications/OH2/systemstart.sh")
            logInfo("Info", "System gestartet")
    end
    default.rule:
    Code:
    rule "Fire detection" //Lichter in der Gruppe Lights ein und Telegram Message bei Feueralarm
        when
            Item Alarm received update
        then
            if (Alarm.state==OPEN) {
                Lights?.members.forEach(lampe|lampe.sendCommand(ON))
                Shutters?.members.forEach(Shutters|Shutters.sendCommand(UP))
                sendTelegram("bot1", "FEUER")
                logInfo("Info", "FEUER")
            }
    end
    
    rule "Tamper detection" // Telegram Message bei Manipulation an einem der Rauchmelder
        when
            Item Tamper received update
        then
            if (Tamper.state==OPEN) {
                sendTelegram("bot1", "Manipulation an einem der Rauchmelder")
                logInfo("Info", "Manipulation an einem der Rauchmelder")
            }
    end
    
    rule "Heat detection" // Telegram Message bei > 55°C an einem der Rauchmelder
        when
            Item Heat received update
        then
            if (Heat.state==OPEN) {
                sendTelegram("bot1", "Temperatur > 55°C an einem der Rauchmelder")
                logInfo("Info", "Temperatur > 55°C an einem der Rauchmelder")
            }
    end
    Resultat: sowohl Tamper, als auch Heat ITEMS sind nicht initialisiert: Habmin gibt NULL aus.

    2.) Rollosteuerung:
    Code:
    rule "Alle_Rollos_auf"
        when
            Item Shutters received command UP
        then
                Shutters?.members.forEach(shutters|shutters.sendCommand(UP))
                logInfo("Info", "Alle Rollos rauf")
    end
    
    rule "Alle_Rollos_runter"
        when
            Item Shutters received command DOWN
        then
                Shutters?.members.forEach(Shutters|Shutters.sendCommand(DOWN))
                Shutter_GF_Oliver_Window.sendCommand(DOWN)
                Shutter_GF_Oliver_Balcony.sendCommand(DOWN)
                logInfo("Info", "Alle Rollos herunter")
    end
    Ergebnis:
    Code:
    [WARN ] [thome.io.rest.core.item.ItemResource] - Received HTTP POST request at 'items/Shutters' with an invalid status value 'UP'.
    [WARN ] [thome.io.rest.core.item.ItemResource] - Received HTTP POST request at 'items/Shutters' with an invalid status value 'DOWN'.
    Wo könnte ich suchen? Vielen Dank.
    openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
    Devices: KNX & ZWave

    #2
    Das mit der Rollosteuerung hat sich erledigt. Ich hatte irgendwo gelesen, dass man mit openHab 2
    Code:
    Group             Shutters
    durch:
    Code:
    Group:Switch      Shutters
    ersetzen müsse. Das stimmt aber zumindest in meinem Anwendungsszenario nicht. Die restlichen ITEMS sehen so aus:
    Code:
    Group:Switch    Lights
    Group           Restore
    Group:Switch    Alarm
    Group:Switch    Tamper
    Group           Shutters
    Group           Temperature
    Group:Switch    Heat
    Group:Switch    FSD
    Switch          Presence       { knx="8/5/40" }
    Switch          Light_All      { knx="8/5/0" }
    Switch          Light_Entree   { knx="8/5/1" }
    Contact         Klingel        { knx="8/5/50" }
    Switch          Ereignis
    openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
    Devices: KNX & ZWave

    Kommentar


      #3
      Code:
      Alarm?.members.forEach(alarm|alarm.postUpdate(CLOSED))
      -> Nimm die unmittelbaren Mitglieder der Gruppe Alarm, für jedes Mitglied setze den Status auf CLOSED.
      Der Term könnte genausogut auch
      Code:
      (q|q.postUpdate(CLOSED))
      lauten, das Wort vor dem | gibt nur den Platzhalter für die Items nach dem | an. Mithin werden die ersten drei Befehle jeweils das identische Ergebnis haben, nämlich alle unmittelbaren Mitglieder der Gruppe Alarm werden auf CLOSED gesetzt. Falls also in der Gruppe Alarm weitere Gruppen existieren sollten, werden deren Mitglieder nicht angerührt. Das ist auch schon immer so gewesen.

      Gruppen ohne Funktionsdefinition, also z.B. Switch oder Rollershutter nehmen keinen eigenen Status mehr an (das Verhalten wurde kurz vor OH2.1 geändert). Insofern sollte es
      Code:
      Group:Rollershutter Shutters
      Group:Contact Heat
      Group:Contact Alarn
      Group:Contact Tamper
      Group:Number Temperature
      heißen.

      Kommentar


        #4
        Vielen Dank.

        Ich nehme jetzt mal die folgenden Dinge aus der ITEMS Datei:
        Code:
        Group:Contact Tamper
        Switch        Zwave_RM_1_Tamper (Tamper,RM) { channel="zwave:device:4976c62c:node4:alarm_tamper" }
        Hier noch die Sitemap:
        Code:
        Text item=Zwave_RM_1_Tamper label="Manipulation [MAP(rm.map):%s]" icon="siren"
        Wenn ich den Rauchmelder Alarm in der zweiten Zeile als Contact definiere, dann bringt er keine Meldung. Als Switch funktioniert zumindest mal die Meldung. Allerdings fand ich dann diese hier im Log:
        Code:
        [WARN ] [rm.AbstractFileTransformationService] - Could not transform 'OFF' with the file 'rm.map' : Target value not found in map for 'OFF'
        ..und die systemstart.rules:
        Code:
        rule "Initializing" // Systeminitialisierung beim Start von openHAB
            when
                System started
            then
                postUpdate(Zwave_RM_1_Smoke, CLOSED)
                postUpdate(Zwave_RM_2_Smoke, CLOSED)
                postUpdate(Zwave_RM_3_Smoke, CLOSED)
                postUpdate(Zwave_RM_1_Tamper, CLOSED)
                postUpdate(Zwave_RM_2_Tamper, CLOSED)
                postUpdate(Zwave_RM_3_Tamper, CLOSED)
                postUpdate(Zwave_RM_1_Heat, CLOSED)
                postUpdate(Zwave_RM_2_Heat, CLOSED)
                postUpdate(Zwave_RM_3_Heat, CLOSED)
                postUpdate(Klingel, CLOSED)
                postUpdate(Ereignis, OFF)
                logInfo("Info", "System gestartet")
        end
        Bei der rm.map habe ich nun verschiedene Einträge vorgenommen, so dass die o.g. Log Meldung verschwunden ist:
        Code:
        CLOSED=Aus
        OPEN=Ein
        ON=Ein
        OFF=Aus
        undefined=Undefiniert
        -=-
        Problem: die ITEMS sind noch immer Uninitialized, alle ICONS bunt, bis ich z.B. einen Rauchmelder abnehme und somit einen Tamper Alarm auslöse. Wenn ich das Gerät wieder an seinen Platz befördere, dann geht der Alarm aus und das ICON wird grau (...so wie es vom Start weg aussehen sollte, siehe Bild).

        Auch die Meldung per Telegram kommt nicht an:
        Code:
        rule "Tamper detection" // Telegram Message bei Manipulation an einem der Rauchmelder
            when
                Item Zwave_RM_1_Tamper changed from CLOSED to OPEN or
                Item Zwave_RM_2_Tamper changed from CLOSED to OPEN or
                Item Zwave_RM_3_Tamper changed from CLOSED to OPEN
            then
                if (Tamper.state==OPEN) {
                    sendTelegram("bot1", "Manipulation an einem der Rauchmelder")
                    logInfo("Info", "Manipulation an einem der Rauchmelder")
                }
        end
        Oh weia, ich bin ein schwieriger Fall
        Angehängte Dateien
        openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
        Devices: KNX & ZWave

        Kommentar


          #5
          Ich habe noch ein wenig versucht und so geht es:
          Code:
          Group:Switch   Heat
          Group:Switch   Alarm
          Group:Switch   Tamper
          
          // Rauchmelder Flur
          Switch    Zwave_RM_1_Smoke   (Alarm,RM)    { channel="zwave:device:00000000:node4:alarm_smoke" }
          Switch    Zwave_RM_1_Heat    (Heat,RM)     { channel="zwave:device:00000000:node4:alarm_heat" }
          Switch    Zwave_RM_1_Tamper  (Tamper,RM)   { channel="zwave:device:00000000:node4:alarm_tamper" }
          Number    Zwave_RM_1_Battery (Restore)     { channel="zwave:device:00000000:node4:battery-level" }
          Number    Zwave_RM_1_Temp    (Temperature) { channel="zwave:device:00000000:node4:sensor_temperature" }
          In der ITEMS Datei ist es also wichtig, dass Switch und nicht Contact definiert sind. Sitemap und rm.map habe ich nicht verändert. Das es aber Switches sind, hätte gemäß diese Übersicht: https://www.eclipse.org/smarthome/do...pts/items.html On & OFF gereicht. In der Rule war ein Fehler, die sieht nun so aus:
          Code:
          rule "Tamper detection" // Telegram Message bei Manipulation an einem der Rauchmelder
              when
                  Item Zwave_RM_1_Tamper changed from OFF to ON or
                  Item Zwave_RM_2_Tamper changed from OFF to ON or
                  Item Zwave_RM_3_Tamper changed from OFF to ON
               then
                  {
                      sendTelegram("bot1", "Manipulation an einem der Rauchmelder")
                      logInfo("Info", "Manipulation an einem der Rauchmelder")
                  }
          end
          Und natürlich mußte auch der Systemstart angepasst werden:
          Code:
          rule "Initializing" // Systeminitialisierung beim Start von openHAB
              when
                  System started
              then
                  postUpdate(Zwave_RM_1_Smoke, OFF)
                  postUpdate(Zwave_RM_2_Smoke, OFF)
                  postUpdate(Zwave_RM_3_Smoke, OFF)
                  postUpdate(Zwave_RM_1_Tamper, OFF)
                  postUpdate(Zwave_RM_2_Tamper, OFF)
                  postUpdate(Zwave_RM_3_Tamper, OFF)
                  postUpdate(Zwave_RM_1_Heat, OFF)
                  postUpdate(Zwave_RM_2_Heat, OFF)
                  postUpdate(Zwave_RM_3_Heat, OFF)
                  postUpdate(Klingel, CLOSED)
                  postUpdate(Ereignis, OFF)
                  logInfo("Info", "System gestartet")
          end
          Also beim Start alle ICONS grau, bei irgendeinem Alarm wird es dann farbig und es gibt dann auch eine Telegramm Nachricht.
          Zuletzt geändert von EdgarWallace; 06.07.2017, 16:17.
          openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
          Devices: KNX & ZWave

          Kommentar


            #6
            Eben. Es muss halt das passende drin stehen - wenn Du jetzt noch eine Gruppe RM anlegst:
            Code:
            Group RM
            in der alle RM-Switche drin sind, dann kannst Du mit dieser Rule:
            Code:
            rule "Initializing" // Systeminitialisierung beim Start von openHAB    
            when    
                System started    
            then
                RM.members.forEach(r|r.postUpdate(OFF))
                Klingel.postUpdate(CLOSED)
                Ereignis.postUpdate(OFF)
                logInfo("Info","System gestartet")
            end
            die Status genauso setzen, so wie Du es schon vorhattest.

            Kommentar


              #7
              Aha, ich hatte die Gruppe gerade aufgelöst wegen:
              Zitat von udo1toni Beitrag anzeigen
              Code:
              Alarm?.members.forEach(alarm|alarm.postUpdate(CLOSED))
              -> Nimm die unmittelbaren Mitglieder der Gruppe Alarm, für jedes Mitglied setze den Status auf CLOSED.
              Aber so geht es jetzt und sieht auch "sauberer" aus. Herzlichen Dank udo1toni
              openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
              Devices: KNX & ZWave

              Kommentar


                #8
                Da hatte ich mich wohl etwas missverständlich ausgedrückt. Ich hatte mit dem -> gemeint: "das passiert", bzw. "das bedeutet diese Codezeile."

                Kommentar

                Lädt...
                X