Hauptmenü

Schaltet das doif so nun aus?

Begonnen von Wasserwerk33, 22 April 2019, 21:28:33

Vorheriges Thema - Nächstes Thema

Otto123

ich verstehe Deine Frage mit den 20 grad nicht. Klar kannst Du die 18 auf 20 grad ändern. Oder willst Du eine Hysterese?

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

Wasserwerk33

#16
Habe es gerade gegoogelt "Hysterese" ja genau.
Habe nun einem dummy genommen und ihn mit einem doif versehen der erst bei 20 Grad einschaltet. Geht dieses auch in einem doif? Den wäre ja nun noch eins zusätzlich.
Habe was gefunden werde es erst selber versuchen. Melde mich nochmal.

Otto123

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

Wasserwerk33

#18
Hallo Leute.

Habe mich mal dem Problem meines Lüfters wieder angenommen bei dem heißen Tag heute.  8)

Habe nun die Hysterese eingefügt aber einen error Fehler. Liegt das an dem Das ich es andersherum aufgebaut habe und dann nicht dieses mit dem -1 Grad habe sondern 2 Grad + damit meine?

Internals:
   DEF        ([23:00-4:00] and [LaCrosse_0C:temperature]-[LaCrosse_23:temperature] < 2 and [LaCrosse_23:temperature] > ([$SELF:desired] 2)) (set Luefter_Ole on) (set Luefter_Ole off) DOELSEIF([LaCrosse_0C:temperature] < ([$SELF:desired])) (set Luefter_Ole off)
   FUUID      5cc0cb6b-f33f-faf7-7809-0fd5326691c8d4ec
   MODEL      FHEM
   NAME       Ole_Luefter_automatik
   NR         94
   NTFY_ORDER 50-Ole_Luefter_automatik
   STATE      initialized
   TYPE       DOIF
   VERSION    18890 2019-03-13 18:56:41
   READINGS:
     2019-06-02 17:05:46   Device          LaCrosse_0C
     2019-06-02 17:04:12   cmd             0
     2019-06-02 17:05:46   e_LaCrosse_0C_temperature 33.8
     2019-06-02 17:05:45   e_LaCrosse_23_temperature 22.9
     2019-06-02 17:05:46   error           condition c01: syntax error, 2"

     2019-06-02 17:04:12   mode            enabled
     2019-06-02 17:04:12   state           initialized
     2019-06-02 17:04:12   timer_01_c01    02.06.2019 23:00:00
     2019-06-02 17:04:12   timer_02_c01    03.06.2019 04:00:00
     2019-06-02 17:05:46   warning         condition c01: (Missing operator before 2?)

   Regex:
     accu:
   attr:
     cmdState:
       0:
         on
       1:
         off
     repeatcmd:
       7200
     wait:
       0:
         0
         3600
     waitdel:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'LaCrosse_0C','temperature')-::ReadingValDoIf($hash,'LaCrosse_23','temperature') < 2 and ::ReadingValDoIf($hash,'LaCrosse_23','temperature') > (::ReadingValDoIf($hash,'Ole_Luefter_automatik','desired') 2)
     1          ::ReadingValDoIf($hash,'LaCrosse_0C','temperature') < (::ReadingValDoIf($hash,'Ole_Luefter_automatik','desired'))
   days:
   devices:
     0           LaCrosse_0C LaCrosse_23 Ole_Luefter_automatik
     1           LaCrosse_0C Ole_Luefter_automatik
     all         LaCrosse_0C LaCrosse_23 Ole_Luefter_automatik
   do:
     0:
       0          set Luefter_Ole on
       1          set Luefter_Ole off
     1:
       0          set Luefter_Ole off
     2:
   helper:
     event      battery: ok,temperature: 33.8,humidity: 29
     globalinit 1
     last_timer 2
     sleeptimer -1
     triggerDev LaCrosse_0C
     triggerEvents:
       battery: ok
       temperature: 33.8
       humidity: 29
     triggerEventsState:
       battery: ok
       temperature: 33.8
       humidity: 29
   internals:
   interval:
     0          -1
     1          0
   intervalfunc:
   itimer:
   localtime:
     0          1559509200
     1          1559527200
   readings:
     0           LaCrosse_0C:temperature LaCrosse_23:temperature Ole_Luefter_automatik:desired
     1           LaCrosse_0C:temperature Ole_Luefter_automatik:desired
     all         LaCrosse_0C:temperature LaCrosse_23:temperature Ole_Luefter_automatik:desired
   realtime:
     0          23:00:00
     1          04:00:00
   time:
     0          23:00:00
     1          4:00
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   trigger:
   triggertime:
     1559509200:
       localtime  1559509200
       hash:
     1559527200:
       localtime  1559527200
       hash:
   uiState:
   uiTable:
Attributes:
   cmdState   on|off
   readingList desired
   repeatcmd  7200
   room       Ole
   setList    18
   wait       0,3600
   webCmd     desired


Danke für eure Hilfe

Nachtrag Fehler gefunden war in meiner setList

Per

Zitat von: Wasserwerk33 am 02 Juni 2019, 17:12:06
... > ([$SELF:desired] 2)) ...
Copy-Fehler?

Falls LaCrosse_23:temperature auch negative Temperaturen annehmen kann, solltest du ihm ein Leerzeichen nach dem Minus spendieren!

Wasserwerk33

@ Per so? > ([$SELF:desired] - 2))

Ich habe ejar das Problem es schalter auch wenn das Zimmer 23 Grad hat und Aussentemperatur bei 25 Grad liegt. Bei 24.9 geht er nicht an. Wo ist den mein Fehler?

Per

Zitat von: Wasserwerk33 am 03 Juni 2019, 14:51:00so?
Weiss ich nicht, aber irgend ein Zeichen sollte dazwischen. Sonst wird es mit hoher Wahrscheinlichkeit ein Syntaxfehler.

Wasserwerk33

#22
Okay ja habe eins dazwischen. Schaltet nun auch.

Nur nicht den Lüfter. Das doif wird geschaltet.  Und wenn ich cmd2 schälte spring er auch sofort um nur wiegesagt der Lüfter wird nicht angeschaltet. Drücke ich dem on Button wird der Lüfter angeschaltet. Mmhh

([LaCrosse_0C:temperature]-[LaCrosse_23:temperature] < 2 and [LaCrosse_23:temperature] > ([$SELF:desired] +2)) (set Luefter_Ole on) (set Luefter_Ole off) DOELSE([LaCrosse_0C:temperature] < ([$SELF:desired])) (set Luefter_Ole off)

Wo ist der Fehler?

Otto123

Hi,

Du solltest besser ein list vom DOIF posten.

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

Wasserwerk33

Sry ja kein Problem. Habe es den Abend weiter probiert aber es klappt nicht habe es schon mitsandten Temperaturen versucht. Das wo ich nun hintergekommen bin ist das wenn ich die desired von 18 auf 21 hochstelle, stellt sich der Lüfter aus. Aber wieso springt er vor der 2 Grad Temperatur Unterschied von Schlafzimmer zu Außentemperatur an.

Internals:
   DEF        ([LaCrosse_0C:temperature]-[LaCrosse_23:temperature] < 2 and ([LaCrosse_23:temperature] > [Ole_Luefter_automatik:desired] +2)) (set Luefter_Ole on) DOELSEIF ([LaCrosse_0C:temperature]-[LaCrosse_23:temperature] > 0.1 or ([LaCrosse_0C:temperature] < [Ole_Luefter_automatik:desired])) (set Luefter_Ole off)
   FUUID      5cc0cb6b-f33f-faf7-7809-0fd5326691c8d4ec
   MODEL      FHEM
   NAME       Ole_Luefter_automatik
   NR         94
   NTFY_ORDER 50-Ole_Luefter_automatik
   STATE      on
   TYPE       DOIF
   VERSION    18890 2019-03-13 18:56:41
   READINGS:
     2019-06-03 22:56:24   Device          LaCrosse_23
     2019-06-03 22:53:15   cmd             1
     2019-06-03 22:53:15   cmd_event       LaCrosse_0C
     2019-06-03 22:53:15   cmd_nr          1
     2019-06-03 22:52:58   desired         19
     2019-06-03 22:56:23   e_LaCrosse_0C_temperature 20.9
     2019-06-03 22:56:24   e_LaCrosse_23_temperature 22.8
     2019-06-03 22:53:10   mode            enabled
     2019-06-03 22:53:15   state           on
   Regex:
     accu:
   attr:
     cmdState:
       0:
         on
       1:
         off
     repeatcmd:
     wait:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'LaCrosse_0C','temperature')-::ReadingValDoIf($hash,'LaCrosse_23','temperature') < 2 and (::ReadingValDoIf($hash,'LaCrosse_23','temperature') > ::ReadingValDoIf($hash,'Ole_Luefter_automatik','desired') +2)
     1          ::ReadingValDoIf($hash,'LaCrosse_0C','temperature')-::ReadingValDoIf($hash,'LaCrosse_23','temperature') > 0.1 or (::ReadingValDoIf($hash,'LaCrosse_0C','temperature') < ::ReadingValDoIf($hash,'Ole_Luefter_automatik','desired'))
   devices:
     0           LaCrosse_0C LaCrosse_23 Ole_Luefter_automatik
     1           LaCrosse_0C LaCrosse_23 Ole_Luefter_automatik
     all         LaCrosse_0C LaCrosse_23 Ole_Luefter_automatik
   do:
     0:
       0          set Luefter_Ole on
     1:
       0          set Luefter_Ole off
     2:
   helper:
     event      battery: ok,temperature: 22.8,humidity: 63
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   LaCrosse_23
     timerevent battery: ok,temperature: 22.8,humidity: 63
     triggerDev LaCrosse_23
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: LaCrosse_0C
       state: on
     timerevents:
       battery: ok
       temperature: 22.8
       humidity: 63
     timereventsState:
       battery: ok
       temperature: 22.8
       humidity: 63
     triggerEvents:
       battery: ok
       temperature: 22.8
       humidity: 63
     triggerEventsState:
       battery: ok
       temperature: 22.8
       humidity: 63
   internals:
   itimer:
   readings:
     0           LaCrosse_0C:temperature LaCrosse_23:temperature Ole_Luefter_automatik:desired
     1           LaCrosse_0C:temperature LaCrosse_23:temperature Ole_Luefter_automatik:desired
     all         LaCrosse_0C:temperature LaCrosse_23:temperature Ole_Luefter_automatik:desired
   trigger:
   uiState:
   uiTable:
Attributes:
   cmdState   on|off
   readingList desired
   room       Ole
   setList    desired:17,18,19,20,21
   verbose    5
   webCmd     desired

Per

Zitat von: Wasserwerk33 am 03 Juni 2019, 23:00:13Aber wieso springt er vor der 2 Grad Temperatur Unterschied von Schlafzimmer zu Außentemperatur an.
Nimm DOIF_Readings zur Fehlersuche!
Und <Enter> zur Formatierung:
(([LaCrosse_0C:temperature] - [LaCrosse_23:temperature]) < 2 and ([LaCrosse_23:temperature] > ([Ole_Luefter_automatik:desired] + 2)))
(set Luefter_Ole on)
DOELSEIF ((([LaCrosse_0C:temperature] - [LaCrosse_23:temperature]) > 0.1) or ([LaCrosse_0C:temperature] < [Ole_Luefter_automatik:desired]))
(set Luefter_Ole off)

Sinnvoll ist auch, sich für eine Schreibweise (a-b > c) oder (a + c > b) zu entscheiden, macht das Überprüfen im Kopf leichter und bringt manchmal sogar Vorteile beim Zusammenfassen:
([$SELF:LC_0C23] < 2 and [$SELF:LC_23de] > 2)
(set Luefter_Ole on)
DOELSEIF ([$SELF:LC_0C23] > 0.1 or [$SELF:LC_23de] < 0)
(set Luefter_Ole off)

attr Ole_Luefter_automatik DOIF_Readings LC_0C23:([LaCrosse_0C:temperature] - [LaCrosse_23:temperature]),LC_23de:([LaCrosse_23:temperature] - [Ole_Luefter_automatik:desired])


Außerdem solltest du die Richtungen der Vergleiche prüfen: < 2 und > 0.1 ergibt einen gemeinsamen Bereich von 1.9. Ist das gewollt?

Wasserwerk33

Hi Per

Lacrosse 0C = Aussenthermeter
Lacrosse 23 = Kinderzimmer

Denke ich habe dann in dem Unterem eine Falsche Schreibweise wollte nämlich das sich der Lüfter ausschaltet wenn er über die Kinderzimmertemperatur geht und nicht die Wärme Luft reinkommt. Deswegen hatte ich dort > 0.1 gestellt und das obere soll heißen wenn ich das Richtig gemacht habe, das ich eine Temperatur von 18 Grad einstelle und bei 20 Grad soll der Lüfter dann anspringen aber erst wenn die Außentemperatur unter die Temperatur vom kinderzimmer fällt.

Per

Zitat von: Wasserwerk33 am 04 Juni 2019, 17:08:33eine Falsche Schreibweise
Was durch die neue "Sortierung" schneller auffällt und leichter zu überwachen ist.

Wasserwerk33

Hi Per

Danke es läuft. So wie es soll. Zumindestens zur Zeit. Ist ja auch warm in den Zimmern. Mal schauen ob es auch klappt wenn wir der eingestellten Temperatur kommen


Wasserwerk33

#29
Hi

Also sobald ich an die 18+2 Grad komme wo er eigentlich anschalten soll springt er immer an uns aus.
20.0 aus
20.1 wieder an.
Er kühlt garnicht bis 18 Grad runter.  Hat jemand eine Idee wo das Problem liegt?

Internals:
   DEF        (([22:00-18:00]) and ([LaCrosse_0C:temperature] - [LaCrosse_23:temperature]) < - 0.5
and ([LaCrosse_23:temperature] > ([Ole_Luefter_automatik:desired] + 2)))
(set Luefter_Ole on)
DOELSEIF ((([LaCrosse_0C:temperature] - [LaCrosse_23:temperature]) > 0.5) or ([LaCrosse_0C:temperature] < [Ole_Luefter_automatik:desired]))
(set Luefter_Ole off)
   FUUID      5cc0cb6b-f33f-faf7-7809-0fd5326691c8d4ec
   MODEL      FHEM
   NAME       Ole_Luefter_automatik
   NR         93
   NTFY_ORDER 50-Ole_Luefter_automatik
   STATE      disabled
   TYPE       DOIF
   VERSION    18890 2019-03-13 18:56:41
   READINGS:
     2019-06-09 05:23:47   Device          LaCrosse_23
     2019-06-04 18:20:38   LC_0C23         -3.9
     2019-06-04 18:20:38   LC_23de         5.5
     2019-06-10 22:45:32   cmd             1
     2019-06-10 22:45:32   cmd_event       Ole_Luefter_automatik
     2019-06-10 22:45:32   cmd_nr          1
     2019-06-09 05:05:26   desired         18
     2019-06-09 05:23:41   e_LaCrosse_0C_temperature 11
     2019-06-09 05:23:47   e_LaCrosse_23_temperature 20
     2019-06-09 05:04:43   e_Ole_Luefter_automatik_desired 18
     2019-06-10 22:45:44   last_cmd        on
     2019-06-10 22:45:44   mode            disabled
     2019-06-10 22:45:44   state           disabled
     2019-06-10 18:00:00   timer_01_c01    10.06.2019 22:00:00
     2019-06-10 18:00:00   timer_02_c01    11.06.2019 18:00:00
     2019-06-10 22:45:10   wait_timer      no timer
   Regex:
   attr:
     cmdState:
       0:
         on
       1:
         off
     repeatcmd:
     wait:
     waitdel:
   condition:
     0          (::DOIF_time($hash,0,1,$wday,$hms)) and (::ReadingValDoIf($hash,'LaCrosse_0C','temperature') - ::ReadingValDoIf($hash,'LaCrosse_23','temperature')) < - 0.5  and (::ReadingValDoIf($hash,'LaCrosse_23','temperature') > (::ReadingValDoIf($hash,'Ole_Luefter_automatik','desired') + 2))
     1          ((::ReadingValDoIf($hash,'LaCrosse_0C','temperature') - ::ReadingValDoIf($hash,'LaCrosse_23','temperature')) > 0.5) or (::ReadingValDoIf($hash,'LaCrosse_0C','temperature') < ::ReadingValDoIf($hash,'Ole_Luefter_automatik','desired'))
   days:
   devices:
     0           LaCrosse_0C LaCrosse_23 Ole_Luefter_automatik
     1           LaCrosse_0C LaCrosse_23 Ole_Luefter_automatik
     all         LaCrosse_0C LaCrosse_23 Ole_Luefter_automatik
   do:
     0:
       0          set Luefter_Ole on
     1:
       0          set Luefter_Ole off
     2:
   helper:
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev   
     timerevent
     timerevents
     timereventsState
     triggerDev
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: Ole_Luefter_automatik
       state: on
   internals:
   interval:
     0          -1
     1          0
   intervalfunc:
   intervaltimer:
   itimer:
   localtime:
     0          1560196800
     1          1560268800
   perlblock:
   readings:
     0           LaCrosse_0C:temperature LaCrosse_23:temperature Ole_Luefter_automatik:desired
     1           LaCrosse_0C:temperature LaCrosse_23:temperature Ole_Luefter_automatik:desired
     all         LaCrosse_0C:temperature LaCrosse_23:temperature Ole_Luefter_automatik:desired
   realtime:
     0          22:00:00
     1          18:00:00
   time:
     0          22:00:00
     1          18:00:00
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   triggertime:
     1560268800:
       localtime  1560268800
       hash:
   uiState:
   uiTable:
Attributes:
   cmdState   on|off
   readingList desired
   room       Ole
   setList    desired:17,18,19,20,21
   webCmd     desired