hiho,
ganz lustig: ich versuche eben ein doif zu basteln, dass mir tendenzen des statistikmoduls ein wenig waf-freundlicher macht. das doif lest die werte richtig ein, zeigt sie bei seinen "e_"-readings richtig an, aber arbeitet nur mit 1 von 3 werten. was übersehe ich?
mein vorgehen war: die 1h tendenz im doif abzubilden, als das zu meiner zufriedenheit ging, hab ich die 2 und 3h stunden einfach weiter kopiert und angepasst. 2h und 3h wurden aber nie upgedated. die 2 dazugehörigen readings "wetterstation_temp_2h" und "wetterstation_temp_3h" existieren auch nur, weil ich mal die cmd_'s händisch angeworfen hab um zu sehen, obs wenigstens grundsätzlich gehen.
Internals:
DEF ( ## wetterstation 1h temperatur
[wetterstation:statTemperatureTendency1h] < 0 and [wetterstation:statTemperatureTendency1h] >= -1)
(setreading $SELF wetterstation_temp_1h leicht_fallend)
DOELSEIF
([wetterstation:statTemperatureTendency1h] < -1 and [wetterstation:statTemperatureTendency1h] >= -5)
(setreading $SELF wetterstation_temp_1h fallend)
DOELSEIF
([wetterstation:statTemperatureTendency1h] < -5)
(setreading $SELF wetterstation_temp_1h stark_fallend)
DOELSEIF
([wetterstation:statTemperatureTendency1h] == 0)
(setreading $SELF wetterstation_temp_1h gleichbleibend)
DOELSEIF
([wetterstation:statTemperatureTendency1h] > 0 and [wetterstation:statTemperatureTendency1h] <= 1)
(setreading $SELF wetterstation_temp_1h leicht_steigend)
DOELSEIF
([wetterstation:statTemperatureTendency1h] > 1 and [wetterstation:statTemperatureTendency1h] <= 5)
(setreading $SELF wetterstation_temp_1h steigend)
DOELSEIF
([wetterstation:statTemperatureTendency1h] > 5)
(setreading $SELF wetterstation_temp_1h stark_steigend)
DOELSEIF
( ## wetterstation 2h temperatur
[wetterstation:statTemperatureTendency2h] < 0 and [wetterstation:statTemperatureTendency2h] >= -1)
(setreading $SELF wetterstation_temp_2h leicht_fallend)
DOELSEIF
([wetterstation:statTemperatureTendency2h] < -1 and [wetterstation:statTemperatureTendency2h] >= -5)
(setreading $SELF wetterstation_temp_2h fallend)
DOELSEIF
([wetterstation:statTemperatureTendency2h] < -5)
(setreading $SELF wetterstation_temp_2h stark_fallend)
DOELSEIF
([wetterstation:statTemperatureTendency2h] == 0)
(setreading $SELF wetterstation_temp_2h gleichbleibend)
DOELSEIF
([wetterstation:statTemperatureTendency2h] > 0 and [wetterstation:statTemperatureTendency2h] <= 1)
(setreading $SELF wetterstation_temp_2h leicht_steigend)
DOELSEIF
([wetterstation:statTemperatureTendency2h] > 1 and [wetterstation:statTemperatureTendency2h] <= 5)
(setreading $SELF wetterstation_temp_2h steigend)
DOELSEIF
([wetterstation:statTemperatureTendency2h] > 5)
(setreading $SELF wetterstation_temp_2h stark_steigend)
DOELSEIF
( ## wetterstation 3h temperatur
[wetterstation:statTemperatureTendency3h] < 0 and [wetterstation:statTemperatureTendency3h] >= -1)
(setreading $SELF wetterstation_temp_3h leicht_fallend)
DOELSEIF
([wetterstation:statTemperatureTendency3h] < -1 and [wetterstation:statTemperatureTendency3h] >= -5)
(setreading $SELF wetterstation_temp_3h fallend)
DOELSEIF
([wetterstation:statTemperatureTendency3h] < -5)
(setreading $SELF wetterstation_temp_3h stark_fallend)
DOELSEIF
([wetterstation:statTemperatureTendency3h] == 0)
(setreading $SELF wetterstation_temp_3h gleichbleibend)
DOELSEIF
([wetterstation:statTemperatureTendency3h] > 0 and [wetterstation:statTemperatureTendency3h] <= 1)
(setreading $SELF wetterstation_temp_3h leicht_steigend)
DOELSEIF
([wetterstation:statTemperatureTendency3h] > 1 and [wetterstation:statTemperatureTendency3h] <= 5)
(setreading $SELF wetterstation_temp_3h steigend)
DOELSEIF
([wetterstation:statTemperatureTendency3h] > 5)
(setreading $SELF wetterstation_temp_3h stark_steigend)
FUUID 5d0ca257-f33f-0f9e-5d58-727fec0badcd2fe8
MODEL FHEM
NAME doif_trends
NR 311
NTFY_ORDER 50-doif_trends
STATE cmd_6
TYPE DOIF
VERSION 19303 2019-05-01 08:47:16
READINGS:
2019-06-23 11:22:17 Device wetterstation
2019-06-23 10:59:55 cmd 6
2019-06-23 10:59:55 cmd_event wetterstation
2019-06-23 10:59:55 cmd_nr 6
2019-06-23 10:59:55 e_wetterstation_statTemperatureTendency1h +2.9
2019-06-23 10:59:55 e_wetterstation_statTemperatureTendency2h +4.8
2019-06-23 10:59:55 e_wetterstation_statTemperatureTendency3h +6.0
2019-06-22 13:09:35 mode enabled
2019-06-23 10:59:55 state cmd_6
2019-06-23 10:59:55 wetterstation_temp_1h steigend
2019-06-22 13:07:44 wetterstation_temp_2h gleichbleibend
2019-06-22 13:09:53 wetterstation_temp_3h gleichbleibend
Regex:
accu:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency1h') < 0 and ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency1h') >= -1
1 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency1h') < -1 and ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency1h') >= -5
10 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency2h') == 0
11 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency2h') > 0 and ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency2h') <= 1
12 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency2h') > 1 and ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency2h') <= 5
13 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency2h') > 5
14 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency3h') < 0 and ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency3h') >= -1
15 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency3h') < -1 and ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency3h') >= -5
16 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency3h') < -5
17 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency3h') == 0
18 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency3h') > 0 and ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency3h') <= 1
19 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency3h') > 1 and ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency3h') <= 5
2 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency1h') < -5
20 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency3h') > 5
3 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency1h') == 0
4 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency1h') > 0 and ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency1h') <= 1
5 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency1h') > 1 and ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency1h') <= 5
6 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency1h') > 5
7 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency2h') < 0 and ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency2h') >= -1
8 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency2h') < -1 and ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency2h') >= -5
9 ::ReadingValDoIf($hash,'wetterstation','statTemperatureTendency2h') < -5
devices:
0 wetterstation
1 wetterstation
10 wetterstation
11 wetterstation
12 wetterstation
13 wetterstation
14 wetterstation
15 wetterstation
16 wetterstation
17 wetterstation
18 wetterstation
19 wetterstation
2 wetterstation
20 wetterstation
3 wetterstation
4 wetterstation
5 wetterstation
6 wetterstation
7 wetterstation
8 wetterstation
9 wetterstation
all wetterstation
do:
0:
0 setreading doif_trends wetterstation_temp_1h leicht_fallend
1:
0 setreading doif_trends wetterstation_temp_1h fallend
10:
0 setreading doif_trends wetterstation_temp_2h gleichbleibend
11:
0 setreading doif_trends wetterstation_temp_2h leicht_steigend
12:
0 setreading doif_trends wetterstation_temp_2h steigend
13:
0 setreading doif_trends wetterstation_temp_2h stark_steigend
14:
0 setreading doif_trends wetterstation_temp_3h leicht_fallend
15:
0 setreading doif_trends wetterstation_temp_3h fallend
16:
0 setreading doif_trends wetterstation_temp_3h stark_fallend
17:
0 setreading doif_trends wetterstation_temp_3h gleichbleibend
18:
0 setreading doif_trends wetterstation_temp_3h leicht_steigend
19:
0 setreading doif_trends wetterstation_temp_3h steigend
2:
0 setreading doif_trends wetterstation_temp_1h stark_fallend
20:
0 setreading doif_trends wetterstation_temp_3h stark_steigend
21:
3:
0 setreading doif_trends wetterstation_temp_1h gleichbleibend
4:
0 setreading doif_trends wetterstation_temp_1h leicht_steigend
5:
0 setreading doif_trends wetterstation_temp_1h steigend
6:
0 setreading doif_trends wetterstation_temp_1h stark_steigend
7:
0 setreading doif_trends wetterstation_temp_2h leicht_fallend
8:
0 setreading doif_trends wetterstation_temp_2h fallend
9:
0 setreading doif_trends wetterstation_temp_2h stark_fallend
helper:
event battery: ok,brightness: 194,humidity: 70,isRaining: 0,rain: 19.765,T: 22.5 H: 70 W: 3 R: 19.765 IR: 0 WD: 155 WDR: 67.5 S: 135 B: 194 ,sunshine: 135,temperature: 22.5,windDirRange: 67.5,windDirection: 155,windSpeed: 3,temperature_komma: 22,5,temperature_alt: 22.8,regen_tsecs: 1561281737.82595,regen_now_value: 19.8,regen_now_diff: 0,regen_all: cH: 0.0 lH: 0.0 cD: 0.0 lD: 5.6 IR: 0 Rnow: 0.0 Rdif: 0,absoluteHumidity: 13.9,dewpoint: 16.8,temperature_komma: 22,5,temperature_alt: 22.8,temperature_komma: 22,5,temperature_alt: 22.8
globalinit 1
last_timer 0
sleeptimer -1
timerdev wetterstation
timerevent statHumidityTendency: 1h: -10 2h: -17 3h: -23 6h: -23,statHumidityTendency1h: -10,statHumidityTendency2h: -17,statHumidityTendency3h: -23,statTemperatureTendency: 1h: +2.9 2h: +4.8 3h: +6.0 6h: +7.1,statTemperatureTendency1h: +2.9,statTemperatureTendency2h: +4.8,statTemperatureTendency3h: +6.0,temperature_komma: 22,9,temperature_alt: 22.7,temperature_komma: 22,9,temperature_alt: 22.7
triggerDev wetterstation
DOIF_eventas:
cmd_nr: 6
cmd: 6
cmd_event: wetterstation
state: cmd_6
timerevents:
statHumidityTendency: 1h: -10 2h: -17 3h: -23 6h: -23
statHumidityTendency1h: -10
statHumidityTendency2h: -17
statHumidityTendency3h: -23
statTemperatureTendency: 1h: +2.9 2h: +4.8 3h: +6.0 6h: +7.1
statTemperatureTendency1h: +2.9
statTemperatureTendency2h: +4.8
statTemperatureTendency3h: +6.0
temperature_komma: 22,9
temperature_alt: 22.7
temperature_komma: 22,9
temperature_alt: 22.7
timereventsState:
statHumidityTendency: 1h: -10 2h: -17 3h: -23 6h: -23
statHumidityTendency1h: -10
statHumidityTendency2h: -17
statHumidityTendency3h: -23
statTemperatureTendency: 1h: +2.9 2h: +4.8 3h: +6.0 6h: +7.1
statTemperatureTendency1h: +2.9
statTemperatureTendency2h: +4.8
statTemperatureTendency3h: +6.0
temperature_komma: 22,9
temperature_alt: 22.7
temperature_komma: 22,9
temperature_alt: 22.7
triggerEvents:
battery: ok
brightness: 194
humidity: 70
isRaining: 0
rain: 19.765
T: 22.5 H: 70 W: 3 R: 19.765 IR: 0 WD: 155 WDR: 67.5 S: 135 B: 194
sunshine: 135
temperature: 22.5
windDirRange: 67.5
windDirection: 155
windSpeed: 3
temperature_komma: 22,5
temperature_alt: 22.8
regen_tsecs: 1561281737.82595
regen_now_value: 19.8
regen_now_diff: 0
regen_all: cH: 0.0 lH: 0.0 cD: 0.0 lD: 5.6 IR: 0 Rnow: 0.0 Rdif: 0
absoluteHumidity: 13.9
dewpoint: 16.8
temperature_komma: 22,5
temperature_alt: 22.8
temperature_komma: 22,5
temperature_alt: 22.8
triggerEventsState:
battery: ok
brightness: 194
humidity: 70
isRaining: 0
rain: 19.765
state: T: 22.5 H: 70 W: 3 R: 19.765 IR: 0 WD: 155 WDR: 67.5 S: 135 B: 194
sunshine: 135
temperature: 22.5
windDirRange: 67.5
windDirection: 155
windSpeed: 3
temperature_komma: 22,5
temperature_alt: 22.8
regen_tsecs: 1561281737.82595
regen_now_value: 19.8
regen_now_diff: 0
regen_all: cH: 0.0 lH: 0.0 cD: 0.0 lD: 5.6 IR: 0 Rnow: 0.0 Rdif: 0
absoluteHumidity: 13.9
dewpoint: 16.8
temperature_komma: 22,5
temperature_alt: 22.8
temperature_komma: 22,5
temperature_alt: 22.8
internals:
itimer:
perlblock:
readings:
0 wetterstation:statTemperatureTendency1h
1 wetterstation:statTemperatureTendency1h
10 wetterstation:statTemperatureTendency2h
11 wetterstation:statTemperatureTendency2h
12 wetterstation:statTemperatureTendency2h
13 wetterstation:statTemperatureTendency2h
14 wetterstation:statTemperatureTendency3h
15 wetterstation:statTemperatureTendency3h
16 wetterstation:statTemperatureTendency3h
17 wetterstation:statTemperatureTendency3h
18 wetterstation:statTemperatureTendency3h
19 wetterstation:statTemperatureTendency3h
2 wetterstation:statTemperatureTendency1h
20 wetterstation:statTemperatureTendency3h
3 wetterstation:statTemperatureTendency1h
4 wetterstation:statTemperatureTendency1h
5 wetterstation:statTemperatureTendency1h
6 wetterstation:statTemperatureTendency1h
7 wetterstation:statTemperatureTendency2h
8 wetterstation:statTemperatureTendency2h
9 wetterstation:statTemperatureTendency2h
all wetterstation:statTemperatureTendency1h wetterstation:statTemperatureTendency2h wetterstation:statTemperatureTendency3h
trigger:
uiState:
uiTable:
Attributes:
alias wetter tendenzen umrechnen
do always
group umrechnen
icon helper_doif
room umwelt
möge mir bitte jemand die knoten in meinen augen entknoten ...
Hi,
die unteren Anweisungen werden nur dann ausgeführt, wenn keine deiner oberen Bedingungen (1h) wahr werden würde. Da du ja aber dort alles abgefangen hast, kommt er erst gar nicht zur 2h-Anweisung.
Sobald er in einer Anweisung drin wahr, wird keine weitere mehr ausgeführt.
Beispiel: es sind 10 Grad, dann führt er die Anweisung
DOELSEIF
([wetterstation:statTemperatureTendency1h] > 5)
(setreading $SELF wetterstation_temp_1h stark_steigend)
aus, danach ist für ihn die Sache erledigt.
versteh ich jetzt nicht ganz ...
also die temp zu statTemperatureTendency1h, die zu statTemperatureTendency2h und die zu 3h.
also das sind 3 verschiedene temps zu 3 verschiedenen readings.
dieses blöde doif weiß es ja sogar schon selber und holt sich alle 3 readings rein:e_wetterstation_statTemperatureTendency1h +3.9 2019-06-23 13:59:55
e_wetterstation_statTemperatureTendency2h +4.5 2019-06-23 13:59:55
e_wetterstation_statTemperatureTendency3h +4.7 2019-06-23 13:59:55
Mach 3 DOIF daraus. Wenn alle Events in einem Paket kommen, wird nur das erste passende Event ausgewertet.
autsch, das könnt es wirklich sein.
war dann wieder mein gedankenfehler, weil ich dachte, das statistic-modul sendet nicht alles auf einmal.
aber no ned blöde frage: eigentlich sollt ich so nen trend ja mit doif-bordmittel auch hinbekommen?
derweil hab ich ne andere lösung - mit einem doif und vielen IF's *g*( [wetterstation:state] ) ## wetterstation
(IF ( [wetterstation:statTemperatureTendency1h] < 0 and [wetterstation:statTemperatureTendency1h] >= -1)
(setreading $SELF wetterstation_temp_1h leicht_fallend) )
(IF ( [wetterstation:statTemperatureTendency1h] < -1 and [wetterstation:statTemperatureTendency1h] >= -5)
(setreading $SELF wetterstation_temp_1h fallend) )
(IF ( [wetterstation:statTemperatureTendency1h] < -5)
(setreading $SELF wetterstation_temp_1h stark_fallend) )
(IF ( [wetterstation:statTemperatureTendency1h] > 0 and [wetterstation:statTemperatureTendency1h] <= 1)
(setreading $SELF wetterstation_temp_1h leicht_steigend) )
(IF ( [wetterstation:statTemperatureTendency1h] > 1 and [wetterstation:statTemperatureTendency1h] <= 5)
(setreading $SELF wetterstation_temp_1h steigend) )
(IF ( [wetterstation:statTemperatureTendency1h] > 5)
(setreading $SELF wetterstation_temp_1h stark_steigend) )
(IF ( [wetterstation:statTemperatureTendency2h] < 0 and [wetterstation:statTemperatureTendency2h] >= -1)
(setreading $SELF wetterstation_temp_2h leicht_fallend) )
(IF ( [wetterstation:statTemperatureTendency2h] < -1 and [wetterstation:statTemperatureTendency2h] >= -5)
(setreading $SELF wetterstation_temp_2h fallend) )
(IF ( [wetterstation:statTemperatureTendency2h] < -5)
(setreading $SELF wetterstation_temp_2h stark_fallend) )
(IF ( [wetterstation:statTemperatureTendency2h] > 0 and [wetterstation:statTemperatureTendency2h] <= 1)
(setreading $SELF wetterstation_temp_2h leicht_steigend) )
(IF ( [wetterstation:statTemperatureTendency2h] > 1 and [wetterstation:statTemperatureTendency2h] <= 5)
(setreading $SELF wetterstation_temp_2h steigend) )
(IF ( [wetterstation:statTemperatureTendency2h] > 5)
(setreading $SELF wetterstation_temp_2h stark_steigend) )
(IF ( [wetterstation:statTemperatureTendency3h] < 0 and [wetterstation:statTemperatureTendency3h] >= -1)
(setreading $SELF wetterstation_temp_3h leicht_fallend) )
(IF ( [wetterstation:statTemperatureTendency3h] < -1 and [wetterstation:statTemperatureTendency3h] >= -5)
(setreading $SELF wetterstation_temp_3h fallend) )
(IF ( [wetterstation:statTemperatureTendency3h] < -5)
(setreading $SELF wetterstation_temp_3h stark_fallend) )
(IF ( [wetterstation:statTemperatureTendency3h] > 0 and [wetterstation:statTemperatureTendency3h] <= 1)
(setreading $SELF wetterstation_temp_3h leicht_steigend) )
(IF ( [wetterstation:statTemperatureTendency3h] > 1 and [wetterstation:statTemperatureTendency3h] <= 5)
(setreading $SELF wetterstation_temp_3h steigend) )
(IF ( [wetterstation:statTemperatureTendency3h] > 5)
(setreading $SELF wetterstation_temp_1h stark_steigend) )
schreibt sofort alles richtig ... a bissi kanone auf spatzen, aber was solls? *g* so kann ich trotzdem alle relevanten temperaturmesser in einem doif bearbeiten ...
Für mich stellt sich die Frage, wie diese 18 Differenzierungen der Tendenz für die einzelnen Familienmitglieder handlungsleitend genutzt werden. Oder ist das nur so.
Letztlich steigt die Temperatur bis nachmittags und sinkt zur Nacht mit einer hohen Wahrscheinlichkeit auf die vorhergesagten Extremwerte. Jedenfalls war das die letzten Dekaden so, wenn ich jetzt mal zurück blicke.
derzeit is das quasi nur ne machbarkeitsstudie. drum such ich auch noch nach alternativen zu dem statistik-modul.
am ende wird da wohl ne pfeilgrafik stehen, die in 3 verschiedenen größen oder farben die tendenz und deren "stärke" anzeigen wird. warscheinlich wirds dann auch nur mehr die 1h-version geben, aber derzeit fehlt mir noch generell die idee, ausser, dass sich mein waf mit einer tendenz für "innen" und "aussen" verbessern würde *g*.
ich denke mal, meine holde will wissen, obs auch innen wärmer oder kälter werden wird im verhältnis zu aussen. ich habs no ned so ganz verstanden und mach erst mal. sie mag halt meine plots nicht ...
Mit ELSE(IF) würdest du einige Abfragen Sparen.