Benachrichtigungen
Alles löschen

Projekt 18S DIY - MP2 - 8,2kWp

69 Beiträge
14 Benutzer
9 Reactions
13.2 K Ansichten
(@autox)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 77
 

In der Victron Connect App kann man auch den Demomodus nutzen, da sieht man, was man alles einstellen kann.
Bei meinem MPPT 250/100 ist als Maximalspannung 69,56V einstellbar - ob das dann auch tatsächlich so funktioniert kann ich nicht sagen - da im Datenblatt eigentlich 60V als Maximum angegeben sind.

greets

Daran wäre ich total interessiert.
Habe mich von diesem Thread beflügeln lassen und baue auch einen 18s.

SMA tripower 8000tl-20
36x VITOVOLT 300

1x Victron MP2 48/5000 mit 18x DYI EVE LF280k Klick

OT:
WP: Nibe S1155-12 + passiv Kühlung (Selbstbau) + Fristar3WP


   
AntwortZitat
(@eloeee)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 66
Themenstarter  

Schön das es hier nun während meines Urlaubs eine interessante Diskussion bzgl. 18S gab :thumbup: :thumbup:
Da ich nicht DC-Gekoppelt lade, habe ich die 18S bisher nur aus Sicht von höherer Kapazität, höherer Ladeleistung und niedrigerem Entladestrom betrachtet.
Bin aber auch gespannt falls es mal jemand mit einem MPPT versucht, ob das möchlich ist.
Zugegebener Weise hatte ich auch schon mit dem Gedanken gespielt meinen aktuellen Fronius Symo auf einen/zwei MPPT umzustellen, meine Stringspannung gibt das aber glaube nicht her Roll

nun aber zu einem anderen Thema, Update! die Federn sind endlich da!
Habe die zwei Reihen nun endlich mit je 4 Federn verspannt. Eingestellt sind etwa 4mm pro Feder was pro Feder ca. 68kg entspricht (171N/mm).

Als nächstes kommt noch die Blechkiste, dann ist das Projekt wohl erstmal beendet Grin


   
AntwortZitat
(@chrispv)
Vorsichtiger Stromfühler
Beigetreten: Vor 3 Jahren
Beiträge: 166
 

Guten Morgen zusammen,
ich hatte gerade ein MPPT Lader 100/20 48V von einem Arbeitskollegen mitgebracht bekommen.

Ich konnte die maximale Spannung auf 69,58V stellen.
Bei allen 3 Spannungen (Absorption, Erhaltung, Ausgleich) konnte man die 69,58V einstellen, an einer Batterie kann ichs leider nicht testen.


   
AntwortZitat
(@eloeee)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 66
Themenstarter  

Guten Morgen zusammen,
ich hatte gerade ein MPPT Lader 100/20 48V von einem Arbeitskollegen mitgebracht bekommen.

Ich konnte die maximale Spannung auf 69,58V stellen.
Bei allen 3 Spannungen (Absorption, Erhaltung, Ausgleich) konnte man die 69,58V einstellen, an einer Batterie kann ichs leider nicht testen.

MPPT_100_20_max_spg.png

Sehr interessant... bin gerade am Überlegen mein Garagendach evtl. noch mit 10 Modulen zu belegen und dann auch mit nem 250/70 direkt auf die Batterie zu laden, das würde dann ja passen :thumbup:


   
AntwortZitat
(@autoschrauberix)
Heroischer Stromgenerator
Beigetreten: Vor 2 Jahren
Beiträge: 1072
 

Ich kann die Ladespannung bei meinem Multi 5000 nur auf max. 64V hoch stellen, damit kann man einen 18s zwar gut betreiben aber nicht auf 3,65V pro Zelle laden (für TopBalancing). Ist das bei Euch anders ? Das würde bedeuten dafür müsste man dann einen MPPT Laderegler oder ein Labornetzteil etc. verwenden.


   
AntwortZitat
(@chrispv)
Vorsichtiger Stromfühler
Beigetreten: Vor 3 Jahren
Beiträge: 166
 

Ich habe "nur" auf 63V balanciert also auf 3,5V pro Zelle geladen. Einstellen im BMS könnte ich auch mehr, laut Datenblatt sollten ja 66V gehen.


   
AntwortZitat
(@eloeee)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 66
Themenstarter  

Ich habe aktuell nur auf 62,1V -> 3,45V / Zelle eingestellt.
@ChrisPV meinst ich sollte auch lieber auf die 3,5V gehen?

Solltest du seriel Balancen wollen machst du das mit nem Labornetzteil, ansonsten brauchst du nicht mehr wie 64V :thumbup:


   
AntwortZitat
(@chrispv)
Vorsichtiger Stromfühler
Beigetreten: Vor 3 Jahren
Beiträge: 166
 

@Eloeee:

Ich habe die 3,5V nur zum Top Balancen der Zellen eingestellt. Im Normalbetrieb habe ich 61,5V (3,416V) eingestellt


   
AntwortZitat
(@autoschrauberix)
Heroischer Stromgenerator
Beigetreten: Vor 2 Jahren
Beiträge: 1072
 

Ich habe "nur" auf 63V balanciert also auf 3,5V pro Zelle geladen. Einstellen im BMS könnte ich auch mehr, laut Datenblatt sollten ja 66V gehen.

Im Datenblatt steht nur die zul. Batteriespannung bis 66V . Wie die dann wieder geladen werden soll ist mir nicht klar. Das geht dann nur mit einem MPPT, der kann bis 69V eingestellt werden. Habe ich aber nicht.
Hast Du das Ding im Betrieb oder sind das Aussagen vom grünen Tisch ? Versuch doch einfach mal die Ladespannung hoch zu stellen.


   
AntwortZitat
(@chrispv)
Vorsichtiger Stromfühler
Beigetreten: Vor 3 Jahren
Beiträge: 166
 

Im Datenblatt steht nur die zul. Batteriespannung bis 66V . Wie die dann wieder geladen werden soll ist mir nicht klar. Das geht dann nur mit einem MPPT, der kann bis 69V eingestellt werden. Habe ich aber nicht.
Hast Du das Ding im Betrieb oder sind das Aussagen vom grünen Tisch ? Versuch doch einfach mal die Ladespannung hoch zu stellen.

Ich habe die Ladespannung via DVCC am BMS eingestellt, da könnte ich auch 69V einstellen. Ob der Multiplus das mache, wage ich doch zu bezweifeln.
Habe mal in der Victron Connect App mit so ein Demo Multiplus geladen, da ist die max. Ladespannung 64V.

Ist jetzt nicht dramatisch, ich muss die Zellen eh nicht auf 3,65V laden. Zum Top Balancen reichen 3,5V pro Zelle


   
AntwortZitat
(@pfalzkind)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 26
 

Hallo Zusammen!
Meine 8,2kWp PV Anlage läuft mit ca. 10000kWh im Jahr seit 2016 sehr zufriedenstellend aber leider machten für mich kommerzielle Heimspeicher rein finanziell keinen Sinn.
Im März habe ich dann ein Video von Andreas über seinen Speicher gesehen und ab da hatte mich das "DIY Virus" im Griff... ich habe Stunden gelesen und gerechnet.
Raus gekommen sind nun folgende Komponenten:
- 18x EVE LF280K
- Victron Multiplus II 48/5000/70
- Victron MK3-USB Interface
- JKBMS JK-B2A24S20P
- USB/RS232 Wandler
- RaspberryPi mit Venus OS
- ESP8266 (Wemos D1) mit DS18B20 Temperatursensoren
- Siemens NH-Trenner mit 160A NH-Sicherung
...
Diverse Stromzähler habe ich bereits verbaut und mittels ioBroker ausgelesen, demnach wollte ich natürlich auch keinen zusätzlichen Zähler hierfür.
Der "Grid" Zähler wird also über MQTT, durch ein angepasstes Python Script an Venus OS durchgereicht.
...
Am RaspberryPi mit Venus OS hängt nun der Fronius WR (Modbus TCP), der MP2 übers MK3 Interface und das JKBMS über den USB-RS232 Wandler um dem dbus-serialbattery Treiber.
...
Schöne Grüße
Eloeee

Hallo Eloeee,

danke für die ausführliche Schilderung und die regelmäßigen Updates, z. B. mit den Federn.
Ich bin jetzt schon einige Tage am Einlesen im Forum hier, hab aber noch mehr Lücken als Übersicht :angel:
Ich habe eine 4,7 kWp Anlage mit SMA Wechselrichter STP 5000TL‐20, ohne Speicher, Überschusseinspeisung.

Deine Anlage kommt der Erweiterung, die mir vorschwebt sehr nahe, könnte meine Referenz werden.

Habe wegen meiner "Lücken" ein paar Fragen, vielleicht kannst Du mir helfen, ich bitte um Nachsicht, wenn die allzu primitiv sind.

Der MP2 ist also so konfiguriert (bzw. konfigurierbar), dass er die Batterie aus dem AC-Netz lädt ?
Für Laden aus und Einspeisen ins Netz hast Du nur den Anschluß AC-IN benutzt ?
Oder hast Du auch Anschluß AC OUT 1 verwendet ?

Um zu sehen ob die PV Anlage mehr liefert als Dein Haus verbraucht (und also die Batterie geladen werden kann) schaut der MP2 denke ich auf das was Du "Grid" Zähler nennst. Mein EHZ Grid Zähler ist auch über einen IR Lesekopf an FHEM angebunden, die aktuelle Wirkleistung steht also in FHEM zur Verfügung, ich würde auch sehr gerne vermeiden einen 2. Zähler nur für den MP2 zu setzen. Wie genaut schaufelt Dein python Skript die Daten an den MP2 ? Ich nehme an Du schickst sie an das raspi mit VenusOS - aber wie dockst Du da an ? Und wie schnell aktualisierst Du die Daten ? Ich taste im Moment mit 15s ab, reicht das ? Ich könnte schon schneller, denke aber so bei 5s wäre das Limit.

Das Entladen der Batterie funktioniert genau so ? Der MP2 schaut auf den Ladezustand der Batterie (was ist maßgeblich, eine Spannungsuntergrenze oder ein SOC Wert vom JKBMS ?) und versucht die Leistungsentnahme aus dem Netz auf 0 zu regeln, so lange die Batterie noch entladen werden darf, richtig ?

Ich habe verstanden Dein VenusOS redet auch mit Deinem Fronius PV WR, per Modbus TCP.
Mein SMA WR spricht auch Modbus TCP, jedenfalls versteht er sich darüber mit meiner OpenWallbox.
Die Frage ist, nutzt bzw. braucht der MP2 die Daten vom Wechselrichter auch, oder genügen die Daten vom Grid Zähler ?
D. h. hast Du den Fronius nur zwecks Datenvisualsierung ans VenusOS angebunden, oder ist das zwingend nötig, damit der MP2 richtig arbeitet ?

Wenn ich dereinst mehr PV Module verbauen wollte (auf meinem Dach ist noch Platz für 2 Strings, zusammen vielleicht 4 kWp), dann könnte ich diese weiteren Module entweder über einen weiteren WR (z. B. SMA) mit der Anlage AC-seitig koppeln ? Oder besser über die Victron MPPT Laderegler DC-seitig mit der Batterie ? Wie hattest Du das vor ?

Und noch eine letzte Frage: Ich verstehe das so, dass - in Deiner Konfiguration - der MP2 niemals (saldierend über die 3 Phasen) ins Netz einspeist. Sondern eben die Batterie lädt, solange die PV mehr liefert als das Haus verbraucht bzw. sie entlädt, solange das Haus Strom aufnimmt und sie noch nicht leer ist. Vermutlich heißt das Nulleinspeisung. Muss das dann trotzdem der Netzbetreiber wissen ? Da der MP2 nur einphasig ist kommt es ja zu einer Schieflast.

Danke !

EVE 16s/230Ah, JKBMS, MPII-48/3000/35-32, Raspi 2B mit VenusOS, Nulleinspeisung


   
AntwortZitat
(@eloeee)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 66
Themenstarter  

Hi, schön das dir das Projekt gefällt, ich versuche mal deine Fragen zu beantworten...

- MP2 hängt aktuell nur am AC-IN da ich bisher noch keine Notstromfähigkeit nutze, kommt aber noch.
- Grid Zähler (Siemens PAC3200) hängt quasi vor dem EVU Zähler, könntest du so auch mit deinem EHZ Zähler mit IR Lesekopf abbilden. Wenn du die Werte schon im FHEM hast umso besser, musst sie nur auf einem MQTT Server bereitstellen. Das Python Script habe ich dir unten angehängt. Ist eine Anpassung von HIER, dort steht auch wie es installiert wird. Ich taste mit 1s ab, 5s gehen natürlich auch, da kann der MP2 natürlich einen Bedarf durchs Haus nicht so schnell ausregeln, prozentual gesehen ist das aber nicht die Welt... auch bei schnellerer Abtastung braucht der MP2 ein paar Sekunden bis er seine Leistung anpasst.
- Fronius müsste nicht unbedingt mit Venus reden, Venus weiß auch über den Grid zähler alles was nötig ist.
- Wenn du weitere Module verbauen willst kannst du einfach nen weiteren WR AC gekoppelt oder mit nem MPPT DC gekoppelt laden. DC gekoppelt hat halt den Charme das du "Schwarzstartfähig" bist bzw. bei einem Stromausfall der Akku auch geladen würde und der MP2 dich dann an seinem Notstrom Ausgang versorgen könnte. Ein 3-Phasen WR dürfte nur anspringen wenn er 3 Phasen sieht, da ein MP2 aber nur 1 Phasig arbeitet bräuchtest du 3 Stück oder Einphasige WRs damit du auch bei Stromausfall laden könntest.
- Genau, der MP2 speist eigentlich nicht ein, will den Strom ja selbst verbrauchen Grin Lediglich der Überschuss = ErtragPV - LadenAkku - EigenverbrauchHaus wird eingespeißt. Angemeldet werden muss die Anlage (meines Wissens nach) trotzdem. Schieflast ist soweit OK weil noch innerhalb der Regularien.

Hoffe ich konnte dir alles halbwegs beantworten :thumbup:

Gruß Eloeee

#!/usr/bin/env python

try:
import gobject # Python 2.x
except:
from gi.repository import GLib as gobject # Python 3.x
import platform
import logging
import time
import sys
import json
import os
import paho.mqtt.client as mqtt
try:
import thread # for daemon = True / Python 2.x
except:
import _thread as thread # for daemon = True / Python 3.x

# our own packages
sys.path.insert(1, os.path.join(os.path.dirname(__file__), '../ext/velib_python'))
from vedbus import VeDbusService

path_UpdateIndex = '/UpdateIndex'

# MQTT Setup
broker_address = "192.168.1.100"
port = 1883
MQTTNAME = "Iobroker"

# Variblen setzen
verbunden = 0
durchlauf = 0
maxcellvoltage = 3.0
powercurr = 0
totalin = 0
totalout = 0

# MQTT Abfragen:

def on_disconnect(client, userdata, rc):
global verbunden
print("Client Got Disconnected")
if rc != 0:
print('Unexpected MQTT disconnection. Will auto-reconnect')

else:
print('rc value:' + str(rc))

try:
print("Trying to Reconnect")
client.connect(broker_address)
verbunden = 1
except Exception as e:
logging.exception("Fehler beim reconnecten mit Broker")
print("Error in Retrying to Connect with Broker")
verbunden = 0
print(e)

def on_connect(client, userdata, flags, rc):
print("Verbunden mit IoBroker: " + broker_address)
client.subscribe("zaehler/strom/EVU/WirkleistungGesamt")
client.subscribe("zaehler/strom/EVU/WirkleistungL1")
client.subscribe("zaehler/strom/EVU/WirkleistungL2")
client.subscribe("zaehler/strom/EVU/WirkleistungL3")
client.subscribe("zaehler/strom/EVU/StromL1")
client.subscribe("zaehler/strom/EVU/StromL2")
client.subscribe("zaehler/strom/EVU/StromL3")
client.subscribe("zaehler/strom/EVU/Bezug")
client.subscribe("zaehler/strom/EVU/Einspeisung")

def on_message(client, userdata, message):
global powercurr,power_p1, power_p2, power_p3, totalin, totalout, i_p1, i_p2, i_p3

msg = str(message.payload.decode("utf-8"))
print("message received: ", msg)
print("message topic: ", message.topic)
if message.topic == "zaehler/strom/EVU/WirkleistungGesamt":
powercurr = float(msg)
if message.topic == "zaehler/strom/EVU/WirkleistungL1":
power_p1 = float(msg)
if message.topic == "zaehler/strom/EVU/WirkleistungL2":
power_p2 = float(msg)
if message.topic == "zaehler/strom/EVU/WirkleistungL3":
power_p3 = float(msg)
if message.topic == "zaehler/strom/EVU/StromL1":
i_p1 = float(msg)
if message.topic == "zaehler/strom/EVU/StromL2":
i_p2 = float(msg)
if message.topic == "zaehler/strom/EVU/StromL3":
i_p3 = float(msg)
if message.topic == "zaehler/strom/EVU/Bezug":
totalin = float(msg)
if message.topic == "zaehler/strom/EVU/Einspeisung":
totalout = float(msg)

class DbusDummyService:
def __init__(self, servicename, deviceinstance, paths, productname='Smart Meter', connection='MQTT'):
self._dbusservice = VeDbusService(servicename)
self._paths = paths

logging.debug("%s /DeviceInstance = %d" % (servicename, deviceinstance))

# Create the management objects, as specified in the ccgx dbus-api document
self._dbusservice.add_path('/Mgmt/ProcessName', __file__)
self._dbusservice.add_path('/Mgmt/ProcessVersion', 'Unkown version, and running on Python ' + platform.python_version())
self._dbusservice.add_path('/Mgmt/Connection', connection)

# Create the mandatory objects
self._dbusservice.add_path('/DeviceInstance', deviceinstance)
self._dbusservice.add_path('/ProductId', 45069) # value used in ac_sensor_bridge.cpp of dbus-cgwacs
self._dbusservice.add_path('/ProductName', productname)
self._dbusservice.add_path('/FirmwareVersion', 0.1)
# self._dbusservice.add_path('/Role', 'grid')
self._dbusservice.add_path('/HardwareVersion', 0)
self._dbusservice.add_path('/Connected', 1)

_kwh = lambda p, v: (str(v) + 'kWh')
_a = lambda p, v: (str(v) + 'A')
_w = lambda p, v: (str(v) + 'W')
_v = lambda p, v: (str(v) + 'V')
_s = lambda p, v: (str(v) + 's')
_x = lambda p, v: (str(v))

self._dbusservice.add_path('/Ac/Energy/Forward', None, gettextcallback=_kwh)
self._dbusservice.add_path('/Ac/Energy/Reverse', None, gettextcallback=_kwh)
self._dbusservice.add_path('/Ac/L1/Current', None, gettextcallback=_a)
self._dbusservice.add_path('/Ac/L1/Energy/Forward', None, gettextcallback=_kwh)
self._dbusservice.add_path('/Ac/L1/Energy/Reverse', None, gettextcallback=_kwh)
self._dbusservice.add_path('/Ac/L1/Power', None, gettextcallback=_w)
self._dbusservice.add_path('/Ac/L1/Voltage', None, gettextcallback=_v)
self._dbusservice.add_path('/Ac/L2/Current', None, gettextcallback=_a)
self._dbusservice.add_path('/Ac/L2/Energy/Forward', None, gettextcallback=_kwh)
self._dbusservice.add_path('/Ac/L2/Energy/Reverse', None, gettextcallback=_kwh)
self._dbusservice.add_path('/Ac/L2/Power', None, gettextcallback=_w)
self._dbusservice.add_path('/Ac/L2/Voltage', None, gettextcallback=_v)
self._dbusservice.add_path('/Ac/L3/Current', None, gettextcallback=_a)
self._dbusservice.add_path('/Ac/L3/Energy/Forward', None, gettextcallback=_kwh)
self._dbusservice.add_path('/Ac/L3/Energy/Reverse', None, gettextcallback=_kwh)
self._dbusservice.add_path('/Ac/L3/Power', None, gettextcallback=_w)
self._dbusservice.add_path('/Ac/L3/Voltage', None, gettextcallback=_v)
self._dbusservice.add_path('/Ac/Power', None, gettextcallback=_w)
self._dbusservice.add_path('/Ac/Current', None, gettextcallback=_a)
self._dbusservice.add_path('/Ac/Voltage', None, gettextcallback=_v)

for path, settings in self._paths.items():
self._dbusservice.add_path(
path, settings['initial'], writeable=True, onchangecallback=self._handlechangedvalue)

gobject.timeout_add(1000, self._update) # pause 1000ms before the next request

def _update(self):
# self._dbusservice['/Ac/Power'] = (str(round(powercurr, 2)) + 'W') # positive: consumption, negative: feed into grid
# self._dbusservice['/Ac/L1/Voltage'] = (str(round(230, 2)) + 'V')
# self._dbusservice['/Ac/L2/Voltage'] = (str(round(230, 2)) + 'V')
# self._dbusservice['/Ac/L3/Voltage'] = (str(round(230, 2)) + 'V')
# self._dbusservice['/Ac/L1/Current'] = (str(round(i_p1, 2)) + 'A')
# self._dbusservice['/Ac/L2/Current'] = (str(round(i_p2, 2)) + 'A')
# self._dbusservice['/Ac/L3/Current'] = (str(round(i_p3, 2)) + 'A')
# self._dbusservice['/Ac/L1/Power'] = (str(round(power_p1, 2)) + 'W')
# self._dbusservice['/Ac/L2/Power'] = (str(round(power_p2, 2)) + 'W')
# self._dbusservice['/Ac/L3/Power'] = (str(round(power_p3, 2)) + 'W')

# self._dbusservice['/Ac/Energy/Forward'] = (str(round(totalin/1000, 2)) + 'kWh')
# self._dbusservice['/Ac/Energy/Reverse'] = (str(round(totalout/1000, 2)) + 'kWh')

self._dbusservice['/Ac/Power'] = round(powercurr, 2)
self._dbusservice['/Ac/Current'] = '{0:0.2f}'.format(i_p1+i_p2+i_p3)
self._dbusservice['/Ac/Voltage'] = '{0:0.2f}'.format(230)
self._dbusservice['/Ac/L1/Voltage'] = '{0:0.2f}'.format(230)
self._dbusservice['/Ac/L2/Voltage'] = '{0:0.2f}'.format(230)
self._dbusservice['/Ac/L3/Voltage'] = '{0:0.2f}'.format(230)
self._dbusservice['/Ac/L1/Current'] = '{0:0.2f}'.format(i_p1)
self._dbusservice['/Ac/L2/Current'] = '{0:0.2f}'.format(i_p2)
self._dbusservice['/Ac/L3/Current'] = '{0:0.2f}'.format(i_p3)
self._dbusservice['/Ac/L1/Power'] = round(power_p1, 2)
self._dbusservice['/Ac/L2/Power'] = round(power_p2, 2)
self._dbusservice['/Ac/L3/Power'] = round(power_p3, 2)

self._dbusservice['/Ac/Energy/Forward'] = '{0:0.2f}'.format(totalin/1000)
self._dbusservice['/Ac/Energy/Reverse'] = '{0:0.2f}'.format(totalout/1000)
logging.info("House Consumption: {:.0f}".format(powercurr))
# increment UpdateIndex - to show that new data is available
# index = self._dbusservice[path_UpdateIndex] + 1 # increment index
# if index > 255: # maximum value of the index
# index = 0 # overflow from 255 to 0
# self._dbusservice[path_UpdateIndex] = index
return True

def _handlechangedvalue(self, path, value):
logging.debug("someone else updated %s to %s" % (path, value))
return True # accept the change

def main():
logging.basicConfig(level=logging.DEBUG) # use .INFO for less logging
thread.daemon = True # allow the program to quit

from dbus.mainloop.glib import DBusGMainLoop
# Have a mainloop, so we can send/receive asynchronous calls to and from dbus
DBusGMainLoop(set_as_default=True)

#formatting
_kwh = lambda p, v: (str(round(v, 2)) + 'kWh')
_a = lambda p, v: (str(round(v, 1)) + 'A')
_w = lambda p, v: (str(round(v, 1)) + 'W')
_v = lambda p, v: (str(round(v, 1)) + 'V')

# pvac_output = DbusDummyService(
# servicename='com.victronenergy.grid.evu',
# deviceinstance=21,
# paths={
# '/Ac/Power': {'initial': 0, 'textformat': _w},
# '/Ac/L1/Voltage': {'initial': 0, 'textformat': _v},
# '/Ac/L2/Voltage': {'initial': 0, 'textformat': _v},
# '/Ac/L3/Voltage': {'initial': 0, 'textformat': _v},
# '/Ac/L1/Current': {'initial': 0, 'textformat': _a},
# '/Ac/L2/Current': {'initial': 0, 'textformat': _a},
# '/Ac/L3/Current': {'initial': 0, 'textformat': _a},
# '/Ac/L1/Power': {'initial': 0, 'textformat': _w},
# '/Ac/L2/Power': {'initial': 0, 'textformat': _w},
# '/Ac/L3/Power': {'initial': 0, 'textformat': _w},
# '/Ac/Energy/Forward': {'initial': 0, 'textformat': _kwh}, # energy bought from the grid
# '/Ac/Energy/Reverse': {'initial': 0, 'textformat': _kwh}, # energy sold to the grid
# path_UpdateIndex: {'initial': 0},
# })

pvac_output = DbusDummyService(
servicename='com.victronenergy.grid.cgwacs_ttyUSB0_di30_mb1',
deviceinstance=21,
paths={
})
logging.info('Connected to dbus, and switching over to gobject.MainLoop() (= event based)')
mainloop = gobject.MainLoop()
mainloop.run()

# Konfiguration MQTT
client = mqtt.Client(MQTTNAME) # create new instance
client.on_disconnect = on_disconnect
client.on_connect = on_connect
client.on_message = on_message
client.connect(broker_address, port) # connect to broker

client.loop_start()

if __name__ == "__main__":
main()


   
duncan02 reacted
AntwortZitat
(@tulamidan)
Batterielecker
Beigetreten: Vor 2 Jahren
Beiträge: 174
 

