DOIF bei erreichen von mehreren Temperaturen

Begonnen von Larusso, 21 November 2018, 15:51:26

Vorheriges Thema - Nächstes Thema

Per

Einfach einmalig in der Befehlszeile
setreading Sauna_Temperatur_TTS_test max 31
eingeben. Die genaue Zahl ist relativ unkritisch, sollte aber am besten ca. der aktuellen Temperatur entsprechen.

Larusso

Hallo Per,

leider brachte das setreading nicht gewünschten Erfolg und der Fehler wird weiter angezeigt. ich mache nochmal eine list vielleicht fällt dir ja noch was dazu ein.

Internals:
   CFGFN     
   DEF        ([$SELF:Temperature] >= 90 ) (set MyTTS volume 60, set MyTTS tts die Temperatur in der Sauna beträgt aktuell [ESPEasy_Sauna_Klima:Temperature] Grad Celsius bei [ESPEasy_Sauna_Klima:Humidity] Prozent Luftfeuchtigkeit,setreading $SELF max say [$EVENT])
DOELSEIF ([$SELF:Temperature] >= 80) (set MyTTS volume 60, set MyTTS tts die Temperatur in der Sauna beträgt aktuell [ESPEasy_Sauna_Klima:Temperature] Grad Celsius bei [ESPEasy_Sauna_Klima:Humidity] Prozent Luftfeuchtigkeit,setreading $SELF max say [$EVENT])
DOELSEIF ([$SELF:Temperature] >= 70) (set MyTTS volume 60, set MyTTS tts die Temperatur in der Sauna beträgt aktuell [ESPEasy_Sauna_Klima:Temperature] Grad Celsius bei [ESPEasy_Sauna_Klima:Humidity] Prozent Luftfeuchtigkeit,setreading $SELF max say [$EVENT])
DOELSEIF ([$SELF:Temperature] >= 60) (set MyTTS volume 60, set MyTTS tts die Temperatur in der Sauna beträgt aktuell [ESPEasy_Sauna_Klima:Temperature] Grad Celsius bei [ESPEasy_Sauna_Klima:Humidity] Prozent Luftfeuchtigkeit,setreading $SELF max say [$EVENT])
DOELSEIF ([$SELF:Temperature] < 40) (setreading $SELF max [$EVENT])
   MODEL      FHEM
   NAME       Sauna_Temperatur_TTS_test
   NR         2235
   NTFY_ORDER 50-Sauna_Temperatur_TTS_test
   STATE      initialize
   TYPE       DOIF
   .attraggr:
   .attrminint:
   DOIF_Readings:
     Temperature (::ReadingValDoIf($hash,'ESPEasy_Sauna_Klima','Temperature') > ::ReadingValDoIf($hash,'Sauna_Temperatur_TTS_test','max') ? ::ReadingValDoIf($hash,'ESPEasy_Sauna_Klima','Temperature') : 40)
   READINGS:
     2018-11-27 14:47:29   Device          Sauna_Temperatur_TTS_test
     2018-11-27 07:12:31   Temperarure     4
     2018-11-27 14:47:16   Temperature     40
     2018-11-27 14:47:23   e_Sauna_Temperatur_TTS_test_Temperature 40
     2018-11-27 07:21:09   error           setreading Sauna_Temperatur_TTS_test max : Usage: setreading <name> <reading> <value>
where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.

     2018-11-27 14:47:16   max             10
     2018-11-27 14:46:52   mode            enabled
     2018-11-27 14:46:52   state           initialize
   Regex:
     DOIF_Readings:
       ESPEasy_Sauna_Klima:
         Temperature:
           Temperature ^ESPEasy_Sauna_Klima$:^Temperature:
       Sauna_Temperatur_TTS_test:
         Temperature:
           max        ^Sauna_Temperatur_TTS_test$:^max:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'Sauna_Temperatur_TTS_test','Temperature') >= 90
     1          ::ReadingValDoIf($hash,'Sauna_Temperatur_TTS_test','Temperature') >= 80
     2          ::ReadingValDoIf($hash,'Sauna_Temperatur_TTS_test','Temperature') >= 70
     3          ::ReadingValDoIf($hash,'Sauna_Temperatur_TTS_test','Temperature') >= 60
     4          ::ReadingValDoIf($hash,'Sauna_Temperatur_TTS_test','Temperature') < 40
   devices:
     0           Sauna_Temperatur_TTS_test
     1           Sauna_Temperatur_TTS_test
     2           Sauna_Temperatur_TTS_test
     3           Sauna_Temperatur_TTS_test
     4           Sauna_Temperatur_TTS_test
     all         Sauna_Temperatur_TTS_test
   do:
     0:
       0          set MyTTS volume 60, set MyTTS tts die Temperatur in der Sauna beträgt aktuell [ESPEasy_Sauna_Klima:Temperature] Grad Celsius bei [ESPEasy_Sauna_Klima:Humidity] Prozent Luftfeuchtigkeit,setreading Sauna_Temperatur_TTS_test max say [$EVENT]
     1:
       0          set MyTTS volume 60, set MyTTS tts die Temperatur in der Sauna beträgt aktuell [ESPEasy_Sauna_Klima:Temperature] Grad Celsius bei [ESPEasy_Sauna_Klima:Humidity] Prozent Luftfeuchtigkeit,setreading Sauna_Temperatur_TTS_test max say [$EVENT]
     2:
       0          set MyTTS volume 60, set MyTTS tts die Temperatur in der Sauna beträgt aktuell [ESPEasy_Sauna_Klima:Temperature] Grad Celsius bei [ESPEasy_Sauna_Klima:Humidity] Prozent Luftfeuchtigkeit,setreading Sauna_Temperatur_TTS_test max say [$EVENT]
     3:
       0          set MyTTS volume 60, set MyTTS tts die Temperatur in der Sauna beträgt aktuell [ESPEasy_Sauna_Klima:Temperature] Grad Celsius bei [ESPEasy_Sauna_Klima:Humidity] Prozent Luftfeuchtigkeit,setreading Sauna_Temperatur_TTS_test max say [$EVENT]
     4:
       0          setreading Sauna_Temperatur_TTS_test max [$EVENT]
     5:
   helper:
     DOIF_Readings_events
     event      checkall
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   
     timerevent cmd_nr: 5,cmd: 5,cmd_event: set_cmd_5,error: setreading Sauna_Temperatur_TTS_test max : Usage: setreading <name> <reading> <value>
where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.
,cmd_5
     triggerDev Sauna_Temperatur_TTS_test
     DOIF_eventas:
       cmd_nr: 5
       cmd: 5
       cmd_event: set_cmd_5
       error: setreading Sauna_Temperatur_TTS_test max : Usage: setreading <name> <reading> <value>
where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.

       state: cmd_5
     timerevents:
       cmd_nr: 5
       cmd: 5
       cmd_event: set_cmd_5
       error: setreading Sauna_Temperatur_TTS_test max : Usage: setreading <name> <reading> <value>
where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.

       cmd_5
       Device: Sauna_Temperatur_TTS_test
     timereventsState:
       cmd_nr: 5
       cmd: 5
       cmd_event: set_cmd_5
       error: setreading Sauna_Temperatur_TTS_test max : Usage: setreading <name> <reading> <value>
where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.

       state: cmd_5
     triggerEvents:
       checkall
       Device: Sauna_Temperatur_TTS_test
     triggerEventsState:
       checkall
       Device: Sauna_Temperatur_TTS_test
   internals:
   itimer:
   readings:
     0           Sauna_Temperatur_TTS_test:Temperature
     1           Sauna_Temperatur_TTS_test:Temperature
     2           Sauna_Temperatur_TTS_test:Temperature
     3           Sauna_Temperatur_TTS_test:Temperature
     4           Sauna_Temperatur_TTS_test:Temperature
     all         Sauna_Temperatur_TTS_test:Temperature
   trigger:
   uiState:
   uiTable:
Attributes:
   DOIF_Readings Temperature:([ESPEasy_Sauna_Klima:Temperature] > [$SELF:max] ? [ESPEasy_Sauna_Klima:Temperature] : 40)
   alias      tts Sauna Temperatur Test
   room       00 Schneider
   verbose    3
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

Damian

Ich würde einen anderen Ansatz wählen:

defmod di_sauna DOIF init {$_grenze=90;;$_erreicht=0}\
{\
if ($_erreicht and [ESPEasy_Sauna_Klima:Temperature] < $_grenze){\
  $_grenze-=10;;\
  if ($_grenze==30){$_grenze=90};;\
  $_erreicht=0;;\
}\
if (!$_erreicht and [ESPEasy_Sauna_Klima:Temperature] > $_grenze) {\
  fhem_set"MyTTS volume 60";;\
  fhem_set"MyTTS tts die Temperatur in der Sauna beträgt aktuell".[?ESPEasy_Sauna_Klima:Temperature]."Grad Celsius bei". [?ESPEasy_Sauna_Klima:Humidity]."Prozent Luftfeuchtigkeit";;\
  $_erreicht=1;;\
}\
}


ohne Attribute.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

statt
setreading Sauna_Temperatur_TTS_test max [$EVENT]
setreading Sauna_Temperatur_TTS_test max $EVENT
:-[