Ankündigung

Einklappen
Keine Ankündigung bisher.

Ansatz gesucht: Protokoll der Einschaltdauer / des Zählerdelta von an bis aus

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

    Ansatz gesucht: Protokoll der Einschaltdauer / des Zählerdelta von an bis aus

    Hallo zusammen,
    ich habe hier im Forum gesucht aber leider nichts brauchbares gefunden:
    • Meine Gartenbewässerung wird über Magnetventile geschaltet. Diese bekommen anhand von Wetter einen Abschaltzeitpunkt / Bewässerungsdauer errechnet, der/die natürlich jedes mal anders ist.
    • Mein Auto lädt über Schuko und wird über einen MDT AMI gezählt und geschaltet (Schaltung erfolgt ohne Last...).
    Ich suche nun einen Weg, Folgendes festzuhalten (und in der SmartVisu zu listen):
    • Gestern war die Bewässerung 220s an und hat 15 Liter Wasser verbraucht.
    • vorgestern war die Bewässerung 0s an und hat 0 Liter Wasser verbraucht.
    • <anderes Log>
    • Das Auto wurde am 27.7. von 14:30 bis 20:30 geladen und hat 13,5kWh erhalten.
    • Das Auto wurde am 19.7. von 10:00 bis 12:00 geladen und hat 4kWh erhalten.
    Ich habe mehrere solcher Fälle in denen eine steigende Flanke eines Schaltausgangs den Starttrigger setzt und eine fallende Flanke den Endtrigger. Dann müssen ja nur die beiden Zählerstände (Anfang / Ende) verrechnet werden und dann der Wert zusammen mit der Dauer in eine Liste / Datenbank geschrieben werden. Bei mir gehen alle Rohdaten in eine Maria DB.

    Hat eine(r) von euch etwas ähnliches gebaut / konfiguriert?

    #2
    Zitat von jentz1986 Beitrag anzeigen
    Hat eine(r) von euch etwas ähnliches gebaut / konfiguriert?
    So was ähnliches.

    Prinzipiell musst die die "Items of Interesst" in eine DB schreiben. Das hast Du ja.

    Ich habe ein struct gebaut, mit dem man Werthistorie ermittlen kann. siehe hier

    Bei mit haben die "nativen" Items immer den Gesamtzählerstand. Mit dem struct werden dann die Verbrauchswerte ermitteln.
    Die Zeit, wie lange ein Item auf On war, kannst Du aus der DB ermitteln oder auch mit folgenden eval:


    Code:
            betriebsstunden_knx:
                name: Betriebsstundenzähler Brenner in Stunden
                type: num
                visu_acl: ro
                database: init
                eval: round(sh..betriebsstunden_knx_sek() / 3600, 2)
                eval_trigger: .betriebsstunden_knx_sek
                enforce_change: yes
                crontab: 59 23 * * = 1
                struct: wertehistorie_total
                    
                betriebsstunden_knx_sek:
                    name: Betriebsstundenzähler Brenner in Sekunden
                    type: num
                    visu_acl: ro
                    cache: yes
                    database: init
                    database_maxage: 200
                    enforce_change: yes
                    crontab: 59 23 * * = 1
                    eval: sh...betriebsstunden_knx_sek() + sh....property.prev_update_age * int(sh....property.last_value)
                    eval_trigger: ...
    Hilft Dir das?

    Kommentar


      #3
      Das hilft für feststehende Zeiträume - würde bei meinem "täglichen Gießproblem" helfen.
      Aber beim Auto lade ich das vielleicht zweimal an einem Tag, dafür die nächste Woche gar nicht. Andererseits hat das Auto natürlich selbst auch ne Datensammlung.

      Die Werte landen bei Deinem Ansatz in jeweils dedizierten Items.
      Ich suche sowas wie eine Liste die immer den neuesten Eintrag oben hat. Also muss ich wahrscheinlich eine Logik / Plug-In stricken, das mir ein Listen-Item zusammenbaut und dann in der Smartvisu in einem Log repräsentiert werden kann: https://docu.smartvisu.de/3.0/index....get_status.log

      Kommentar


        #4
        Die Datenbank enthält für jeden Eintrag einen Wert "Dauer". Wenn Du also einfach die betreffenden items in die DB schreibst, dann sind die benötigten Rohdaten schonmal da. Aus der Dauer lässt sich dann mit einem mittleren Durchfluss bzw. einer mittleren Ladeleistung die Wassermenge bzw. Energiemenge berechnen.
        database Plugin.png
        Du könntest eine Logik schreiben, die Dir dies auswertet und die Logik von smartVISU triggern lassen. Seit v3.0 kann SV dies automatsch beim Aufrufen einer Seite machen, d.h. die Berechnungen werden nur bei Bedfarf ausgeführt und kosten nicht ständig Performance.

        Als Alternative zur Logik kann man natürlich auch ein Widget schreiben, dass die Datenbank wie ein Plot-Widget abfragt, also über das "series"-Kommando. Die Daten landen dann als Zeitreihe aus Wertepaaren [Zeitstempel, Wert] im Speicher, so dass die Dauern neu errechnet werden müssen. Hier müsste man sich mal über ein Feature-Request für das Websocket-Modul und das Database-Plugin Gedanken machen: SQL-Abfragen, die von der Visu aus parametriert werden. (Spontane Idee, kann auch Unfug sein )

        Gruß
        Wolfram

        EDIT: Sorry, hab den Zähler übersehen. Hier könnte ein Hilfsitem jeweils den Zählerstand beim Abschalten erfassen und in die DB schreiben.
        Zuletzt geändert von wvhn; 28.07.2021, 14:49.

        Kommentar

        Lädt...
        X