Wenn Temperatur erreicht dann schalten

Begonnen von Mellowback, 09 August 2020, 16:43:24

Vorheriges Thema - Nächstes Thema

Mellowback

Hallo zusammen,

ich möchte das bei zwei Temperaturen geschalten wird, leider funktioniert es nicht.
Was ist falsch ?


define  SolarHeizungssteuerung DOIF ([04:00-20:00] and [TemperatursensorSolar_T1:temperature] > 71.5) (set Solarheizung on;; sleep 5400;; set Solarheizung off) DOELSEIF ([TemperatursensorSolar_T1:temperature] < 48) (set Solarheizung off)


Vorab Danke für die Hilfe

Otto123

Hi,

Du solltest dazu besser ein list SolarHeizungssteuerung  liefern, da sieht man mehr.

Den waittimer sollest Du entweder mit on-for-timer machen, oder wenn das Gerät das nicht unterstützt mit dem wait attribute, in etwa so:
define  SolarHeizungssteuerung DOIF ([04:00-20:00] and [TemperatursensorSolar_T1:temperature] > 71.5) (set Solarheizung on)(set Solarheizung off) DOELSEIF ([TemperatursensorSolar_T1:temperature] < 48) (set Solarheizung off)
attr SolarHeizungssteuerung wait 0,5400:0


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

Mellowback

Hallo Otto,

hier das Ergebnis aus dem List:



Internals:
   DEF        ([04:00-20:00] and [TemperatursensorSolar_T1:temperature] > 71.5) (set Solarheizung on; sleep 5400; set Solarheizung off) DOELSEIF ([TemperatursensorSolar_T1:temperature] < 48) (set Solarheizung off)
   FUUID      5ec13e64-f33f-2b59-0b95-a7fe451e5817b7f8
   MODEL      FHEM
   NAME       SolarHeizungssteuerung
   NOTIFYDEV  global,TemperatursensorSolar_T1
   NR         571
   NTFY_ORDER 50-SolarHeizungssteuerung
   STATE      cmd_1
   TYPE       DOIF
   VERSION    22195 2020-06-18 16:38:55
   READINGS:
     2020-08-09 18:21:26   Device          TemperatursensorSolar_T1
     2020-08-08 15:52:56   cmd             1
     2020-08-08 15:52:56   cmd_event       TemperatursensorSolar_T1
     2020-08-08 15:52:56   cmd_nr          1
     2020-08-09 18:21:26   e_TemperatursensorSolar_T1_temperature 71.4
     2020-08-08 15:48:50   mode            enabled
     2020-08-08 15:52:56   state           cmd_1
     2020-08-09 03:01:40   timer_01_c01    09.08.2020 04:00:00
     2020-08-09 03:01:40   timer_02_c01    09.08.2020 20:00:00
   Regex:
     accu:
     cond:
       TemperatursensorSolar_T1:
         0:
           temperature ^TemperatursensorSolar_T1$:^temperature:
         1:
           temperature ^TemperatursensorSolar_T1$:^temperature:
   attr:
     waitdel:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'TemperatursensorSolar_T1','temperature') > 71.5
     1          ::ReadingValDoIf($hash,'TemperatursensorSolar_T1','temperature') < 48
   days:
   do:
     0:
       0          set Solarheizung on; sleep 5400; set Solarheizung off
     1:
       0          set Solarheizung off
     2:
   helper:
     DEVFILTER  ^global$|^TemperatursensorSolar_T1$
     NOTIFYDEV  global|TemperatursensorSolar_T1
     event      T: 71.4,temperature: 71.4
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev   TemperatursensorSolar_T1
     timerevent T: 71.7,temperature: 71.7
     triggerDev TemperatursensorSolar_T1
     timerevents:
       T: 71.7
       temperature: 71.7
     timereventsState:
       state: T: 71.7
       temperature: 71.7
     triggerEvents:
       T: 71.4
       temperature: 71.4
     triggerEventsState:
       state: T: 71.4
       temperature: 71.4
   internals:
   interval:
     0          -1
     1          0
   intervalfunc:
   intervaltimer:
   localtime:
     0          1596938400
     1          1596996000
   perlblock:
   readings:
     all         TemperatursensorSolar_T1:temperature
   realtime:
     0          04:00:00
     1          20:00:00
   time:
     0          04:00:00
     1          20:00:00
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   trigger:
   triggertime:
     1596996000:
       localtime  1596996000
       hash:
   uiTable:


amenomade

Mit
(set Solarheizung on, sleep 5400; set Solarheizung off)
sollte es funktionieren
Aber die Lösung von Otto ist besser
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Mellowback

Hatte das Ganze auch ohne sleep probiert, also nur set Solarheizung on, hat auch nur bedingt funktioniert.
Was komisch ist, wenn ich def ändere also beispielsweise eine andere Temperatur hinterlege, funktioniert es.
Am nächsten Tag funktioniert es nicht mehr.

