Neues Feature: Durchschnitt, Median, Differenz, prozentualer Anstieg

Begonnen von Damian, 12 Januar 2019, 23:18:58

Vorheriges Thema - Nächstes Thema

Damian

Zitat von: cwagner am 03 Februar 2019, 07:24:01
Vielen Dank, Damian, da habe ich wieder eine Menge gelernt, was mich weiterbringt. Ich habe Deinen Ratschlag folgend dann mal das kleine Vergleichs-Doif genommen und auf die Messwerte gelegt, die aktuell in größeren Abständen extreme Spitzen haben, die meine Steuerung sehr stark hochschaukeln würden.

Da sind Deine Aussagen dann grafisch sehr plakativ belegt. Sehr auffällig ist auch die zeitliche Verschiebung der eingeebneten Spitzen.

Herzliche Grüße

Christian

Ich nehme an, dass die rote Kurve die Originalwerte sind und die gelbe med20.

Das sieht mir aber nicht nach Ausreißern aus, sondern nach einem kontinuierlichen Anstieg, den du ebnen willst. In diesem Fall würde ich nicht den Median nehmen, der ja nur extreme Werte entfernt, sondern den Durchschnitt avg.

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

Loki

Ich wollte ein bisschen mit den neuen Features herumspielen und habe mir mal folgendes DOIF gebaut:
Internals:
   DEF        ([":^measured-temp",0:diff]>0.1)
( {Log 1, "ACHTUNG! $DEVICE: temp steigt! avg: [$DEVICE:measured-temp:avg] med: [$DEVICE:measured-temp:med] diff: [$DEVICE:measured-temp:diff] inc: [$DEVICE:measured-temp:inc]"})

DOELSEIF ([":^measured-temp",0:diff]<0.1)
( {Log 1, "ACHTUNG! $DEVICE: temp sinkt! avg: [$DEVICE:measured-temp:avg] med: [$DEVICE:measured-temp:med] diff: [$DEVICE:measured-temp:diff] inc: [$DEVICE:measured-temp:inc]"})

   FUUID      5c584550-f33f-a31c-6ce0-db61cd1082209d8b
   MODEL      FHEM
   NAME       DOIF_test
   NR         902
   NTFY_ORDER 50-DOIF_test
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2019-02-04 21:17:56   Device          KUECHE.klima_Climate
     2019-02-04 21:17:56   cmd             1
     2019-02-04 21:17:56   cmd_event       KUECHE.klima_Climate
     2019-02-04 21:17:56   cmd_nr          1
     2019-02-04 21:17:05   mode            enabled
     2019-02-04 21:17:56   state           cmd_1
   Regex:
     accu:
       $DEVICE:
         accu:
           measured-temp ^$DEVICE$:^measured-temp:
       ERIK.heizung:
         accu:
           measured-temp ^ERIK.heizung$:^measured-temp:
       ERIK.heizung_Clima:
         accu:
           measured-temp ^ERIK.heizung_Clima$:^measured-temp:
       KUECHE.klima_Climate:
         accu:
           measured-temp ^KUECHE.klima_Climate$:^measured-temp:
       WOHN.SOFA.heizung:
         accu:
           measured-temp ^WOHN.SOFA.heizung$:^measured-temp:
     cond:
       :
         0:
           ":^measured-temp" :^measured-temp
         1:
           ":^measured-temp" :^measured-temp
   accu:
     $DEVICE measured-temp:
       dim        2
       value:
     ERIK.heizung measured-temp:
       dim        2
       value:
     ERIK.heizung_Clima measured-temp:
       dim        2
       value:
     KUECHE.klima_Climate measured-temp:
       dim        2
       value:
     WOHN.SOFA.heizung measured-temp:
       dim        2
       value:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::EventDoIf('',$hash,'^measured-temp',0,'[^\:]*: (.*)','','0:diff')>0.1
     1          ::EventDoIf('',$hash,'^measured-temp',0,'[^\:]*: (.*)','','0:diff')<0.1
   devices:
   do:
     0:
       0           {Log 1, "ACHTUNG! $DEVICE: temp steigt! avg: [$DEVICE:measured-temp:avg] med: [$DEVICE:measured-temp:med] diff: [$DEVICE:measured-temp:diff] inc: [$DEVICE:measured-temp:inc]"}
     1:
       0           {Log 1, "ACHTUNG! $DEVICE: temp sinkt! avg: [$DEVICE:measured-temp:avg] med: [$DEVICE:measured-temp:med] diff: [$DEVICE:measured-temp:diff] inc: [$DEVICE:measured-temp:inc]"}
     2:
   helper:
     event      measured-temp: 21.9
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   KUECHE.klima_Climate
     timerevent measured-temp: 21.9
     triggerDev KUECHE.klima_Climate
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: KUECHE.klima_Climate
       state: cmd_1
     timerevents:
       desired-temp: 5.0
       humidity: 42
       measured-temp: 21.9
       T: 21.9 desired: 5.0
     timereventsState:
       desired-temp: 5.0
       humidity: 42
       measured-temp: 21.9
       state: T: 21.9 desired: 5.0
     triggerEvents:
       desired-temp: 5.0
       humidity: 42
       measured-temp: 21.9
       T: 21.9 desired: 5.0
     triggerEventsState:
       desired-temp: 5.0
       humidity: 42
       measured-temp: 21.9
       state: T: 21.9 desired: 5.0
   internals:
   itimer:
   readings:
   trigger:
   uiState:
   uiTable:
