Seite 1 von 2
OH3 - Leidiges Thema - Licht an/aus bei Sonnenauf-/untergang
Verfasst: 25. Feb 2021 08:31
von Engelsen
MOin zusammen,
ich habe bisher mithilfe ddes Forums eine Regel gehabt, die abends bei "CivilDusk" ein Item (NightState) auf ON für Nacht gesetzt hat und das Licht einschaltete und morgens bei CivilDawn das Nacht-Item auf OFF setzt.
Diese sah in OH 2.x so aus:
Code: Alles auswählen
rule "Switch NightState auf ON bei Sonnenuntergang"
when
Channel "astro:sun:home:civilDusk#event" triggered START
then
NightState.postUpdate(ON)
logInfo("NightState updated", "--> NightState set to " + NightState.state)
end
rule "Switch NightState und LateNightState auf OFF bei Sonnenaufgang"
when
Channel "astro:sun:home:rise#event" triggered START
then
NightState.postUpdate(OFF)
LateNightState.postUpdate(OFF)
logInfo("NightState Update", "--> NightState auf OFF")
logInfo("LateNightState Update", "--> LateNightState auf OFF")
end
Jetzt portiere ich grade alles zu OH3 und habe dabei einmal alles neu aufgesetzt.
Leider zieht die Regel nun nicht mehr: Diese sieht im GUI so aus:
sonnenuntergang.png
sonnenuntergang2.png
Anscheinend wird der Trigger nicht ausgeführt und dadurch das Item nicht auf ON bzw. OFF gesetzt.
Kann mir einer sagen, was ich falsch mache? Stehe grade aufm Schlauch.
Danke.
Re: OH3 - Leidiges Thema - Licht an/aus bei Sonnenauf-/untergang
Verfasst: 25. Feb 2021 14:13
von peter-pan
So wie ich das sehe, sieht das gut aus. Ich hab versucht mal deine Rule nachzubauen, mit dem einzigen Unterschied, dass ich "sendCommand" statt "posUpdate" verwendet habe. Ich nehme an, dass deine beiden Schalter "Dummies" ohne Channel sind.
Das Ergebnis meines Versuchs kann ich dir leider erst sagen, wenn meine Schreibtischlampe "an" geht

. Was mir aber noch aufgefallen ist, bzw. ich nicht gefunden habe, ist ein logInfo in die Rule einzutragen
Hast du schon mal versucht, deine Regel einfach in den Rules Ordner von OH3 zu kopieren. Das sollte eigentlich auch gehen.
Re: OH3 - Leidiges Thema - Licht an/aus bei Sonnenauf-/untergang
Verfasst: 25. Feb 2021 14:30
von Engelsen
Hi peter-pan,
danke für das Feedback.
Hatte vorher schon sendCommand drin. Brachte leider nicht die Lösung.
Ja, die Items sind nur vSwitches und nur dafür da Rules zu triggern

LogInfo konnte ich bisher auch nicht finden ...
Die Rule in den Ordner zu kopieren wäre auch meine letzte Lösung, wollte aber gerne alles über die GUI bauen, da ich dann frei in der Wahl des Endgerätes bin
Ich bin gespannt, was bei dir heute abend dann rauskommt

...
Leider sehe ich im events.log auch keinen Hinweis darauf, dass CivilDusk getriggert wird ...

Re: OH3 - Leidiges Thema - Licht an/aus bei Sonnenauf-/untergang
Verfasst: 25. Feb 2021 15:50
von peter-pan
...bin auch gespannt.
Ich lass mal sicherheitshalber diese DSL-Rule noch mitlaufen.
Code: Alles auswählen
//===============================================================================
rule "Civil Dusk Start"
when
Channel 'astro:sun:local:civilDusk#event' triggered START
then
logInfo("astro-rules" + '_07', " Civil Dusk START")
//EG_gEG_Kind2_Licht.sendCommand(ON)
end
//===============================================================================
Re: OH3 - Leidiges Thema - Licht an/aus bei Sonnenauf-/untergang
Verfasst: 25. Feb 2021 18:09
von peter-pan
Ich kann Erfolg melden. Beide Rules haben geliefert:
Die DSL-Rule hat das logInfo ausgegeben:
Code: Alles auswählen
2021-02-25 17:58:00.012 [INFO ] [hab.core.model.script.astro-rules_07] - Civil Dusk START
und die OH3-Rule hat die Schreibtisch-Leuchte angeschaltet. Der YAML-Code dafür sieht bei mir so aus.
Code: Alles auswählen
triggers:
- id: "1"
configuration:
thingUID: astro:sun:local
event: START
channelUID: astro:sun:local:civilDusk#event
type: core.ChannelEventTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
itemName: Sonoff_Basic_03
command: ON
type: core.ItemCommandAction
Re: OH3 - Leidiges Thema - Licht an/aus bei Sonnenauf-/untergang
Verfasst: 25. Feb 2021 18:26
von Engelsen
Danke für die Info.
Ich kann auch einen Erfolg melden und weiß wohl auch woran es liegt.
Ich hatte den vswitch "Abend* schon auf ON gestellt. Daher hat er nicht ausgelöst und die Regel hat nicht gegriffen.
Grade eben war er auf Off, wechselte auf ON und das Licht ging an
Also alles tutti.
Danke fürs "Mittesten"