amenomade

Dir fehlt wahrscheinlich ein attr do always.
Ich vermute dein Ding geht im Moment nur wenn inzwischen die Temperatur unter 48 kommt, weil das eine Statusänderung verursacht.

Du hast leider das Attributes Teil vom "list" gekürzt
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Deckoffizier

Hallo,

eventuell attr do always ?

Mfg

Hans-Jürgen
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,2 1Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Aeotec USB Dongle Z-Wave Plus

Mellowback


amenomade

#8
Entweder Attribut do always (siehe CommandRef)
Oder ein leeres DOELSE (siehe auch CommandRef).

Das 2. wäre sogar mMn hier besser.

https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Damian

do always ist bei zyklisch sendenden Sensoren hier TemperatursensorSolar_T1:temperature "verboten"
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Mellowback


amenomade

Bin nicht Damian, aber:
bei zyklisch sendenden Sensoren wie Temperatursensoren führt ein do always dazu, dass bei jeder Temperaturänderung wiederum ein Befehl, hier "set Solarheizung on", geschickt wird. Das ist in meisten Fällen nicht gewünscht, deswegen sagt er "verboten".


Ich empfehle:

1 - CommandRef lesen, um zu verstehen wie ein DOIF funktioniert. Mindestens den von mir verlinkten Absatz, wo die Thematik "do always und DOELSE" erklärt wird.

2 - leeres DOELSE
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Mellowback

Habe nochmal verschiedene Dinge probiert allerdings ohne Erfolg.
Kann es sein das ich genau das EVENT mit 71.5 benötige damit geschalten wird ?

Evntuell gibt es auch ein anderen Lösungsansatz für das was ich hier umsetzen möchte.
Würde mich freuen wenn Ihr mir etwas postet.

Danke

amenomade

Zitat von: Mellowback am 22 August 2020, 17:13:14
Kann es sein das ich genau das EVENT mit 71.5 benötige damit geschalten wird ?
Nein, du brauchst nur ein leeres DOELSE.
Wenn das nicht geht, bitte erklären was nicht geht, und "list" vom DOIF im "falschen" Zustand posten
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Mellowback

Ab 71.5 grad soll die Pumpe eingeschaltet werden. Leider schaltet er nicht obwohl schon 75 grad und mehr.



Internals:
   DEF        ([04:00-20:00] and [TemperatursensorSolar_T1:Temperature] > 71) (set Solarheizung on) DOELSEIF ([TemperatursensorSolar_T1:Temperature] < 48) (set Solarheizung off)
   FUUID      5ec13e64-f33f-2b59-0b95-a7fe451e5817b7f8
   MODEL      FHEM
   NAME       SolarHeizungssteuerung
   NOTIFYDEV  TemperatursensorSolar_T1,global
   NR         570
   NTFY_ORDER 50-SolarHeizungssteuerung
   STATE      initialized
   TYPE       DOIF
   VERSION    22588 2020-08-12 19:25:15
   READINGS:
     2020-08-22 17:39:49   cmd             0
     2020-08-22 17:39:49   mode            enabled
     2020-08-22 17:39:49   state           initialized
     2020-08-23 03:01:17   timer_01_c01    23.08.2020 04:00:00
     2020-08-23 03:01:17   timer_02_c01    23.08.2020 20:00:00
     2020-08-23 04:00:00   warning         condition c01: Argument "" isn't numeric in numeric gt (>)

   Regex:
     accu:
     cond:
       TemperatursensorSolar_T1:
         0:
           Temperature ^TemperatursensorSolar_T1$:^Temperature:
         1:
           Temperature ^TemperatursensorSolar_T1$:^Temperature:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'TemperatursensorSolar_T1','Temperature') > 71
     1          ::ReadingValDoIf($hash,'TemperatursensorSolar_T1','Temperature') < 48
   days:
   do:
     0:
       0          set Solarheizung on
     1:
       0          set Solarheizung off
     2:
   helper:
     DEVFILTER  ^global$|^TemperatursensorSolar_T1$
     NOTIFYDEV  global|TemperatursensorSolar_T1
     event      timer_1
     globalinit 1
     last_timer 2
     sleeptimer -1
     triggerDev
     triggerEvents:
       timer_1
     triggerEventsState:
       timer_1
   interval:
     0          -1
     1          0
   intervalfunc:
   intervaltimer:
   localtime:
     0          1598148000
     1          1598205600
   perlblock:
   readings:
     all         TemperatursensorSolar_T1:Temperature
   realtime:
     0          04:00:00
     1          20:00:00
   time:
     0          04:00:00
     1          20:00:00
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   triggertime:
     1598205600:
       localtime  1598205600
       hash:
   uiTable:
Attributes: