astro:sun:local funktioniert nicht

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Rainer
Beiträge: 114
Registriert: 28. Nov 2017 21:33
Answers: 0

astro:sun:local funktioniert nicht

Beitrag von Rainer »

Hallo.
Ich nutze OH3 und habe folgendes Problem. Ich erstelle mit Visual Studio folgende Rule:

Code: Alles auswählen

rule "AutoRolladen1"
    when
        Channel 'astro:sun:local:civilDusk#event' triggered END
    then
        sendCommand(gWohnzimmer_Rolladen, UP)
end
//================================================================
rule "AutoRolladen2"
    when
        Channel 'astro:sun:local:civilDusk#event' triggered START
   then
        sendCommand(gWohnzimmer_Rolladen, DOWN)
end
in OH3 wird mir das nach dem hochladen so angezeigt:

Code: Alles auswählen

// Triggers:
// - When channel astro:sun:local:civilDusk#event was triggered

// context: rolladen2-1
sendCommand(gWohnzimmer_Rolladen, UP)
und

Code: Alles auswählen

// Triggers:
// - When channel astro:sun:local:civilDusk#event was triggered

// context: rolladen2-2
sendCommand(gWohnzimmer_Rolladen, DOWN)
mit dem Ergebnis, dass die Rule nicht erkennt ob START oder END getriggert wurde. Wo liegt mein Fehler?

Benutzeravatar
scotty
Beiträge: 676
Registriert: 28. Apr 2020 04:44
Answers: 0

Re: astro:sun:local funktioniert nicht

Beitrag von scotty »

Hast du mal versucht, "sendCommand(100)" oder "sendCommand(0)" (je nachdem ob "100" bei dir geschlossen oder offen ist)?
Zuletzt geändert von scotty am 1. Jul 2021 14:42, insgesamt 3-mal geändert.
OH 3.4.5 im Docker auf Synology DS918+ mit USV, Reolink-RLC-511WA, Philips Hue, AVM Fritz!Box 6591C, Alexa, Logitech Harmony und diversen Shelly's

Rainer
Beiträge: 114
Registriert: 28. Nov 2017 21:33
Answers: 0

Re: astro:sun:local funktioniert nicht

Beitrag von Rainer »

Hi Scotty,
ist doch jeweils 1 Regel.

Benutzeravatar
scotty
Beiträge: 676
Registriert: 28. Apr 2020 04:44
Answers: 0

Re: astro:sun:local funktioniert nicht

Beitrag von scotty »

Zusätzlich kann ich noch darauf verweisen: viewtopic.php?f=15&t=5560&p=35023#p35023
OH 3.4.5 im Docker auf Synology DS918+ mit USV, Reolink-RLC-511WA, Philips Hue, AVM Fritz!Box 6591C, Alexa, Logitech Harmony und diversen Shelly's

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

Re: astro:sun:local funktioniert nicht

Beitrag von udo1toni »

Erst mal möchte ich hier ein grundsätzliches Missverständnis ansprechen:

civilDusk (bürgerliche Abnddämmerung) END bedeutet nicht, dass der Tag anfängt, sondern dass die bürgerliche Abenddämmerung beendet ist.

Dazu muss man wissen, wie die bürgerliche Abenddämmerung definiert ist, und zwar folgendermaßen: die Sonne unterschreitet die -6° Höhenlinie.

Nun ist die Sonne von uns aus gesehen zwar klein, aber es ist eben kein unendlich kleiner Punkt, sondern eine runde Scheibe. Die Höhenlinie ist wiederum eine gedachte Kreislinie. START bezeichnet also den Zeitpunkt, zu dem die Sonne beginnt, die Kreislinie zu berühren, während END den Zeitpunkt bezeichnet, zu dem die Sonne aufhört, die Kreislinie zu berühren.
Der Zeitraum der Passage variiert abhängig von der Jahreszeit und dem Standort, wir reden in unserer Region aber von etwa 3 bis 5 Minuten.

Du willst zum Öffnen der Läden nicht civilDusk END, sondern civilDawn START, was den Beginn des bürgerlichen Sonnenaufgangs bezeichnet.

Der nächste Punkt: Du möchtest ein Item gWohnzimmer_Rolladen ansteuern. Ich vermute aufgrund des Namens, dass es sich hier um ein Group Item handelt.
Da kommt eine Eigenheit zum Tragen, die nur einen Teil der Befehle betrifft:
Wenn ich ein Group Item vom Typ Switch habe, ist es kein Problem, mittels gGroupItem.sendCommand(OFF) alle zugehörigen Items auszuschalten.
Bei Dimmer funktioniert aber nicht INCREASE/DECREASE und bei Rollershutter funktioniert kein UP/DOWN/STOP.
Meine Vermutung dazu (aber das ist halt auch nur eine Vermutung): Das Group Item kann den Befehl nicht an die Member weitergeben, weil der Befehl nicht als Status im Item vorliegt.
Wenn die Rollläden direktes Positionieren erlauben (also eine Ansteuerung mit 0 oder 100 für auf bzw. zu), kannst Du versuchen, stattdessen eben den Zahlenwert 0 oder 100 als Befehl zu senden.
Sollten die Läden die Zahl als Befehl nicht unterstützen, gibt es einen Trick, um dennoch mit UP und DOWN arbeiten zu können:

Code: Alles auswählen

gWohnzimmer_Rolladen.members.forEach[m|m.sendCommand(UP)] / bzw. DOWN
sorgt dafür, dass nacheinander jedem Member der Gruppe gWohnzimmer_Rolladen der Befehl UP (bzw. DOWN) gesendet wird.

Im Übrigen rate ich immer dazu, die Methode Item.sendCommand(Command) zu verwenden, statt die Action sendCommand(Item as string, Command as string), die Methode ist einfach sicherer, weil sie Teil des Items selbst ist, sie hat also Kenntnis über die "Bedürfnisse" des Items und kann jeden erlaubten Input verarbeiten, während die Action nur mit Strings arbeiten kann und angegebene Parameter immer nach String wandelt (und das kann schief gehen).

EDIT: Satzbau korrigiert.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2773
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: astro:sun:local funktioniert nicht

Beitrag von peter-pan »

Ich weiss nicht, ob ich die Frage des OP richtig verstanden habe.
Sollte es aber darum gehen, ob die beiden Rules zum richtigen Zeitpunkt(event) triggern (START bzw. END), kann ich vielleicht folgendes dazu beitragen.
Ich habe mal zwei Rules in OH3 erstellt:

Code: Alles auswählen

rule "noon_stowing3 Start"
    when
            Channel 'astro:sun:stowing3:noon#event' triggered START
    then
        logInfo("astro-rules" + '_03', " Noon 50 Start. START")
        //EG_gEG_Kind2_Licht.sendCommand(ON)
end
//===============================================================================
rule "noon_stowing3 Ende"
    when
            Channel 'astro:sun:stowing3:noon#event' triggered END
    then
        logInfo("astro-rules" + '_04', " Noon 50 Ende. END")
        //EG_gEG_Kind2_Licht.sendCommand(ON)
end
Die passenden Things:

Code: Alles auswählen

Thing astro:sun:stowing3   "Offset 50"     [geolocation="11.23456789,3.456789,400", interval=300]{
  Channels:
    Type rangeEvent : noon#event [
      offset=50
    ]
}
Als Yaml sehen die Rules so aus:
Event:Start

Code: Alles auswählen

// Triggers:
// - When channel astro:sun:stowing3:noon#event was triggered

// context: astro-7
logInfo("astro-rules" + '_03', " Noon 50 Start. START")
Event:End

Code: Alles auswählen

// Triggers:
// - When channel astro:sun:stowing3:noon#event was triggered

// context: astro-8
logInfo("astro-rules" + '_04', " Noon 50 Ende. END")
Man kann also im Yaml-Code nicht erkennen, ab Start oder End getriggert wird.

Aber das Logging sagt:

Code: Alles auswählen

2021-07-02 14:16:00.013 [INFO ] [hab.core.model.script.astro-rules_03] -  Noon 50 Start. START
2021-07-02 14:17:00.008 [INFO ] [hab.core.model.script.astro-rules_04] -  Noon 50 Ende. END
Das bedeutet (für mich), dass das richtige Trigger-Event erkannt wird.

Sollte das aber nicht gemeint gewesen sein, dann vergesst einfach, was ich hier von mir gegeben habe :lol: :lol: :lol: ;) ;) ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Antworten