Hilfe zu DO-IF in Verbindung mit Twilight Modul

Begonnen von techblaster, 18 September 2020, 09:14:57

Vorheriges Thema - Nächstes Thema

techblaster

Guten Morgen zusammen,

ich stehe vor folgendem Problem: Ich möchte einen Sonoff Kanal zum Sonnenuntergang bzw. Sonnenaufgang schalten. Speziell für die Nacht sollen die Lampen leuchten. (Außenlicht). Für meine großen Strahler (LED) habe ich das so erfolgreich gelöst:
([Twilight:twilight]<40) (set Sonoff_Gartenlampen Power1 ON) DOELSE (set Sonoff_Gartenlampen Power1 OFF)

Für meine kleinen Strahler möchte ich auch so etwas, allerdings kombiniert mit einem Timer da die nicht die ganze Nacht brennen sollen. Es wäre also gut, wenn die kleinen Strahler (Sonoff_Gartenlampen Power2) nach der Abenddämmerung bspw. 2 Stunden lang an sind und danach aus gehen und später dann wieder 2 Stunden vor Beginn der Morgendämmerung wieder an gehen und mit der Morgendämmerung aus gehen.
Beispiel:
20:00 Uhr Einschalten der kleinen Beleuchtung (Abenddämmerung/Twilight-Modul)
22:00 Uhr Ausschalten der Lampen durch Timer o.ä.

04:30 Uhr Einschalten der Lampen durch Timer o.ä.
06:30 Uhr Ausschalten der Lampen durch Beginn der Morgendämmerung /Twilight-Modul)


Wie müsste ein Do-IF aussehen um dem oben genannten Beispiel gerecht zu werden?
Freue mich auf Eure Vorschläge.

Viele Grüße


Beta-User

Lese mal mit, weil mich die Verwendung von Twilight interessiert, zu DOIF kann ich wenig sagen...

Dein "Grundproblem" ist mAn. ein anderes: du hast keine "Einzeldevices" für die schaltbaren Kanäle. Wären das entsprechend konfigurierte MQTT2_DEVICE's, MQTT_DEVICEs mit aktivierten SetExtensions oder readingsProxy hättest, könntest du on-for-timer oder on-till verwenden.

(Vermutlich würde ich das iVm. mit einem WeekdayTimer machen, der sollte eigentlich auch mit einer twilight()-Zeitangabe klarkommen (oder wenn Event-basiert mit einem notify/disabledForIntervals-Device), aber sicher geht das auch mit DOIF ).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

techblaster

Hi Beta-User,

ich vergaß in meinem Eingangspost zu erwähnen, dass es sich um einen Sonoff handelt der mit Tasmota geflasht wurde und via MQTT2 als Device angesteuert wird. Es ist ein dualer Sonoff deshalb die Angabe Power1 und Power2. Das schalten und die Kommunikation via FHEM funktioniert problemlos.
Die Schwierigkeit besteht imho darin, dass ich nicht per twilight schalten kann, dann einen Timer ablaufen lasse bspw. mit Attribut wait. Denn dann würde twilight meine Lampen wieder einschalten sobald das Twilight-Modul ein Update der Readings bekommt.
Ich muss also einen Weg finden wie ich beides miteinander kombinieren kann ohne, dass das Twilight Modul meine Lampen NOCHMAL einschaltet zu späterer Zeit.

Viele Grüße

Eistee

#3
Sollte in etwa so aussehen Zeitraumgesteuert laut commandref vom DOIF (https://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitberechnung):
define di_light DOIF ([([Twilight:sr]-[02:00])-[Twilight:sr]] OR [[Twilight:ss]-([Twilight:ss]+[02:00])])
(set lamp on)
DOELSE
(set lamp off)


oder alternativ Eventgesteuert:
define di_light DOIF ([([Twilight:sr]-[02:00])] OR [[Twilight:ss]])
(set lamp on)
DOELSEIF ([[Twilight:sr]] OR [([Twilight:ss]+[02:00])])
(set lamp off)


Bitte noch entsprechend anpassen an die gewünschte Triggerzeit von Twilight und das entsprechende zu schaltende Gerät.

Beta-User

Zitat von: techblaster am 18 September 2020, 09:41:49
Hi Beta-User,

ich vergaß in meinem Eingangspost zu erwähnen, dass es sich um einen Sonoff handelt der mit Tasmota geflasht wurde und via MQTT2 als Device angesteuert wird. Es ist ein dualer Sonoff deshalb die Angabe Power1 und Power2. Das schalten und die Kommunikation via FHEM funktioniert problemlos.
OK, lists _aller_ relevanten Devices sind _immer_ hilfreich, am besten in Textform und in code-Tags verpackt ;) ...

Da MQTT2_DEVICE: Wenn du das "split"-attrTemplate angewandt hättest, ergäbe der 2 Devices und jeder Kanal könnte direkt mit "on-for-timer 7200" umgehen, die eigentliche "Anschalt-Zeitschaltuhr" (DOIF oder whatever) müßte dann nur diesen Befehl absetzen...

ZitatDie Schwierigkeit besteht imho darin, dass ich nicht per twilight schalten kann, dann einen Timer ablaufen lasse bspw. mit Attribut wait. Denn dann würde twilight meine Lampen wieder einschalten sobald das Twilight-Modul ein Update der Readings bekommt.Ich muss also einen Weg finden wie ich beides miteinander kombinieren kann ohne, dass das Twilight Modul meine Lampen NOCHMAL einschaltet zu späterer Zeit.
Wie eingangs geschrieben: "Eigentlich" bin ich mit dem Umgang mit twilight nicht vertraut und will auch erst mal verstehen, wie man das verwendet. Es gibt aber neben der Triggerei auch noch die reine Timer-Funktion (für die man - neuerdings mit erweiterten Optionen auf der Twilight-Seite - auch direkt sunrise()/sunset() verwenden könnte); soweit ich das verstehe, nutzt der Codevorschlag von Eistee diese Timer-Funktionalität, und nicht den Trigger...
Falls du weiter auf dem (fiktiven) Helligkeitswert triggernd aufsetzen wolltest, müßtest du ggf. abfragen, ob grade schon ein entsprechender (SetExtensions-) timer auf dem Device aktiv ist oder den Eventhandler so konfigurieren, dass er eben nur zu jedem Zeitraum einmalig reagiert; wenn das M2_Device entsprechend konfiguriert ist, kann man jedenfalls durch eine entsprechende Abfrage auch rausfinden, ob ein SetEx-Timer läuft...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors