DOIF reagiert nicht auf average?

Begonnen von arthur_dent_2015, 15 Juli 2019, 11:12:34

Vorheriges Thema - Nächstes Thema

arthur_dent_2015

Hallo,

ich habe mir, für meine Bewässerungssteuerung, 2 DOIF's gebastelt. Eins dient zur Erfassung von Regenmengen, eins für Temperatur. 3 Wetterstationen sind Grundlage dafür und sollen mit dem DOIF gemittelt werden. Da, im Gegensatz zur Beschreibung, netatmo die maximale Tagestemperatur nicht über 24 Stunden ermittelt habe ich average zur Hilfe genommen. Das DOIF für Regen funktioniert problemlos, das für die Temperatur schaltet nur um Mitternacht :(


Internals:
   DEF        ([xyzStr:temperature_max_day] or [abcStr:temperature_max_day] or [cdeStr:temperature_max_day]) (setreading Pumpe max_day_temp {([xyzStr:temperature_max_day]+[abcStr:temperature_max_day]+[cdeStr:temperature_max_day])/3})
   FUUID      5d28a8c9-f33f-a0da-5239-1db01d66f7e58aab
   MODEL      FHEM
   NAME       max_day_temp_avg
   NR         229
   NTFY_ORDER 50-max_day_temp_avg
   STATE      cmd_1
   TYPE       DOIF
   VERSION    19786 2019-07-05 21:47:08
   READINGS:
     2019-07-15 10:31:08   Device          cdeStr
     2019-07-15 00:01:10   cmd             1
     2019-07-15 00:01:10   cmd_event       cdeStr
     2019-07-15 00:01:10   cmd_nr          1
     2019-07-15 00:01:06   e_xyzStr_temperature_max_day 15.5
     2019-07-15 00:01:08   e_abcStr_temperature_max_day 15.5
     2019-07-15 00:01:10   e_cdeStr_temperature_max_day 16.0
     2019-07-12 17:37:58   mode            enabled
     2019-07-15 00:01:10   state           cmd_1
   Regex:
     accu:
   condition:
     0          ::ReadingValDoIf($hash,'xyzStr','temperature_max_day') or ::ReadingValDoIf($hash,'abcStr','temperature_max_day') or ::ReadingValDoIf($hash,'cdeStr','temperature_max_day')
   devices:
     0           xyzStr abcStr cdeStr
     all         xyzStr abcStr cdeStr
   do:
     0:
       0          setreading Pumpe max_day_temp {([xyzStr:temperature_max_day]+[abcStr:temperature_max_day]+[cdeStr:temperature_max_day])/3}
     1:
   helper:
     event      temperature: 15.21
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev cdeStr
     triggerEvents:
       temperature: 15.21
     triggerEventsState:
       temperature: 15.21
   internals:
   itimer:
   perlblock:
   readings:
     0           xyzStr:temperature_max_day abcStr:temperature_max_day cdeStr:temperature_max_day
     all         xyzStr:temperature_max_day abcStr:temperature_max_day cdeStr:temperature_max_day
   trigger:
   uiState:
   uiTable:
Attributes:
   do         always
   room       Wetter
   



Internals:
   CHANGED   
   DEF        PUBLIC 0.1234,1.2345
   FUUID      5ceb4535-f33f-a0da-d4e2-02b71f6d8841736a
   IODev      netatmo_Wetter
   LAST_POLL  2019-07-15 10:26:17
   Lat        0.1234
   Lon        1,2345
   NAME       xyzStr
   NOTIFYDEV  global
   NR         204
   NTFY_ORDER 50-xyzStr
   Rad        0.02
   STATE      TempMax: 15.5 Rain: 0.05
   SUBTYPE    PUBLIC
   TYPE       netatmo
   altitude   60.50
   location   0.1234,1.2345
   model      WEATHERMAP
   openRequests 0
   stations_indoor 14
   stations_outdoor 14
   stations_rain 6
   stations_wind 2
   status     ok
   CHANGETIME:
     2019-07-15 10:26:17
   READINGS:
     2019-07-15 10:31:06   active          ok
     2019-07-15 10:25:56   gust            8.0
     2019-07-15 10:25:56   gust_angle      112
     2019-07-15 10:25:56   gust_max        8
     2019-07-15 10:25:56   gust_min        8
     2019-07-15 10:25:55   humidity        76.21
     2019-07-15 10:25:55   humidity_max    80
     2019-07-15 10:25:55   humidity_min    70
     2019-07-15 10:26:17   pressure        1017.89
     2019-07-15 10:26:17   pressure_max    1020.9
     2019-07-15 10:26:17   pressure_min    1016
     2019-07-15 10:24:59   rain            0.00
     2019-07-15 10:24:59   rain_day        0.05
     2019-07-15 10:24:59   rain_day_max    0.101
     2019-07-15 10:24:59   rain_day_min    0
     2019-07-15 10:24:59   rain_hour       0.00
     2019-07-15 10:24:59   rain_hour_max   0
     2019-07-15 10:24:59   rain_hour_min   0
     2019-07-15 10:24:59   rain_max        0
     2019-07-15 10:24:59   rain_min        0
     2019-07-15 10:25:55   temperature     15.04
     2019-07-15 10:31:06   temperature_avg_day 14.3
     2019-07-15 10:31:06   temperature_avg_month 15.7
     2019-07-15 10:31:06   temperature_cum_day 542282.25
     2019-07-15 10:31:06   temperature_cum_month 20985694.16
     2019-07-15 10:25:55   temperature_max 15.8
     2019-07-10 10:31:04   temperature_max_avg_day 14.0
     2019-07-10 10:31:04   temperature_max_avg_month 21.9
     2019-07-10 10:31:04   temperature_max_cum_day 530429
     2019-07-10 10:31:04   temperature_max_cum_month 19729809.1
     2019-07-15 00:01:06   temperature_max_day 15.5
     2019-07-10 10:31:04   temperature_max_max_day 20.3
     2019-07-09 14:37:08   temperature_max_max_month 22.9
     2019-07-10 02:37:09   temperature_max_min_day 11.8
     2019-07-10 02:37:09   temperature_max_min_month 11.8
     2019-07-12 15:31:09   temperature_max_month 26.3
     2019-07-15 10:25:55   temperature_min 14.4
     2019-07-10 10:31:04   temperature_min_avg_day 11.6
     2019-07-10 10:31:04   temperature_min_avg_month 16.0
     2019-07-10 10:31:04   temperature_min_cum_day 441113.7
     2019-07-10 10:31:04   temperature_min_cum_month 14416506.7
     2019-07-15 06:01:06   temperature_min_day 13.5
     2019-07-10 10:31:04   temperature_min_max_day 15.2
     2019-07-09 17:37:09   temperature_min_max_month 18.1
     2019-07-10 01:37:09   temperature_min_min_day 8.8
     2019-07-10 01:37:09   temperature_min_min_month 8.8
     2019-07-08 03:59:37   temperature_min_month 9.8
     2019-07-15 10:25:56   wind            2.5
     2019-07-15 10:25:56   wind_angle      38
     2019-07-15 10:25:56   wind_max        3
     2019-07-15 10:25:56   wind_min        2
   helper:
     INTERVAL   1800
     NEXT_POLL  1563181266
     last_status_store 0
Attributes:
   IODev      netatmo_Wetter
   devStateIcon .*:no-icon
   event-on-change-reading temperature,temperature_max_day,rain_day
   room       Wetter
   stateFormat TempMax: temperature_max_day Rain: rain_day
   verbose    3

Die anderen 2 Definitionen spare ich mir hier. Locations sind anonymisiert.


Internals:
   DEF        .*:temperature.*
   FUUID      5d2251dc-f33f-a0da-90b6-fd487bf27fd05764
   NAME       avg_temp
   NR         225
   NTFY_ORDER 10-avg_temp
   REGEXP     .*:temperature.*
   STATE      active
   TYPE       average
Attributes:
   room       Wetter


Liegt das Problem bei DOIF, bei average oder an mir?

Gruß
Arthur

Otto123

Hallo Arthur,

ich sag mal ja :)
ZitatCompute additional average, minimum and maximum values for current day and month.
Du verwendest ausschließlich Werte vom Modul avarage, diese Werte werden pro Tag berechnet. Offenbar macht es das Modul erst um Mitternacht, bis dahin kann sich der Max Wert für den Tag ja noch ändern.
Zwischendrin hat Dein DOIF keinen Trigger. Wann sollte es denn schalten?

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

arthur_dent_2015

Moin Otto,

ja, aber der Wert des readings ändert sich nicht nur um Mitternacht, z.B. vor ein paar Minuten

temperature_max_day 16.1 2019-07-15 12:01:06

Aber es wird wohl kein event ausgelöst, trotz event_on_change_reading :(

Gruß
Arthur

Otto123

#3
Hi,

also event-on-change-reading bedeutet nicht, das events immer erzeugt werden, sondern, das events nur erzeugt werden wenn sich der Wert wirklich ändert!
Sehen kannst Du die Events im Eventmonitor :)

Allerdings, ich sehe gerade, Du triggerst nicht auf Events: [xyzStr:temperature_max_day] das fragt einfach nur ab - ohne Bedingung, da wird nichts wahr!
Sowas würde triggern (["Str:temperature_max_day"])
https://commandref.fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events

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

arthur_dent_2015

meine Regenberechnung sieht genauso aus

Internals:
   DEF        ([abcStr:rain_day] or [defStr:rain_day] or [ghiStr:rain_day]) (setreading Pumpe max_day_rain {([abcStr:rain_day]+[defStr:rain_day]+[ghiStr:rain_day])/3})
   FUUID      5d25adce-f33f-a0da-a20f-2fc9182b15286848
   MODEL      FHEM
   NAME       max_day_rain_avg
   NR         228
   NTFY_ORDER 50-max_day_rain_avg
   STATE      cmd_1
   TYPE       DOIF
   VERSION    19786 2019-07-05 21:47:08
   READINGS:
     2019-07-15 13:12:08   Device          abcStr
     2019-07-15 04:31:07   cmd             1
     2019-07-15 04:31:07   cmd_event       abcStr
     2019-07-15 04:31:07   cmd_nr          1
     2019-07-15 04:31:07   e_abcStr_rain_day 0.05
     2019-07-15 04:01:08   e_defStr_rain_day 0.03
     2019-07-15 00:01:11   e_ghiStr_rain_day 0.00
     2019-07-10 11:21:33   mode            enabled
     2019-07-15 04:31:07   state           cmd_1
   Regex:
     accu:
   condition:
     0          ::ReadingValDoIf($hash,'abcStr','rain_day') or ::ReadingValDoIf($hash,'defStr','rain_day') or ::ReadingValDoIf($hash,'ghiStr','rain_day')
   devices:
     0           abcStr defStr ghiStr
     all         abcStr defStr ghiStr
   do:
     0:
       0          setreading Pumpe max_day_rain {([abcStr:rain_day]+[defStr:rain_day]+[ghiStr:rain_day])/3}
     1:
   helper:
     event      temperature: 17.05
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev abcStr
     triggerEvents:
       temperature: 17.05
     triggerEventsState:
       temperature: 17.05
   internals:
   itimer:
   perlblock:
   readings:
     0           abcStr:rain_day defStr:rain_day ghiStr:rain_day
     all         abcStr:rain_day defStr:rain_day ghiStr:rain_day
   trigger:
   uiState:
   uiTable:
Attributes:
   do         always
   room       Wetter

und die funzt. Ist frei nach Ereignissteuerung über Auswertung von Events. Ich lass jetzt mal den Eventmonitor mitlaufen, vielleicht steigt die maximale Tagestemperatur ja heute noch etwas...

Gruß
Arthur