NEWS
Mit Blockly zwei Werte addieren und neu in DB schreiben
-
@guergen said in Mit Blockly zwei Werte addieren und neu in DB schreiben:
@goetschhofer Nutze und kenne den Adapter gar nicht.
Du hast doch den Zähler ausgelesen, wie ich das so sehe. Nimm doch SA und die 1.80 & 2.80 und lass das SA machen....:
Ja das Thema ist etwas komplexer, denn würde ich dies über SA machen, würde er laufend den Momentan-Saldo aus +Bezug-1.7.0 u. -Einspeisung-2.7.0, positiv und negativ mit den nächsten Werten saldieren und wir hätten energietechnisch das "NET METERING" was ja in A u. D nicht gemacht wird. In Italien und Spanien wird es so gemacht.
Net Metering wäre verrechnungstechnisch natürlich eine tolle Sache, da hätte ich null Bezugskosten.D. h. wenn der Momentan-Saldo aus Bezug und Einspeisung positiv ist, dann muss er dies in das Töpfchen Tages-Bezug einwerfen und bei negativ in das Töpfchen Tages-Einspeisung und nicht alles in einen Topf, da sonst netmetering.
Am Ende des Tages wird der Wert im Topf Bezug und im Topf Einspeisung getrennt ermittelt und nicht saldiert.Anbei ein Screenshot aus der App des Amis-Zählers. Die unten dargestellten Werte kann man leider nicht auslesen und auch nicht parsen, da die Werte unten dynamische Werte sind. Habe ich im Forum mit Experten in parsen schon geklärt, ansonsten würde ich ja gerne auf diese Werte zugreifen.
Daher meine Bitte an dich wegen Ergänzung blockly.
Danke im Voraus.
-
@goetschhofer OK, verstanden, das lässt sich nicht so einfach machen, parsen kann ich auch noch nicht....
Kannst Du denn nicht einen IR-Lesekopf an deinem Zähler anbringen? Ich habe mir einen TTL-Lesekopf und einen Wemos gekauft (zusammen keine 25€) und lese die Daten mittels smartmeter aus.
Das Problem ist, dass zu den Watt-Werten ja ein Zeitfaktor muss, um auf einen kWh oder Wh-Wert zu kommen.
Alternativ kannst du das mit dem Virtualpowermeter machen, vielleicht nicht zu 100% genau, aber immerhin -
@dslraser
Hallo nochmal, jetzt krieg ich bald die Krise ;-), habe es nach Deinem Vorschlag geändert und krieg kein laufendes Skript mit diesen Fehlermeldungen?
-
@rudolfn Versuch doch mal meins... das läuft
Sieht in meinen Augen auch einfacher aus.... -
@rudolfn
Nimm im Javascript Adapter den Haken unten rechts raus.
Nicht alle Zustände beim Start abonnieren (Haken raus) -
Sorry für das Missverständnis, ich habe ja bereits einen IR-Lesekopf angebracht, welcher mir alle 2 Sekunden die Bezugs- und Einspeiswerte, 1.7.0 u. 2.7.0 und die Zählerstände für Bezug und Einspeisung über MQTT in den iobroker fehlerlos liefert.
Die Tageswerte habe ich noch nicht, eben wegen Problem netmetering.
Daher meine große Bitte an dich das bestehende blockly soweit ergänzen, dass er mir noch 2 Datenpunkte liefert, eben mit
Anlage zusätzliche Objekte für:
Wenn der Wert aus Summe 170+270 positiv ist, dann schreibe (aktualisiere) SUMME 170 270 plus
Wenn der Wert aus Summe 170+270 negativ ist, dann schreibe (aktualisiere) SUMME 170 270 negativ
Diese neuen Werte möchte ich anschließend in sourceanalytix verwenden um Tages-Bezug und Tages-Einspeisung darzustellen.Ich denke doch, dass es in SA funktionieren müsste, da er den Wert je nach Situation getrennt in plus oder minus in "consumed" verarbeitet und hier die Tageswerte ermittelt.
Bei meinem Shelly1PM (Schwimmbadpumpe) läuft es genau so, Shelly1PM liefert den Leistungswert in W und SA ermittelt mir den Tageswert und weitere.
Heute noch kein Tageswert, da kein PV-Überschuss vorhanden.
-
@goetschhofer sagte in Mit Blockly zwei Werte addieren und neu in DB schreiben:
Anlage zusätzliche Objekte für:
Wenn der Wert aus Summe 170+270 positiv ist, dann schreibe (aktualisiere) SUMME 170 270 plus
Wenn der Wert aus Summe 170+270 negativ ist, dann schreibe (aktualisiere) SUMME 170 270 negativDann lege diese zwei Datenpunkte zusätzlich an, dann kannst Du Dein bestehendes Blockly erweitern, so wie Du es selbst beschrieben hast
Wenn der Wert aus Summe 170+270 positiv ist, dann schreibe (aktualisiere) SUMME 170 270 plus
Wenn der Wert aus Summe 170+270 negativ ist, dann schreibe (aktualisiere) SUMME 170 270 negativOder wobei brauchst Du Hilfe ?
-
Die Anlage der Datenpunkte ist für mich kein Problem,
Ich würde mein Blockly gerne bezüglich folgendes erweitern und würde dich bitten, dass du mir hier vielleicht weiterhilfst.
Das Problem ist, wenn ich in das bestehende blockly eingreife und teste, dann habe ich falsche Werte in den aktuellen Objekten.Aktuelles Blockly:
170=Momentan-Bezug auf irgend einer Phase: L1,L2,L3
270=Momentan-Einspeisung auf irgend einer Phase: L1,L2,L3
Summe 170 270 = SALDO Momentan-Bezug u. Einspeisung 3-Phasen-Saldierung, dies läuft bereits.<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="5k}(y]MVDRUNbOxECkJt">summe</variable> </variables> <block type="schedule" id="**{}]7ei59`(N*|ou37v" x="-137" y="-1512"> <field name="SCHEDULE">*/2 * * * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="04CEwCi/(d1*/(^%z-|X"> <field name="VAR" id="5k}(y]MVDRUNbOxECkJt">summe</field> <value name="VALUE"> <block type="math_arithmetic" id="O)XOn2w+2MEYKh+_i^T6" inline="false"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="Vv3iW}5G,a%,hF?iO4dq"> <field name="NUM">1</field> </shadow> <block type="get_value" id="1MV.[J[?Vxe;s2g@VT9`"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.AMIS.170</field> </block> </value> <value name="B"> <shadow type="math_number" id="aNx(u#^_(su!4Pyla9C!"> <field name="NUM">1</field> </shadow> <block type="get_value" id="0W[V_Lxj$oW6%y|FyPon"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.AMIS.270</field> </block> </value> </block> </value> <next> <block type="update" id=",]R8%D@+}|rm/}OUVPer"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.AMIS.SUMME_170_270</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="QWFsuL1-Xs)gB#NnSAC?"> <field name="VAR" id="5k}(y]MVDRUNbOxECkJt">summe</field> </block> </value> </block> </next> </block> </statement> </block> </xml>
Ermittlung zusätzlicher Werte (Datenpunkte) für Saldo getrennt nach Ergebnis positiv und negativ:
Ich weiß nicht, ob dies möglich ist, gleich im selben blockly diese Datenpunkte zu erzeugen ?Wenn der Wert aus Summe 170+270 positiv ist, dann schreibe (aktualisiere) SUMME 170 270 plus
Wenn der Wert aus Summe 170+270 negativ ist, dann schreibe (aktualisiere) SUMME 170 270 negativDiese neuen Werte getrennt nach positiv und negativ möchte ich anschließend in sourceanalytix verwenden um Tages-Bezug und Tages-Einspeisung darzustellen.
Danke im Voraus.
-
@goetschhofer
meinst Du das so ?
Zum Testen kannst Du ja zusätzlich unter javascript.0 die Datenpunkte anlegen und auch ein neues Testblockly anlegen was dann da zugreift und dort "rum probieren" Das bestehende Blockly kannst ja erstmal unangetastet lassen.
-
Perfekt, vielen Dank !!!
Eine Verständnisfrage habe ich noch.
Können die beiden blocklys parallel laufen, da ich ja beim 1. blockly das Objekt userdata.0 AMIS Summe_170_270 ja auch schon aktualisiere ?
Kommen die sich hier nicht in die Quere ? -
@goetschhofer
Wenn Du nur "testen" willst, dann lege diesen DP doch auch unter javascript.0 nochmal an. -
@guergen
Hallo habe es versucht, das Skript läuft, aber es schreibt mir keine Summe in die Variable (habe schon versucht, nach wert zu konvertieren und die Variable mit Value und state, es schreibt die Summe nicht rein:-o)
Lg -
@rudolfn
Browser mal aktualisiert ? -
@rudolfn Das ist aber seltsam, bei mir läuft das seit März durchgehend und ohne Fehler!
Konvertieren brauchst Du nicht (normal), weil es ja Zahlen sind -
Bin gerade dabei das blockly nachzubauen.
Bei der Übernahme der Datenpunkte habe ich das Problem, wenn ich z. B. mit klick 170 übernehmen und mit ok bestätigen möchte, so übernimmt er mir das Objekt nicht.
Offenbar kann man ein Objekt im blockly nicht 2 x verwenden, da es beim Versuch andere Objekte zu aktivieren funktioniert oder mach ich hier was anderes falsch ?Ist es möglich, dass du mir die Vorlage exportierst, dann könnte ich versuchen, diese gleich zu importieren.
Danke
-
@goetschhofer evtl weil der DP SUMME_170_270_- die falsche Rolle hat?
Ansonsten kannst Du DP sooft du willst in einem Blockly benutzen. Erst beim einschalten des Script´s hagelt es dann Fehler...
Aber nur falls es zu logikproblemen führt! -
@guergen said in Mit Blockly zwei Werte addieren und neu in DB schreiben:
@goetschhofer evtl weil der DP SUMME_170_270_- die falsche Rolle hat?
Ansonsten kannst Du DP sooft du willst in einem Blockly benutzen. Erst beim einschalten des Script´s hagelt es dann Fehler...
Aber nur falls es zu logikproblemen führt!Datenpunkt 170 hat die Rolle number, sollte ich Zahl wählen ? Nein, mit value funktioniert es auch nicht.
-
@goetschhofer Ich sehe da was anderes:
Hier ist das Script:
<block xmlns="https://developers.google.com/blockly/xml" type="schedule" id="**{}]7ei59`(N*|ou37v" x="-137" y="-1512"> <field name="SCHEDULE">*/2 * * * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="04CEwCi/(d1*/(^%z-|X"> <field name="VAR" id="+yyUBft,kRI{oX,sCC0E">summe</field> <value name="VALUE"> <block type="math_arithmetic" id="O)XOn2w+2MEYKh+_i^T6" inline="false"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="Vv3iW}5G,a%,hF?iO4dq"> <field name="NUM">1</field> </shadow> <block type="get_value" id="1MV.[J[?Vxe;s2g@VT9`"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.AMIS.170</field> </block> </value> <value name="B"> <shadow type="math_number" id="aNx(u#^_(su!4Pyla9C!"> <field name="NUM">1</field> </shadow> <block type="get_value" id="0W[V_Lxj$oW6%y|FyPon"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.AMIS.270</field> </block> </value> </block> </value> <next> <block type="controls_if" id="oFc2#are5W}sv^Kg9mbu"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="0]%B[Qg$Ymx_dz!muAe{"> <field name="OP">LT</field> <value name="A"> <block type="variables_get" id="Rxg$Aa9AEbMX(jekLw#W"> <field name="VAR" id="+yyUBft,kRI{oX,sCC0E">summe</field> </block> </value> <value name="B"> <block type="math_number" id="7o]@zP)1F-Tx6-lTKC/)"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="97rKiTzh+`j-w.@+Ej}i"> <field name="COMMENT">negative Summe</field> <next> <block type="update" id="_})C8E`6PiI3|I8Wg=$9"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="a@R-S-1p@S[@|#0UwguI"> <field name="VAR" id="+yyUBft,kRI{oX,sCC0E">summe</field> </block> </value> </block> </next> </block> </statement> <statement name="ELSE"> <block type="comment" id="c2p=K0}J1Z!9~oFQg!G("> <field name="COMMENT">negative Summe</field> <next> <block type="update" id="+Rg3Ho,}}V7g+Rb-t;eY"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="9#m9S/jEKqqM3q`fpA^K"> <field name="VAR" id="+yyUBft,kRI{oX,sCC0E">summe</field> </block> </value> </block> </next> </block> </statement> <next> <block type="update" id=",]R8%D@+}|rm/}OUVPer"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.AMIS.SUMME_170_270</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="QWFsuL1-Xs)gB#NnSAC?"> <field name="VAR" id="+yyUBft,kRI{oX,sCC0E">summe</field> </block> </value> </block> </next> </block> </next> </block> </statement> </block>
-
Danke für den Hinweis, nur soweit bin ich noch gar nicht.
-
Beim Importieren mit copy & paste über rechts oben-importieren, bekomme ich folgende Fehlermeldung ?