NEWS
Stromverbrauch berechnen
-
@mat8 sagte in Stromverbrauch berechnen:
Hallo,
ich möchte meinen Stromverbrauch berechnen und locke mir die Daten per Zwischenzähler und RS 485 Schnittstelle. Das funktioniert auch soweit, jetzt möchte ich allerdings auch den Verbrauchten Strom (kWh) berechnen und auf meinen Start wert vom EVU Zähler rechne um den Aktuellen wert des Zählers zu wissen.Mein Blockly
Meine Zahlen
Warum wird bei meiner Hilfsvariable der Wert als Wort und nicht als Zahl angezeigt?
Warum wird die Hilfsvariable nicht berechnet?Ich hoffe das mir einer meine Fragen beantworten kann und bedanke mich schonmal
Neben dem Problem das die Hilfsvariable nicht sauber gespeichert wird wirst Du noch ein Problem bekommen:
Durch die Art und Weise wie das System mit Aktualisierungen der Datenpunkte umgeht ist nicht sichergestellt das der Baustein
den direkt vorher geschriebenen Wert beinhaltet.Ich empfehle:
- Erstelle eine Variable im Skript
- Weise dieser Variablen den Wert
zu
- Aktualisiere dann den Datenpunkt "Hilfsvariable" mit dem Wert der Variablen
- Nutze beim Aktualisieren des Aktuellen Zählerstand in der Berechnung die Variable an Stelle des oben angegebenen "wert von..." Baustein.
A.
-
@mat8 Deine Hilfsvariable ist auch keine Variable, sondern ein Datenpunkt (und der ist vermutlich vom falschen Typ). Ersetz das mal gegen eine Variable, die Du im Blockly definierst und kontrollier mal die Datentypen von "Gateway/Zaehler1..." und "Unterzähler". Die sollten auch "number" sein.
-
@asgothian sagte in Stromverbrauch berechnen:
Nutze beim Aktualisieren des Aktuellen Zählerstand in der Berechnung die Variable an Stelle des oben angegebenen "wert von..." Baustein.
Hat dies irgendweche Vorteile oder Änderungen zur Folge? Evtl. Genauigkeit? Bei mir läuft die Berechnung des Stromverbrauchs über den Datenpunkt, damit der Wert bei einem ioBroker-Neustart nicht weg ist.
-
@kusi Wenn du das so umsetzt wie ich es geschrieben habe - nein. Du aktualisierst ja weiterhin den Datenpunkt "Hilfsvariable" mit dem geänderten Wert.
Die im Skript definierte variable dient nur dazu das du keine verschachtelten Lese/Schreiboperationen machen musst.A.
Es sollte in Etwa so aussehen. Bei den Datenpunkten brauchst du etwas Fantasie - da hab ich natürlich nicht die die du nutzt.
-
@asgothian sagte:
ist nicht sichergestellt das der Baustein den direkt vorher geschriebenen Wert beinhaltet.Es ist sogar (nahezu) ausgeschlossen, dass der gerade geschriebene Wert wieder eingelesen wird.
-
@asgothian @paul53
Also verstehe ich richtig, wenn ich einen Wert in einen Datenpunkt schreibe und diesen innert kürzester Zeit wieder auslese, dass es passieren könnte, dass noch nicht der "neue" Wert vom DP gelesen wird? -
@kusi sagte in Stromverbrauch berechnen:
dass es passieren könnte,
Der Schreibvorgang dauert seine Zeit, in der Zeit fragt das Skript aber längst diesen Wert schon wieder ab
-
@homoran sagte in Stromverbrauch berechnen:
Der Schreibvorgang dauert seine Zeit
Das ist gut zu wissen... Dies war mir so nie bewusst. Ich habe Variablen möglichst vermieden, werde diesen aber in Zukunft mehr Aufmerksamkeit schenken.
-
@kusi sagte in Stromverbrauch berechnen:
Das ist gut zu wissen... Dies war mir so nie bewusst. Ich habe Variablen möglichst vermieden, werde diesen aber in Zukunft mehr Aufmerksamkeit schenken.
Es macht Sinn sich dazu Gedanken zu machen.
Alle Werte die nur 'lokal' und 'zeitlich begrenzt' von Interesse sind sollten generell als Variablen abgebildet werden, nicht als Datenpunkte.
Auch Werte die innerhalb eines Skripts mehrfach gelesen oder geschrieben werden sollten sinnvollerweise im Skript in einer Variablen gehalten und nur selektiv gelesen und geschrieben werden.
Datenpunkte sind nur dann Sinnvoll wenn
- die Werte extern (also ausserhalb des Skriptes) benötigt werden
- sichergestellt werden muss das bei einem Neustart des Skriptes die Werte nicht verloren gehen.
In dem Beispiel von Dir ist mir z.Bsp. nicht klar warum "hilfsvariable" ein Datenpunkt ist. Du brechest den Wert im Skript und Nutzt ihn im Skript direkt. Wenn dieser Wert ausserhalb dieses Skriptes nicht benötigt wird sollte eine Variable ausreichen.
A.
-
@asgothian Danke vielmals für deine Erklärung. Dies mit der Hilfsvariable ist nicht von mir, dies war @Mat8.
Verbraucht es nicht mehr RAM, wenn mehr Variablen (anstelle Datenpunkte) genutzt werden? Ich habe z.B. das Problem, das mein Raspberry nach rund 3-4 Wochen unter 1 Gb freiem RAM sinkt, obschon ich die 4 Gb Version habe. -
@kusi sagte: Verbraucht es nicht mehr RAM, wenn mehr Variablen (anstelle Datenpunkte) genutzt werden?
Nein, es braucht weniger RAM, da Variablen-Operationen viel einfacher sind als Datenpunkt-Operationen.