Syntax Rules and more

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

faximan
Beiträge: 30
Registriert: 17. Aug 2019 12:49
Answers: 0

Syntax Rules and more

Beitrag von faximan »

Hallo liebe Foren Mitglieder....
Ich lese schon lange mit und habe durch die Informationen hier schon einig male profitieren können - Danke vielmals für teilweise sehr geduldige gute Erkläungen an dieser Stelle.

Bevor ich Frage versuche ich meist alles erstmal selber durch ausgiebiges recherchieren hinzu bekommen - oft scheitere ich daran das es nicht immer ersichtlich ist ob ein Lösungsweg auf openhab 1 oder 2.x basiert... Dies versuche ich meist mit einen Blick auf das datum einer Informationsquelle zu lösen.

Ein weiteres Problem ist das ich ein kleines Handicap habe... Eine unterform von ADHS die mir konzentrationsbedingt oftmals in Bezug auf vorgebender Syntax und eigener Umsetzung oft einen Streich spielt... Ich brauche halt länger und manchmal eigene Wege das vorgegebene umzusetzen.

Aktuell beiße ich mir die Zähne daran aus folgendes Setting zu bewerkstellen:
Ich möchte einen auf Tasmota geflashten Sonoff Basic den ich mit einen PIR ausgerüstet habe, im Flur schalten.
D die Bewegunsmelder Module nicht 100% Sauber arbeiten (was die Zeit und sensibilität angeht) bin ich auf folgende Idee gekommen:
Den Bewegungsmelder habe ich über Gipo 14 am Sonoff Basic angeschlossen, sobald er eine Bewegung merkt schaltet dieser über den vVirtuellen" Switch2 das "virtuelle" Relais2. Bei openhab konnte ich dies auch schon erfolgreich einbinen... Spirch ich sehe im Testbetrieb das dass Rlai schaltet.....

Nun würde ich gerne eine Rule hinbekommen die in etwas so aufgebaut ist:

Wenn das Item Bewegungsmelder (Virtuelle Switch) auf On schaltet soll für 300 sekunden der reale switch geschaltet werden.
Später würde ich gerne versuche die Rule so auszuweiten das dies erst nach Sonnenuntergang bis Sonnenaufgang passiert - und evtl. dieser countdown bei neuen Bewegungen sich resetet...

Ich habe lange rumgesucht un nach meinen logischen Verständniss folgende Rule gefunden und schon versucht auf meine Belange abzuändern... Diese befindet sich in meinen /rules Verzeichneiss als Testrule... wird leider auch im Log nicht beachtet... /Muss das evtl als defalt.rule und nicht als test.rule abgespeichert werden?)

Hier meien Rule:

Code: Alles auswählen

rule Bewegungsmelder 
when Item mqtt_topic_FlurLicht_power2 received update ON then logInfo("RULES", "Lights ON for 5 Minutes") sendCommand(mqtt_topic_FlurLicht_power1, ON) createTimer(now.plusMinutes(5)) [| mqtt_topic_FlurLicht_power1 OFF) ] end
Zum besseren Verständniss hier noch meine Sonoff.items

Code: Alles auswählen

// Sonoff Items
//  <--------------------------------------------------------- sonoffs.items -------------------------------------------------------------------------------------------------------------->
//      TYPE   ITEM-Topic                   Function/Sting                                                      Openhab-Cloud-TAG    Channel
//
// Item:Tasmota flashed GOSUND SP 111 TASMOTA Steckdose "TV"
        Group  TV                           "TV"                                <TV>                (TV)
        String TV_Reachable                 "Reachable: [%s]"                   <contactable>   	(TV)                            { channel="mqtt:topic:mosquitto:TV:reachable" }
        Switch mqtt_topic_TV_power          "TV []"                             <TV>                (TV)        [ "Switchable" ]    { channel="mqtt:topic:mosquitto:TV:power" } 
        Number TV_Load                      "Power load [%.1f W]"               <voltage>       	(TV)                            { channel="mqtt:topic:mosquitto:TV:powerload" }
        Number TV_Voltage                   "Line voltage [%.1f V]"             <voltage>       	(TV)                            { channel="mqtt:topic:mosquitto:TV:voltage" }
        Number TV_Current                   "Line current [%.3f A]"             <current>       	(TV)                            { channel="mqtt:topic:mosquitto:TV:current" }
        Number TV_Today                     "Total energy today [%.3f kWh]"     <total_energy>  	(TV)                            { channel="mqtt:topic:mosquitto:TV:total" }
        Number TV_Yesterday                 "Total energy yesterday [%.3f kWh]" <total_energy>  	(TV)                            { channel="mqtt:topic:mosquitto:TV:totalyest" }
        Number TV_RSSI                      "WiFi Signal Strength [%d %%]"      <wifi>          	(TV)                            { channel="mqtt:topic:mosquitto:TV:rssi" }
 // 
    // Item:Tasmota flashed Tuya Steckdose "dose2"
        Group  dose2                        "dose2"                             <dose2>             (dose2)
        String dose2_Reachable              "Reachable: [%s]"                   <contactable>       (dose2)                         { channel="mqtt:topic:mosquitto:dose2:reachable" }
        Number dose2_RSSI                   "WiFi Signal Strength [%d %%]"      <wifi>              (dose2)                         { channel="mqtt:topic:mosquitto:dose2:rssi" }
        Switch mqtt_topic_dose2_power       "dose2 []"                          <dose2>             (dose2)     [ "Switchable" ]    { channel="mqtt:topic:mosquitto:dose2:power" }
//
    // ITEM Tasmota flashed Sonoff Basic mit IR Sensor
        Group  Flur_Licht                       "FlurLicht"                     <FlurLicht>         (FlurLicht)
        String FlurLicht_Reachable              "Reachable: [%s]"               <contactable>       (FlurLicht)                         { channel="mqtt:topic:mosquitto:FlurLicht:reachable" }
        Number FlurLicht_RSSI                   "WiFi Signal Strength [%d %%]"  <wifi>              (Flurlicht)                         { channel="mqtt:topic:mosquitto:Flurlicht:rssi" }
        Switch mqtt_topic_FlurLicht_power1      "FlurLicht []"                  <FlurLicht>         (FlurLicht)     [ "Switchable" ]    { channel="mqtt:topic:mosquitto:FlurLicht:power1" }
        Switch mqtt_topic_FlurLicht_power2      "Bewegungsmelder []"            <FlurLicht>         (FlurLicht)                         { channel="mqtt:topic:mosquitto:FlurLicht:power2" }

    // next item.....

Ich vermute das hier meine Syntax nicht 100% konform ist (siehe Switch Label z.b. " Switch mqtt_topic_FlurLicht_power2"
Dies war nach langen herum doktern der einzige weg diese geräte via my openhab mit dem google assistant zu schaltern...

Und hier noch meine sonoff .things

Code: Alles auswählen

// Sonoffs
   
Thing mqtt:topic:TV "TV"        (mqtt:broker:MqttPandora) @ "Wohnzimmer" {
    Channels:
        Type string : reachable "Reachable"              [ stateTopic="tele/TV/LWT" ]
        Type switch : power     "Power"                  [ stateTopic="stat/TV/POWER", commandTopic="cmnd/TV/POWER" ]
        Type number : powerload "Power load"             [ stateTopic="tele/TV/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Power" ]
        Type number : voltage   "Line voltage"           [ stateTopic="tele/TV/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Voltage" ]
        Type number : current   "Line current"           [ stateTopic="tele/TV/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current" ]
        Type number : total     "Total energy today"     [ stateTopic="tele/TV/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Today" ]
        Type number : totalyest "Total energy yesterday" [ stateTopic="tele/TV/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Yesterday" ]
        Type number : rssi      "WiFi Signal Strength"   [ stateTopic="tele/TV/STATE", transformationPattern="JSONPATH:$.Wifi.RSSI" ]
    }

Thing mqtt:topic:dose2 "dose2" (mqtt:broker:MqttPandora) @ "Esszimmer"  {
    Channels:
        Type string : reachable "Reachable"            [ stateTopic="tele/dose2/LWT" ] 
        Type switch : power     "Power"                [ stateTopic="stat/dose2/POWER", commandTopic="cmnd/dose2/POWER" ]
        Type number : rssi      "WiFi Signal Strength" [ stateTopic="tele/dose2/STATE", transformationPattern="JSONPATH:$.Wifi.RSSI" ]
    }

Thing mqtt:topic:FlurLicht "FlurLicht" (mqtt:broker:MqttPandora) @ "Esszimmer"  {
    Channels:
        Type string : reachable "Reachable"            [ stateTopic="tele/FlurLicht/LWT" ] 
        Type switch : power1     "Power"                [ stateTopic="stat/FlurLicht/POWER1", commandTopic="cmnd/FlurLicht/POWER1" ]
        Type switch : power2     "Bewegungsmelder"      [ stateTopic="stat/FlurLicht/POWER2", commandTopic="cmnd/FlurLicht/POWER2" ]
        Type number : rssi      "WiFi Signal Strength" [ stateTopic="tele/FlurLicht/STATE", transformationPattern="JSONPATH:$.Wifi.RSSI" ]
    }



Ich wäre Super Dankbar für einige verständliche Hinweise...
Vielen Dank

p.s.
Nochmal der Hinweis... ich habe vorher googel Bemüht und mir schon seit 2 Wochen einige Nächte mit Google und Howtos um die Ohren geschlagen bevor ich hier Frage - wenns bei mir einmal "Klick" gemacht hat bin ich auch in der Lage weiter zu kommen... Derzeit bin ich extrem verunsichert was die Syntax angeht...

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Syntax Rules and more

Beitrag von udo1toni »

Deine Rule ist etwas suboptimal formatiert. So sollte sie eigentlich aussehen:

Code: Alles auswählen

rule Bewegungsmelder 
when
    Item mqtt_topic_FlurLicht_power2 received update ON 
then
    logInfo("RULES", "Lights ON for 5 Minutes")
    sendCommand(mqtt_topic_FlurLicht_power1, ON)
    createTimer(now.plusMinutes(5)) [| mqtt_topic_FlurLicht_power1 OFF) ]
end
Und in dieser Form kannnst Du eventuell auch den einen oder anderen Fehler sehen. Vermutlich weigert sich openHAB deshalb, die Rule überhaupt auszuführen. Da wäre ein Blick in die logs hilfreich, insbesondere kurz nach dem Laden der rules Datei.

Korrekt sähe die Rule so aus:

Code: Alles auswählen

// globale Variablen immer zu Beginn der datei definieren!
var Timer tBewegung = null                                // Timer für Bewegungsmelder

rule "Bewegungsmelder"                                    // Besser in Anführungszeichen, auch wenn es in diesem Fall auch ohne geht
when
    Item mqtt_topic_FlurLicht_power2 changed to ON        // Bewegungsmelder hat Bewegung erkannt
then
    logInfo("bewegung", "Lights ON for 5 Minutes")
    if(tBewegung === null) {                              // falls noch kein Timer angelegt wurde
        mqtt_topic_FlurLicht_power1.sendCommand(ON)       // Licht an
        tBewegung = createTimer(now.plusMinutes(5), [|    // Timer erstellen
            mqtt_topic_FlurLicht_power1.sendCommand(OFF)  // Licht aus
            tBewegung = null                              // Zeiger zurücksetzen
        ])
    }
end
Bitte wann immer möglich die Methode item.sendCommand(value) verwenden, nicht die Action sendCommand(item,value).
Das Lambda (der Teil in den eckigen Klammern) ist logisch ein Parameter der Funktion createTimer(), die von mir angewandte Schreibweise macht das deutlich.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

faximan
Beiträge: 30
Registriert: 17. Aug 2019 12:49
Answers: 0

Re: Syntax Rules and more

Beitrag von faximan »

Hallo Udo VIELEN DANK für deine Erklärungen.
Leider bekomme ich immer noch keinen Erfolg - ich habe auch Openhab einmal nach editieren der rule neu gestartet - ich finde nichts in meinen Log was irgendwie auf die rule zurückzuführen ist.... Das einzige was ich gefunden habe... ist folgende errormeldung die evtl. im zusammenhang stehen könnte:

Code: Alles auswählen

