Ich bin gegen solche Interpretationsversuche, nur weil ein falscher yaml Syntax verwendet wurde. Besser ist es darauf hinzuweisen, dass der Syntax korrigiert werden muss.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Dauer innerhalb eines Zeitraumes in items zählen
Einklappen
X
-
Zitat von Onkelandy Beitrag anzeigenDie db Abfrage müsste schon passen. Probier mal
sh.Zentral.Wetter.Wetterstation.Regen.db('on', '3i') Dann findest du heraus, ob das Ergebnis 0 oder none ist. Am besten mal das Regenitem an und aus schalten, dann wieder an. Und nur wie in meiner Zeile die letzten 3 Minuten abfragen. Im WebIF auch konkret checken, was in den letzten 3 Minuten passiert ist.
Datenbank:
Code:Item ID Zeit Dauer Geändert VAL_NUM VAL_BOOL VAL_STR 3 04.06.2019 18:42:43 None 04.06.2019 18:43:09 1.0 1 None 3 04.06.2019 18:42:42 1598 04.06.2019 18:43:09 0.0 0 None 3 04.06.2019 18:42:23 18229 04.06.2019 18:43:09 1.0 1 None
Code:logics.Bewaesserung Regendauer: 24h:0, 12h:0, 6h:0, 3h:0, 3min:0.0
Kommentar
-
Zitat von Onkelandy Beitrag anzeigenDie db Abfrage müsste schon passen. Probier mal
sh.Zentral.Wetter.Wetterstation.Regen.db('on', '3i') Dann findest du heraus, ob das Ergebnis 0 oder none ist. Am besten mal das Regenitem an und aus schalten, dann wieder an. Und nur wie in meiner Zeile die letzten 3 Minuten abfragen. Im WebIF auch konkret checken, was in den letzten 3 Minuten passiert ist.
Aber scheint nicht wie erwartet zu funktionieren. Denn zum einen gibt es in der Datenbank eine Dauer von NONE, wenn das item auf 1 steht, aber auch auf 1 stehen bleibt. Die Dauer wird also erst dann eingetragen, wenn das Item wechselt. Zum anderen bin ich auch nicht sicher, dass die Funktion "on" sich auf alle Datenbankeinträge des items bezieht. Es scheint nicht so funktionieren.
Aktuell ist das item 1 und die 3i zeigen ein 1.0 an. Die Stunden immer 0 oder 0.0, wenn ich die Formeln drumherum weglasse. Hie rmal ein Snapshot der Daten:
Code:[TABLE="border: 0, cellpadding: 0, cellspacing: 0, width: 630"] [TR] [TD="class: xl65, width: 120"]time[/TD] [TD="class: xl65, width: 120"]item_id[/TD] [TD="class: xl65, width: 120"]duration[/TD] [TD="class: xl65, width: 120"]val_str[/TD] [TD="class: xl65, width: 120"]val_num[/TD] [TD="class: xl65, width: 120"]val_bool[/TD] [TD="class: xl65, width: 120"]changed[/TD] [/TR] [TR] [TD="class: xl65"]1559845878381[/TD] [TD="class: xl65"]3[/TD] [TD] [/TD] [TD] [/TD] [TD="class: xl65"]1.0[/TD] [TD="class: xl65"]1[/TD] [TD="class: xl65"]1559845879286[/TD] [/TR] [TR] [TD="class: xl65"]1559841981318[/TD] [TD="class: xl65"]3[/TD] [TD="class: xl65"]3897063[/TD] [TD] [/TD] [TD="class: xl65"]0.0[/TD] [TD="class: xl65"]0[/TD] [TD="class: xl65"]1559845879286[/TD] [/TR] [TR] [TD="class: xl65"]1559841378051[/TD] [TD="class: xl65"]3[/TD] [TD="class: xl65"]603267[/TD] [TD] [/TD] [TD="class: xl65"]1.0[/TD] [TD="class: xl65"]1[/TD] [TD="class: xl65"]1559842039038[/TD] [/TR] [TR] [TD="class: xl65"]1559841255018[/TD] [TD="class: xl65"]3[/TD] [TD="class: xl65"]123033[/TD] [TD] [/TD] [TD="class: xl65"]0.0[/TD] [TD="class: xl65"]0[/TD] [TD="class: xl65"]1559841379237[/TD] [/TR] [TR] [TD="class: xl65"]1559840104799[/TD] [TD="class: xl65"]3[/TD] [TD="class: xl65"]1150219[/TD] [TD] [/TD] [TD="class: xl65"]1.0[/TD] [TD="class: xl65"]1[/TD] [TD="class: xl65"]1559841259025[/TD] [/TR] [TR] [TD="class: xl65"]1559839914716[/TD] [TD="class: xl65"]3[/TD] [TD="class: xl65"]190083[/TD] [TD] [/TD] [TD="class: xl65"]0.0[/TD] [TD="class: xl65"]0[/TD] [TD="class: xl65"]1559840119366[/TD] [/TR] [TR] [TD="class: xl65"]1559833759185[/TD] [TD="class: xl65"]3[/TD] [TD="class: xl65"]6155531[/TD] [TD] [/TD] [TD="class: xl65"]1.0[/TD] [TD="class: xl65"]1[/TD] [TD="class: xl65"]1559839939332[/TD] [/TR] [TR] [TD="class: xl65"]1559833755830[/TD] [TD="class: xl65"]3[/TD] [TD="class: xl65"]3355[/TD] [TD] [/TD] [TD="class: xl65"]0.0[/TD] [TD="class: xl65"]0[/TD] [TD="class: xl65"]1559833818415[/TD] [/TR] [/TABLE]
Kommentar
-
Ja, die Dauer wird erst geschrieben, wenn sich der Wert ändert. Das "on" fragt imho val_bool ab. Du kannst bei der Abfrage ja auch ein "2h, "1h" machen. Ich würde mal explizit die Zeit zwischen 19.30 und 20.30 checken - da müsste 0.0 zurück kommen. Dann zwischen 20.30 und 21.30 - vermutlich 1.0
Dann zwischen 20 und 21 Uhr sollte ca. 0.5 raus kommen.
Also wenn du um 22.00 Uhr abfragst, nutze die oben erwähnten "2h", "1h"
Kommentar
-
Eine Alternative wäre das direkt in Items zu machen. Aber auch das läuft nicht.
Code:Regen: type: bool knx_dpt: 1 knx_cache: 4/3/0 visu_acl: rw database: yes on_change: - .innerhalb_3h = True - .innerhalb_6h = True - .innerhalb_9h = True - .innerhalb_12h = True innerhalb_3h: type: bool autotimer: 180m = False innerhalb_6h: type: bool autotimer: 360m = False innerhalb_9h: type: bool autotimer: 540m = False innerhalb_12h: type: bool autotimer: 720m = False Dauer_3h: type: num eval: sh..self() + sh...self.prev_age() if not sh...self() else None eval_trigger: ..self
Kommentar
Kommentar