#erledigt# DOIF senden zu bestimmter Uhrzeit und bestimmtem state

Begonnen von Helmi55, 08 Dezember 2021, 12:49:20

Vorheriges Thema - Nächstes Thema

Helmi55

Hallo
ich verzweifle gerade wieder an einem DOIF obwohl ich die Command Reform gelesen habe, finde ich den Fehler nicht.
Mein Ziel ist es um eine bestimmte Uhrzeit UND einem bestimmten state von einem dummy eine Meldung zu senden:
defmod di_BadHeizungMeldung DOIF ([12:33] and [du_time:state] == "05:00" or "06:00") (set Pushover1 msg 'BadHeizung:' '[du_time:state]')

Hier also um 12:33 und wenn im state 05:00 oder 06:00 steht die Meldung zu senden.
Im dummy ist das state aber  07:00

Hier das List vom dummy
Internals:
   FUUID      612b60e0-f33f-ee2d-e06c-e2206505d4fdda73
   NAME       du_time
   NR         594
   STATE      07:00
   TYPE       dummy
   READINGS:
     2021-12-08 12:30:15   state           07:00
Attributes:
   alias      Bad Startzeit
   readingList state
   room       Badezimmer
   setList    state:05.00,05.30,06.00,06.30,07.00,15.15,17.00,17.30,18.00,18.30
   verbose    5


Die setList ist mit Absicht mit 06.00 das dies von FHEMapp kommt.....

Ich habe schon statt == auch eq verwendet - ohne Erfolg.
Ebenso die Uhrzeiten in [] statt ""

Alles ohne Erfolg

Die Meldung wird immer gesendet und sollte ja nur gesendet werden wenn 12:33 UND 07:00 stimmt.

Was mach ich da bitte wieder falsch?

Gruß
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Otto123

#1
Hi,

sowas geht nicht! [du_time:state] == "05:00" or "06:00" (dieser Ausdruck ist immer wahr, da "06:00" immer wahr ist  ;)
Das muss so aussehen: [du_time:state] == "05:00" or [du_time:state] == "06:00" allerdings wird damit ein numerischer Vergleich durchgeführt, d.h. nur die Stunden werden verglichen!
Also wie Damian anmerkt so vergleichen: [du_time:state] eq "05:00" or [du_time:state] eq "06:00" dann wird ein lexikalischer Vergleich durchgeführt!

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Damian

Zitat von: Otto123 am 08 Dezember 2021, 13:00:30
Hi,

sowas geht nicht! [du_time:state] == "05:00" or "06:00" (dieser Ausdruck ist immer wahr, da "06:00" immer wahr ist  ;)
Das muss so aussehen: [du_time:state] == "05:00" or [du_time:state] == "06:00"

Gruß Otto

Strings bitte mit eq vergleichen :)

[du_time:state] eq "05:00"
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Helmi55

Herzlichen Dank.
Ihr seid die Besten. So klappt es jetzt.
Schönen Tag

Gruß
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Helmi55

Hallo
irgendwo ist der Wurm drinnen (wahrscheinlich wieder mein Fehler)

Wenn ich jetzt um 17:40 die Heizzeit auf 17:00 stelle bekomme ich sofort eine Pushmsg - obwohl [20:01] in DOIF steht?

defmod di_BadHeizungMeldung DOIF ([20:01] and [du_time:state] eq "15:15" or [du_time:state] eq "17:00" or [du_time:state] eq "17:30" or [du_time:state] eq "18:00" or [du_time:state] eq "18:30") (set Pushover1 msg 'BadHeizung:' '[du_time:state]') DOELSE


Was mach ich da wieder falsch?

Danke
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Otto123

Hallo Helmut,

jedes Reading triggert Dein DOIF

Ich weiß nicht genau wie Du es wolltest aber bei A and B or C or D or E or F
Ist es wahr bei A und B
oder C
oder D
usw. :)

Mag sein Du wolltest: A and ( B or C or D or E or F  ) ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Helmi55

Otto servus und Danke für deine Hilfe,

eigentlich wollte ich um 20:01 eine Meldung bekommen wenn eine der Bedingungen 15:15, 17:00, 17:30, 18:00 oder 18:30 im state stehen.
Hintergrund : die Heizung soll in der Früh aktiv sein (ich kann ja vergessen, wenn ich am Abend aktiviert habe, wieder auf Frühmodus zu schalten!! = alter Mann Modus  ;D ;D ;D)

Ich hatte bis jetzt nur Abfrage an einer bestimmten Uhrzeit über den aktuellen Zustand

Was muss ich da bitte noch ändern

Danke
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Otto123

na zwei Klammern setzen :)
A and ( B or C or D or E or F  )

defmod di_BadHeizungMeldung DOIF ([20:01] and ([du_time:state] eq "15:15" or [du_time:state] eq "17:00" or [du_time:state] eq "17:30" or [du_time:state] eq "18:00" or [du_time:state] eq "18:30")) (set Pushover1 msg 'BadHeizung:' '[du_time:state]') DOELSE

Aber wahrscheinlich noch besser: Nur mit der Uhrzeit triggern!
defmod di_BadHeizungMeldung DOIF ([20:01] and ([?du_time:state] eq "15:15" or [?du_time:state] eq "17:00" or [?du_time:state] eq "17:30" or [?du_time:state] eq "18:00" or [?du_time:state] eq "18:30")) (set Pushover1 msg 'BadHeizung:' '[du_time:state]') DOELSE
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Helmi55

Danke Otto

ja diese Klammern - da stand ich schon in der Schule vor 50 Jahren auf Kriegsfuß

Schöne Feiertage - gesund bleiben
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/