FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Sebastian84 am 15 Mai 2023, 10:58:51

Titel: Doif zurücksetzen
Beitrag von: Sebastian84 am 15 Mai 2023, 10:58:51
Guten Tag
Ich hab eine Steckdose die nach 5 Stunden Interval sich ausschaltet. Ich habe ein Doif das um 22 Uhr die Steckdose bis zum nächsten Tag 8 Uhr ausschaltet und um 8 Uhr wieder an.
Jetzt hab ich das Problem das wenn die 5 Stunden Interval vor 22 Uhr die Steckdose ausschaltet, das das Doif den Schaltzustand nicht um 22 Uhr auf cmd_2 schaltet sondern auf cmd_1 lässt. Dadurch wird am nächsten Morgen die Steckdose nicht um 8 Uhr eingeschaltet, weil es denkt es ist auf cmd_1. Kann man in doif über Atribute das duif um 22 Uhr a
DOIF_time($hash,0,1,$wday,$hms) or (::ReadingValDoIf($hash,'Multisensor4','humidity')<(::ReadingValDoIf($hash,'di_humidity_GZ','desired')-::ReadingValDoIf($hash,'di_humidity_GZ','hysterese')/2) and ::ReadingValDoIf($hash,'Kellersteckdose','state') ne "off")
     1          ::ReadingValDoIf($hash,'Multisensor4','humidity')>(::ReadingValDoIf($hash,'di_humidity_GZ','desired')+::ReadingValDoIf($hash,'di_humidity_GZ','hysterese')/2) and ::ReadingValDoIf($hash,'Kellersteckdose','state') ne "on"
   days:
uf cdm_2  schalten.



