NEWS
SMA Wechselrichter
-
Ok läuft! Sorry das mit dem "Alias" habe ich wohl übersehen! Also nicht böse sein! Danke trotzdem für deine Hilfe! Aber manchmal sieht man vor lauter Bäumen den Wald nicht mehr!
-
Schön das es jetzt läuft!
-
Ich rechne die über ein einfaches Blockly um bzw. stelle den Value auf "0" wenn er ins negative rutscht und benutze den Datenpunkt für die Aufzeichnung. `
Hallo wendy2702,
hast du da einmal ein Blockly Beispiel für mich?
Schöne Grüße
Jochen
-
Hier für meine Leistung. Kann natürlich sein das es auch einfacher/anders geht aber so funktioniert es für mich.
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="controls_if" id="pEdg8L|_2wfYKM;Rj1F[" x="13" y="-138"><value name="IF0"><block type="logic_compare" id="ve_IO@?a.NH#!K6lN})H"><field name="OP">LT</field>
<value name="A"><block type="get_value" id="TT2|XzE?cX=Yjx3I~Ow0"><field name="ATTR">val</field>
<field name="OID">modbus.0.inputRegisters.30775_PVLeistung</field></block></value>
<value name="B"><block type="math_number" id="t^z^92g=Pn8B[=x,VmPb"><field name="NUM">0</field></block></value></block></value>
<statement name="DO0"><block type="update" id="Wq4l-jClESAENIfLeu0A"><mutation delay_input="false"></mutation>
<field name="OID">javascript.0.PV_Anlage.PVLeistung</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE"><block type="math_number" id="Qn]36t+jv%=@C]y|^Qvu"><field name="NUM">0</field></block></value></block></statement>
<next><block type="on_ext" id="T;-)_93^_CNk]zc+*i?l"><mutation items="1"></mutation>
<field name="CONDITION">ne</field><value name="OID0"><shadow type="field_oid" id="*!^cdo:#]/##i8spF)b="><field name="oid">modbus.0.inputRegisters.30775_PVLeistung</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id=".}+H/b5qr#e}V#j_X=}4"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_compare" id="6:l9GI-Hw9;yihdsPUyC"><field name="OP">GTE</field> <value name="A"><block type="get_value" id="M)@JQTnKz8Ho%dEp,7Q~"><field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.30775_PVLeistung</field></block></value> <value name="B"><block type="math_number" id="wcpgAmpQ5uZ_l5(?mNOq"><field name="NUM">0</field></block></value></block></value> <statement name="DO0"><block type="update" id="?.Ww%r(xZs+o%/T3ycEZ"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.PV_Anlage.PVLeistung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="get_value" id="pgY3;iduTqZgSldqSi]|"><field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.30775_PVLeistung</field></block></value></block></statement> <value name="IF1"><block type="logic_compare" id="6/fvm-#3-/,r/~Lmdu)-"><field name="OP">LT</field> <value name="A"><block type="get_value" id="FFgd*E==nz0L{D~::s:k"><field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.30775_PVLeistung</field></block></value> <value name="B"><block type="math_number" id="78_UF%EsZ.YM6c5HP9%v"><field name="NUM">0</field></block></value></block></value> <statement name="DO1"><block type="update" id="gFDt@;i.`fV[r+v/Cei6"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.PV_Anlage.PVLeistung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_number" id="W@dellLrOQAqxuiM}Ple"><field name="NUM">0</field></block></value></block></statement></block></statement></block></next></block></xml>
-
Schön das es jetzt läuft! `
Danke nochmal! Hier ein paar Screenshots! Läuft einwandfrei!!!
6077_iobroker1.jpg
6077_iobroker2.jpg -
Hier für meine Leistung. Kann natürlich sein das es auch einfacher/anders geht aber so funktioniert es für mich.
Blockly_PV_leistung.jpg
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="controls_if" id="pEdg8L|_2wfYKM;Rj1F[" x="13" y="-138"><value name="IF0"><block type="logic_compare" id="ve_IO@?a.NH#!K6lN})H"><field name="OP">LT</field>
<value name="A"><block type="get_value" id="TT2|XzE?cX=Yjx3I~Ow0"><field name="ATTR">val</field>
<field name="OID">modbus.0.inputRegisters.30775_PVLeistung</field></block></value>
<value name="B"><block type="math_number" id="t^z^92g=Pn8B[=x,VmPb"><field name="NUM">0</field></block></value></block></value>
<statement name="DO0"><block type="update" id="Wq4l-jClESAENIfLeu0A"><mutation delay_input="false"></mutation>
<field name="OID">javascript.0.PV_Anlage.PVLeistung</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE"><block type="math_number" id="Qn]36t+jv%=@C]y|^Qvu"><field name="NUM">0</field></block></value></block></statement>
<next><block type="on_ext" id="T;-)_93^_CNk]zc+*i?l"><mutation items="1"></mutation>
<field name="CONDITION">ne</field><value name="OID0"><shadow type="field_oid" id="*!^cdo:#]/##i8spF)b="><field name="oid">modbus.0.inputRegisters.30775_PVLeistung</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id=".}+H/b5qr#e}V#j_X=}4"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_compare" id="6:l9GI-Hw9;yihdsPUyC"><field name="OP">GTE</field> <value name="A"><block type="get_value" id="M)@JQTnKz8Ho%dEp,7Q~"><field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.30775_PVLeistung</field></block></value> <value name="B"><block type="math_number" id="wcpgAmpQ5uZ_l5(?mNOq"><field name="NUM">0</field></block></value></block></value> <statement name="DO0"><block type="update" id="?.Ww%r(xZs+o%/T3ycEZ"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.PV_Anlage.PVLeistung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="get_value" id="pgY3;iduTqZgSldqSi]|"><field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.30775_PVLeistung</field></block></value></block></statement> <value name="IF1"><block type="logic_compare" id="6/fvm-#3-/,r/~Lmdu)-"><field name="OP">LT</field> <value name="A"><block type="get_value" id="FFgd*E==nz0L{D~::s:k"><field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.30775_PVLeistung</field></block></value> <value name="B"><block type="math_number" id="78_UF%EsZ.YM6c5HP9%v"><field name="NUM">0</field></block></value></block></value> <statement name="DO1"><block type="update" id="gFDt@;i.`fV[r+v/Cei6"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.PV_Anlage.PVLeistung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_number" id="W@dellLrOQAqxuiM}Ple"><field name="NUM">0</field></block></value></block></statement></block></statement></block></next></block></xml>
```` `
Hi wendy,
vielen Dank für den Tipp mit dem Skript. Super Lösung.
Ich hab das auch gleich noch für die Eingangsspannung erstellt:
LG Gerald
-
Hier für meine Leistung. Kann natürlich sein das es auch einfacher/anders geht aber so funktioniert es für mich.
Blockly_PV_leistung.jpg
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="controls_if" id="pEdg8L|_2wfYKM;Rj1F[" x="13" y="-138"><value name="IF0"><block type="logic_compare" id="ve_IO@?a.NH#!K6lN})H"><field name="OP">LT</field>
<value name="A"><block type="get_value" id="TT2|XzE?cX=Yjx3I~Ow0"><field name="ATTR">val</field>
<field name="OID">modbus.0.inputRegisters.30775_PVLeistung</field></block></value>
<value name="B"><block type="math_number" id="t^z^92g=Pn8B[=x,VmPb"><field name="NUM">0</field></block></value></block></value>
<statement name="DO0"><block type="update" id="Wq4l-jClESAENIfLeu0A"><mutation delay_input="false"></mutation>
<field name="OID">javascript.0.PV_Anlage.PVLeistung</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE"><block type="math_number" id="Qn]36t+jv%=@C]y|^Qvu"><field name="NUM">0</field></block></value></block></statement>
<next><block type="on_ext" id="T;-)_93^_CNk]zc+*i?l"><mutation items="1"></mutation>
<field name="CONDITION">ne</field><value name="OID0"><shadow type="field_oid" id="*!^cdo:#]/##i8spF)b="><field name="oid">modbus.0.inputRegisters.30775_PVLeistung</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id=".}+H/b5qr#e}V#j_X=}4"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_compare" id="6:l9GI-Hw9;yihdsPUyC"><field name="OP">GTE</field> <value name="A"><block type="get_value" id="M)@JQTnKz8Ho%dEp,7Q~"><field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.30775_PVLeistung</field></block></value> <value name="B"><block type="math_number" id="wcpgAmpQ5uZ_l5(?mNOq"><field name="NUM">0</field></block></value></block></value> <statement name="DO0"><block type="update" id="?.Ww%r(xZs+o%/T3ycEZ"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.PV_Anlage.PVLeistung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="get_value" id="pgY3;iduTqZgSldqSi]|"><field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.30775_PVLeistung</field></block></value></block></statement> <value name="IF1"><block type="logic_compare" id="6/fvm-#3-/,r/~Lmdu)-"><field name="OP">LT</field> <value name="A"><block type="get_value" id="FFgd*E==nz0L{D~::s:k"><field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.30775_PVLeistung</field></block></value> <value name="B"><block type="math_number" id="78_UF%EsZ.YM6c5HP9%v"><field name="NUM">0</field></block></value></block></value> <statement name="DO1"><block type="update" id="gFDt@;i.`fV[r+v/Cei6"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.PV_Anlage.PVLeistung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_number" id="W@dellLrOQAqxuiM}Ple"><field name="NUM">0</field></block></value></block></statement></block></statement></block></next></block></xml>
```` `
Ich benutze dieses Script, welches auch sehr gut funktioniert:
on({id: "modbus.0.inputRegisters.30777_Power_L1", change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("javascript.0.PV_Anlage.Werte.PVLeistung", (getState("modbus.0.inputRegisters.30777_Power_L1").val), true); });
Damit greife ich natürlich in VIS oder Flot nicht mehr auf das Modbusregister zu, sondern auf die Javascript Variable.
Gruß
Volker
-
Ich habe 2 Wechselrichter die mit dem Sunny-Beam (nicht die Bluetooth, sondern die alte Funkversion) verbunden sind.
Könnte man den Sunny-Beam auslesen und die Daten im ioBroker verwenden? Evtl. auch über USB?
-
kannst du mal sagen welche WR genau das sind?
Dann kann man mal schauen was die für ein Protokoll sprechen.
Aber verstehe ich das richtig das die per Funk mit dem Sunny Beam kommunizieren? Sorry das ich nachfrage aber ich kenne das Teil nicht.
EDIT: gerade mal die Anleitung Sunny Beam Funk überflogen. Etwas fertiges um den Sunny Beam auszulesen habe ich hier noch nicht gesehen.
EDIT1: hat der WR einen Seriellen Anschluß? dann vielleicht so –> viewtopic.php?f=20&t=5911&hilit=sunny&start=20
Kannst auch mal fragen ob er weitergekommen ist: viewtopic.php?f=8&t=11033&hilit=sunny
-
Hallo zusammen,
Echt super eure Erläuterungen. Bin absoluter neuling in Sachen Raspberry, JavaScript und iobroker und habe dank eurer vielen Posts schnell zurecht gefunden.
Habe fast alles eingebunden STP9000 / SB1.5 / SI6.0 / SHM2.0
Aber zu meinen vielen Edimax SP-2101w funksteckdosen habe ich nicht wirklich etwas gefunden wie ich sie visualisiert bekomme.
Hat da jemand Erfahrung oder vielleicht schon eine Lösung mit passendem Skript?
@Marcolotti echt super Visualisierung würdest du sie mir eventuell bereit stellen, lerne an Beispielen schneller
Mit freundlichen Grüßen
-
Hallo zusammen,
ersteinmal vorweg eine tolle Arbeit, die ihr hier geleistet habt. Sehr schönes Projekt.
Bin derzeit noch in er Einarbeitsungsphase des ioBrokers. Es macht sher viel spaß, ist aber alles auch nicht Out of the Box
EInen Anfang habe ich schonmal gemacht, aber ein paar Werte bekomme ich noch nicht so wirklich raus. Vielleicht könnt ihr mit dabei helfen.
vorhandenes Equipment:
Sunny Home Manager 2.0
zwangsläufig Sunny Portal
SMA SunnyBoy 3.0
SMA SunnyBoy 5.0
Ich möchte im ersten Schritt in meinem ioBroker eigentlich nur dieselben Werte haben wie im Sunny Portal:
Mein aktueller Stand:
ioBroker samt Adapter Läuft. Durch die Bezeichnungen bin ich noch nicht wirklich durchgestiegen, aber zwei habe ich schonmal gefunden:
Netzeinspeisung
Netzbezug
Nun fehlt mir noch als Livewert die PV Erzeugung (von meinen zwei Wechselrichter zusammen) und der aktuelle Gesamtverbrauch.
Diesen finde ich in meiner Übersicht leider nicht:
Könnt ihr mir helfen wie ich an diese Werte komme?
Besten Dank und schöne Grüße
Kevin
-
Hi,
also die PV Erzeugung erhalten die meisten per Modbus aus den WRs und der Gesamtverbrauch wird errechnet.
Ob der Homemanager 2.0 die Daten liefert kann ich nicht sagen da ich das Teil nicht habe.
-
Ja, PV-Erzeugung kommt aus dem/den WR, Einspeisung Überschuss bzw. Netzbezug vom SHM. Die Differenz ist Dein Verbrauch.
Musst also rechnen: Verbrauch = Netzbezug - Einspeisung + Erzeugung WR1 + Erzeugung WR2
-
Vielen Dank für die schnellen Antworten.
Also der Reihe nach muss ich demnach jetzt folgendes machen?
1. ModBus Adapter im ioBroker installieren und mit meinem Wechselrichter verbinden? Mein Wechselrichter hat Netzwerk und demnach brauche ich dort nur die IP Adresse eintragen um die zu Verbinden?
2. Wenn ich die Werte dann über den ModBus von den Wechselrichter habe, muss ich mir mittels Blocky eine Rechnung schreiben, der die Werte errechnet?
Danke Euch und Grüße
Kevin
-
Hallo Kevin,
fast. Modbus ja, aber dann musst Du noch die notwendigen Register hinterlegen, aus denen die Daten entnommen und als States im ioBroker abgelegt werden. Die Werte findest Du hier im Forum.
Die Berechnung kannst Du mit Blockly oder einem Skript machen (gute Einführung auf der ioBroker-Seite verlinkt), das den Wert in einem neuen State ablegt.
-
1. ModBus Adapter im ioBroker installieren und mit meinem Wechselrichter verbinden? Mein Wechselrichter hat Netzwerk und demnach brauche ich dort nur die IP Adresse eintragen um die zu Verbinden? `
Modbus am WR aktivieren wenn er es denn Unterstützt. Adapter und Instanz installieren und Konfigurieren mit Registern die gelesen werden sollen.
Einige Beispiele stehen in diesem Thread auf den ersten Seiten.
2. Wenn ich die Werte dann über den ModBus von den Wechselrichter habe, muss ich mir mittels Blocky eine Rechnung schreiben, der die Werte errechnet? `
Yep. Oder im Forum suchen, gibt hier schon "fertige" Lösungen.
-
Dank Euren Tipps bin ich nun auch schon einen Schritt weiter.
Ich habe einen modbus.0 Adapter installiert und die erste passende Adresse im Eingangsregister hinterlegt.
Jetzte habe ich gerade noch ein kleines andere Problem, wo ich im Forum nichts zu gefunden habe.
Wenn ich einen weitere modbus.1 Adapter anlege und diesem mit meinem ZWEITEN Wechselrichter verbinde klappt das auch.
Wenn ich aber dann dieselbe Adresse in das Eingangsregister eintrage wie für den ersten Wechselrichter erscheint folgende Meldung und die Instanz startet gar nicht mehr:
modbus.1 warn Poll error count: 1 code: {"errorCode":132,"exceptionCode":2,"message":"ILLEGAL DATA ADDRESS"}
Es scheint als wenn ich die Adresse für den PV Ertrag 30775 nur einem Modbus Adapter hinterlegen kann.
Habt ihr da eine Idee?
Danke unn Grüße
Kevin
-
Hmm, da fällt mir auch nicht viel ein. Nur zur Sicherheit: Du hast im zweiten Adapter auch die IP-Adresse des 2. WR angegeben und nicht versehentlich nochmal die des ersten?
Da wäre für mich die einzige Erklärung.
-
Du hast aber in beiden Instanzen unterschiedliche IP's für die einzelnen WRs eingetragen?
Desweiteren ist es auch möglich das dieser WR entweder kein Modbus kann, die Register anders sind, Modbus noch nicht aktiv ist, etc.
Was passiert wenn du Modbus.0 stoppst und nur 1 startest? Geht es dann?
Was passiert wenn du in Instanz 0 mal die IP von dem WR einträgst der nicht funktioniert?
-
ihr seit ja fix…
während ich Eure Sachen testen wollte habe ich den Fehler gefunden.
Es war nicht die doppelte Adresse, die das Problem war, sondern der Name.
so ging es nicht
modbus.0 30775 Name: PV Erzeugung
modbus.1 30775 Name: PV Erzeugung
so geht es
modbus.0 30775 Name: PV Erzeugung
modbus.1 30775 Name: PV Erzeugung 1
Jetzt geht es weiter, daraus einen neuen State zu machen der beides Addiert...
Danke Euch für die Mühe .....