NEWS
Heizlastanalyse mit WMZ + Simulierung WP
-
@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? -
@Habedere sagte:
Mit "sonst falls" erweitern?
Ja. Ich würde die Berechnung des Faktors in einem Aussentemperatur-Trigger machen und den Faktor als Variable an die Callback-Funktion des WMZ-Triggers übergeben. Die Aussentemperatur ändert sich nur langsam.
@Habedere sagte in Heizlastanalyse mit WMZ + Simulierung WP:
glaube mein Versuch sieht nicht so gut aus
Richtig. Mache die Abfrage in jedem Trigger getrennt. In eine Funktion gehört kein Trigger !
@Habedere sagte:
springt die Pumpe für den NT Kreis alle paar Minuten an und generiert einen "Fake-Spitzenwert"
Hast Du einen Datenpunkt, der den Betrieb der Pumpe anzeigt ? Wenn ja, dann trigger auf diesen Datenpunkt und erzeuge eine Sperrvariable, die nach einer kurzen Zeit (timeout) wieder zurück gesetzt wird.
-
@Habedere sagte:
die Pumpe für den NT Kreis alle paar Minuten an
Das sollte nicht sein ! Was verursacht dieses Verhalten ? Es ist doch sicherlich eine Mischkreispumpe ?
-
@paul53 sagte in Heizlastanalyse mit WMZ + Simulierung WP:
@Habedere sagte:
die Pumpe für den NT Kreis alle paar Minuten an
Das sollte nicht sein ! Was verursacht dieses Verhalten ? Es ist doch sicherlich eine Mischkreispumpe ?
Ja das gefällt mir auch nicht. Hier wurde vom Vorbesitzer rumgebastelt auf Einzelraumsteuerung.
Der Regler hierfür ist im EG. Wenn ich hier die Zeitschaltfunktion aktiviere entsteht das verhalten.
Das Problem ist aber nur vorhanden wenn lt. Regler bzw. Temperaturabfragung keine Heizung benötigt wird. Warum dass so ist kann ich mir nicht erklären...
Muss ich mal im Htd-Forum fragen.Hier der neueste Versuch meines Scripts:
So besser?
-
@Habedere sagte:
So besser?
Ja.
Da die Funktion Summe() nur eine Anweisung und keine Verknüpfung von Variablen enthält, ist sie überflüssig: Die eine Anweisung kann auch direkt in den Trigger (anstelle Funktionsaufruf).Die Und-Verknüpfungen mit Vergleich Aussentemperatur < x kann man sich sparen, denn sonst liefert die Bedingung schon, wenn man die Reihenfolge beachtet, wie Du es getan hast.
-
@paul53 sagte in Heizlastanalyse mit WMZ + Simulierung WP:
@Habedere sagte:
So besser?
Ja.
Da die Funktion Summe() nur eine Anweisung und keine Verknüpfung von Variablen enthält, ist sie überflüssig: Die eine Anweisung kann auch direkt in den Trigger (anstelle Funktionsaufruf).Die Und-Verknüpfungen mit Vergleich Aussentemperatur < x kann man sich sparen, denn sonst liefert die Bedingung schon, wenn man die Reihenfolge beachtet, wie Du es getan hast.
Like this:
Danke nochmal für deine fleißige Unterstützung
-
@Habedere sagte:
Like this:
Nicht ganz:
falls AT >= 25
sonst falls AT >= 7
sonst falls AT >= 2
sonst falls AT >= -7
sonst falls AT >= -15
sonst -
@paul53 sagte in Heizlastanalyse mit WMZ + Simulierung WP:
@Habedere sagte:
Like this:
Nicht ganz:
falls AT >= 25
sonst falls AT >= 7
sonst falls AT >= 2
sonst falls AT >= -7
sonst falls AT >= -15
sonstDas hab ich mir fast gedacht, da du gezielt "<" erwähnt hast und die Reihenfolge.
Wobei mir die Logik dahinter nicht wirklich klar ist.
Es muss also immer in die gleiche Richtung laufen?
Also entweder alle mit > oder alle mit <?EDIT: soll natürlich >= heißen!