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
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
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
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
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