NEWS


  • Servus zusammen,
    da mir in anderen Threads bereits gut geholfen wurde, kann ich mittlerweile meine beiden WMZ der Heizung erfolgreich abfragen in SQL loggen.

    Hierzu möchte ich aber gerne weitere Visualisierungen generieren (z.B. flot - weil ich das mittlerweile etwas beherrsche^^) und Werte errechnen.

    #1 Gesamtheizlast:
    Ich habe zwei WMZ die jeweils die aktuelle Leistung der Heizkreise anzeigen.
    Hier würde ich gerne einen Graphen generieren der mir gleich die gesamte Heizlast anzeigt.
    Also den Wert von WMZ #2 + Wert WMZ #2 und dies in die SQL-Datenbank schreiben, damit ich damit wieder einen Graph erstellen kann.

    Aktuelle sieht das z.B. so aus:
    Bild Text

    Kann ich hier in Blockly ganz simpel rechnen und in SQL schreiben?

    #2 Abhängigkeit der Heizlast von der Außentemperaturen:
    Weiteres betrifft erst mal eine Frage zu Flot. Kann ich für die X-Achse auch andere Quellen nutzen als die Zeiten?
    Würde gerne in der X-Achse die Außentemperatur haben und in der Y-Achse die Gesamtleistung. Natürlich als Durchschnittswerte innerhalb der Datenbank.

    #3 Verbrauchsauswertung
    Für die Verbrauchsauswertung würde ich gerne eine Tabelle erstellen, die mir z.B. wöchentlich und/oder monatlich den Verbrauch in anzeigt.
    Ich logge hierzu den Verbrauch der beiden WMZ, welchen ich dann "nur" noch in die verschienden Zeitbereiche unterteilen muss.
    Hatte hierzu mit Excel und den Timestamps etwas gespielt, allerdings bisher erfolglos. Generell wäre Excel mein Plan B 🙂

    #4 Simulation der WP
    Da ich den Umstieg von einer Öl-Heizung auf eine Wärmepumpe plane, würde ich gerne mal simulieren wie das ungefähr aussehen würde.
    Und zwar hat eine Wärmepumpe bei einer bestimmten Vorlauftemperatur im Verhältnis zur Außentemperatur eine bestimmte Leistung bzw. einen Effizienzfaktor.
    Z.b. so in etwa:
    Bild Text

    Hierzu müsste ich die Verbrauchsdaten im jeweiligen Temperaturbereich getrennt loggen (eigentlich auch für die Vorlauftemperatur, aber das vernachlässige ich vorerst mal). Diese könnte ich über den Effizenzfaktor wierder rückwärts zurück in Stromverbrauch umrechnen.
    Weitergehend dann der Vergleich zum aktuellen Ölverbrauch.

    Ich hatte noch mehr Punkte im Kopf, werde ich aber mal nach und nach ergänzen...
    Da ich ehrlich gesagt absolut NULL plan von Programmierung habe und auch mit Blockly bereits mehr Probleme habe als gedacht, meine Frage an euch - sind meine Vorstellung ohne extremen Aufwand so umsetzbar?
    Notfallplan wäre die Datenbank in Excel ein zu lesen und dort weiter zu rechnen. Da dies aber auch nicht so leicht ist und auch nicht "Live" lebt, wäre mir der direkte Weg über SQL lieber.
    Vll. gibt es ja direkt ein Programm zur Auswertung von SQL-Datenbanken welche diese Funktionen in ähnlicher Form bietet.
    Ich kann natürlich nicht erwarten dass nun jemand von euch Stunden in meine "Spielerei" hier steckt - aber vll. könnt ihr mir tipps geben und/oder ein ambitionierter Programmierer hat ähnliches vor oder gar am Laufen 🙂

    MFG


  • @Habedere
    #1 Gesamtheizlast: Eine Addition von 2 Datenpunktwerten und Schreiben des Ergebnisses in einen eigenen Datenpunkt ist mit Blockly leicht möglich.

    #3 Verbrauchsauswertung: Dafür gibt es einen Adapter.

    #4 Simulation der WP: Der Effizienzfaktor lässt sich als einfache (nicht lineare) Funktion der Differenz RL-Temperatur - Aussentemperatur darstellen.


  • @Habedere sagte:

    Da ich den Umstieg von einer Öl-Heizung auf eine Wärmepumpe plane

    Wie willst Du dann die HT-Heizung und Brauchwarmwasser-Bereitung realisieren ? Hohe VL-Temperaturen führen zu geringer Effizienz der WP.


  • @paul53 sagte in Heizlastanalyse mit WMZ + Simulierung WP:

    @Habedere
    #1 Gesamtheizlast: Eine Addition von 2 Datenpunktwerten und Schreiben des Ergebnisses in einen eigenen Datenpunkt ist mit Blockly leicht möglich.

    #3 Verbrauchsauswertung: Dafür gibt es einen Adapter.

    #4 Simulation der WP: Der Effizienzfaktor lässt sich als einfache (nicht lineare) Funktion der Differenz RL-Temperatur - Aussentemperatur darstellen.

    @paul53
    Danke für deine Rückmeldung.

    zu #1:
    Ich habe bereits mal ein versuch gestartet - werde ich heute Abend mal posten.

    zu #3:
    Kannte ich nocht nicht - Danke ich probiers!

    zu #4:
    Hier reden wir denke ich aneinander vorbei...
    Ich muss ja quasi wissen wieviel Leistung in den jeweiligen Außentemperaturbereichen abgerufen wurde um eine realistische Auswertung zu erhalten. Klar hat der COP eine Spanne zwischen den einzelnen Temperaturbereichen die man auch über eine lineare Funktion darstellen kann, das würde ich aber erst mal vernachlässigen.
    Z.b. -2 bis -4 -> Beginn bei COP 3,21 und Ende bei COP 3,11.
    Oder ich rechnen einfach im kompletten Bereich die 3,21 - was natürlich ewas positiver rechnet ist. Denn bei -3 wären wir dann ja bei rechnerisch 3,16^^

    Z.b. Variante A - LIVE:
    Ich schreibe die aktuell geloggte, benötigte Leistung (nicht Verbrauch) in Abhängigkeit der Außentemperatur in die Datenbank.
    D.h. für jeden Temperaturbereich benötige ich dann einen anderen Umrechnungsfaktor für die aktuelle Leistung.
    Diese Daten rufe ich dann wieder als Graphen ab.
    Sobald sich die Außentemperatur ändert, werden Leistungsdaten mit einem anderen Umrechnungsfaktor (wg. COP) in die Datenbank geschrieben.
    Der Graph würde (ungeglättet) bei gleichbleibender Leistung der Ölheizung bzw. WMZ beim Wechsel in eine andere Temperaturzone einen kleinen Sprung machen.

    Variante B - "statisch":
    Ich müsste die Datenbank durchforsten wie hoch der Verbrauch (nicht Leistung) in den jeweiligen Temperaturbereichen war.
    Das könnten aber pro Tag 5-6 Temperaturzonen sein, in denen ich jeweils den Anfangs und Endwert des Verbrauchs loggen muss.
    Z.b. Gesamtverbrauch innerhalb der 2° bis 7° Zone pro Monat.
    Gesamtverbrauch innerhalb der -2° bis +2° Zone pro Monat usw.

    Hoffe es ist einigermaßen verständlich worauf ich raus möchte 🙂

    Das Warmwasser wird genauso realisiert wie bei den aktuellen Wärmepumpen-Neubauten. Da ist die Umrüstung vom Bestand nicht so tragisch. Höchstens mal einen anderen Warmwasserspeicher bei der die Übertragungsoberfläche größer ist.
    Das mit der Vorlauftemperatur im HT-Bereich - sprich der Heizkörper - ist eben der große Punkt!
    Habe in diversen Foren gelesen dass es entgegen vieler Aussagen doch möglich ist, Heizkörper mit niedrigen Vorlauftemperaturen zu betreiben - sofern der Isolierstandard des Hauses das einigermaßen mit macht.
    Habe die Vorlauftemperatur bereits künstlich gedrosselt (siehe vorlauf HT) um
    eine WP zumindest praktisch zu simulieren.
    Zeitgleich logge ich die Raumtemperaturen der kritischen Räume um einen Temperaturabfall zu erkennen 🙂

    In manchen Augen alles etwas "Overkill" - aber ich steh drauf 🙂


  • @paul53
    Hier mal der erste Versuch zu Punkt 1:
    Bild Text

    Kommt aber eine Fehlermeldung 🙂
    Die Objekt-ID habe ich über mehrere Ecken per Hand rein kopiert.
    Kann ich da irgendwie direkt über SQL suchen?! Die Daten werden von einer anderen ioBroker Sitzung in die Datenbank geschrieben.
    Die ObjektID kann er so theoretisch garnicht finden, da er ja nicht gezielt in der Datenbank sucht denke ich.


  • @Habedere Man darf an den Trigger "Falls Objekt" keine Werte übergeben, sondern die eigentliche ID. Beinhalten die beiden MBus-Datenpunkte keine Zahlen ?

    Vorschlag:

    Blockly_Summe_2.JPG


  • @paul53 sagte in Heizlastanalyse mit WMZ + Simulierung WP:

    @Habedere Man darf an den Trigger "Falls Objekt" keine Werte übergeben, sondern die eigentliche ID. Beinhalten die beiden MBus-Datenpunkte keine Zahlen ?

    Vorschlag:

    Blockly_Summe_2.JPG

    Das zum Thema "in Blockly leicht möglich" 🙂
    Da liege ich ja meilenweit daneben 🙂

    Der M-Bus liefert in meinen Augen schon zahlen, da ich aber absolut neu bin in der Materie
    habe ich lieber zur sicherheit konvertiert 😉

    Danke für die Antwort - werde ich heute mal testen.
    Aber ich kann wohl nicht einfach wie erwähnt die ID, welche in der Datenbank gespeichert
    ist für die "Falls Objekt" verwenden oder?

    Welche Object ID wir dann mit der Summe generiert? Wo finde ich dann den Datenpunkt?
    Kann aktuell nicht erkennen wo die Daten hingeschrieben werden.
    Evtl. ergibt sich das heute wenn ich es probiere...

    PS: Wegen Dateninput - habe gerade deine Empfehlung mit Simple-AI gelesen.
    Werde ich mal angreifen, da wohl nötig.


  • @Habedere sagte:

    die ID, welche in der Datenbank gespeichert
    ist für die "Falls Objekt" verwenden oder?

    Du kannst nur "Original" Datenpunkt-IDs (vom WMZ) verwenden.

    @Habedere sagte in Heizlastanalyse mit WMZ + Simulierung WP:

    Welche Object ID wir dann mit der Summe generiert? Wo finde ich dann den Datenpunkt?

    Das ist ein "eigener Datenpunkt" vom Typ "Zahl", der im Reiter "Objekte" unter javascript.0 erstellt werden muss.

    @Habedere sagte in Heizlastanalyse mit WMZ + Simulierung WP:

    habe gerade deine Empfehlung mit Simple-AI gelesen.

    Wenn Du es so machst, werden auf dem OPi nur noch 3 Adapter benötigt: Admin, MBus und Javascript (1 Skript zum Daten senden). Die SD Card wird geschont.


  • @paul53 sagte in Heizlastanalyse mit WMZ + Simulierung WP:

    @Habedere sagte in Heizlastanalyse mit WMZ + Simulierung WP:

    habe gerade deine Empfehlung mit Simple-AI gelesen.

    Wenn Du es so machst, werden auf dem OPi nur noch 3 Adapter benötigt: Admin, MBus und Javascript (1 Skript zum Daten senden). Die SD Card wird geschont.

    Hmm.. habe es mit deiner Update-Version probiert.
    Allerdings liest er keine Werte ein...

    Datenstruktur aufm OPi:
    Bild Text

    Datenstruktur aufm Pi:
    Bild Text

    Übernommene RAW-Daten:
    Bild Text

    Das Script mit der angepassten IP und den korrekten ID-Namen (Port wieder auf 8082 geändert):
    Bild Text

    Nur der zusätzliche M-Bus ordner unten ist neu...
    Bild Text

    Muss aber zugeben dass ich nachfolgendes zu spät gelesen habe:
    "Im Emfäger das Gerät selektieren und einen Kanal mit dem Namen data erstellen"

    Die Ordnerstruktur passt aber trotzdem...

    Sollte das Script auf dem Opi evtl. aus dem Root-Verzeichnis raus?

    Mein Script würde für die Gesamtlast würde soweit stehen:
    Bild Text

    mfg


  • @Habedere sagte:

    Das Script mit der angepassten IP und den korrekten ID-Namen:

    1. Der Port stimmt nicht: 8082
    2. Das RegExp enthält eine 0 vor dem \d zuviel (\d steht als Platzhalter für eine beliebige Ziffer): Man benötigt nur ein Skript für beide WMZ, da sich die ID nur in einer Ziffer unterscheidet.

    Die interne Simple-API in der Web-Instanz auf dem dem Empfänger ist aktiviert ?

    @Habedere sagte in Heizlastanalyse mit WMZ + Simulierung WP:

    Sollte das Script auf dem Opi evtl. aus dem Root-Verzeichnis raus?

    Nein, kann dort bleiben; aber nur ein korrigiertes Skript !


  • @Habedere Bau mal ein Log in das Skript ein, um zu sehen, ob der Trigger funktioniert.

    const urlDst  = 'http://192.168.178.3:8082/set/'; // IP anpassen !
    
    on(/^mbus\.0\.LUG-6757819\d\.data\..+/, function(dp) {
       log(dp.id + ': ' dp.state.val);
       request(urlDst + dp.id + '?value=' + dp.state.val);
    });
    

  • @paul53 sagte in Heizlastanalyse mit WMZ + Simulierung WP:

    const urlDst = 'http://192.168.178.3:8082/set/'; // IP anpassen ! on(/^mbus.0.LUG-6757819\d.data..+/, function(dp) { log(dp.id + ': ' dp.state.val); request(urlDst + dp.id + '?value=' + dp.state.val); });

    Inkl. Log gabs eine Fehlermeldung...
    Aber nach Anpassung des ursprünglichen Skripts hat es gepasst 🙂
    Den Port hatte ich bereits vorher getestet.
    Aber mit nur einem Skript und ohne der 0 scheints zu funktionieren.
    Da ich meine Flot Graphen direkt aus der Datenbank lese muss ich diese wohl auch nicht anpassen.

    Seltsamerweise werden aber nicht alle Daten exakt geloggt wie am OPi - siehe im Vergleich oben:
    Bild Text

    Aber danke schon mal viel mals 🙂
    Werde den Analytics Adapter nochmal probieren und prüfen ob das Summe-Blockly funktioniert.


  • @Habedere sagte:

    werden aber nicht alle Daten exakt geloggt wie am OPi

    Der Trigger reagiert nur auf Wertänderungen. Werte, die konstant bleiben, werden also nicht vom OPi gesendet.


  • @paul53 sagte in Heizlastanalyse mit WMZ + Simulierung WP:

    @Habedere sagte:

    werden aber nicht alle Daten exakt geloggt wie am OPi

    Der Trigger reagiert nur auf Wertänderungen. Werte, die konstant bleiben, werden also nicht vom OPi gesendet.

    Ahh das gibt Sinn - ich seh es an mittlerweile an den Werten wie z.B. OnTime ist heute um einen Tag gestiegen.
    Nun kann ich allerdings bei keinen Objekten die SQL-Einstellung über den Schraubenschlüssel durch führen. Neustart vom SQL-Adapter hat auch nicht geholfen... Die Daten werden aber fleißig geloggt - auch die der WMZ. Mal sehen ob ich da noch was finde...
    Der Analytics wird auch nicht angezeigt - nur History, obwohl der Adapter deaktiviert ist.

    EDIT: Jetzt geht´s plötzlich wieder! Bin jetzt von einer englischen Instanz wieder in einer deutschen gelandet^^ Weiß der Geier was ich hier mache, aber es funktioniert 🙂


  • Hab das Script nochmal angepasst mit den echten Werten der Objekte 🙂

    Also so:
    Bild Text

    Evtl. hab ich dich falsch verstanden 🙂

    Läuft schon mal 🙂


  • @Habedere sagte:

    mit den echten Werten der Objekte

    Wenn man Wert als eine Eigenschaft des Triggerdatenpunktes (unter Blöcke Trigger) nimmt, ist das ebenfalls der echte Wert des Datenpunktes.


  • @paul53
    Servus,
    irgendwie seltsam - im großen und ganzen funktioniert die Variablen Rechnung - außer einer der Wert hat 0
    Er summiert fleißig, aber wenn ein Heizkreis aus ist, schreibt er einen höheren Wert als der zweite Kreis alleine...

    Bild Text


  • @Habedere sagte:

    wenn ein Heizkreis aus ist, schreibt er einen höheren Wert als der zweite Kreis alleine.

    Ist das wirklich so, oder sieht es im Flot-Chart nur so aus ?
    Poste bitte mal den vom Blockly erzeugten Javascript-Code ohne die letzte Zeile in Code tags.


  • Ja. Die einzelnen Zähler schreiben zwischen 00:00 und 02:00 Uhr jeweils Null Watt.
    Das Script schreibt 400.

    var Wert1, Wert2;
    
    /**
     * Beschreibe diese Funktion …
     */
    function Summe() {
      setState("javascript.0.Gesamtleistung_WMZ"/*Gesamtleistung_WMZ*/, (Wert1 + Wert2), true);
    }
    
    
    on({id: 'mbus.0.LUG-67578190.data.4-0-Current', change: "ne"}, function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      Wert1 = getState("mbus.0.LUG-67578190.data.4-0-Current").val;
      Summe();
    });
    on({id: 'mbus.0.LUG-67578194.data.4-0-Current', change: "ne"}, function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      Summe();
      Wert2 = getState("mbus.0.LUG-67578194.data.4-0-Current").val;
    });
    

    Ich hab mir im Flot (nicht die originalen Daten aus der Tabelle) nochmal die Werte etwas genauer angesehen - der rechnet auf jedenfalls nicht ganz korrekt.


  • @Habedere

      Summe();
      Wert2 = getState("mbus.0.LUG-67578194.data.4-0-Current").val;
    

    Vertausche bitte die Reihenfolge: Summe unter setze Wert2 mit ...

Suggested Topics

1.8k
Online

34.9k
Users

40.9k
Topics

560.9k
Posts