Ich habe eine 4,7 kWp Anlage mit SMA Wechselrichter STP 5000TL‐20, ohne Speicher, Überschusseinspeisung.
Wenn ich dereinst mehr PV Module verbauen wollte (auf meinem Dach ist noch Platz für 2 Strings, zusammen vielleicht 4 kWp), dann könnte ich diese weiteren Module entweder über einen weiteren WR (z. B. SMA) mit der Anlage AC-seitig koppeln ? Oder besser über die Victron MPPT Laderegler DC-seitig mit der Batterie ? Wie hattest Du das vor ?

Das Entladen der Batterie funktioniert genau so ? Der MP2 schaut auf den Ladezustand der Batterie (was ist maßgeblich, eine Spannungsuntergrenze oder ein SOC Wert vom JKBMS ?) und versucht die Leistungsentnahme aus dem Netz auf 0 zu regeln, so lange die Batterie noch entladen werden darf, richtig ?

Ich habe noch 2 Punkte von Dir aufgegriffen:

1) Prüfe mal, ob du deinen WR mit noch 1-2 Modulen pro String belegen kannst. Ich habe 4,8kWp and einem 4,0 Sunnyboy (OstWest). Das wäre bestimmt die günstigste Variante etwas mehr Strom zu ernten. Wechselrichter sind ausserdem Mangelware.
2) Du kannst dein BMS auch noch mit dem Venus verbinden. Meistens geht das über ein RS485 auf USB Kabel und das serialbattery Script von Louis van der Walt. Ansonsten wird die Spannungsuntergrenze herangezogen.
Bei mehreren Akkus empfielt sich der Smart Shunt von Victron.


   
AntwortZitat
(@pfalzkind)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 26
 

Hi, schön das dir das Projekt gefällt, ich versuche mal deine Fragen zu beantworten...
...
Hoffe ich konnte dir alles halbwegs beantworten :thumbup:

Gruß Eloeee

Vielen Dank !
Ich glaube die Lücken lichten sich Smile

Grüße, Pfalzkind

EVE 16s/230Ah, JKBMS, MPII-48/3000/35-32, Raspi 2B mit VenusOS, Nulleinspeisung


   
AntwortZitat
(@pfalzkind)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 26
 

Ich habe noch 2 Punkte von Dir aufgegriffen:

1) Prüfe mal, ob du deinen WR mit noch 1-2 Modulen pro String belegen kannst. Ich habe 4,8kWp and einem 4,0 Sunnyboy (OstWest). Das wäre bestimmt die günstigste Variante etwas mehr Strom zu ernten. Wechselrichter sind ausserdem Mangelware.
2) Du kannst dein BMS auch noch mit dem Venus verbinden. Meistens geht das über ein RS485 auf USB Kabel und das serialbattery Script von Louis van der Walt. Ansonsten wird die Spannungsuntergrenze herangezogen.
Bei mehreren Akkus empfielt sich der Smart Shunt von Victron.

Danke tulamidan,
das mit 1) ist ein guter Hinweis, denke der WR hätte sicher noch Luft, aber wegen 2 oder 3 Modulen wollte ich jetzt nicht auf's Dach. Ich muss mich mit der Idee selber Haken zu setzen, Profile dranzuschrauben, Module zu befestigen und zu verkabeln auch erst noch eine Weile anfreunden :angel:
Ja, 2) hab ich glaube ich verstanden, traue ich mir als raspi Bastler auch zu. Aber ich frag doch nochmal nach: das raspi mit Venus OS ersetzt dann das Cerbo GX, richtig ? Und das raspi/Venus OS spricht dann mit dem MP2 (und ggf. mit MPPT Ladereglern) über dieses "VE.Direct zu USB-Interface" richtig ?
Grüße, Pfalzkind

EVE 16s/230Ah, JKBMS, MPII-48/3000/35-32, Raspi 2B mit VenusOS, Nulleinspeisung


   
AntwortZitat
Seite 3 / 5
Teilen: