PV-Anlage - SMA Wechselrichter und Batterie an homee simulieren [hih]

Ist zwar der falsche Thread (hier geht’s um PV-Anlagen via vhih), aber ja das geht.

Ok, das ist prima dass das geht. Könnte ich vielleicht ein Beispiel haben?
Die PV hab ich aus diesem Thread umgesetzt, vielen Dank nochmal an alle die hier ihre Arbeit teilen.
Wenn jemand Interesse an der PV hih ohne Speicher hat, hätte ich ein Flow…

Hallo @medicus07,

ich bin jetzt auch so weit und schmeiße den hEM bei mir raus. Deine Flow-Beispiele konnte ich problemlos auf meiner Synology-Docker-Box übernehmen. Ich setze nur einen kleinen STP ein und habe keine Batterie.
An welcher Stelle in deinem Flow findet die Berechnung der Einspeisung statt?
Ich versuche möglichst viel des erzeugten Stroms in meine Wärmepumpe zu jagen (Warmwasserbereitung) und hatte das bislang mit dem hEM ganz gut hinbekommen.
Mit dem Flow bekomme ich aber dauerhaft Werte angezeigt, die bei mir nicht passen.


Aktuell erzeugt meine PV-Anlage ca. 800W, deckt sich mit dem Wert „Produktion“. Die Werte für Entladung und Ladezustand muss ich rausbekommen bzw. aus dem Flow entfernen. Aber an welcher Stelle?

Bei mir sieht das so aus:

[{"id":"b4587306.426c9","type":"mqtt out","z":"877e4a56.6f339","name":"Erzeugung","topic":"mqtt/0/payload/power","qos":"1","retain":"","broker":"e1ea96aa.be39f","x":890,"y":480,"wires":[]},{"id":"194c32df.5740dd","type":"mqtt out","z":"877e4a56.6f339","name":"Einpeisung","topic":"mqtt/0/payload/grid_feedin","qos":"1","retain":"","broker":"e1ea96aa.be39f","x":890,"y":300,"wires":[]},{"id":"7888e95f.b7a1a8","type":"mqtt out","z":"877e4a56.6f339","name":"Bezug","topic":"mqtt/0/payload/grid_consumption","qos":"1","retain":"","broker":"e1ea96aa.be39f","x":870,"y":160,"wires":[]},{"id":"9a4eb93e.f1eb4","type":"ui_gauge","z":"877e4a56.6f339","name":"Bezug","group":"1e1959c8.19dbee","order":1,"width":0,"height":0,"gtype":"gage","title":"Bezug","label":"W","format":"{{value}}","min":0,"max":"5000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"200","seg2":"3000","x":870,"y":220,"wires":[]},{"id":"a8045bb.7129ca8","type":"ui_gauge","z":"877e4a56.6f339","name":"Erzeugung","group":"1e1959c8.19dbee","order":1,"width":0,"height":0,"gtype":"gage","title":"Erzeugung","label":"W","format":"{{value}}","min":0,"max":"5000","colors":["#ff2600","#e6e600","#00fa00"],"seg1":"200","seg2":"3000","x":890,"y":540,"wires":[]},{"id":"a4299551.6d2378","type":"ui_gauge","z":"877e4a56.6f339","name":"Einspeisung","group":"1e1959c8.19dbee","order":1,"width":0,"height":0,"gtype":"gage","title":"Einspeisung","label":"W","format":"{{value}}","min":0,"max":"4000","colors":["#ff2600","#e6e600","#00fa00"],"seg1":"200","seg2":"1500","x":890,"y":360,"wires":[]},{"id":"79e5590d.972218","type":"inject","z":"877e4a56.6f339","name":"Abfrage SI","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"1800","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"[{\"name\":\"PV-Erzeugung\",\"topic\":\"PV-Erzeugung\",\"dataType\":\"FC3\",\"address\":30775,\"quantity\":2,\"interval\":15000,\"ieeeType\":\"off\",\"ieeeBE\":true},{\"name\":\"Tagesertrag\",\"topic\":\"Tagesertrag\",\"dataType\":\"FC3\",\"address\":30537,\"quantity\":2,\"interval\":15000,\"ieeeType\":\"off\",\"ieeeBE\":true},{\"name\":\"Netzbezug\",\"topic\":\"Netzbezug\",\"dataType\":\"FC3\",\"address\":30865,\"quantity\":2,\"interval\":15000,\"ieeeType\":\"off\",\"ieeeBE\":true},{\"name\":\"Einspeisung\",\"topic\":\"Einspeisung\",\"dataType\":\"FC3\",\"address\":30867,\"quantity\":2,\"interval\":15000,\"ieeeType\":\"off\",\"ieeeBE\":true},{\"name\":\"Tagesbezug\",\"topic\":\"Tagesbezug\",\"dataType\":\"FC3\",\"address\":30577,\"quantity\":2,\"interval\":15000,\"ieeeType\":\"off\",\"ieeeBE\":true}]","payloadType":"json","x":150,"y":120,"wires":[["3e5de599.cd17da"]]},{"id":"3e5de599.cd17da","type":"modbustcp-read","z":"877e4a56.6f339","name":"SMA","topic":"","dataType":"HoldingRegister","adr":"30845","quantity":"2","rate":"25","rateUnit":"s","server":"210e638a.28e284","ieeeType":"off","ieeeBE":"true","x":270,"y":340,"wires":[["e82897fb.ca601"]]},{"id":"e82897fb.ca601","type":"switch","z":"877e4a56.6f339","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"Tagesbezug","vt":"str"},{"t":"eq","v":"Netzbezug","vt":"str"},{"t":"eq","v":"Einspeisung","vt":"str"},{"t":"eq","v":"Tagesertrag","vt":"str"},{"t":"eq","v":"PV-Erzeugung","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":410,"y":340,"wires":[["ec8a7cd9.d73e28"],["c586bda5.756268"],["fd33659f.adfda8"],["522b590d.b33548"],["4c7e1df.ba90f64"]]},{"id":"ec8a7cd9.d73e28","type":"function","z":"877e4a56.6f339","name":"Filter","func":"var leistung = (parseInt(msg.payload[1])/1000).toFixed(1);\n//var leistung = tempmilli/1000;\nmsg.payload = leistung;\nreturn msg;","outputs":1,"noerr":0,"x":630,"y":260,"wires":[["86943c35.59d55"]]},{"id":"c586bda5.756268","type":"function","z":"877e4a56.6f339","name":"Filter","func":"return{payload:msg.payload[1]}","outputs":1,"noerr":0,"x":630,"y":300,"wires":[["3498f87f.393938","7888e95f.b7a1a8","9a4eb93e.f1eb4"]]},{"id":"fd33659f.adfda8","type":"function","z":"877e4a56.6f339","name":"Filter","func":"return{payload:msg.payload[1]}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":340,"wires":[["f1732f75.79a1a8","194c32df.5740dd","a4299551.6d2378"]]},{"id":"4c7e1df.ba90f64","type":"function","z":"877e4a56.6f339","name":"Filter","func":"return{payload:msg.payload[1]}","outputs":1,"noerr":0,"x":630,"y":420,"wires":[["df64210.1c79a6","b4587306.426c9","a8045bb.7129ca8"]]},{"id":"522b590d.b33548","type":"function","z":"877e4a56.6f339","name":"Filter","func":"return{payload:msg.payload[1]}","outputs":1,"noerr":0,"x":630,"y":380,"wires":[["3be90cf1.ac67ec"]]},{"id":"3be90cf1.ac67ec","type":"function","z":"877e4a56.6f339","name":"Wert  an EM","func":"var wert = msg.payload\n\nnode.send({payload:{\"attribute\":{\"id\":730,\"value\":Number(msg.payload)}}})\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":890,"y":440,"wires":[["5875400f.63b48"]]},{"id":"f1732f75.79a1a8","type":"function","z":"877e4a56.6f339","name":"Wert  an EM","func":"var wert = msg.payload\n\nnode.send({payload:{\"attribute\":{\"id\":723,\"value\":msg.payload}}})\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":890,"y":400,"wires":[["5875400f.63b48"]]},{"id":"df64210.1c79a6","type":"function","z":"877e4a56.6f339","name":"Wert  an EM","func":"var wert = msg.payload\n\nnode.send({payload:{\"attribute\":{\"id\":728,\"value\":msg.payload}}})\n","outputs":1,"noerr":0,"x":890,"y":580,"wires":[["5875400f.63b48"]]},{"id":"3498f87f.393938","type":"function","z":"877e4a56.6f339","name":"Wert  an EM","func":"var wert = msg.payload\n\nnode.send({payload:{\"attribute\":{\"id\":722,\"value\":msg.payload}}})\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":890,"y":260,"wires":[["5875400f.63b48"]]},{"id":"86943c35.59d55","type":"function","z":"877e4a56.6f339","name":"Wert  an EM","func":"var wert = msg.payload\n\nnode.send({payload:{\"attribute\":{\"id\":731,\"value\":Number(msg.payload)}}})\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":890,"y":120,"wires":[["5875400f.63b48"]]},{"id":"5875400f.63b48","type":"homeeDevice","z":"877e4a56.6f339","virtual-homee":"","name":"PV","nodeId":"720","showNodeId":false,"profile":"38","icon":"default","attributes":[{"instance":0,"minimum":0,"maximum":50000,"current_value":1700,"target_value":1700,"last_value":0,"unit":"W","step_value":100,"editable":0,"state":1,"last_changed":1572785482,"changed_by":1,"changed_by_id":0,"based_on":4,"data":"","id":722,"type":264,"node_id":720},{"instance":0,"minimum":0,"maximum":50000,"current_value":2500,"target_value":2500,"last_value":0,"unit":"W","step_value":100,"editable":0,"state":1,"last_changed":1572785482,"changed_by":1,"changed_by_id":0,"based_on":4,"data":"","id":723,"type":265,"node_id":720},{"instance":0,"minimum":0,"maximum":50000,"current_value":258,"target_value":258,"last_value":0,"unit":"W","step_value":100,"editable":0,"state":1,"last_changed":1572785482,"changed_by":1,"changed_by_id":0,"based_on":4,"data":"","id":724,"type":267,"node_id":720},{"instance":0,"minimum":0,"maximum":50000,"current_value":1180,"target_value":1180,"last_value":1240,"unit":"W","step_value":100,"editable":0,"state":1,"last_changed":1572785663,"changed_by":1,"changed_by_id":0,"based_on":4,"data":"","id":728,"type":266,"node_id":720},{"instance":0,"minimum":0,"maximum":9999999,"current_value":0,"target_value":0,"last_value":0,"unit":"kWh","step_value":1,"editable":0,"state":1,"last_changed":1572785482,"changed_by":1,"changed_by_id":0,"based_on":4,"data":"","id":730,"type":275,"node_id":720},{"instance":0,"minimum":0,"maximum":9999999,"current_value":0,"target_value":0,"last_value":0,"unit":"kWh","step_value":1,"editable":0,"state":1,"last_changed":1572785482,"changed_by":1,"changed_by_id":0,"based_on":4,"data":"","id":731,"type":276,"node_id":720}],"statusTemplate":"","x":1110,"y":340,"wires":[[]]},{"id":"9fbea2dc.28ecc","type":"inject","z":"877e4a56.6f339","name":"","repeat":"15","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":150,"y":80,"wires":[["36cc0ae0.b6768e"]]},{"id":"36cc0ae0.b6768e","type":"function","z":"877e4a56.6f339","name":"Berechnung Hausverbrauch","func":"var Einspeisung = global.get(\"Einspeisung\");\nvar Produktion = global.get(\"Produktion\");\nvar Netzbezug = global.get(\"Netzbezug\");\nvar Hausverbrauch;\nvar msgHausverbrauch;\nHausverbrauch = Produktion + Netzbezug - Einspeisung;\nmsgHausverbrauch = { payload: Hausverbrauch };\nreturn msgHausverbrauch;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":460,"y":80,"wires":[["71509743.9ff148"]]},{"id":"71509743.9ff148","type":"function","z":"877e4a56.6f339","name":"Vorzeichen +/-","func":"var wert = msg.payload\n\nif (wert < 0){\nreturn {payload:-wert};\n}\nif (wert >= 0){\nreturn {payload:wert};\n}\n\n\n\n","outputs":1,"noerr":0,"x":700,"y":80,"wires":[["a535bb4c.b75c4"]]},{"id":"a535bb4c.b75c4","type":"function","z":"877e4a56.6f339","name":"Wert  an EM","func":"var wert = msg.payload\n\nnode.send({payload:{\"attribute\":{\"id\":724,\"value\":msg.payload}}})\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":890,"y":80,"wires":[["5875400f.63b48"]]},{"id":"e1ea96aa.be39f","type":"mqtt-broker","z":"","name":"mqtt","broker":"192.168.178.5","port":"1883","tls":"","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthRetain":"false","birthPayload":"","closeTopic":"","closeQos":"0","closeRetain":"false","closePayload":"","willTopic":"","willQos":"0","willRetain":"false","willPayload":""},{"id":"1e1959c8.19dbee","type":"ui_group","z":"","name":"Energie","tab":"6d682a04.c2b4dc","order":1,"disp":true,"width":"6","collapse":false},{"id":"210e638a.28e284","type":"modbustcp-server","z":"","name":"Wechselrichter","host":"192.168.178.30","port":"502","unit_id":"3","reconnecttimeout":"1"},{"id":"6d682a04.c2b4dc","type":"ui_tab","z":"","name":"Home","icon":"dashboard","order":1,"disabled":false,"hidden":false}]

Die Flows für die Anzeige aufm Dashboard können natürlich raus…

Du nutzt auch einen SMA Wechselrichter?!
Ich hab jetzt ähnliche Probleme wie @moviehunter

Löschen der Nodes brachte bislang keine Besserung. Modbus ist nach wie vor, unverändert an.

Hast du die Probleme weiterhin?
Bei mir hat es geholfen, den Modbus aus und wieder einzuschalten und mehrere Male meinen Router neu zu starten. Hört sich komisch an, aber seit dem funktioniert es einwandfrei.

@medicus07
ich weiß nicht genau seit wann, aber im unteren Teil des Diagramms unter Verläufe habe ich statt Uhrzeiten merkwürdige Zahlen stehen.
Ist das ein Bug in homee oder liegt das an deinem Flow?

Hmmm… sieht bei mir wie eh und je aus… normale Uhrzeiten (iOS App).

Vielleicht liegt es an der Android App?

hmmm das kann natürlich sein, dass das mal wieder das Problem ist…
Hat das vielleicht ein anderer Android Nutzer auch?

@Steffen könnt ihr das prüfen?

Hallo,

ich habe einen Fronius Wechselrichter und mir den Flow selbst zusammengebastelt.
In der Android-App hab ich im Verlauf auch diese Zahlen.

Dürfte also an der App liegen.

Hallo, habe eine evtl. blöde Frage: wir bekommen eine PV-Anlage, allerdings wird der WR nicht ohne Weiteres in node red, iobroker, usw. zu integrieren sein.
Jetzt habe ich gesehen, daß es von Fronius einen Stromzähler Smart Meter gibt. Wäre dies auch eine Möglichkeit an Daten zu kommen?
Würde dann ggf. noch eine Aeotec-Zange für die Pufferbatterie mit einbauen…

Möglichkeiten an die Daten zu kommen sind folgende:

  • Modbus Schnittstelle am WR/ Smartester (Registereinträge)
  • API WR/ Smartmeter
  • Plugin ioBroker, NodeRed
  • Aeotec-Zangen

Der WR hat eine LAN-Schnittstelle für die Fernwartung. Darüber laufen auch „Daten“. Genaueres kenne ich noch nicht, auch nicht, ob es eine API gibt; denke nicht.
Plugins habe ich schon mal keine finden können.
Evtl. kann man Daten aus dem Webinterface „abgreifen“.

Das mit der Aeotec-Zange fände ich charmant, aber dann habe ich wohl das Problem, daß die Batterien aussen vor sind, da hier ja noch als Gleichstrom vor dem WR gespeichert wird. Die Leitung zum WR hat also keine 230 V zum Messen…
Bliebe nur WR an Zähler und am Zähler den Verbrauch und die Einspeisung ins Netz.
Soweit richtig?

Evtl. habe ich doch Glück:

Kleines Update zu iOS 14 und Widgets mit Scriptable…

Läuft auch mit VPN on demand.

2 „Gefällt mir“

Würdest du das script -> Scriptable sharen? :smile: )

1 „Gefällt mir“

Gerne:

das Sciptable File (Dateiendung umbenennen pdf in js):
SMA.pdf (1,9 KB)

Das Hintergrundbild:

Das Hintergrundbild liegt bei mir lokal auf der Diskstation, da die Werte der PV-Anlage über NodeRed auch lokal vorliegen, macht das nichts. Der Zugriff für die Aktualisierung des Widget läuft über VPN on-demand.
Das Hintergrundbild kann natürlich auf einem Picture Hoster abgelegt werden.

Der Flow in NodeRed ist folgender…

[{"id":"615177a.98f6908","type":"http response","z":"c9962df.09d63d","name":"","statusCode":"","headers":{"content-type":"application/json"},"x":1650,"y":700,"wires":[]},{"id":"a31a9ca0.99b5f","type":"http in","z":"c9962df.09d63d","name":"","url":"homee1","method":"get","upload":false,"swaggerDoc":"","x":1310,"y":700,"wires":[["db43b251.bbc1"]]},{"id":"db43b251.bbc1","type":"function","z":"c9962df.09d63d","name":"pv data","func":"//PV-Produktion -> PowerPV (NodeID: 1914)\n//Hausverrauch -> PowerLoad (NodeID: 1910)\n//Einspeisung -> PowerInputGrid (NodeID: 1909)\n//Netzbezug -> PowerOutputGrid (NodeID: 1908)\n//Batterieladung -> EnergyStorageLevel (NodeID: 1913)\n//Tagesproduktion -> TotalEnergyProduction (NodeID: 1916)\n//Tageshausverbrauch -> TotalEnergyLoad (NodeID: 1915)\n//Tageseinspeisung -> TotalEnergyInputGrid (NodeID: 1918)\n//Tagesnetzbezug -> TotalEnergyOutputGrid (NodeID: 1917)\n\nconst attributes = global.get(\"homee.attributes\")\nvar PowerPV =  attributes.find(attribute => attribute.id === 1914)\nvar PowerLoad = attributes.find(attribute => attribute.id === 1910)\nvar PowerInputGrid = attributes.find(attribute => attribute.id === 1909)\nvar PowerOutputGrid =  attributes.find(attribute => attribute.id === 1908)\nvar EnergyStorageLevel = attributes.find(attribute => attribute.id === 1913)\nvar TotalEnergyProduction = attributes.find(attribute => attribute.id === 1916)\nvar TotalEnergyLoad =  attributes.find(attribute => attribute.id === 1915)\nvar TotalEnergyInputGrid = attributes.find(attribute => attribute.id === 1918)\nvar TotalEnergyOutputGrid = attributes.find(attribute => attribute.id === 1917)\n\nmsg.payload = {\n    \"PowerPV\":String(PowerPV.current_value),\n    \"PowerLoad\":String(PowerLoad.current_value),\n    \"PowerInputGrid\":String(PowerInputGrid.current_value),\n    \"PowerOutputGrid\":String(PowerOutputGrid.current_value),\n    \"EnergyStorageLevel\":String(EnergyStorageLevel.current_value),\n    \"TotalEnergyProduction\":String((Math.round(100 * TotalEnergyProduction.current_value))/100),\n    \"TotalEnergyLoad\":String((Math.round(100 * TotalEnergyLoad.current_value))/100),\n    \"TotalEnergyInputGrid\":String((Math.round(100 * TotalEnergyInputGrid.current_value))/100),\n    \"TotalEnergyOutputGrid\":String((Math.round(100 * TotalEnergyOutputGrid.current_value))/100)\n};\nreturn msg\n\n//(Math.round(100 * msg.payload.attribute.current_value))/100","outputs":1,"noerr":0,"x":1500,"y":700,"wires":[["615177a.98f6908","954976e.c294308"]]},{"id":"954976e.c294308","type":"debug","z":"c9962df.09d63d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1630,"y":760,"wires":[]}]

Bei Fragen ruhig melden!

VG
Michael

2 „Gefällt mir“

Moin zusammen,

nach anfänglichen Schwierigkeiten, lief das Ganze sehr gut bei mir.
Nun habe ich seit einigen Wochen eine FritzBox anstelle eine Speedports.
Seit dem Wechsel bekomme ich aber keine Verbindung mehr zum Wechselrichter (SMA Sunny Tripower 8000TL-10) hin.
Habe ihn schon mehrfach für mehrere Minuten stromlos gemacht, keine Änderung. In der FritzBox wird er mit einer korrekten IP-Adresse angezeigt.
Diese habe ich dann über Bluetooth (weil ich ja anders nicht auf den WR drauf komme) im WR eingetragen. Keine Änderung.
Habe Neustart am WR durchgeführt nachdem ich den Modbus deaktiviert hatte. Danach nochmal mit entsprechender Aktivierung. Leider auch ohne Wirkung.
So wie es aktuelle läuft bekomme ich natürlich vollkommen falsche Werte in Node Red übermittelt und der ganze Rattenschwanz danach funktioniert auch nicht.
Hat jemand einen Tipp für mich?

Vielen Dank im voraus.

Welche NR Version hast du? Ich hatte eine funktionierende Schnittstelle zw. dem Pie und meiner Heizung via Modbus, auf einmal weg, kein Mux, keine Daten mehr, …

Letztens habe ich den NR und alles andere auf die neueste Version hochgezogen und siehe da die Modbus Schnittstelle schickte wieder die Daten.

-> Meine Empfehlung, zieh alle deine Versionen hoch, NR, NodeJS,…

ok danke, das teste ich mal

Leider bringt auch das keine Besserung.
Allerdings sehe ich nach dem Neustart gerade im log vom iobroker folgendes…


node-red.0	2021-04-06 22:49:31.929	error	(913) 6 Apr 22:49:31 - [error] [modbustcp-server:STP] socket error: Error: connect ECONNREFUSED 192.168.178.52:502
node-red.0	2021-04-06 22:49:30.927	error	(913) 6 Apr 22:49:30 - [error] [modbustcp-server:STP] socket error: Error: connect ECONNREFUSED 192.168.178.52:502
node-red.0	2021-04-06 22:49:29.925	error	(913) 6 Apr 22:49:29 - [error] [modbustcp-server:STP] socket error: Error: connect ECONNREFUSED 192.168.178.52:502
node-red.0	2021-04-06 22:49:28.921	error	(913) 6 Apr 22:49:28 - [error] [modbustcp-server:STP] socket error: Error: connect ECONNREFUSED 192.168.178.52:502
node-red.0	2021-04-06 22:49:27.918	error	(913) 6 Apr 22:49:27 - [error] [modbustcp-server:STP] socket error: Error: connect ECONNREFUSED 192.168.178.52:502
node-red.0	2021-04-06 22:49:26.916	error	(913) 6 Apr 22:49:26 - [error] [modbustcp-server:STP] socket error: Error: connect ECONNREFUSED 192.168.178.52:502
node-red.0	2021-04-06 22:49:25.913	error	(913) 6 Apr 22:49:25 - [error] [modbustcp-server:STP] socket error: Error: connect ECONNREFUSED 192.168.178.52:502

kann damit jemand was anfangen? Die angegebene IP Adresse ist der WR…