NEWS
Heizlastanalyse mit WMZ + Simulierung 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 erkennenIn manchen Augen alles etwas "Overkill" - aber ich steh drauf
-
@paul53
Hier mal der erste Versuch zu Punkt 1:
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:
-
@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:
Das zum Thema "in Blockly leicht möglich"
Da liege ich ja meilenweit danebenDer M-Bus liefert in meinen Augen schon zahlen, da ich aber absolut neu bin in der Materie
habe ich lieber zur sicherheit konvertiertDanke 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:
Datenstruktur aufm Pi:
Übernommene RAW-Daten:
Das Script mit der angepassten IP und den korrekten ID-Namen (Port wieder auf 8082 geändert):
Nur der zusätzliche M-Bus ordner unten ist neu...
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:
mfg
-
@Habedere sagte:
Das Script mit der angepassten IP und den korrekten ID-Namen:
- Der Port stimmt nicht: 8082
- 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:
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:
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... -
@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.
-
Summe(); Wert2 = getState("mbus.0.LUG-67578194.data.4-0-Current").val;
Vertausche bitte die Reihenfolge: Summe unter setze Wert2 mit ...
-
@paul53 sagte in Heizlastanalyse mit WMZ + Simulierung WP:
Summe(); Wert2 = getState("mbus.0.LUG-67578194.data.4-0-Current").val;
Vertausche bitte die Reihenfolge: Summe unter setze Wert2 mit ...
Done - man wird sehen hatte ich gar nicht bemerkt dass es zwei verschiedene Reihenfolgen waren.
-
Servus,
sieht gut aus das letzte ScriptWeiter geht mit der anderen Baustelle..
Damit versuch ich die aktuelle Leistung der WMZ in Stromverbrauch einer Wärmepumpe um zu rechnen.
WP_elektrisch=Leistung_Öl / COPDer COP ist abhängig von Außentemperatur und Vorlauftemperatur.
Die Außentemperatur kann ich mithlife einer Funktion darstellen.
In diesem Fall f(x) = 0x^3 + 0,014x^2 + 0,145x + 3,402
Im ersten Versuch würde ich Werte für gezielte Vorlauftemperaturen generieren - in diesem Fall 35°
Quelle:
Könnte das Script so funktionieren?
Wie stelle ich die Quadratfunktion dar? Habe zwar das "10^X" gefunden - verstehe aber ehrlich gesagt die Verwendung nicht ganz.Kann ich den anfallenden Stromverbrauch bzw. Leistung in kWh umrechnen damit ich die Werte wieder mit dem Analytics Adapter loggen kann?
EDIT: Also das Script funktioniert und scheint einigermaßen richtig zu rechnen Hab nur noch eine Komma-Rundung eingebaut.
Meine Formel scheint aber einen kleinen Haken zu haben - da muss ich nochmal ran. Alles in einer Formel zu rechnen klappt leider nicht In Richtung der beiden äußersten Temperaturwerte driften die errechneten COP-Werte leider extrem aus.
Somit muss ich alle Temperaturbereiche einzeln abfragen...
Die Frage zur Umrechnung bleibt. -
@paul53
Also das mit der Umrechnung zu kWh hat sich ja erledigt, da der Analytics das ja beherrscht - zumindest fast...Nochmal zu meinem Umrechnungsscript.
Da die Gesamtfunktion etwas schwächelt muss ich die einzelnen Temperaturbereiche einzeln abfragen.Kann/soll ich das irgendwie in einem Script verhackstückeln?
So würde der der Bereich zwischen 7° und 25° aussehen
Mit "sonst falls" erweitern?
Noch ein kleines Problem...
Und zwar springt die Pumpe für den NT Kreis alle paar Minuten an und generiert einen "Fake-Spitzenwert"
Das verfälscht die ganze Ansicht in Flot. Kann ich das irgendwie unterbinden?
Bei der Gesamtberechnung kann ich es ja gem. deinem HInweis im anderen Thread anpassen:
@paul53 sagte in [Neuer Adapter Beta 0.2.275] SourceAnalytix (Verbrauch Protokollierung von Strom/Gas/Flüssigkeiten):
@007Schneiderlein Eigentlich sollte Dein Skript funktionieren. Einfacher geht es so:
Wert und vorheriger Wert sind Eigenschaften des Triggerdatenpunktes (unter Blöcke "Trigger").
Hmm... glaube mein Versuch sieht nicht so gut aus...
Denke die "größer als letztes" Abfrage sollte ich direkt in dem einzelnen Leistungsabfragebreich vom NT Kreis einbauen oder?