Titel: Aw: Doif zurücksetzen
Beitrag von: Damian am 15 Mai 2023, 13:39:30
Du musst ein list von dem DOIF-Device posten.
Titel: Aw: Doif zurücksetzen
Beitrag von: Sebastian84 am 15 Mai 2023, 16:10:01
Zitat
nals:
   DEF        ([22:00-08:00] or ([Multisensor4 (http://192.168.0.115:8083/fhem?detail=Multisensor4):humidity]<([$SELF:desired]-[$SELF:hysterese]/2) and [?Kellersteckdose (http://192.168.0.115:8083/fhem?detail=Kellersteckdose):state] ne "off"))
(set Kellersteckdose (http://192.168.0.115:8083/fhem?detail=Kellersteckdose) off)
DOELSEIF ([Multisensor4 (http://192.168.0.115:8083/fhem?detail=Multisensor4):humidity]>([$SELF:desired]+[$SELF:hysterese]/2) and [?Kellersteckdose (http://192.168.0.115:8083/fhem?detail=Kellersteckdose):state] ne "on")
(set Kellersteckdose (http://192.168.0.115:8083/fhem?detail=Kellersteckdose) on)
   FUUID      620fd583-f33f-cdd4-d638-f8aabcf0541fb691
   MODEL      FHEM
   NAME       di_humidity_GZ (http://192.168.0.115:8083/fhem?detail=di_humidity_GZ)
   NOTIFYDEV  di_humidity_GZ (http://192.168.0.115:8083/fhem?detail=di_humidity_GZ),Multisensor4 (http://192.168.0.115:8083/fhem?detail=Multisensor4),global (http://192.168.0.115:8083/fhem?detail=global)
   NR         386
   NTFY_ORDER 50-di_humidity_GZ (http://192.168.0.115:8083/fhem?detail=di_humidity_GZ)
   STATE      on
   TYPE       DOIF
   VERSION    26444 2022-09-25 16:29:19
   eventCount 1
   READINGS:
     2023-05-15 15:49:24   Device          Multisensor4 (http://192.168.0.115:8083/fhem?detail=Multisensor4)
     2023-05-15 08:12:18   cmd             2
     2023-05-15 08:12:18   cmd_event       di_humidity_GZ (http://192.168.0.115:8083/fhem?detail=di_humidity_GZ)
     2023-05-15 08:12:18   cmd_nr          2
     2023-05-15 08:12:18   desired         62
     2023-05-15 15:49:24   e_Multisensor4_humidity 67.01
     2023-05-15 08:12:18   e_di_humidity_GZ_desired 62
     2022-10-12 16:12:12   e_di_humidity_GZ_hysterese 2
     2022-10-12 16:12:12   hysterese       2
     2022-02-19 11:23:02   mode            enabled
     2023-05-15 08:12:18   state           on
     2023-05-15 08:00:00   timer_01_c01    15.05.2023 22:00:00
     2023-05-15 08:00:00   timer_02_c01    16.05.2023 08:00:00
   Regex:
     accu:
     collect:
     cond:
       Multisensor4 (http://192.168.0.115:8083/fhem?detail=Multisensor4):
         0:
           humidity   ^Multisensor4 (http://192.168.0.115:8083/fhem?detail=Multisensor4)$:^humidity:
         1:
           humidity   ^Multisensor4 (http://192.168.0.115:8083/fhem?detail=Multisensor4)$:^humidity:
       di_humidity_GZ (http://192.168.0.115:8083/fhem?detail=di_humidity_GZ):
         0:
           desired    ^di_humidity_GZ (http://192.168.0.115:8083/fhem?detail=di_humidity_GZ)$:^desired:
           hysterese  ^di_humidity_GZ (http://192.168.0.115:8083/fhem?detail=di_humidity_GZ)$:^hysterese:
         1:
           desired    ^di_humidity_GZ (http://192.168.0.115:8083/fhem?detail=di_humidity_GZ)$:^desired:
           hysterese  ^di_humidity_GZ (http://192.168.0.115:8083/fhem?detail=di_humidity_GZ)$:^hysterese:
   attr:
     cmdState:
       0:
         off
       1:
         on
     wait:
     waitdel:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms) or (::ReadingValDoIf($hash,'Multisensor4 (http://192.168.0.115:8083/fhem?detail=Multisensor4)','humidity')<(::ReadingValDoIf($hash,'di_humidity_GZ (http://192.168.0.115:8083/fhem?detail=di_humidity_GZ)','desired')-::ReadingValDoIf($hash,'di_humidity_GZ (http://192.168.0.115:8083/fhem?detail=di_humidity_GZ)','hysterese')/2) and ::ReadingValDoIf($hash,'Kellersteckdose (http://192.168.0.115:8083/fhem?detail=Kellersteckdose)','state') ne "off")
     1          ::ReadingValDoIf($hash,'Multisensor4 (http://192.168.0.115:8083/fhem?detail=Multisensor4)','humidity')>(::ReadingValDoIf($hash,'di_humidity_GZ (http://192.168.0.115:8083/fhem?detail=di_humidity_GZ)','desired')+::ReadingValDoIf($hash,'di_humidity_GZ (http://192.168.0.115:8083/fhem?detail=di_humidity_GZ)','hysterese')/2) and ::ReadingValDoIf($hash,'Kellersteckdose (http://192.168.0.115:8083/fhem?detail=Kellersteckdose)','state') ne "on"
   days:
   do:
     0:
       0          set Kellersteckdose (http://192.168.0.115:8083/fhem?detail=Kellersteckdose) off
     1:
       0          set Kellersteckdose (http://192.168.0.115:8083/fhem?detail=Kellersteckdose) on
     2:
   helper:
     NOTIFYDEV  di_humidity_GZ (http://192.168.0.115:8083/fhem?detail=di_humidity_GZ),Multisensor4 (http://192.168.0.115:8083/fhem?detail=Multisensor4),global (http://192.168.0.115:8083/fhem?detail=global)
     event      humidity: 67.01
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev   Multisensor4 (http://192.168.0.115:8083/fhem?detail=Multisensor4)
     timerevent humidity: 67.01
     triggerDev Multisensor4 (http://192.168.0.115:8083/fhem?detail=Multisensor4)
     timerevents:
       humidity: 67.01
     timereventsState:
       humidity: 67.01
     triggerEvents:
       humidity: 67.01
     triggerEventsState:
       humidity: 67.01
   internals:
   interval:
     0          -1
     1          0
   intervalfunc:
   localtime:
     0          1684180800
     1          1684216800
   perlblock:
   readings:
     all         Multisensor4 (http://192.168.0.115:8083/fhem?detail=Multisensor4):humidity di_humidity_GZ (http://192.168.0.115:8083/fhem?detail=di_humidity_GZ):desired di_humidity_GZ (http://192.168.0.115:8083/fhem?detail=di_humidity_GZ):hysterese
   realtime:
     0          22:00:00
     1          08:00:00
   time:
     0          22:00:00
     1          08:00:00
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   trigger:
   triggertime:
     1684180800:
       localtime  1684180800
       hash:
     1684216800:
       localtime  1684216800
       hash:
   uiState:
   uiTable:
Attributes:
   cmdState   off|on
   readingList desired,hysterese
   room       Keller
   setList    desired:56,58,60,62,64,66,68,70 hysterese:2,5,10
   webCmd     desired:hysterese




In den Fall ist es jetzt so das die Steckdose aus ist. Da der Interval von 5 Stunden beendet ist. Und das Dofi heute nicht mehr an geht und morgen früh um 8 Uhr auch nicht einschaltet, weil es ja noch auf An steht.
Titel: Aw: Doif zurücksetzen
Beitrag von: rabehd am 15 Mai 2023, 16:58:53
Da steht doch nirgendwo das um 08:00 die Kellersteckdose auf on gehen soll.
Das on wird nur durch Änderung Deines Sensors ausgelöst (wenn Bedingung wahr).
Titel: Aw: Doif zurücksetzen
Beitrag von: Sebastian84 am 15 Mai 2023, 17:06:33
Ja nur wenn der Feuchtigkeitssensor sagt es wähhre zu feucht.
Titel: Aw: Doif zurücksetzen
Beitrag von: rabehd am 15 Mai 2023, 17:26:54
ZitatIch habe ein Doif das um 22 Uhr die Steckdose bis zum nächsten Tag 8 Uhr ausschaltet und um 8 Uhr wieder an.
Hast Du nicht.


ZitatIch hab eine Steckdose die nach 5 Stunden Interval sich ausschaltet.
Zwei unabhängige Automatismen sind immer problematisch.
Da Du den Zustand der Steckdose aber abfragen kannst, ist sie ja in FHEM.
Warum reagierst Du nicht auf das Event Steckdose off?

Zitatdas das Doif den Schaltzustand nicht um 22 Uhr auf cmd_2 schaltet sondern auf cmd_1 lässt
Ich lese cmd_1 wird 22 Uhr ausgeführt. cmd_2 nur wenn der Sensor sich mit erfüllter Bedingung meldet.
Titel: Aw: Doif zurücksetzen
Beitrag von: Otto123 am 15 Mai 2023, 18:13:12
Der Code sieht verdammt nach meinem Entwurf für eine Feuchtigkeitsabhängige Trocknung aus. Der ist aber dafür, dass der Trockner wirklich dann schaltet wenn das DOIF schaltet. Wieso und wo gibt es ein 5 Stunden Intervall?

Hinweise: dieses DOIF funktioniert nicht wenn jemand manuell eingreift, also die Steckdose per Hand an oder aus schaltet. Diesen Fall abzufangen habe ich mich noch nicht bemüht. :)
Titel: Aw: Doif zurücksetzen
Beitrag von: Damian am 15 Mai 2023, 18:45:00
Ich denke, du willst tagsüber entfeuchten. Dann würde ich die Logik wie bei beim Heizen entkoppeln.

Ein DOIF für die zeitliche Vorgabe der Steuerung und eins zum Regeln der Feuchte:

DOIF ([08:00-22:00]) (setreading di_humidity_GZ desired 62) DOELSE (setreading di_humidity_GZ desired 80)
und dann nur noch

DOIF ([Multisensor4:humidity]<([$SELF:desired]-[$SELF:hysterese]/2) and [?Kellersteckdose:state] ne "off"))
(set Kellersteckdose off)
DOELSEIF ([Multisensor4:humidity]>([$SELF:desired]+[$SELF:hysterese]/2) and [?Kellersteckdose:state] ne "on")
(set Kellersteckdose on)

Titel: Aw: Doif zurücksetzen
Beitrag von: Per am 15 Mai 2023, 21:46:53
Das erste DOIF könnte man als DOIFreading machen.
Titel: Aw: Doif zurücksetzen
Beitrag von: Sebastian84 am 16 Mai 2023, 07:18:37
Danke für die schnelle Hilfe
Ich hab das jetzt getrennt voneinander gemacht. Den Interval von der Steckdose habe ich ausgestellt. Jetzt klappt das super.