Ankündigung
Einklappen
Keine Ankündigung bisher.
Neues Database Plugin
Einklappen
X
-
Jein. Wenn die "letzte" Woche die letzten 7 Tage sind, stimmt's. Ist generell missverständlich, da man unter "letzte Woche" ja an Kalenderwoche denkt. Richtiger/Klarer wäre.. "heute minus 14 Tage bis heute minus 8 Tage"
-
Fehler in Doku???
Kann es sein das die Aussage aus der Doku falsch ist?
Meiner Meinung nach müsste es heißen:Code:Supported functions and timeframes are same as supported in the `db` function. ```python sh.outside.temperature.series('min', '1d', count=10) # returns 10 minimum values within the last day sh.outside.temperature.series('avg', '2w', '1w') # returns the average values of the week before last week ```
Code:Supported functions and timeframes are same as supported in the `db` function. ```python sh.outside.temperature.series('min', '1d', count=10) # returns 10 minimum values within the last day sh.outside.temperature.series('avg', '3w', '2w') # returns the average values of the week before last week ```
Einen Kommentar schreiben:
-
So was hatte ich mir schon fast gedacht.Zitat von smai Beitrag anzeigenWeil AVG den Wert nach seiner Dauer gewichtet.
Ich hatte aber einen wirklichen Durchschnitt erwartet.
Gibt es dazu irgend eine Doku, Seite Erklärung wo ich das mal nachlesen könnte wie das mit dem "AVG" funktioniert?
Einen Kommentar schreiben:
-
-
Weil AVG den Wert nach seiner Dauer gewichtet.
Wie sieht die Verteilung deiner Werte genau aus?
Einen Kommentar schreiben:
-
Ich habe da auch noch mal eine Frage:
Wenn ich an einem Tag 8 Einträge in der DB habe, davon 4 mit dem Wert 0.0 und vier mit dem Wert 3.4, warum ergibt dann
2,83???Code:sh.outside.temperature.db('avg', '1d')
Einen Kommentar schreiben:
-
Onkelandy
Die "on" Anfrage kenne ich. Sie ist so definiert "on: percentage (as float from 0.00 to 1.00) where the value has been greater than 0." Das Ergebnis könnte man dann theoretisch mit dem Abfragezeitraum multiplizieren und hätte dann die Einschaltdauer in Zeit.
Ich habe im Beitrag #153 ein reales Beispiel gezeigt. Die "on" Anfrage liefert hier ein falsches Ergebnis. Oder ich stelle mich blöd an.
Oder?Zitat von Sisamiwe Beitrag anzeigenAddiere ich "händisch" die Dauer des boolschen Items 'brenner.heizung' mit dem Zustand "1" komme ich auch 1,55h am 6.11.18
Meine Berechnung der Betriebsstunden via brenner.heizung.betriesstunden ergibt 1,51h am 6.11.18.
Dann habe ich versucht, über 'on' und 'avg' Abfrage des boolschen Items 'brenner.heizung' ähnliche Werte zu bekommen. Die so ermittelten werde sind nicht plausibel:
Folgendes habe ich versucht: Code:
sh.DB_Test.C((sh.heizung.brenner.db('avg', str(sh.time.minute.since.midnight() + 1440) + 'i', str(sh.time.minute.since.midnight()) + 'i')) * 24) sh.DB_Test.D((sh.heizung.brenner.db('on', str(sh.time.minute.since.midnight() + 1440) + 'i', str(sh.time.minute.since.midnight()) + 'i')) * 24)
Der erste Eintrag ergibt 1,44h der zweite 1h???
Einen Kommentar schreiben:
-
Sisamiwe das macht doch eigentlich die "on" Abfrage? https://github.com/smarthomeNG/plugi...aster/database
Einen Kommentar schreiben:
-
Kurze Frage: ist es möglich/machbar die Funktion "duration" mit im Plugin umzusetzen?
"Duration" soll die Summe der Dauern im angegebenen Zeitraum ausgeben, an dem das Item nicht Null war. Das würde das Auswerten von Betriebsstunden binärer Item (Licht an, Pumpe an, ...) deutlich vereinfachen.
Ich glaube, dass wurde hier im Forum schon mal diskutiert.
Was meint ihr?
Einen Kommentar schreiben:
-
Kannst Du nicht einfach immer, wenn das boolsche Item von 1 auf 0 geht (lässt sich mittels if über value und prev_value prüfen) über on_update die vorherige Dauer auf das Zeititem addieren? Zumindest im Backend sind alle dafür notwendigen Werte zu sehen (Wert, vorheriger Wert, vorheriges Alter), sollte also eigentlich gehen.
/tom
Einen Kommentar schreiben:
-
bmx klinke mich hier mal ein, da etwas ähnlich habe.
Ich habe ebenfalls ein boolsches Item, das den Brennerstatus meines Ölbrenners via KNX erfasst (Betriebsstundenausgang am Brenner).
Dieses Item schreibe ich in die Datenbank.
Aus diesem boolschen Item errechne ich über ein eval die Betriebsstunden in ein eigenes Num-Item. Dazu rechne ich immer auf den aktuellen Betriebsstundenstand das Produkt aus Brennerstatus (0 oder 1) und der Dauer des Items hinzu. Ist der Brennerstatus 0, wird nichts addiert. Ist er 1 kommt die Betriebszeit hinzu. Danach wird das noch in Stunden umgerechnet. Von diesem Item werden dann die zeitlichen Betriebsstunden abgeleitet.
Code:%YAML 1.1 --- heizung: recalc: type: bool visu_acl: 'rw' enforce_updates: 'yes' autotimer: 1 = 0 brenner: name: Brennerstatus Heizung type: bool visu_acl: 'ro' database: 'init' knx_dpt: 1 knx_cache: 0/3/91 knx_reply: 0/3/91 betriebsstunden: name: Betriebsstundenzähler Brenner Heizung in Sekunden type: num visu_acl: 'ro' database: 'init' eval: sh.heizung.brenner.betriebsstunden() + int(sh.heizung.brenner.prev_value()) * sh.heizung.brenner.prev_age() eval_trigger: heizung.brenner gesamt: name: Betriebsstundenzähler Brenner Heizung in Stunden type: num visu_acl: 'ro' database: 'init' eval: round(sh...() / 60 / 60, 2) eval_trigger: - .. - heizung.recalc heute: type: num visu_acl: 'ro' eval: round((sh...() - sh...db('max', sh.time.minute.since.midnight.dbstr(), sh.time.minute.since.midnight.dbstr())) / 60 / 60, 2) eval_trigger: - .. - heizung.recalc cache: 'yes'
Einfacher wäre es sicher, die Betriebsstunden direkt von dem Boolschen Item, dass den Brennerstatus erfasst, abzuleiten. Die DB hat alle Werte, denn sie kennt den Status (VAL_BOOL) als auch die Dauer (Dauer).
Unbenannt.JPG
Ich habe aber keine Möglichkeit gefunden, die Daten via dem Plugin raus zubekommen.
Kennt ihr eine Möglichkeit?
Trotzdem ist in diesem Fall etwas komisch:
Addiere ich "händisch" die Dauer des boolschen Items 'brenner.heizung' mit dem Zustand "1" komme ich auch 1,55h am 6.11.18
Meine Berechnung der Betriebsstunden via brenner.heizung.betriesstunden ergibt 1,51h am 6.11.18.
Dann habe ich versucht, über 'on' und 'avg' Abfrage des boolschen Items 'brenner.heizung' ähnliche Werte zu bekommen. Die so ermittelten werde sind nicht plausibel:
Folgendes habe ich versucht:
Der erste Eintrag ergibt 1,44h der zweite 1h???Code:sh.DB_Test.C((sh.heizung.brenner.db('avg', str(sh.time.minute.since.midnight() + 1440) + 'i', str(sh.time.minute.since.midnight()) + 'i')) * 24) sh.DB_Test.D((sh.heizung.brenner.db('on', str(sh.time.minute.since.midnight() + 1440) + 'i', str(sh.time.minute.since.midnight()) + 'i')) * 24)
Nach meiner Theorie müssten doch bei einem boolschen Item 'avg' und 'on' gleich sein. Oder irre ich mich?
Danke für Eure Rückmeldungen.
Einen Kommentar schreiben:
-
Bevor Du andauernd neu startest, könntest Du das eval mal in einer Logik über das Backend testen. Hast Du die items aus dem besagten Thread auch implementiert?
Einen Kommentar schreiben:
-
Sorry...
Ziel wäre die Laufzeit des Kompressors am aktuellen Tag in Item WP.Kompressor.LZ_aktTag zu bekommen.
Das Item WP.Kompressor wird durch das Buderus Plugin gesetzt.
Also die Items im Eval kommen aus diesem Thread:
https://knx-user-forum.de/forum/supp...%C3%BCr-sqlite
Über 'on' bekomme ich lt. Doku:
percentage (as float from 0.00 to 1.00) where the value has been greater than 0.
Hab ich da was grundlegend falsch verstanden?Zuletzt geändert von bmx; 07.11.2018, 07:04. Grund: Threat = "Bedrohung", Thread = "Faden" (im Sinne Gesprächsfaden)
Einen Kommentar schreiben:
-
Ich verstehe nicht ganz was Du zu erreichen versuchst, wo Du 0 erhältst und bei was Du avg einsetzt und was für Werte Du erhältst. Hilfreich wäre auch, wie die Items definiert sind, die Du im eval verarbeitest.
Einen Kommentar schreiben:
-
Hallo,
bin gerade dabei die Laufzeit meiner Wärmepumpe auszuwerten. Dazu hab ich ein Bool-Item mit dem Status des Kompressors, das ich gerne mit 'on' wie folgt auslesen würde:
Leider bekomme ich immer 0. Mit 'avg' bekomme ich realistische Werte?Code:Kompressor: type: bool km_id: /systemStates/compressor visu_acl: r database: 'yes' enforce_updates: 'yes' knx_dpt: 1 knx_send: 4/0/0 Kompressor_LZ_aktTag: type: num database: 'yes' enforce_updates: 'yes' eval: sh.WP.Kompressor.db('on',sh.hour.since.midnight.dbstr())*sh.hour.since.midnight() cycle: 60 = 1
Steh da gerade am Schlauch....
Grüße,
HannesZuletzt geändert von hannes123; 06.11.2018, 21:47.
Einen Kommentar schreiben:


Einen Kommentar schreiben: