[Gelöst] DOIF Lametric Meldung mit zwei Bedingungen funktioniert nicht richtig

Begonnen von Andiarbeit, 14 September 2022, 23:45:18

Vorheriges Thema - Nächstes Thema

Andiarbeit

Hi Zusammen,

kann mir jemand helfen. Ich will auf meinem Lametric Display wenn es regnet alle 5 Minuten einen Text sehen, dass es regnet.
Lösen wollte ich es mit einem DOIF.
Leider versteh ich nicht genau, wo der Fehler ist.
([+:05] and [Regensensor:"rain"]) (set lametric msg 'a72' 'Es regnet')
Beim manuellen Anstoßen über set nassmeldung_alle_5min cmd_1 kommt der Text.
Als Attribut habe ich noch do always eingetragen.

Danke für eure Hilfe

Guybrush

dann poste doch bitte erstmal deine komplette definition. syntax sieht soweit erstmal richtig aus

da es nicht so oft regnet, würde ich das aber auch eher über ein Notify lösen. kenne ja deine devices nicht, aber ich geh mal davon aus, dass ich das richtig zusammengewürfelt hab. ungetestet und späte uhrzeit... ;) aber so in etwa müsste das aussehen - setzt aber voraus, dass dein regensensor (wie bei mir) minütlich aktualisiert wird.


defmod nassmeldung_alle_5min Notify Regensensor:rain {
  fhem "set lametric msg 'a72' 'Es regnet'" if (time_str2num(ReadingsTimestamp('lametric','msg',0)) < (time()-300)) ;
}

Andiarbeit

Hi Guybrush,

wo wäre denn den Vorteil eines Notifys?
Soweit ich es sehen kann bekomme ich im Logfile nur die Statusänderung von dry zu rain.
Das wäre die komplette Definition:

defmod nassmeldung_alle_5min DOIF ([+:05] and [Regensensor:"rain"]) (set lametric msg 'a72' 'Es regnet')
attr nassmeldung_alle_5min do always
attr nassmeldung_alle_5min room Logik

setstate nassmeldung_alle_5min cmd_1
setstate nassmeldung_alle_5min 2022-09-14 03:31:30 Device Regensensor
setstate nassmeldung_alle_5min 2022-09-14 23:41:54 cmd 1
setstate nassmeldung_alle_5min 2022-09-14 23:41:54 cmd_event set_cmd_1
setstate nassmeldung_alle_5min 2022-09-14 23:41:54 cmd_nr 1
setstate nassmeldung_alle_5min 2022-09-14 03:31:30 e_Regensensor_events commState: CMDs_done
setstate nassmeldung_alle_5min 2022-09-14 01:33:28 mode enabled
setstate nassmeldung_alle_5min 2022-09-14 23:41:54 state cmd_1
setstate nassmeldung_alle_5min 2022-09-15 01:35:00 timer_01_c01 15.09.2022 01:40:00

Stelaku

wenn ich das richtig sehe funktioniert das nicht weil Du zwei Events mit und abfragst. Zwei Events können nie zur selben Zeit wahr sein.
Versuch doch mal den Zustand für Dein Regensensor mit eq "rain" abzufragen ungefähr so

defmod nassmeldung_alle_5min DOIF ([+:05] and [Regensensor:DEIN_READING_MIT_rain] eq "rain") (set lametric msg 'a72' 'Es regnet')

Gruss Stephan

Damian

defmod nassmeldung DOIF ([Regensensor:state] eq "rain"]) (set lametric msg 'a72' 'Es regnet')

solle schon reichen, denn Regensensor liefert ja ein Event, daher ist das Pollen im 5 Minutentakt kontraproduktiv.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Andiarbeit

#5
Danke für eure Hilfe.
Mir geht es darum, dass die Meldung alle 5 Minuten auf dem Lametric-Display angezeigt werden soll. Die Anzeige ist recht kurz und wechselt dann wieder zu einem Standard-Wert zum Bsp. der Uhrzeit.

Hab es gerade hiermit getestet, leider hat es nicht funktioniert:
defmod nassmeldung_alle_5min DOIF ([+:05] and [Regensensor:state eq "rain"]) (set lametric msg 'a72' 'Es regnet')

Damian

Zitat von: Andiarbeit am 16 September 2022, 12:09:19
Danke für eure Hilfe.
Mir geht es darum, dass die Meldung alle 5 Minuten auf dem Lametric-Display angezeigt werden soll. Die Anzeige ist recht kurz und wechselt dann wieder zu einem Standard-Wert zum Bsp. der Uhrzeit.

Hab es gerade hiermit getestet, leider hat es nicht funktioniert:
defmod nassmeldung_alle_5min DOIF ([+:05] and [Regensensor:state eq "rain"]) (set lametric msg 'a72' 'Es regnet')

Da war noch ein Tippfehler drin, es muss heißen:

defmod nassmeldung_alle_5min DOIF ([+:05] and [Regensensor:state] eq "rain") (set lametric msg 'a72' 'Es regnet')[/c
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Andiarbeit