2019-08-18 14:46:18.960 [ERROR] [utomation.module.script.defaultscope] - bundle org.eclipse.smarthome.automation.module.script.defaultscope:0.10.0.oh240 (245)[org.eclipse.smarthome.automation.module.script.defaultscope.internal.DefaultScriptScopeProvider(291)] : The addThingActions method has thrown an exception
einen weiteren Fehler habe ich beim letzten Start auch noch beobachten können:

Code: Alles auswählen

2019-08-18 15:19:21.541 [WARN ] [.core.internal.folder.FolderObserver] - Directory 'persistence' does not exist in '/etc/openhab2'. Please check your configuration settings!
Dieses habe ich nun angelegt wird wohl beim einspielen eines backups abhanden gekommen sein


ich habe hier mal den letzten openhab status mitgeloggt...
https://pastebin.com/zsukgBE2

Noch eine Frage wobei es imoh daran nicht liegen könnte:
meine Rule lautet test.rule und licgt im configverzeichniss /rules
Müsste diese evtl. default.rule heißen? (habe ich ausprobiert ändert aber nix)

Lg
jan

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Syntax Rules and more

Beitrag von udo1toni »

Der Dateiname selbst ist egal, allerdings muss die Datei auf .rules enden, da fehlt das s.

Kurz zur Erklärung:

Im Verzeichnis /etc/openhab2 gibt es für jede "Sorte" Konfigurationsdateien ein Verzeichnis:

Code: Alles auswählen

html        -> statische Webinhalte, die jetty (der openHAB Webserver) ausliefern soll.
icons       -> zusätzliche (benutzerdefinierte) Icons
items       -> Die Dateien, in denen die Items definiert werden
persistence -> Die Dateien, in denen die zu persistierenden Items definiert werden
rules       -> Die Dateien, in denen die Rules gespeichert sind
scripts     -> Scripte 
services    -> Konfigurationsdateien für Services und openHAB selbst
sitemaps    -> Die Sitemaps
sounds      -> Audiodateien
things      -> Die Dateien, in denen die Things definiert werden
transform   -> Dateien für Transformations, dazu gehören witzigerweise auch .js Scripte 
Es stimmt nicht zu 100%, aber die meisten Namen deuten eine Mehrzahl an.

Nun zu den einzelenn Dateien (ich gehe jetzt nur auf die wichtigsten ein):

Code: Alles auswählen

*.items       -> Eine Datei kann beliebig viele Items definieren.
*.persist     -> Eine Datei pro Persistence Service (die Dateinamen sind festgelegt!)
*.rules       -> Eine Datei kann beliebig viele Items definieren.
*.script      -> Ein Script pro Datei 
*.cfg         -> Konfigurationsdateien für Services und openHAB selbst
*.sitemap     -> Eine Sitemap pro Datei
*.things      -> Eine Datei kann beliebig viele Things definieren.
*.map, *.js   -> Eine Datei pro Mapping oder pro Java Script 
Die Idee ist also, dass die Dateiendung eine Mehrzahl andeutet, wenn mehrere gleichartige Elemente innerhalb einer Datei definiert werden können, und die Einzahl, wenn nur exakt ein solches Element definiert werden kann.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

faximan
Beiträge: 30
Registriert: 17. Aug 2019 12:49
Answers: 0

Re: Syntax Rules and more

Beitrag von faximan »

Jetzt läuft es!
Nun gehe ich mal auf die suche für die "from dusk till down"


Ich denke diese Informationen sind dafür eine gute basis:
viewtopic.php?f=13&t=1397&p=8872&hilit= ... gang#p8872

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Syntax Rules and more

Beitrag von udo1toni »

:) freut mich.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

faximan
Beiträge: 30
Registriert: 17. Aug 2019 12:49
Answers: 0

Re: Syntax Rules and more

Beitrag von faximan »

Jetzt heißt es bis 20:49 warten....
dann sehe ich ob es klappt...

Code: Alles auswählen

// globale Variablen immer zu Beginn der datei definieren!
var Timer tBewegung = null                                // Timer für Bewegungsmelder

rule "Sonnenaufgang"
when
    Channel 'astro:sun:local:rise#event' triggered START
then
    sNacht.postUpadte(OFF)
end

rule "Sonnenuntergang"
when
    Channel 'astro:sun:local:set#event' triggered START
then
    sNacht.postUpadte(ON)
end

rule "Bewegungsmelder Licht an"                            // Besser in Anführungszeichen, auch wenn es in diesem Fall auch ohne geht
when
    Item sNacht changed to ON
    Item mqtt_topic_FlurLicht_power2 changed to ON        // Bewegungsmelder hat Bewegung erkannt
then
    logInfo("bewegung", "Lights ON for 3 Minutes")
    if(tBewegung === null) {                              // falls noch kein Timer angelegt wurde
        mqtt_topic_FlurLicht_power1.sendCommand(ON)       // Licht an
        tBewegung = createTimer(now.plusMinutes(5), [|    // Timer erstellen
            mqtt_topic_FlurLicht_power1.sendCommand(OFF)  // Licht aus
            tBewegung = null                              // Zeiger zurücksetzen
        ])
    }
end

faximan
Beiträge: 30
Registriert: 17. Aug 2019 12:49
Answers: 0

Re: Syntax Rules and more

Beitrag von faximan »

Hmm
In den Logs habe ich eine Meldung bezüglich den Sonnenuntergang gefunden:

Code: Alles auswählen

2019-08-18 20:48:00.016 [vent.ChannelTriggeredEvent] - astro:sun:local:set#event triggered START

2019-08-18 20:48:00.036 [vent.ChannelTriggeredEvent] - astro:sun:local:daylight#event triggered END
Bezogen auf den Switch snight nix... leider Schaltet das relay (powe1) damit nicht

Hätte ich für die rules jeweils eine eigene Datei anlegen müssen?

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Syntax Rules and more

Beitrag von udo1toni »

Du möchtest ja das Licht nur einschalten, wenn es "Nacht" ist. Also musst Du diese Bedingung prüfen. Das hat aber nichts mit den Triggern zu tun.

Eine Rule besteht aus zwei Teilen, dem Trigger-Teil und dem Execute-Teil. Im Trigger-Teil werden alle Trigger aufgeführt, die die Rule triggern sollen. Dabei reicht immer ein Trigger. Wenn man mehrere Trigger angibt, muss man zwischen jedem Trigger noch das Schlüsselwort or setzen, also z.B.

Code: Alles auswählen

rule "test"
when
    Item myItem1 changed or
    Item myItem2 changed