Attributes:
   DbLogExclude .*
   do         always


Im Log kommt dann Folgendes an:


2019.02.04 21:17:56 1 : ACHTUNG! KUECHE.klima_Climate: temp steigt! avg: 21.9 med: 21.9 diff: 0 inc: 0
2019-02-04 21:17:56 DOIF DOIF_test cmd_nr: 1
2019-02-04 21:17:56 DOIF DOIF_test cmd: 1
2019-02-04 21:17:56 DOIF DOIF_test cmd_event: KUECHE.klima_Climate
2019-02-04 21:17:56 DOIF DOIF_test cmd_1
2019-02-04 21:17:56 CUL_HM KUECHE.klima_Climate desired-temp: 5.0
2019-02-04 21:17:56 CUL_HM KUECHE.klima_Climate humidity: 42
2019-02-04 21:17:56 CUL_HM KUECHE.klima_Climate measured-temp: 21.9
2019-02-04 21:17:56 CUL_HM KUECHE.klima_Climate T: 21.9 desired: 5.0


"DIFF" ist eigentlich immer 0, aber trotzdem triggert das DOIF.
Was läuft da schief?
Habe ich was übersehen?

Damian

Die neuen Features funktionieren nur auf konkrete Readings siehe Syntax im ersten Post und nicht auf allgemeine Event-Abfragen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Morgennebel

Läuft bei mir prima, damit entfällt für mich das "gleitende Mittelwert" aus dem Wiki.

Ich setze es bei der Steuerung meines Fußboden-Mischers ein:


Internals:
   DEF        ([1W_HWR.FussbodenMischer_Vorlauf:temperature:med5] < 22 and [RP_FussbodenPumpe_Sw] eq "on")
   (set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]+1)})      ## Cmd 1: Schnell oeffnen
DOELSEIF ([1W_HWR.FussbodenMischer_Vorlauf:temperature:med5] < 26 and [RP_FussbodenPumpe_Sw] eq "on")
   (set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]+1)})      ## Cmd 2: Ganz langsam oeffnen
DOELSEIF ([1W_HWR.FussbodenMischer_Vorlauf:temperature:med5] < 30 and [RP_FussbodenPumpe_Sw] eq "on")
   (set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]+1)})      ## Cmd 3: Noch ein bisschen
DOELSEIF ([1W_HWR.FussbodenMischer_Vorlauf:temperature:med5] < 33 and [RP_FussbodenPumpe_Sw] eq "on")
   (set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]+1)})      ## Cmd 4: Noch ein bisschen
DOELSEIF ([1W_HWR.FussbodenMischer_Vorlauf:temperature:med5] > 40)
   (set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]-1)})      ## Cmd 5: Viel zu heiss, schnell zu
DOELSEIF ([1W_HWR.FussbodenMischer_Vorlauf:temperature:med5] > 39)
   (set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]-1)})      ## Cmd 6: Viel zu heiss, schnell zu
DOELSEIF ([1W_HWR.FussbodenMischer_Vorlauf:temperature:med5] > 38)
   (set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]-1)})      ## Cmd 7: Zu heiss, schnell zu
