[gelöst] DOIF Zeitsteuerung mit Datum?

Begonnen von roman1528, 29 Oktober 2017, 20:21:47

Vorheriges Thema - Nächstes Thema

roman1528

Moin.

Ich habe leider nichts dazu gefunden oder ich habe es tatsächlich übersehen.

Kann ich im Anführungsteil mit Datum und Zeit arbeiten? Wenn ja wie?

Danke

Grüße^^
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

Ellert

Zitat von: roman1528 am 29 Oktober 2017, 20:21:47
Moin.

Ich habe leider nichts dazu gefunden oder ich habe es tatsächlich übersehen.

Kann ich im Anführungsteil mit Datum und Zeit arbeiten? Wenn ja wie?

Danke

Grüße^^
Ja, mit den üblichen Funktionen, siehe FHEM Referenz PERL Besonderheiten und in perldoc z.B. die Perlfunktionen time, localtime, timelocal, strftime usw.

roman1528

Zitat von: Ellert am 29 Oktober 2017, 23:33:51
Ja, mit den üblichen Funktionen, siehe FHEM Referenz PERL Besonderheiten und in perldoc z.B. die Perlfunktionen time, localtime, timelocal, strftime usw.

Danke.

Also nur in Perl... schade, dachte das gäbe es auch in einfach.

Grüße^^
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

Ellert

Was meinst Du mit  "einfach"?

Gib mal ein Beispiel.

roman1528

Zitat von: Ellert am 30 Oktober 2017, 15:24:21
Gib mal ein Beispiel.

Moin.
Na so in der Art wie es mit der Uhrzeit bzw. relativen Zeitangaben auch ist.
Nur Zeit:
([08:00]) (set lampe on)

Mit Datum: meinetwegen auch an Perl bzw. ISO8601 angelehnt.
([2017-12-31 08:00]) (set lampe on)
Am 31.12.2017 um 8 Uhr "lampe" an.

bzw. relativ (in Sekunden):
([2017-12-31 +3600]) (set lampe on)
Also am 31.12.2017 3600 Sekunden nach 0 Uhr... folglich um 1 Uhr.

oder eben nach ISO8601 mit Trenner: 2017-12-31T08:00

Gern natürlich auch in unserem Datumsformat... 31.12.2017 ::)

Grüße^^
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

Ellert

Ich bin etwas verwirrt, was meinst Du mit
Zitat von: roman1528 am 29 Oktober 2017, 20:21:47
... Anführungsteil ...

Deine Beispiele spielen alle im Bedingungsteil, Beispiel dafür gibts im Wiki https://wiki.fhem.de/wiki/DOIF/Zeitspanne_zwischen_zwei_Terminen_schalten#Zeitspanne_zwischen_zwei_Terminen

roman1528

Zitat von: Ellert am 30 Oktober 2017, 19:21:23
Ich bin etwas verwirrt, was meinst Du mit
Zitat von: roman1528 am 29 Oktober 2017, 20:21:47
...Anführungsteil...
*Ironie an*
Das mag an meinen stark ausgeprägten Fachkenntnissen liegen, welche das Programmieren betreffen :P
*Ironie aus*
Ich entschuldige mich dafür! Natürlich muss es Bedingungsteil heißen.

Zitat von: Ellert am 30 Oktober 2017, 19:21:23
...Beispiel dafür gibts im Wiki https://wiki.fhem.de/wiki/DOIF/Zeitspanne_zwischen_zwei_Terminen_schalten#Zeitspanne_zwischen_zwei_Terminen
Das ist stark verwirrend... zumindest für mich. Aber vielleicht verstehe ich das richtig:

Ich sage also nicht:
DOIF ([DATUM UHRZEIT]) (mach die lampe an)
was mit der Uhrzeit ja so funktioniert... einfach funktioniert

sonder ich prüfe manuell ob heute dieses Datum ist und die Uhrzeit dient als Trigger:
DOIF ([UhrZeit] and [?DEVICE:JahrREADING] == "DiesesJahr" and [?DEVICE:MonatREADING] == "DieserMonat" and [?DEVICE:TagREADING] == "DieserTag") (mach die lampe an)
Die paar Fragezeichen vor die Jahr/Monat/Tag Abfrage, weil diese nicht als Trigger dienen sollen...

Richtig? Wenn ja ist das logisch aber auch irgendwie sau umständlich XD

Noch 'ne Frage für "Dummies": Mit $SELF weiß das DOIF-Device, dass es selbst gemeint ist?

Grüße^^
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

Frank_Huber

Mit Fragezeichen wird  die Bedingung nur abgefragt wenn eine andere Bedingung wahr wird.

Z. B.
Bewegungsmelder and ?Helligkeitswert = dunkel

Nur der Bewegungsmelder triggert.

Gesendet von meinem S3_32 mit Tapatalk


roman1528

Zitat von: Frank_Huber am 30 Oktober 2017, 21:12:53
Mit Fragezeichen wird  die Bedingung nur abgefragt wenn eine andere Bedingung wahr wird.
Z. B.
Bewegungsmelder and ?Helligkeitswert = dunkel
Nur der Bewegungsmelder triggert.

Danke  :)
Das hatte ich bis jetzt auch so verstanden... aber deine Erklärung ist klarer.

Grüße^^
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

Frank_Huber

Lol, das sollte in nen anderen thread, passt aber zufällig auch hier.
;-)

Btw, ja $self ist das doif selbst.

Gesendet von meinem S3_32 mit Tapatalk


roman1528

Danke Frank.

Ich habe da jetzt mal was zusammen geschustert und es läuft tatsächlich. Umständlich ist es dennoch  :P

define bad_doif_heizung_extra DOIF ([[$SELF:time]] and [?$SELF:year] == $year and [?$SELF:month] == $month and [?$SELF:day] == $mday) (set bad_WT_Climate desired-temp [$SELF:temp])

Internals:
   CFGFN
   DEF        ([[$SELF:time]] and [?$SELF:year] == $year and [?$SELF:month] == $month and [?$SELF:day] == $mday) (set bad_WT_Climate desired-temp [$SELF:temp])
   NAME       bad_doif_heizung_extra
   NR         56616
   NTFY_ORDER 50-bad_doif_heizung_extra
   STATE      disabled
   TYPE       DOIF
   READINGS:
     2017-10-30 21:32:07   day             30
     2017-10-30 21:41:33   last_cmd        initialize
     2017-10-30 21:41:33   mode            disabled
     2017-10-30 21:32:10   month           10
     2017-10-30 21:41:33   state           disabled
     2017-10-30 21:27:29   temp            off
     2017-10-30 21:34:16   time            12:00
     2017-10-30 21:39:30   timer_01_c01    31.10.2017 12:00:00
     2017-10-30 20:53:11   year            2017


Danke für die Hilfe
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

Frank_Huber

Time / day usw setzt du als reading selbst ins  doif?
Wenn ja könnte man das  evtl vereinfachten.

Gesendet von meinem S3_32 mit Tapatalk


roman1528

Zitat von: Frank_Huber am 30 Oktober 2017, 22:15:22
Time / day usw setzt du als reading selbst ins  doif?
Wenn ja könnte man das  evtl vereinfachten.

ja genau so mach ich das... im FTUI-Frontend per select-widget.

dennoch bin ich auf deinen vorschlag gespannt.

Grüße^^
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

Frank_Huber

Hi,

Ich dachte an eine Vereinfachung mit nur einem Reading für das Datum.

([[$SELF:time]] and [?$SELF:date] eq "$mday.$month.$year") (set bad_WT_Climate desired-temp [$SELF:temp])

dann müsste das reading date mit z.B. 31.10.2017 gefüttert sein.
Ist allerdings ungetestet. evtl anderer Syntax für die Punkte.

Grüße

roman1528

Moin.

Das ist gut, aber für mich so nicht umsetzbar.

In FTUI müsste ich das Reading an einem Stück übergeben, da es 3-teilig ist... ich kann in FTUI nämlich nur 2 Parameter zu einem Reading zusammen fasssen. Der 3. Wäre das Device selbst. Oder ich müsste das Datum manuell in ein Textfeld eingeben.
Ich möchte aber Tag, Monat und Jahr aus  DropDownMenü's auswählen. Deswegen setze ich die Readings einzeln.

Alternativ könnte ich das noch über ein userReading zusammen bauen.. aber ist ja irgendwie auch nur doppelt gemoppelt...

Läuft aber super so wie es jetzt ist.
Danke.

Grüße^^
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik