NEWS
( gelöst )Balkonkraftwerk Stromüberschuß Klimaanlage
-
Hallo,
ich hab doch dein Script doch noch soweit selber gebastelt bekommen, bis auf 2 Stop Funktionen. Die finde ich nicht, wo du "Stop: delayOn" und "Stop:delayOff" hast.
Ich habe nur die Stop Funktion mit zyklischer Ausführung gefundenZudem wenn ich das Script jetzt starte, bekomme ich eine Meldung nach einigen Sekunden
"ReferenceError: unbenannt is not defined"Jetzt weiß ich natürlich nicht ob es dieser Stop Funktion liegt, oder generell noch ein Fehler vorhanden ist
Ich habe natürlich zum Testen, die Stromwerte etwas angepasst, ob die Klima überhaupt anspringt
Vielleicht kannst du mir noch einmal etwas helfen -
@perladd sagte: Die finde ich nicht, wo du "Stop: delayOn" und "Stop:delayOff" hast.
Der 4. Block von oben. Dann die richtige Timer-Variable selektieren.
-
Da habe ich leider nichts drin stehen, das steht nur ein Häckchen drin, sonst kann ich da nichts auswählen
Was denn Fehler angeht, kann ich aber schon sagen, das es von der Abfrage des Stromzählers kommt.
-
@perladd sagte: Da habe ich leider nichts drin stehen,
Blockly zeigen!
-
wie bekomme ich denn die Blöcke hie rein
-
@perladd sagte: wie bekomme ich denn die Blöcke hie rein
Per Snipping Tool oder ähnlichem Programm ein Bild erstellen und dann hier hochladen (oben 3. Symbol von rechts).
-
-
rechts oben ist die Stop Funktion, wo bei der Auswahl nichts drin steht
-
@perladd sagte: bei der Auswahl nichts drin steht
Du hast Intervalle anstelle von Timeouts verwendet. Es muss so aussehen:
-
okay, das hab ich jetzt hinbekommen und bekomme auch zur Zeit keine Fehlermeldung mehr.
Bekommen wir das noch hin, das wir den aktuellen gesamt Strombezug angezeigt bekommen, sprich bei den aktuellen Werten die 200Watt, dann den Grenzwert und evtl. einen Timer, wo die 2Min runter zählen. -
@perladd sagte: aktuellen gesamt Strombezug angezeigt
Mit einem Debug-Block loggen:
-
okay das habe ich auch hinbekommen. Ich habe jetzt zur Zeit gerade einen Strombezug von -20Watt, Die -20W habe ich auch in meinem GrenzwertEin eingetragen. Trotzdem wird die Klima nicht eingeschaltet
Eine Idee wo mein Fehler noch liegen könnte?
-
@perladd sagte: Die -20W habe ich auch in meinem GrenzwertEin eingetragen. Trotzdem wird die Klima nicht eingeschaltet
Der Bezug muss für volle 2 Minuten unter dem Grenzwert bleiben, damit eingeschaltet wird. Einmal nur drüber und delayOn wird gestoppt und neu gestartet.
-
ah okay, dann hab ich das falsch verstanden. Ich werde das dann alles mal so testen und ansonsten melde ich mich nocheinmal, ob es evtl. ein Optimierung gibt, wenn ich es nicht selber hinbekomme.
Ich sage vielen lieben Dank für deine tolle Unterstützung und vor allem Nerven, das das Projekt zum laufen gebracht wurde.
VG
Thomas -
Hallo,
ich bins doch noch einmal. Habe das Script jetzt mal eine Zeit mitlaufen lassen und da ist mir bei meinem Stromzähler noch so einiges aufgefallen. Er hat nicht nur einen Ausgang für meinen Strombezug, smit kann ich also nicht mit dem negativen Wert rechnen. Es gibt einmal "Power_Consumtion" für den tatsächlichen Strombezug und einmal "Power_Delivery" alles auch nur positive Werte. Das ganze ist mir aufgefallen, weil er entweder die Klima nicht eingeschaltet bzw. auch nicht wieder ausgeschaltet hat. Vielleicht könntest du mir dabei noch einmal kurz helfen bei der Umsetzung
Gibt es evtl. auch die Möglichkeit, das ich eine Nachricht erhalte, wenn der Stromüberschuss erreicht ist und die Klima ein bzw. ausgeschaltet wurde. Das wäre allerdings zweitrangig und SpielereiVG
Thomas -
@perladd sagte: einmal "Power_Consumtion" für den tatsächlichen Strombezug und einmal "Power_Delivery" alles auch nur positive Werte.
Dann bilde die Differenz "Bezug - Einspeisung" als eigenen Datenpunkt unter "0_userdata.0" oder innerhalb des Skripts (Zweifach-Trigger).
Innerhalb des Skripts:
-
Hallo,
das hat ja super geklappt, funktioniert fast
Nur beim unterschreiten des Grenzwertes bekomme ich einen clearTimeout --> not foundUnd der Bezug wird mir im Prokoll nicht negativ dargestellt, das ist irritierend wobei ja z.B. Strombezug-Stromerzeugung ( 0W - 500Watt ) ja negativ sein muss, aber egal, eingeschaltet wurde die Klima schon Mal
Hast du evtl. noch eine Idee woran es beim auschalten liegen könnte
-
@perladd sagte: clearTimeout --> not found
Falsche Variable bei "stop delayOff" zugewiesen oder falscher Stop-Block?
Sonst zeige den erzeugten Javascript-Code ohne die letzte Zeile in Code tags.@perladd sagte in Balkonkraftwerk Stromüberschuß Klimaanlage:
Und der Bezug wird mir im Prokoll nicht negativ dargestellt
Nur die Variable
bezug
wird negativ. Sie wird ohne Debug-Block nicht protokolliert. Falls Debug-Block vorhanden, dannbezug
anstelle vonWert
an diesen übergeben. -
Hallo,
sorry bin jetzt erst wieder dazu gekommen, hier ist der Code
var bezug, grenzwertEin, grenzwertAus, delayOn, delayOff; on({id: [].concat(['discovergy.0.60671207.Power_Consumption']).concat(['discovergy.0.60671207.Power_Delivery']), change: "ne"}, async function (obj) { bezug = parseFloat(getState("discovergy.0.60671207.Power_Consumption").val) - getState("discovergy.0.60671207.Power_Delivery").val; grenzwertEin = -400; // Hysterese etwas größer als Leistungsaufnahme grenzwertAus = parseFloat(grenzwertEin) + 2000; console.log((['Bezug:',(obj.state ? obj.state.val : ""),'W. Grenzwert Ein:',grenzwertEin].join(''))); if (bezug >= grenzwertEin) { (function () {if (delayOn) {clearTimeout(delayOn); delayOn = null;}})(); } else if (!delayOn) { delayOn = setTimeout(async function () { setState("melcloud.0.devices.58426579.control.power"/*Power*/, true); }, 30000); } if (bezug <= grenzwertAus) { (function () {if (delayOff) {clearTimeout(delayOff); delayOff = null;}})(); } else if (!delayOff) { delayOff = setTimeout(async function () { setState("melcloud.0.devices.58426579.control.power"/*Power*/, false); }, 30000); } });
MOD-EDIT: Code in code-tags gesetzt!
-
@perladd sagte: hier ist der Code
Kann keinen Fehler erkennen.
Ersetze bei DebugWert
durchbezug
, um die Differenz zu sehen.