DOELSEIF ([03:50])
   (set SM_Fussbodenmischer calibrate, set SM_Fussbodenmischer reset)  ## Cmd 8: Calibrieren fuer Tagprogramm
DOELSEIF ([04:00])
   (set SM_Fussbodenmischer 40)                                        ## Cmd 9: Headstart, Ende der Nachtabsenkung
   FUUID      5c59701c-f33f-9a7b-8505-03f23afcd7562e8f
   MODEL      FHEM
   NAME       DI_MischerCommands
   NR         69
   NTFY_ORDER 50-DI_MischerCommands
   STATE      cmd_7
   TYPE       DOIF
   READINGS:
     2019-02-06 09:39:45   Device          1W_HWR.FussbodenMischer_Vorlauf
     2019-02-06 08:44:46   cmd             7
     2019-02-06 08:44:46   cmd_event       1W_HWR.FussbodenMischer_Vorlauf
     2019-02-06 08:44:46   cmd_nr          7
     2019-02-06 09:39:45   e_1W_HWR.FussbodenMischer_Vorlauf_temperature 36.87
     2019-02-06 09:39:45   e_RP_FussbodenPumpe_Sw_STATE on
     2019-02-05 16:53:13   mode            enabled
     2019-02-06 08:44:46   state           cmd_7
     2019-02-06 03:50:00   timer_01_c08    07.02.2019 03:50:00
     2019-02-06 04:00:00   timer_02_c09    07.02.2019 04:00:00
     2019-02-06 08:44:46   wait_timer      no timer
   Regex:
     accu:
       1W_HWR.FussbodenMischer_Vorlauf:
         accu:
           temperature ^1W_HWR.FussbodenMischer_Vorlauf$:^temperature:
   accu:
     1W_HWR.FussbodenMischer_Vorlauf temperature:
       dim        5
       value:
         36.81
         36.87
         36.87
         36.93
         36.87
   attr:
     cmdState:
     cmdpause:
       60
       120
       360
       480
       60
       180
       300
       0
       0
     wait:
       0:
         180
       1:
         240
       2:
         360
       3:
         600
       4:
         90
       5:
         180
       6:
         420
       7:
         0
       8:
         0
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'1W_HWR.FussbodenMischer_Vorlauf','temperature','','med5') < 22 and ::InternalDoIf($hash,'RP_FussbodenPumpe_Sw','STATE') eq "on"
     1          ::ReadingValDoIf($hash,'1W_HWR.FussbodenMischer_Vorlauf','temperature','','med5') < 26 and ::InternalDoIf($hash,'RP_FussbodenPumpe_Sw','STATE') eq "on"
     2          ::ReadingValDoIf($hash,'1W_HWR.FussbodenMischer_Vorlauf','temperature','','med5') < 30 and ::InternalDoIf($hash,'RP_FussbodenPumpe_Sw','STATE') eq "on"
     3          ::ReadingValDoIf($hash,'1W_HWR.FussbodenMischer_Vorlauf','temperature','','med5') < 33 and ::InternalDoIf($hash,'RP_FussbodenPumpe_Sw','STATE') eq "on"
     4          ::ReadingValDoIf($hash,'1W_HWR.FussbodenMischer_Vorlauf','temperature','','med5') > 40
     5          ::ReadingValDoIf($hash,'1W_HWR.FussbodenMischer_Vorlauf','temperature','','med5') > 39
     6          ::ReadingValDoIf($hash,'1W_HWR.FussbodenMischer_Vorlauf','temperature','','med5') > 38
     7          ::DOIF_time_once($hash,0,$wday)
     8          ::DOIF_time_once($hash,1,$wday)
   days:
   devices:
     0           1W_HWR.FussbodenMischer_Vorlauf RP_FussbodenPumpe_Sw
     1           1W_HWR.FussbodenMischer_Vorlauf RP_FussbodenPumpe_Sw
     2           1W_HWR.FussbodenMischer_Vorlauf RP_FussbodenPumpe_Sw
     3           1W_HWR.FussbodenMischer_Vorlauf RP_FussbodenPumpe_Sw
     4           1W_HWR.FussbodenMischer_Vorlauf
     5           1W_HWR.FussbodenMischer_Vorlauf
     6           1W_HWR.FussbodenMischer_Vorlauf
     all         1W_HWR.FussbodenMischer_Vorlauf RP_FussbodenPumpe_Sw
   do:
     0:
       0          set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]+1)}
     1:
       0          set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]+1)}
     2:
       0          set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]+1)}
     3:
       0          set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]+1)}
     4:
       0          set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]-1)}
     5:
       0          set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]-1)}
     6:
       0          set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]-1)}
     7:
       0          set SM_Fussbodenmischer calibrate, set SM_Fussbodenmischer reset
     8:
       0          set SM_Fussbodenmischer 40
     9:
   helper:
     event      temperature: 36.87
     globalinit 1
     last_timer 2
     sleepdevice 1W_HWR.FussbodenMischer_Vorlauf
     sleepsubtimer -1
     sleeptimer -1
     timerdev   1W_HWR.FussbodenMischer_Vorlauf
     timerevent temperature: 38.12
     triggerDev 1W_HWR.FussbodenMischer_Vorlauf
     DOIF_eventas:
       cmd_nr: 7
       cmd: 7
       cmd_event: 1W_HWR.FussbodenMischer_Vorlauf
       state: cmd_7
     timerevents:
       temperature: 38.12
     timereventsState:
       temperature: 38.12
     triggerEvents:
       temperature: 36.87
     triggerEventsState:
       temperature: 36.87
   internals:
     0           RP_FussbodenPumpe_Sw:STATE
     1           RP_FussbodenPumpe_Sw:STATE
     2           RP_FussbodenPumpe_Sw:STATE
     3           RP_FussbodenPumpe_Sw:STATE
     all         RP_FussbodenPumpe_Sw:STATE
   interval:
   intervalfunc:
   itimer:
   localtime:
     0          1549507800
     1          1549508400
   readings:
     0           1W_HWR.FussbodenMischer_Vorlauf:temperature
     1           1W_HWR.FussbodenMischer_Vorlauf:temperature
     2           1W_HWR.FussbodenMischer_Vorlauf:temperature
     3           1W_HWR.FussbodenMischer_Vorlauf:temperature
     4           1W_HWR.FussbodenMischer_Vorlauf:temperature
     5           1W_HWR.FussbodenMischer_Vorlauf:temperature
     6           1W_HWR.FussbodenMischer_Vorlauf:temperature
     all         1W_HWR.FussbodenMischer_Vorlauf:temperature
   realtime:
     0          03:50:00
     1          04:00:00
   time:
     0          03:50:00
     1          04:00:00
   timeCond:
     0          7
     1          8
   timer:
     0          0
     1          0
   timers:
     7           0
     8           1
   trigger:
   triggertime:
     1549507800:
       localtime  1549507800
       hash:
     1549508400:
       localtime  1549508400
       hash:
   uiState:
   uiTable:
Attributes:
   cmdpause   60:120:360:480:60:180:300:0:0
   do         always
   room       R_HWR,SYS_Events
   verbose    0
   wait       180:240:360:600:90:180:420:0:0


und würde als einzigen Wunsch äußern, daß ich gerne den "Funktionswert" als zusätzliches Reading hätte. Also in meinem Fall den

1W_HWR.FussbodenMischer_Vorlauf:temperature:med5

Wert als Reading, um diesen mit den "normalen" Wert besser vergleichen und zu visualisieren.

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Damian

Zitat von: Morgennebel am 06 Februar 2019, 09:42:47
Läuft bei mir prima, damit entfällt für mich das "gleitende Mittelwert" aus dem Wiki.

Ich setze es bei der Steuerung meines Fußboden-Mischers ein:


Internals:
   DEF        ([1W_HWR.FussbodenMischer_Vorlauf:temperature:med5] < 22 and [RP_FussbodenPumpe_Sw] eq "on")
   (set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]+1)})      ## Cmd 1: Schnell oeffnen
DOELSEIF ([1W_HWR.FussbodenMischer_Vorlauf:temperature:med5] < 26 and [RP_FussbodenPumpe_Sw] eq "on")
   (set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]+1)})      ## Cmd 2: Ganz langsam oeffnen
DOELSEIF ([1W_HWR.FussbodenMischer_Vorlauf:temperature:med5] < 30 and [RP_FussbodenPumpe_Sw] eq "on")
   (set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]+1)})      ## Cmd 3: Noch ein bisschen
DOELSEIF ([1W_HWR.FussbodenMischer_Vorlauf:temperature:med5] < 33 and [RP_FussbodenPumpe_Sw] eq "on")
   (set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]+1)})      ## Cmd 4: Noch ein bisschen
DOELSEIF ([1W_HWR.FussbodenMischer_Vorlauf:temperature:med5] > 40)
   (set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]-1)})      ## Cmd 5: Viel zu heiss, schnell zu
DOELSEIF ([1W_HWR.FussbodenMischer_Vorlauf:temperature:med5] > 39)
   (set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]-1)})      ## Cmd 6: Viel zu heiss, schnell zu
DOELSEIF ([1W_HWR.FussbodenMischer_Vorlauf:temperature:med5] > 38)
   (set SM_Fussbodenmischer {([SM_Fussbodenmischer:position]-1)})      ## Cmd 7: Zu heiss, schnell zu
DOELSEIF ([03:50])
   (set SM_Fussbodenmischer calibrate, set SM_Fussbodenmischer reset)  ## Cmd 8: Calibrieren fuer Tagprogramm
DOELSEIF ([04:00])
...


und würde als einzigen Wunsch äußern, daß ich gerne den "Funktionswert" als zusätzliches Reading hätte. Also in meinem Fall den

1W_HWR.FussbodenMischer_Vorlauf:temperature:med5

Wert als Reading, um diesen mit den "normalen" Wert besser vergleichen und zu visualisieren.

Danke, -MN

Die Vorgehensweise ist in diesem Fall eine Andere.

Du definierst für [1W_HWR.FussbodenMischer_Vorlauf:temperature:med5] ein DOIF_Reading (so wie im ersten Post) und benutzt nur noch diesen im DOIF.

Damit ist der bereinigte Wert sichtbar, die Angaben in der Bedingung sind kürzer und der hohe Rechenaufwand für den Median wird nur einmal, statt mehrfach durchgeführt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Morgennebel

Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Morgennebel

Hi Damian,


ich habe eine dbLog-Anweisung der Form:

./db.conf .*:(temperature|desired-temp|measured-temp|humidity|ValvePosition|dewpoint|on|off|position|cond|hmTraffic|motion|motionCount|motionDuration|noMotion|energy|energyCalc|energyOffset|power|gasCnt|gasCntCalc|gasPower|Diesel|SuperE5|AVG\sT|FussbodenMischer_VorlaufMED).*

d.h. beliebige Geräte, aber nur die angegebenen Readings. Mich interessiert das FussbodenMischer_VorlaufMED-Reading ganz am Ende, daß ein med10-DOIF-Reading ist.

attr DI_MischerCommands DOIF_Readings FussbodenMischer_VorlaufMED:[1W_HWR.FussbodenMischer_Vorlauf:temperature:med10]


Leidert triggert das dbLog nicht:

MariaDB [DB_FHEMLOG]> select * from history where DEVICE="%MED%";
Empty set (0.00 sec)



Unterstützen die neuen Funktionen überhaupt das Loggen mit dbLog (d.h. liegt der Fehler eher irgendwo anders bei mir)?

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Damian

DOIF_Readings triggern nur intern und produzieren keine Events nach außen.

Wenn das Reading Events produzieren soll, so bietet sich der Perl-Modus an:

