Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Database Plugin

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

  • schuma
    antwortet
    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
    ```

    Einen Kommentar schreiben:


  • schuma
    antwortet
    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?

    Einen Kommentar schreiben:


  • schuma
    antwortet
    Hier mal ein Screenshot:


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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • schuma
    antwortet
    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???

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    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?

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    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:


  • Tom Bombadil
    antwortet
    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:


  • Sisamiwe
    antwortet
    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.


    Einen Kommentar schreiben:


  • bmx
    antwortet
    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:


  • hannes123
    antwortet
    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:


  • Msinn
    antwortet
    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:


  • hannes123
    antwortet
    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:

    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
    Leider bekomme ich immer 0. Mit 'avg' bekomme ich realistische Werte?
    Steh da gerade am Schlauch....



    Grüße,
    Hannes
    Zuletzt geändert von hannes123; 06.11.2018, 21:47.

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Neustart von SmartHomeNG vielleicht ...?

    Einen Kommentar schreiben:

Lädt...
X