Re: OH3 - Leidiges Thema - Licht an/aus bei Sonnenauf-/untergang
Verfasst: 5. Mär 2021 10:14
von Rainer
Moin,
bin auch gerade beim Umstieg auf OH3. Leider funktioniert meine alte Rule nicht. Vorher ging das Licht bei Sonnenuntergang an, bei Sonnenaufgang aus und durch
Code: Alles auswählen
if ((CurrentHour >=6 && CurrentHour <23) && Sun_Elevation.state <=0) Sonoff_CH1.sendCommand(ON)
leuchtete sie nicht zwischen 23 und 6 Uhr. Wie muss ich das jetzt lösen? So ganz verstanden habe ich das nämlich nicht. Wie ich das sehe wird bei eurem Beispiel in der GUI zwar das Licht eingeschaltet, aber ich bräuchte noch eine 2 Rule um es wieder auszuschalten. Und dann noch eine Dritte um die Lampe zwischen 23 und 6 aus zu schalten?
Re: OH3 - Leidiges Thema - Licht an/aus bei Sonnenauf-/untergang
Verfasst: 5. Mär 2021 11:08
von udo1toni
Was soll denn bitte CurrentHour sein? So etwas gab auch in openHAB2 nicht. Evtl. ist das eine Variable, die Du vorher in der Rule setzt?
Sun_Elevation ist vermutlich mit dem passenden Channel des Astro Bindings verlinkt. Dieser Channel liefert aber Number:Angle als Wert, das ist ein UoM Channel, der dann gewöhnlich auch mit einem UoM Item verlinkt wird. Entsprechend wird der Ausdruck Sun_Elevation.state <=0 entweder immer oder nie true liefern (weil der Ausdruck halt verkehrt ist...)
In openHAB2 wurde für die Zeit noch JodaTime verwendet, inzwischen ist in Java aber JavaTime integriert, welches leicht anders verwendet wird. statt now() musst Du ZonedDateTime.now() angeben, statt getHourOfDay muss es getHour heißen. Deine Bedingung sollte nun also so aussehen:
Code: Alles auswählen
val CurrentHour = ZonedDateTime.now.getHour
if ((CurrentHour >=6 && CurrentHour <23) && (Sun_Elevation.state as Number).floatValue <=0)
Sonoff_CH1.sendCommand(ON)
Die erste Zeile definiert die Konstante CurrentHour über JavaTime, das (... as Number).floatValue wandelt die Angabe x° in x um, schneidet also die Einheit ab.
Re: OH3 - Leidiges Thema - Licht an/aus bei Sonnenauf-/untergang
Verfasst: 7. Mär 2021 23:35
von Rainer
Hallo Udo,
vielen Dank für deine Hilfe. Die Rule funktioniert. Manchmal sieht man den Wald vor Bäumen nicht denn ich habe die ganze Zeit den Channel 'astro:sun:home' angesprochen so wie überall beschrieben. Ausserdem sollte man nicht vergessen haben den Channel Höhenwinkel als Item hinzuzufügen. Kleine Fehler - große Wirkung.
Code: Alles auswählen
rule "AutoBeleuchtung-ON"
when
Channel 'astro:sun:local:daylight#event' triggered END
then
val CurrentHour = ZonedDateTime.now.getHour
if ((CurrentHour >=6 && CurrentHour <24) && (Sun_Elevation.state as Number).floatValue <=0) TreppenhausEGShelly25_Betrieb2.sendCommand(ON)
end
rule "AutoBeleuchtung-OFF"
when
Channel 'astro:sun:local:daylight#event' triggered START
then TreppenhausEGShelly25_Betrieb2.sendCommand(OFF)
end
Re: OH3 - Leidiges Thema - Licht an/aus bei Sonnenauf-/untergang
Verfasst: 7. Mär 2021 23:43
von udo1toni
Nur so als Hinweis... getHour liefert eine Integer Zahl zwischen 0 und 23. Wenn Du also auf < 24 testest, kannst Du die Bedingung auch ebenso gut weg lassen, da sie immer erfüllt ist.