Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Database Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    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)

    Kommentar


      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?

      Kommentar


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

        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.


        Kommentar


          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

          Kommentar


            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?

            Kommentar


              Sisamiwe das macht doch eigentlich die "on" Abfrage? https://github.com/smarthomeNG/plugi...aster/database

              Kommentar


                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.

                Zitat von Sisamiwe Beitrag anzeigen
                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: 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???
                Oder?

                Kommentar


                  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
                  Code:
                  sh.outside.temperature.db('avg', '1d')
                  2,83???

                  Kommentar


                    Weil AVG den Wert nach seiner Dauer gewichtet.
                    Wie sieht die Verteilung deiner Werte genau aus?

                    Kommentar


                      Hier mal ein Screenshot:


                      2018-11-14 18_36_08-database Plugin.png

                      Kommentar


                        Zitat von smai Beitrag anzeigen
                        Weil AVG den Wert nach seiner Dauer gewichtet.
                        So was hatte ich mir schon fast gedacht.
                        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?

                        Kommentar


                          Fehler in Doku???

                          Kann es sein das die Aussage aus der Doku falsch ist?

                          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
                          ```
                          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', '3w', '2w')  # returns the average values of the week before last week
                          ```

                          Kommentar


                            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"

                            Kommentar


                              Ok, mit Tagen ist das dann genauso?
                              Also von jetzt -24Std?

                              Kommentar


                                bei der diskussion hatten wir hier (https://www.smarthomeng.de/zeitdaten...ogik-berechnen) auch schon viel spass

                                Kommentar

                                Lädt...
                                X