Hauptmenü

DOIF Temperaturüberwachung

Begonnen von Leon_Emm, 18 April 2020, 15:06:00

Vorheriges Thema - Nächstes Thema

Leon_Emm

Hallo liebe Forengemeine,

ich bin wieder dabei, an FHEM zu basteln, aber scheitere mal wieder an der Umsetzung.

Ziel: Temperaturüberwachung vom Thermostat: Das Thermostat aktualisiert sich alle 15 Minuten. Die Temperatur wird als Zahl in einen File-Log gespeichert. Dort sollen die letzten beiden Werte überprüft werden und einen Anruf triggern, wenn die letzten beiden Werte unter 15 liegen. Das File Log, UserReading und die SIP-Funktion habe ich schon umgesetzt. Leider weiß ich nicht, wie man diese Werte im File-Log prüfen kann. Ich hoffe, mir kann hier jemand helfen.

Device-List Thermostat
Internals:
   CFGFN     
   DEF        fb1:11959_0009784 actuator,tempSensor
   FUUID      5e9af6cd-f33f-4070-09c6-fa18afcde7fa58b6
   IODev      fb1
   LASTInputDev fb1
   MSGCNT     6
   NAME       FBDECT_fb1_11959_0009784
   NR         83
   STATE      desired-temp: 17.5 C
   TYPE       FBDECT
   fb1_MSGCNT 6
   fb1_TIME   2020-04-18 15:02:26
   id         11959_0009784
   props      actuator,tempSensor
   READINGS:
     2020-04-18 15:02:26   AIN             11959 0009784
     2020-04-18 15:02:26   FBNAME          Heizung Bad
     2020-04-18 15:02:26   FBPROP          actuator,tempSensor
     2020-04-18 15:02:26   FBTYPE          Comet DECT
     2020-04-18 15:02:26   ID              16
     2020-04-18 15:02:26   battery         50 %
     2020-04-18 15:02:26   batteryPercent  50
     2020-04-18 15:02:26   batteryState    ok
     2020-04-18 15:02:26   batterylow      0
     2020-04-18 15:02:26   day-temp        21.5 C
     2020-04-18 15:02:26   desired-temp    17.5 C
     2020-04-18 15:02:26   devicelock      no
     2020-04-18 15:02:26   errorcode       noError (0)
     2020-04-18 15:02:26   fwversion       03.54
     2020-04-18 15:02:26   holidayactive   no
     2020-04-18 15:02:26   locked          no
     2020-04-18 15:02:26   nextPeriodStart 2020-04-18 20:00:00
     2020-04-18 15:02:26   nextPeriodTemp  21.5 C
     2020-04-18 15:02:26   night-temp      17.5 C
     2020-04-18 15:02:26   present         yes
     2020-04-18 15:02:26   state           desired-temp: 17.5 C
     2020-04-18 15:02:26   summeractive    no
     2020-04-18 15:02:26   temp            18.5
     2020-04-18 15:02:26   tempadjust      -3.0 C
     2020-04-18 15:02:26   temperature     18.5 C (measured)
     2020-04-18 15:02:26   windowopenactiv no
Attributes:
   IODev      fb1
   alias      Heizung Bad
   event-min-interval power:120
   room       Heizung
   userReadings temp:temperature:.* { ReadingsNum("FBDECT_fb1_11959_0009784","temperature","none") }


Device List File-Log
Internals:
   CFGFN     
   DEF        ./log/FBDECT_fb1_11959_0009784-%Y.log FBDECT_fb1_11959_0009784:temp:.*
   FD         16
   FUUID      5e9af6cd-f33f-4070-b003-ec66e470bb0be288
   NAME       FileLog_FBDECT_fb1_11959_0009784
   NOTIFYDEV  FBDECT_fb1_11959_0009784
   NR         84
   NTFY_ORDER 50-FileLog_FBDECT_fb1_11959_0009784
   REGEXP     FBDECT_fb1_11959_0009784:temp:.*
   STATE      active
   TYPE       FileLog
   currentlogfile ./log/FBDECT_fb1_11959_0009784-2020.log
   logfile    ./log/FBDECT_fb1_11959_0009784-%Y.log
   READINGS:
     2020-04-18 15:02:26   linesInTheFile  3
   pos:
Attributes:
   nrarchive  3
   room       Logfiles


Liebe Grüße und vielen Dank im Vorraus

Leon

kotaro

Hallo,

vielleicht ist das Modul readingshistory was für dich: https://fhem.de/commandref.html#readingsHistory

Dort kann man wohl mehrer ältere Werte Speichern...

Alternativ kannst du natürlich mit average in DOIF arbeiten: https://forum.fhem.de/index.php/topic,95759.0.html
Hierbei kannst du ja 2 Werte nutzen, und wenn der Mittelwert <15 und der aktuelle Werte auch unter 15 ist, werden wohl die beiden letzten <15 gewesen sein... oder du arbeitest mit den prozentualen Anstieg, wobei ich nicht weiß, ob der zwischen positiv und negativ unterscheidet..

Leon_Emm

Danke für den Tipp, aber der Forenthread ist mit dem Wikt wiedersprüchlich. Wie müsste mein DoIF aussehen?

so?
Internals:
   CFGFN     
   DEF        ([zahlentest:state:avg3] < 15) (set ergebnis on)
   FUUID      5e9b1b0c-f33f-4070-04f0-cba72c1ecda64294
   MODEL      FHEM
   NAME       test
   NOTIFYDEV  zahlentest,global
   NR         507
   NTFY_ORDER 50-test
   STATE      cmd_1
   TYPE       DOIF
   VERSION    21224 2020-02-18 18:45:49
   READINGS:
     2020-04-18 17:30:41   Device          zahlentest
     2020-04-18 17:28:18   avg3            33
     2020-04-18 17:30:41   cmd             1
     2020-04-18 17:30:41   cmd_event       zahlentest
     2020-04-18 17:30:41   cmd_nr          1
     2020-04-18 17:30:41   e_zahlentest_state 10
     2020-04-18 17:30:15   mode            enabled
     2020-04-18 17:30:41   state           cmd_1
   Regex:
     accu:
       zahlentest:
         accu:
           state      ^zahlentest$:^state:
     cond:
       zahlentest:
         0:
           state      ^zahlentest$:^state:
   accu:
     zahlentest state:
       dim        3
       value:
         33
         0
         10
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'zahlentest','state','','avg3') < 15
   do:
     0:
       0          set ergebnis on
     1:
   helper:
     DEVFILTER  ^global$|^zahlentest$
     NOTIFYDEV  global|zahlentest
     event      10
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   zahlentest
     timerevent 10
     triggerDev zahlentest
     DOIF_eventa:
       cmd_nr: 1
       cmd: 1
       cmd_event: zahlentest
       cmd_1
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: zahlentest
       state: cmd_1
     timerevents:
       10
     timereventsState:
       state: 10
     triggerEvents:
       10
     triggerEventsState:
       state: 10
   internals:
   readings:
     all         zahlentest:state
   trigger:
   uiState:
   uiTable:
Attributes:


Oder brauche ich da noch das Attribut wie im Forenthread
avg3:[Zahlentest:state:avg3]

Wenn ja, muss ich dann das DEF        ([zahlentest:state:avg3] < 15) (set ergebnis on) ändern?

Vielen Dank für die schnelle Hilfe!

amenomade

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