Doif mit Twilight (Zeitraum und Zeitpunkt)

Begonnen von Wasserwerk33, 22 März 2021, 16:55:17

Vorheriges Thema - Nächstes Thema

Wasserwerk33

Hallo Leute,

ich habe ein Problem. Und zwar wird meine Jalousie über eine Logo 8 gesteuert. Die übernimmt auch das Hochfahren morgens. Zumindestens noch.
Nun wollte ich das mein Fenster (2) zu ganz besondern Punkten runterfahren und zwar wenn es Kälter als 15 grad draußen ist (Test 7 Grad eingestellt). So wie ich es gerade geschrieben klappt es auch. Aber unsere Jalousien fahren morgens um 7 uhr hoch. Nun soll Twilight und die Jalousien sich nicht in die quere kommen.

So sieht mein DOIF zur zeit aus. Wie schreibe ich es wenn ich das letzte Twilight gegen eine Uhrzeit austauschen möchte? 6:50 nimmt er nicht an, sagt er scheibfehler.
DEF

([LaCrosse_33:temperature] <7 and ([[myTwilight:ss_indoor]-[myTwilight:sr]]))
(set Wohnzimmer_ganz_runter trigger)


Das DOIF mit der Fehlermeldung

Internals:
   DEF        ([LaCrosse_33:temperature] <7 and ([[myTwilight:ss_indoor]-[6:50]]))
(set Wohnzimmer_ganz_runter trigger)
   FUUID      6046807d-f33f-da37-f475-10f301abfd17d1b3
   MODEL      FHEM
   NAME       Wohnzimmer_Doif_Abends_runter
   NOTIFYDEV  myTwilight,LaCrosse_33,global
   NR         85
   NTFY_ORDER 50-Wohnzimmer_Doif_Abends_runter
   STATE      initialized
   TYPE       DOIF
   VERSION    23466 2021-01-03 17:14:46
   READINGS:
     2021-03-22 16:52:40   cmd             0
     2021-03-22 16:52:40   mode            enabled
     2021-03-22 16:52:40   state           initialized
     2021-03-22 16:52:40   timer_01_c01    22.03.2021 19:12:43
     2021-03-22 16:52:40   timer_02_c01    error: Wrong timespec : either HH:MM:SS or {perlcode}
   Regex:
     accu:
     cond:
       LaCrosse_33:
         0:
           temperature ^LaCrosse_33$:^temperature:
     itimer:
       myTwilight:
         itimer:
           ss_indoor  ^myTwilight$:^ss_indoor:
   condition:
     0          ::ReadingValDoIf($hash,'LaCrosse_33','temperature') <7 and (::DOIF_time($hash,0,1,$wday,$hms))
   days:
   do:
     0:
       0          set Wohnzimmer_ganz_runter trigger
     1:
   helper:
     DEVFILTER  ^global$|^LaCrosse_33$|^myTwilight$
     NOTIFYDEV  global|LaCrosse_33|myTwilight
     globalinit 1
     last_timer 2
     sleeptimer -1
     triggerDev
   interval:
     0          -1
     1          0
   intervalfunc:
   localtime:
     0          1616436763
   readings:
     all         LaCrosse_33:temperature
   realtime:
     0          19:12:43
   time:
     0          [myTwilight:ss_indoor]
     1          [6:50]
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   triggertime:
     1616436763:
       localtime  1616436763
       hash:
   uiTable:
Attributes:
   do         always
   room       Logo



danke für eure Hilfe.

Sany

#1
Zitaterror: Wrong timespec : either HH:MM:SS or {perlcode}

versuch doch mal 06:50 oder 06:50:00
also so etwa:
[[myTwilight:ss_indoor]-06:50]

gerade nochmal ausprobiert: 6:50 geht auch, halt ohne die [] drumrum. Das wäre ja eine indirekte Zeitangabe.
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

yersinia

Versuche mal:
([LaCrosse_33:temperature] < 7 and ([{ReadingsVal("myTwilight","ss_indoor","")}-{ReadingsVal("myTwilight","sr","")}]))
(set Wohnzimmer_ganz_runter trigger)


Twilight bietet übrigens eine perl-Funktion (twilight) welche den Wert in einem Zeitraum wiedergibt:
([LaCrosse_33:temperature] < 7 and ([{twilight("myTwilight","ss_indoor","16:00","20:00")}-{twilight("myTwilight","sr","5:00","10:00")}]))
(set Wohnzimmer_ganz_runter trigger)


Und: DOIF: Kombination von Ereignis- und Zeitsteuerung mit logischen Abfragen
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Wasserwerk33

Zitat
Zitat von: Sany am 22 März 2021, 17:12:04
versuch doch mal 06:50 oder 06:50:00
also so etwa:
[[myTwilight:ss_indoor]-06:50]

gerade nochmal ausprobiert: 6:50 geht auch, halt ohne die [] drumrum. Das wäre ja eine indirekte Zeitangabe.
Habe es nun mal eingeben. Mal schauen was passiert. Danke ja darauf es so zuschreiben bin ich nicht gekommen. Hatte vorher nmlich noch andere angaben aber das hat nie geklappt. so scheint es zumindestens erstmal gut auszusehen.

Danke melde mich ob es geklappt hat.

Sany

Na, ist Dein Rollo wunschgemäß gefahren?
Was mit noch auffällt:
([LaCrosse_33:temperature] <7 and ([[myTwilight:ss_indoor]-6:50])) würde ja bedeuten
1. wenn es bereits unter 7(15) Grad ist und dann der ss_indoor erreicht wird fährt das Rollo. Vermutlich gewünscht.
2. wenn es irgendwann nach ss_indoor sich erst abkühlt auf unter 7(15) Grad fährt das Rollo. Das könnte aber auch erst um 6:49 sein, oder um2:22 wenn Du gerade sooo schön tief schläfst.
Du könntest ja noch ein "spätestens" einbauen, wo entweeder der Rollo immer fährt oder eben immer wenn es < 7(15) Grad ist.
(([LaCrosse_33:temperature] <7 and ([[myTwilight:ss_indoor]-6:50]) or [23:00]) für immer um 23:00
([LaCrosse_33:temperature] <7 and ([[myTwilight:ss_indoor]-6:50] or [23:00])) für spätestens 23:00 wenn kalt genug. Dann könnte man natürlich auch den Zeitraum anders wählen.

Viel Erfolg!
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

Wasserwerk33

Hi Sany.

Wann die fahren spielt bei den beiden keine rolle. Das sind 2 Fenster (1X Küche und 1x Wohnzimmer) wir sagen immer Schießscharten sagen wir dazu. Es soll halt eben schalten wenn es unter 15 Grad draußen ist weil da auch unsere Heizung drauf eingestellt ist. Wärme erhalt. Aber danke für den Tip. Den den habe ich schon bei einer anderen Jalousie nun eingebaut.  ;)