then
    logInfo("test","Die Rule wurde getriggert!"")
end
Ein and geht an dieser Stelle nicht, denn es handelt sich nicht um Bedingungen, sondern um Trigger. Ein Trigger tritt zu einem bestimmten Zeitpunkt auf. Es ist höchst unwahrscheinlich, dass zwei Trigger exakt zur selben Zeit auftreten, es ist also sinnlos, im Trigger-Teil ein and anzubieten.

Damit die Rule nur bei Dunkelheit das Licht einschaltet, muss also im Execute-Teil der Rule eine Bedingung hinzugefügt werden:

Code: Alles auswählen

// globale Variablen immer zu Beginn der datei definieren!
var Timer tBewegung = null                                // Timer für Bewegungsmelder

rule "Bewegungsmelder"                                    // Besser in Anführungszeichen, auch wenn es in diesem Fall auch ohne geht
when
    Item mqtt_topic_FlurLicht_power2 changed to ON        // Bewegungsmelder hat Bewegung erkannt
then
    logInfo("bewegung", "Lights ON for 5 Minutes")

// Die folgende Zeile ist geändert!

    if(tBewegung === null && sNacht.state == ON) {        // falls noch kein Timer angelegt wurde und es dunkel ist
        mqtt_topic_FlurLicht_power1.sendCommand(ON)       // Licht an
        tBewegung = createTimer(now.plusMinutes(5), [|    // Timer erstellen
            mqtt_topic_FlurLicht_power1.sendCommand(OFF)  // Licht aus
            tBewegung = null                              // Zeiger zurücksetzen
        ])
    }
end
Weiterhin hast Du noch einen Tippfehler in den Sonnenaufgang/Untergang Rules, es heißt postUpdate, nicht postUpadte.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

faximan
Beiträge: 30
Registriert: 17. Aug 2019 12:49
Answers: 0

Re: Syntax Rules and more

Beitrag von faximan »

Hallo Udo ich glaube du hast mich fast über die Zielinie gehieft aber irgend wie gehen noch seltsame Sachen vor sich....


irgend eine Kleinigkeit stimmt noch nicht ich bekomme (bzw bekam) es heute Nacht nicht ans laufen...

Ich dachte irgendwas muss noch mit dem sNacht switch nicht stimmen... denn das Licht schaltet(e) nicht...
ich konnte auch hier die Variable z.B. auf off ändern:
if(tBewegung === null && sNacht.state == ON) {
Es hatte keinen Einfluss - außer ich nahm && sNacht.state== ON ganz raus... Was natürlich keinen Sinn macht....

Hier mal ein Log Auszug:

Code: Alles auswählen

2019-08-19 01:33:54.040 [INFO ] [ipse.smarthome.model.script.bewegung] - Lights ON for 3 Minutes

==> /var/log/openhab2/events.log <==

2019-08-19 01:33:54.026 [vent.ItemStateChangedEvent] - mqtt_topic_FlurLicht_power2 changed from OFF to ON

2019-08-19 01:34:06.363 [vent.ItemStateChangedEvent] - mqtt_topic_FlurLicht_power2 changed from ON to OFF

==> /var/log/openhab2/openhab.log <==

2019-08-19 01:34:11.879 [INFO ] [ipse.smarthome.model.script.bewegung] - Lights ON for 3 Minutes

==> /var/log/openhab2/events.log <==

2019-08-19 01:34:11.864 [vent.ItemStateChangedEvent] - mqtt_topic_FlurLicht_power2 changed from OFF to ON

2019-08-19 01:34:24.290 [vent.ItemStateChangedEvent] - mqtt_topic_FlurLicht_power2 changed from ON to OFF

==> /var/log/openhab2/openhab.log <==

2019-08-19 01:34:27.767 [INFO ] [ipse.smarthome.model.script.bewegung] - Lights ON for 3 Minutes

==> /var/log/openhab2/events.log <==

2019-08-19 01:34:27.745 [vent.ItemStateChangedEvent] - mqtt_topic_FlurLicht_power2 changed from OFF to ON

2019-08-19 01:34:40.029 [vent.ItemStateChangedEvent] - mqtt_topic_FlurLicht_power2 changed from ON to OFF
Heute Morgen nun dann der große "Aha" Effekt...
Das Ding schaltet... Timer wird angelegt

Auch der Switch hat sich bewegt:

Code: Alles auswählen

2019-08-19 06:27:00.017 [vent.ChannelTriggeredEvent] - astro:sun:local:civilDawn#event triggered END

2019-08-19 06:27:00.034 [vent.ChannelTriggeredEvent] - astro:sun:local:rise#event triggered START

2019-08-19 06:27:00.129 [vent.ItemStateChangedEvent] - sNacht changed from NULL to OFF

2019-08-19 06:31:00.012 [vent.ChannelTriggeredEvent] - astro:sun:local:rise#event triggered END

2019-08-19 06:31:00.018 [vent.ChannelTriggeredEvent] - astro:sun:local:daylight#event triggered START
und nun sehen aktuell die Schaltvorgänge aus:

Code: Alles auswählen

2019-08-19 09:08:14.767 [INFO ] [ipse.smarthome.model.script.bewegung] - Lights ON for 3 Minutes

==> /var/log/openhab2/events.log <==

2019-08-19 09:55:42.360 [INFO ] [ipse.smarthome.model.script.bewegung] - Lights ON for 3 Minutes

==> /var/log/openhab2/events.log <==

2019-08-19 09:55:42.341 [vent.ItemStateChangedEvent] - mqtt_topic_FlurLicht_power2 changed from OFF to ON

2019-08-19 09:55:42.380 [ome.event.ItemCommandEvent] - Item 'mqtt_topic_FlurLicht_power1' received command ON

2019-08-19 09:55:42.394 [nt.ItemStatePredictedEvent] - mqtt_topic_FlurLicht_power1 predicted to become ON

2019-08-19 09:55:42.410 [vent.ItemStateChangedEvent] - mqtt_topic_FlurLicht_power1 changed from OFF to ON

2019-08-19 09:55:54.564 [vent.ItemStateChangedEvent] - mqtt_topic_FlurLicht_power2 changed from ON to OFF

==> /var/log/openhab2/openhab.log <==

2019-08-19 09:56:03.841 [INFO ] [ipse.smarthome.model.script.bewegung] - Lights ON for 3 Minutes

==> /var/log/openhab2/events.log <==

2019-08-19 09:56:03.826 [vent.ItemStateChangedEvent] - mqtt_topic_FlurLicht_power2 changed from OFF to ON

2019-08-19 09:56:16.177 [vent.ItemStateChangedEvent] - mqtt_topic_FlurLicht_power2 changed from ON to OFF

==> /var/log/openhab2/openhab.log <==

2019-08-19 09:56:29.529 [INFO ] [ipse.smarthome.model.script.bewegung] - Lights ON for 3 Minutes

==> /var/log/openhab2/events.log <==

2019-08-19 09:56:29.517 [vent.ItemStateChangedEvent] - mqtt_topic_FlurLicht_power2 changed from OFF to ON

2019-08-19 09:56:41.894 [vent.ItemStateChangedEvent] - mqtt_topic_FlurLicht_power2 changed from ON to OFF


Meine Datei Bewegungsmelder.rules sieht nun so aus - hoffe ich habe es richtig umgesetzt:

Code: Alles auswählen

// globale Variablen immer zu Beginn der datei definieren!
var Timer tBewegung = null                                // Timer für Bewegungsmelder

rule "Sonnenaufgang"
when
    Channel 'astro:sun:local:rise#event' triggered START
then
    sNacht.postUpdate(OFF)
end

rule "Sonnenuntergang"
when
    Channel 'astro:sun:local:set#event' triggered START
then
    sNacht.postUpdate(ON)
end
rule "Bewegungsmelder"                                    // Besser in Anführungszeichen, auch wenn es in diesem Fall auch ohne geht
when
    Item mqtt_topic_FlurLicht_power2 changed to ON        // Bewegungsmelder hat Bewegung erkannt
then
    logInfo("bewegung", "Lights ON for 3 Minutes")

// Die folgende Zeile ist geändert!

    if(tBewegung === null && sNacht.state == ON) {        // falls noch kein Timer angelegt wurde und es dunkel ist
        mqtt_topic_FlurLicht_power1.sendCommand(ON)       // Licht an
        tBewegung = createTimer(now.plusMinutes(5), [|    // Timer erstellen
            mqtt_topic_FlurLicht_power1.sendCommand(OFF)  // Licht aus
            tBewegung = null                              // Zeiger zurücksetzen
        ])
    }
end
Sicherheitshalber noch ein Auszug meiner Sonoff.Items wo ich den nicht verlinkten Switch sNacht untergebracht habe:

Code: Alles auswählen

    // ITEM Tasmota flashed Sonoff Basic mit IR Sensor
        Group  Flur_Licht                       "FlurLicht"                     <FlurLicht>         (FlurLicht)
        String FlurLicht_Reachable              "Reachable: [%s]"               <contactable>       (FlurLicht)                         { channel="mqtt:topic:mosquitto:FlurLicht:reachable" }
        Number FlurLicht_RSSI                   "WiFi Signal Strength [%d %%]"  <wifi>              (Flurlicht)                         { channel="mqtt:topic:mosquitto:Flurlicht:rssi" }
        Switch mqtt_topic_FlurLicht_power1      "FlurLicht []"                  <FlurLicht>         (FlurLicht)     [ "Switchable" ]    { channel="mqtt:topic:mosquitto:FlurLicht:power1" }
        Switch mqtt_topic_FlurLicht_power2      "Bewegungsmelder []"            <FlurLicht>         (FlurLicht)                         { channel="mqtt:topic:mosquitto:FlurLicht:power2" }
        // Nacht Switch für AstroBinding
        Switch sNacht "Nacht [%s]"
    // next item.....

Das ganze ist was spooky oder?
Lg

Jan

Antworten