define bereinigte_Readings DOIF {set_Reading("FussbodenMischer_VorlaufMED",[1W_HWR.FussbodenMischer_Vorlauf:temperature:med10],1}

Dieser ist allerdings nicht mit dem FHEM-Modus kombinierbar. Natürlich kann man statt über DOIF_Readings auf  [bereinigte_Readings:FussbodenMischer_VorlaufMED] im anderen DOIF darauf zugreifen und es auch loggen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Bedingt durch die neuen Features steigt offenbar der Bedarf nach Events (zwecks Protokollierung) bei DOIF_Readings.

Ich habe ein neues Attribut definiert namens event_Readings. Dieses hat die gleiche Syntax wie DOIF_Readings. Der Unterschied besteht darin, dass event_Readings im Gegensatz zu DOIF_Readings jedes mal Events produziert. event_Readings kann aber auch das eigene DOIF-Device triggern, kümmert sich jedoch im Gegensatz zu DOIF_Readings nicht um den Zustand der Readings  (DOIF_Readings triggert nur, wenn sich der Zustand des definierten Readings ändert). Das kann bei Bedarf bei event_Readings über das FHEM-Attribut event-on-change-reading angepasst werden.

Bsp.

define di DOIF ([$SELF:tempMed] < 0) (set frost on)

attr di event_Readings tempMed:[ausssen:temperature:med3]



Die bereinigte Temperatur in di:tempMed  lässt sich hierbei loggen.

PS: Sind Events des definierten Readings nicht erforderlich und die Triggerung des eigenen DOIF-Moduls nur bei Änderung interessant, dann sollte man zum Attribut DOIF_Readings greifen, da es durch die interne Triggerung des Moduls weniger das System belastet als event_Readings.


Version 0.9 im ersten Post.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Morgennebel

Dankeschön! Super Feature!

Läßt sich damit auch das nicht mehr gepflegte https://wiki.fhem.de/wiki/VALVES VALVES-Modul ersetzen?

Ein DOIF, daß über alle Heizungen den Durchschnitt der Ventilöffnungen ermittelt?

Als über die Heizungsthermostaten:

HM_EG.ARBEITZ_HeizungLinks_Clima
HM_EG.ESSZMMR_HeizungLinks_Clima
HM_EG.ESSZMMR_HeizungMitte_Clima
HM_EG.ESSZMMR_HeizungRechts_Clima
HM_EG.WINTERG_Heizung_Clima
...

den Durchschnitt des Readings ValvePosition?

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Damian

Die neuen Features funktionieren nur auf konkrete Readings. Jedes Reading welches man anpassen will, muss einmal angegeben werden.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

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

Moeti

Hallo Damian!
Die neuen Features sind toll!
Danke für deine Arbeit!

lG
Michael
RaspberryPi 2, FHEM, Homematic, CUL, HMLAN, homebridge, Sonoff/Tasmota, Shelly, mqtt2
WH1080 per pywws, RaspiCam, Kostal PIKO 5.5,
Hörmann Supramatic mit UAP1, HM-SCI-3-FM, HM-LC-SW4-BA-PCB
SmartPi, Automower, Nissan Leaf/Carwings

Peter aus Calw

Hallo guten Abend zusammen,
nachdem ich im Log von meinem Aussen-Sensor festgestellt habe, dass der "humidity" Wert sich bei Regen
z.B. innerhalb ca. 5 Minuten von 61 auf 65 % erhöht, möchte ich mit diesem DOIF :

define Regen DOIF ([TH_Aussentemp:humidity:inc4] > 0.04 and [FS_Bad:state] eq "open") (set regen Fenster_zu) DOELSE (set regen Fenster_ok)

bei einem geöffneten Dachfenster eine Meldung an mein FTUI-Tablet senden.
Die neue Möglichkeit in DOIF sollte das mit diesem DOIF ja ermöglichen, mir ist nur nicht klar wie ich die Zeit bestimme,
in der die Änderung erfolgen muss ?
Würde mich über einen Tipp freuen.
LG Peter aus Calw 

Damian

Zitat von: Peter aus Calw am 24 März 2019, 21:41:47
Hallo guten Abend zusammen,
nachdem ich im Log von meinem Aussen-Sensor festgestellt habe, dass der "humidity" Wert sich bei Regen
z.B. innerhalb ca. 5 Minuten von 61 auf 65 % erhöht, möchte ich mit diesem DOIF :

define Regen DOIF ([TH_Aussentemp:humidity:inc4] > 0.04 and [FS_Bad:state] eq "open") (set regen Fenster_zu) DOELSE (set regen Fenster_ok)

bei einem geöffneten Dachfenster eine Meldung an mein FTUI-Tablet senden.
Die neue Möglichkeit in DOIF sollte das mit diesem DOIF ja ermöglichen, mir ist nur nicht klar wie ich die Zeit bestimme,
in der die Änderung erfolgen muss ?
Würde mich über einen Tipp freuen.
LG Peter aus Calw

Die Zeitspanne ergibt sich aus dem zeitlichen Abstand der gesendeten Events des Devices. Konkret, wenn TH_Aussentemp:humidity z. B. alle 6 Minuten sendet, dann liegt das viertletzte vor 3 x 6 = 18 Minuten
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF