Wenn Temperatur erreicht dann schalten

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

Vorheriges Thema - Nächstes Thema

amenomade

#15
Zitat     2020-08-23 04:00:00   warning         condition c01: Argument "" isn't numeric in numeric gt (>)

[TemperatursensorSolar_T1:Temperature] liefert keinen Wert. Schreibfehler? Klein/gross Buchstaben Problem? Wenn ich mit deinem ersten "list" vergleiche, war temperature klein geschrieben, jetzt gross.

Ich sehe immer noch kein 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

Ok habe wieder temperature klein geschrieben.
Ergebnis:



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-23 18:15:08   cmd             0
     2020-08-23 18:15:08   mode            enabled
     2020-08-23 18:15:08   state           initialized
     2020-08-23 18:15:08   timer_01_c01    24.08.2020 04:00:00
     2020-08-23 18:15:08   timer_02_c01    23.08.2020 20:00:00
   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
     globalinit 1
     last_timer 2
     sleeptimer -1
   interval:
     0          -1
     1          0
   intervalfunc:
   localtime:
     0          1598234400
     1          1598205600
   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:
     1598234400:
       localtime  1598234400
       hash:
   uiTable:
Attributes:
   room       Technikraum



Meinst du ich soll aus dem DOELSEIF ein DOELSE machen ?

amenomade

Nein, ich meine Du schreibst noch ein DOELSE danach am Ende.
Aber er sollte zumindest das erste Mal schalten. Zeig mal bitte ein "list TemperatursensorSolar_T1"
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

List schaut wie folgt aus:



Internals:
   DEF        6C27E501
   FUUID      5eb7ae51-f33f-2b59-6429-12cd166abc9566ee
   NAME       TemperatursensorSolar_T1
   NOTIFYDEV  global
   NR         564
   NTFY_ORDER 50-TemperatursensorSolar_T1
   STATE      Temperatur: 52.8 °C
   TYPE       CUL_HM
   chanNo     01
   device     TemperatursensorSolar
   READINGS:
     2020-08-23 19:06:21   state           T: 52.8
     2020-08-23 19:06:21   temperature     52.8
   helper:
     peerFriend
     peerOpt    p:THSensor
     regLst     
     cmds:
       TmplKey    :no:1598144476.02832
       TmplTs     1598144476.02832
       cmdKey     1:0:0::TemperatursensorSolar:00A8:01:
       cmdLst:
         burstXmit  noArg
         clear      [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
         getConfig  noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6) [-peerChn-]
         peerBulk   -peer1,peer2,..- [({set}|unset)]
         peerChan   0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
         regBulk    -list-.-peerChn- -addr1:data1- -addr2:data2-...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         tplDel     -tplDel-
       lst:
         condition  slider,0,1,255
         peer       
         peerOpt   
         tplDel     
       rtrvLst:
         cmdList    [({short}|long)]
         deviceInfo [({short}|long)]
         param      -param-
         reg        -addr- -list- [-peerChn-]
         regList    noArg
         regTable   noArg
         regVal     -addr- -list- [-peerChn-]
         saveConfig [-filename-]
         tplInfo    noArg
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     role:
       chn        1
     tmpl:
Attributes:
   model      HM-WDS30-OT2-SM
   peerIDs    00000000,
   room       Homekit,Technikraum
   stateFormat Temperatur: temperature °C



Wie würde der Code mit dem DOELSE dann ausschauen ?

Otto123

Für heute wird doch die Zeit nicht mehr wahr?
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

amenomade

#20
Wie gesagt, einfach DOELSE am Ende

Vorher:
([04:00-20:00] and [TemperatursensorSolar_T1:temperature] > 71) (set Solarheizung on) DOELSEIF ([TemperatursensorSolar_T1:temperature] < 48) (set Solarheizung off)


Nachher:
([04:00-20:00] and [TemperatursensorSolar_T1:temperature] > 71) (set Solarheizung on) DOELSEIF ([TemperatursensorSolar_T1:temperature] < 48) (set Solarheizung off) DOELSE


Zitat von: Otto123 am 23 August 2020, 19:24:14
Für heute wird doch die Zeit nicht mehr wahr?
Klar, timer01_c01 liegt in der Zukunft. Das ist aber nur der nächste Trigger, und er sollte trotzdem schalten, wenn temperatur sich meldet.
Temperatur ist aber im Moment zwischen 71 und 48. Dann ist nichts wahr, und ohne DOELSE geht er nicht in cmd_3
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Otto123

Zitat von: amenomade am 23 August 2020, 19:57:42
er sollte trotzdem schalten, wenn temperatur sich meldet.
Das wundert mich auch, ich sehe keinen Temperaturtriggerevent e_TemperatursensorSolar_T1_temperature!
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

Also haben wir doch kein Event ?
Ich werde morgen den Wert auf 61 setzen und Euch Feedback ob morgen geschalten wurde.

Danke

Otto123

Der Sensor meldet per default ca. alle  2,5 min. Also Eventmonitor auf und Du weißt in 2,5 min Bescheid!  :o
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


amenomade

Jepp, alles ok jetzt. (ein "list" ist immer besser als ein Bild)
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

Die aktuelle Definition ist nicht 100% sauber. Mit DOELSE wird bei 71 und 48 Grad ggf. zwischen zwei Zuständen getoggelt. Wann soll genau Off-Befehl außerhalb der Zeitspanne kommen?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Mellowback

Außerhalb der Zeit soll garnicht geschalten werden.

Damian

Zitat von: Mellowback am 23 August 2020, 23:31:49
Außerhalb der Zeit soll garnicht geschalten werden.
Wird aber unter 48 Grad.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF