NEWS
[Gelöst]Batteriespeichersimulation mit AMIS-Daten in Blockly
-
@goetschhofer
ich habe eben erst Dein Blockly mal importiert. Das hier ist Trigger in Trigger, das geht fast immer schief...Der Zeitplan ist doch schon Dein Trigger, lasse den anderen einfach weg. (sollte so reichen)
-
Ja, das könnte auch der Grund sein, dass er sich ab und zu aufhängt im blockly.
Mache ich raus.
Habe dies in einem Youtube Video gesehen, aber wohl nicht wirklich verstanden.Danke
-
@goetschhofer
versuche es mal so in der Art (ist aber nur ein Beispiel für den obersten Wert)EDIT: dafür habe ich die Variable
1_Ermittlung_LADELEISTUNG_in_W
erstellt -
Schön langsam kapiere ich die Logik von Blockly, ist es richtig von rechts nach links lesen ?
Ich denke mit einer Variablen wird es einfacher.
Was sagt der Profi ?
-
@goetschhofer sagte in Batteriespeichersimulation mit AMIS-Daten in Blockly:
Was sagt der Profi ?
Ich weiß nicht was der sagen würde, aber ich würde mir so helfen.
Edit: nur ein Hinweis...in Variablen und id's würde ich keine Sonderzeichen/Leerzeichen usw. nutzen, da das manchmal seltsame Auswirkungen hat. In Namen von Datenpunkten ist es egal.
-
-
Du hast mich auf eine Idee gebracht.
Man könnte doch bei der Ermittlung Ladeenergie in Wh auch auf eine Variable setzen, dann müsste es noch einfacher werden ?
Kann ich bei der Variablen: Ermittlung Ladeenergie in Wh auf den bereits geschriebenen DP Ladeleistung in W zurückgreifen ?
Oder spießt sich dies vom Ablauf und zeitlich?
-
Blockly arbeitet alles der Reihe nach ab, also wenn Dein Trigger (der Zeitplan) auslöst, wird das Blockly von oben nach unten abgearbeitet. Wenn es den Wert dann schon gibt kannst Du das machen. Wenn das zu schnell erfolgt und der Wert dann noch nicht da ist, dann kann es sein das Du noch ein timeout brauchst. Wenn die Variablen ganz oben im Zeitplan sind, dann wird in diese Variablen das eingelesen was gerade im Datenpunkt steht. Du kannst auch mit reinen Variablen (ohne Datenpunkt arbeiten), das hat aber den Nachteil das nach einem Neustart vom Blockly/oder dem Adapter, oder des ganzen ioBroker keine "Zwischenwerte" da sein können.
Edit: nur ein Hinweis...in Variablen und id's würde ich keine Sonderzeichen/Leerzeichen usw. nutzen, da das manchmal seltsame Auswirkungen hat. In Namen von Datenpunkten ist es egal.
-
@dslraser said in Batteriespeichersimulation mit AMIS-Daten in Blockly:
Blockly arbeitet alles der Reihe nach ab, also wenn Dein Trigger (der Zeitplan) auslöst, wird das Blockly von oben nach unten abgearbeitet. Wenn es den Wert dann schon gibt kannst Du das machen. Wenn das zu schnell erfolgt und der Wert dann noch nicht da ist, dann kann es sein das Du noch ein timeout brauchst. Wenn die Variablen ganz oben im Zeitplan sind, dann wird in diese Variablen das eingelesen was gerade im Datenpunkt steht. Du kannst auch mit reinen Variablen (ohne Datenpunkt arbeiten), das hat aber den Nachteil das nach einem Neustart vom Blockly/oder dem Adapter, oder des ganzen ioBroker keine "Zwischenwerte" da sein können.
Edit: nur ein Hinweis...in Variablen und id's würde ich keine Sonderzeichen/Leerzeichen usw. nutzen, da das manchmal seltsame Auswirkungen hat. In Namen von Datenpunkten ist es egal.
Danke für den Hinweis mit Leer- und Sonderzeichen, werde ich auf jeden Fall ändern.
Was würdest du mir empfehlen, die 2. Variable wieder durch die normale Berechnung ersetzen ?
Warum schreibt er mir die Ladeenergie nur in ganzen Wh in den DP, obwohl beim schreiben auf 3 Nachkommastellen runde
Muss ich die Rundung bereits oben in den Variablen machen ?
Hier hätte ich versucht ein Runden einzufügen, dies funktioniert aber nicht.
Danke
-
Das Problem mit den Nachkommastellen bei der Ladung in Wh habe ich schon gelöst, da hatte einen Fehler in der Variablen Ermittlung Ladeenergie in Wh, am Schluß noch >0; dies war der Fehler.
-
Die Be- und Entladebegrenzung mit z. B. 2.500 W habe ich nun doch über die Variablen realisiert.
Soweit funktioniert dies auch.Wie könnte ich den letzten Punkt die Beladegrenze beim Speicherstand z. B. 5.000 Wh und Entladegrenze 0 Wh umsetzen ?
Auch über eine Variable und über eine Falls Funktion ?
Nur wo schiebe ich diese noch hinein ?Danke für einen Tipp.
-
Wenn bei der Abfrage die Entladeleistung zwischen -2500 und <0 liegten soll, wie würdest du die Bedingung formulieren `?
Er ermittelt mir jetzt zwar die Entladeleistung, aber die Umrechnung in Entladeenergie in Wh ergibt null.
Ich vermute mal, dass es ein >= oder <= bei -2500 liegt.Habe schon alles durchprobiert.
-
@goetschhofer
ich verstehe gerade nicht genau was nicht geht (ich war mit etwas anderem beschäftigt...)
Zum Testen/probieren baue doch einfach mal debug Bausteine ein. (oder in einem extra kleinen Testblockly)
z.B. so19.9.2021, 22:18:14.624 [info ]: javascript.0 (2749) script.js.99_Test.Test_Leistung: wahr
-
-
@dslraser said in Batteriespeichersimulation mit AMIS-Daten in Blockly:
@goetschhofer
ich verstehe gerade nicht genau was nicht geht (ich war mit etwas anderem beschäftigt...)
Zum Testen/probieren baue doch einfach mal debug Bausteine ein. (oder in einem extra kleinen Testblockly)
z.B. so19.9.2021, 22:18:14.624 [info ]: javascript.0 (2749) script.js.99_Test.Test_Leistung: wahr
Wo gibst du den Testwert ein ?
-
@goetschhofer sagte in Batteriespeichersimulation mit AMIS-Daten in Blockly:
Wo gibst du den Testwert ein ?
ich habe bei mir den Datenpunkt ENTLADEN_W genommen (bei mir kommen ja keine Daten und das Blockly ist aus und wird nicht aktualisiert) Du kannst ja auch einen neuen Datenpunkt dafür anlegen, oder eine Variable benutzen.
-
Habe mir jetzt ein Testblockly erstellt.
Entweder habe ich jetzt einen Hänger oder .... ?
Der Minus-Wert von -3500 liegt nicht zwischen 0 und -2500, dann müsste doch falsch als Ergebnis kommen ?
Bei mir kommt falsch.
-
@goetschhofer sagte in Batteriespeichersimulation mit AMIS-Daten in Blockly:
Habe mir jetzt ein Testblockly erstellt.
Entweder habe ich jetzt einen Hänger oder .... ?
Der Minus-Wert von -3500 liegt nicht zwischen 0 und -2500, dann müsste doch falsch als Ergebnis kommen ?
Bei mir kommt falsch.
Du machst in Deinem Beispiel...falls 0 kleiner gleich -2.500 (0 ist ja nicht kleiner als -2.500) also ist das falsch. (steht auch so im Log) In Deinem Beispiel vergleichst Du ja 0 mit -2.500. Die Variable Testwert wird ja nirgends von Dir verglichen.
-
Sorry, du hast natürlich Recht, hier war ich wieder mal zu schlampig.
Interessant ist für mich folgendes:
Offenbar ignoriert er hier das Minus ?Testwert -3.500: bei oberer Grenzwert -2500
Testwert -2.000: bei oberer Grenzwert -2500
Jetzt hätte ich mir nochmals eine 2. Testvariante aufgebaut, aber da habe ich ein Problem mit der Verknüpfung mit dem DP Entladung W.
Wie kriege ich hier unter Objekt-ID den DP rein ? Anklicken funktioniert nicht.
Danke
-
@goetschhofer sagte in Batteriespeichersimulation mit AMIS-Daten in Blockly:
Wie kriege ich hier unter Objekt-ID den DP rein ? Anklicken funktioniert nicht.
den oberen nehmen
Im Log steht alles richtig (meiner Meinung nach)