NEWS
[gelöst] per falls deaktivierte Aktionen werden ausgeführt
-
Hallo zusammen.
ich habe ein Blockly mit dem ich den Ladestrom für mein e-Auto Abhängig vom Überschuss steuere.
Das klappt soweit auch ganz gut.
(weil abgeschnitten: getriggert wird auf die Einspeisung alle 6 Sekunden, und auf die Aktivierung des Laders)Zusätzlich habe ich für den "Schlechtwetter-Notfall" einen Knopf zum deaktivieren dieser überschussabhängigen Steuerung eingebaut und im Skript abgefragt.
Eigentlich dürfte nach meinem Verständnis bei aktivem Knopf, keine Anpassung des Ladestroms stattfinden.
passiert aber:um 10:36 wurde der state "manual_override" auf true gesetzt, trotzdem wird um 11:01 geregelt.
Was übersehe ich?
-
Ich hab die Ursache gefunden!
das Prüfintervall, das im Script irrtümlich ausgeblendet war:
wird bereits vorher gestartet und läuft durch, was auch beabsichtigt war.
Allerdings sollten die Werte nur gesetzt werden, wenn manual_override falsch ist.Da muss ich noch mal dran schrauben.
EDIT:
habe jetzt die letzten beiden falls aus dem Intervall einfach mal darunter gesetztEDIT2:
scheint wie gewünscht zu klappen.
Der Ladestrom wat jetzt "eingefroren". kurz den Button "manuell" deaktiviert - beim nächsten triggern sprang der Wertt von 10A auf 6A um. nach erneutem aktivieren hängt es jetzt da fest. -
Jetzt habe ich doch noch ein Problem
ich nutze den go-e Charger, bei dem vom Hersteller gewarnt wird "zu oft" in den Flashspeicher zu schreiben.
Dieser würde nur etwa 100.000 Schreibzugriffe aushalten.
Dafür hat er einen weiteren Datenpunkt hinzugefügt, damit bei Überschusssteuerung nicht jedesmal der Flashspeicher beschrieben wird.Dieses passiert z.B. beim Schalten des Datenpunktes
alw
allow_charging, also beim an und ausschalten eines Ladevorganges.Hochgerechnet müsste dann der Flashspeicher etwa 30 Jahre halten - gut!
Jetzt habe ich trotzdem mal zur Überwachung die Änderungen des
alw
geloggt und mich eben erschrocken, als der bei minimale Nutzung nach 4 Monaten bereits auf 1200 stand.Dann habe ich noch etwas am Skript geändert und den Datenpunkt
Flashcounter
angefangen zu loggen.dabei fiel mir auf, dass dieser Wert beim Abschalten um mehr als 1 hochgezählt wird, und zwar anscheinend unterschiedlich
Wenn es "nur" falsch hochgezählt wird ist es vertretbar, aber wenn tatsächlich so vile Schreibvorgänge stattfinden sind es einfach zu viele.
Wie kann ich herausfinden, wo die Ursache ist?
-
@homoran sagte: um mehr als 1 hochgezählt wird
Wenn nicht jedes Hochzählen in die History geschrieben wird, ist es vermutlich ein Laufzeitproblem (schnelles Prellen?). Schreibe den Zählerstand besser bei Skriptstart in eine Variable und zähle diese hoch.
-
Dankje
@paul53 sagte in :Wenn nicht jedes Hochzählen in die History geschrieben wird, ist es vermutlich ein Laufzeitproblem (schnelles Prellen?). Schreibe den Zählerstand besser bei Skriptstart in eine Variable und zähle diese hoch.
Daran hatte ich auch gedacht, es ist aber anders herum
Jedes Schalten wird gezählt, allerdings einiges mehrfach.
Dadurch ergab sich für mich die Frage, ob ggf. auch mehrfach geschrieben wird.EDIT:
Sorry, ich war unpräzise!
es werden nicht mehrere Einträge erzeugt, sondern in einem Eintrag direkt um 2 oder 3 hochgezählt! -
@homoran sagte: sondern in einem Eintrag direkt um 2 oder 3 hochgezählt!
Genau das führte mich zu meiner Vermutung mit dem Laufzeitproblem.
-
@paul53 sagte:
Genau das führte mich zu meiner Vermutung mit dem Laufzeitproblem.
Danke, dann probiere ich es.
-
@paul53 sagte :
Genau das führte mich zu meiner Vermutung mit dem Laufzeitproblem.
ich hatte ja auch an das Problem mit der asynchronen Verarbeitung gedacht, aber ich verstehe es nicht, dass/warum es dann zu zu hohen Werten kommt.
wenn bei schneller Abarabeitung nicht hochgezählt würde, wäre es für mich klar.Aber langer Rede gar kein Sinn: zumindest jetzt hat es mit der Variablen geklappt und es wurde beim Abschalten nur um 1 hochgezählt.
Nochmals Danke!
ich werde es im Auge behalten. -
@homoran sagte:
ich werde es im Auge behalten.
@paul53
das manuelle Ausschalten über die vis hatte gestern immer nur um 1 hochgezählt.heute hat sich der Ladevorgang per Skript beendet und leider wieder direkt um 3 hochgezählt.
Ich befürchte daher, dass dann auch tatsächlich 3x geschrieben wird.
Da ich aber anscheinend noch einige Bugs drin hatte, hatte ich heute morgen noch einiges verändert und wollte (irgendwann) das Skript komplett anders aufbauenDer früher verlinkte Code passt also nicht mehr.
Bei der Suche nach dem Datenpunkt
Allow Charging
habe ich nur das eine Skript und dort 7 Referenzen gefunden, von denen nur 2 mit einem setState einen Schreibvorgang bewirken sollten.
Habe es jetzt sicherheitshalber mal eine Verzögerung eingebaut.
Die Änderung des Datenpunkts triggert auch das Skript, sollte aber IMHO bei false nichts mehr machen: