FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Larusso am 27 Januar 2018, 17:27:14

Titel: [gelöst]DOIF bei Wertüberschreitung einmal auslösen
Beitrag von: Larusso am 27 Januar 2018, 17:27:14
Hallo zusammen,

ich weis bei einem keinen Problem nicht wirklich weiter. Ich habe einen DHT11 der den Keller überwacht, wenn dann die Luftfeuchtigkeit zu hoch ist bekomme ich ein Telegram. Soweit funktioniert alles, aber ich bekomme bei überschreitung alle paar Sekunden eine msg. Liegt das am "do always"? Wie verhält sich das DOIF wenn ich do always raus nehme? Ich möchte am liebsten nur alle zwei bis drei Stunden eine Nachricht wenn die Luftfeuchtigkeit überschritten wird, oder eine Nachricht wenn sie überschritten wird und die nächste soll erst dann auslösen wenn die Luftfeuchtigkeit einmal unter den Sollwert gefallen ist und diesen wider überschreitet.

Wäre schön wenn jemand helfen kann, anbei noch meine device list:

Internals:
   DEF        ([?10:00 - 22:00] and [Keller:Humidity] > 70) (set Telegram msg Achtung Keller zu feucht die Luftfeuchtigkeit beträgt [Keller:Humidity]% bei [Keller:Temperature]°C Raumtemperatur bitte lüften)
   NAME       Keller_feucht_Telegram
   NR         337
   NTFY_ORDER 50-Keller_feucht_Telegram
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2018-01-27 17:26:22   cmd             0
     2018-01-27 17:26:22   mode            enabled
     2018-01-27 17:26:22   state           initialized
     2018-01-27 17:26:22   timer_01_c01    28.01.2018 10:00:00
     2018-01-27 17:26:22   timer_02_c01    27.01.2018 22:00:00
   Regex:
   condition:
     0          DOIF_time($hash,0,1,$wday,$hms) and ReadingValDoIf($hash,'Keller','Humidity') > 70
   days:
   devices:
     0           Keller
     all         Keller
   do:
     0:
       0          set Telegram msg Achtung Keller zu feucht die Luftfeuchtigkeit beträgt [Keller:Humidity]% bei [Keller:Temperature]°C Raumtemperatur bitte lüften
     1:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     globalinit 1
     last_timer 2
     sleeptimer -1
   interval:
     0          -1
     1          0
   itimer:
   localtime:
     0          1517130000
     1          1517086800
   readings:
     0           Keller:Humidity
     all         Keller:Humidity
   realtime:
     0          10:00:00
     1          22:00:00
   time:
     0          10:00:00
     1          22:00:00
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   triggertime:
     1517086800:
       localtime  1517086800
       hash:
     1517130000:
       localtime  1517130000
       hash:
   uiState:
   uiTable:
Attributes:
   alias      Telegram Keller feucht
   do         always
   event-on-change-reading 1
   room       Telegram
:o
Titel: Antw:DOIF bei Wertüberschreitung einmal auslösen
Beitrag von: KernSani am 27 Januar 2018, 17:35:40
Do always raus und ein DOELSEIF mit < 70 rein


Kurz, weil mobil...
Titel: Antw:DOIF bei Wertüberschreitung einmal auslösen
Beitrag von: Larusso am 27 Januar 2018, 17:38:49
super KernSani, danke...... ;D

sollte dann so funktionieren oder?

([?10:00 - 22:00] and ELSEIF [Keller:Humidity] > 70) (set Telegram msg Achtung Keller zu feucht die Luftfeuchtigkeit beträgt [Keller:Humidity]% bei [Keller:Temperature]°C Raumtemperatur bitte lüften)

ach nee mal wider die syntax, ich verstehe es nicht.....
Titel: Antw:DOIF bei Wertüberschreitung einmal auslösen
Beitrag von: KernSani am 27 Januar 2018, 18:05:07

([?10:00 - 22:00] and [Keller:Humidity] > 70)
(set Telegram msg Achtung Keller zu feucht die Luftfeuchtigkeit beträgt [Keller:Humidity]% bei [Keller:Temperature]°C Raumtemperatur bitte lüften)
DOELSEIF ([Keller:Humidity] < 70)
()

und do always wie gesagt raus.
Dann bleibt das DOIF, in CMD_1 (und sendet keine weiteren messages), wenn Keller:Humidity unter 70 fällt, wechselt das DOIF in CMD_2 (löst aber kein Kommando aus). Wenn das nächste mal > 70 wird wieder eine Nachricht geschickt.
Titel: Antw:DOIF bei Wertüberschreitung einmal auslösen
Beitrag von: Larusso am 27 Januar 2018, 18:09:23
vielen dank KernSani, ich teste mal eben ................

läuft, nochmal danke. ::)