[gelöst] doif - was übersehe ich?

Begonnen von the ratman, 23 Juni 2019, 11:27:38

Vorheriges Thema - Nächstes Thema

the ratman

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 ...
→do↑p!dnʇs↓shit←

crusader85

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.

the ratman

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
→do↑p!dnʇs↓shit←

Ellert

Mach 3 DOIF daraus. Wenn alle Events in einem Paket kommen, wird nur das erste passende Event ausgewertet.

the ratman

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?
→do↑p!dnʇs↓shit←

the ratman

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 ...
→do↑p!dnʇs↓shit←

Ellert

#6
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.

the ratman

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 ...
→do↑p!dnʇs↓shit←

Per

Mit ELSE(IF) würdest du einige Abfragen Sparen.