Unterstützung für Solarmax Wechselrichter SMT-Serie

Auflistung von gewünschten Features, Ausschreibung zur Umsetzung
mairj
Beiträge: 62
Registriert: Di Mär 03, 2020 3:25 pm

Re: Unterstützung für Solarmax Wechselrichter SMT-Serie

Beitrag von mairj »

Hi Oliver,

ich hab mich jetzt auf die Suche nach dem zweiten Wert für die Leistung gemacht und bin fündig geworden. Sobald auf der bekannten Adresse 4152 der Wert von 65535 überschritten ist, springt der Wert unter 4151 von 0 auf 1. Heißt, ab dann muss man zu dem aktuellen Wert, der unter 4152 angezeigt wird, die 65535 dazuaddieren, damit die Gesamtleistung passt.

Gefunden habe ich übrigens auch, wo der Wechselrichter die Tagesleistung hinterlegt. Die findet sich unter 4136 und wird dort direkt ohne Faktor angezeigt sprich 8650 = 8,65kWh. Nur, falls das auch irgendwie interessant wäre.

Noch eine Frage: Wäre es möglich, unter den Einstellungen für die PV-Module in der Wallbox die Möglichkeit zu ergänzen, einen zweiten Solarmax-Wechselrichter als 2. PV-Modul auszuwählen? Die Option gibt es dort bislang nicht, was heißt, dass ich im Moment nur jeweils einen Wechselrichter abfragen kann.
okaegi
Beiträge: 2209
Registriert: Fr Mär 08, 2019 1:57 pm

Re: Unterstützung für Solarmax Wechselrichter SMT-Serie

Beitrag von okaegi »

Tagwsertrag rechnen wir selber, das andere baue ich ein hast du mir vielleicht noch en opentrace
Steht dann das drin ?
Gruss Oliver
opentrace start 4150 + 1 inhalt 0 0X0001
Entwickler- openWB (ehrenamtlich) / Feedback zu Funktionen immer erwünscht..
Smarthomeprobleme siehe hier (update :!: ): viewtopic.php?f=14&t=5923
LutzB
Beiträge: 3494
Registriert: Di Feb 25, 2020 9:23 am

Re: Unterstützung für Solarmax Wechselrichter SMT-Serie

Beitrag von LutzB »

Das dürfte einfach ein 32 Bit int über zwei Register sein.
okaegi
Beiträge: 2209
Registriert: Fr Mär 08, 2019 1:57 pm

Re: Unterstützung für Solarmax Wechselrichter SMT-Serie

Beitrag von okaegi »

LutzB hat geschrieben: So Jul 17, 2022 9:40 am Das dürfte einfach ein 32 Bit int über zwei Register sein.
Sehe ich auch so. Pr ist hier, Unterstützung für Solarmax als WR2 auch grad eingebaut:

https://github.com/snaptec/openWB/pull/2303
Entwickler- openWB (ehrenamtlich) / Feedback zu Funktionen immer erwünscht..
Smarthomeprobleme siehe hier (update :!: ): viewtopic.php?f=14&t=5923
mairj
Beiträge: 62
Registriert: Di Mär 03, 2020 3:25 pm

Re: Unterstützung für Solarmax Wechselrichter SMT-Serie

Beitrag von mairj »

Unglaublich, ihr seid fix. Da ist man den Tag arbeiten, kommt zurück und sieht, dass alle Probleme gelöst sind.

Tolle Sache, ich teste dann und sag Bescheid, ob alles wie gedacht klappt!
LenaK
Beiträge: 1021
Registriert: Fr Jan 22, 2021 6:40 am

Re: Unterstützung für Solarmax Wechselrichter SMT-Serie

Beitrag von LenaK »

Änderungen sind nun in der Nightly
mairj
Beiträge: 62
Registriert: Di Mär 03, 2020 3:25 pm

Re: Unterstützung für Solarmax Wechselrichter SMT-Serie

Beitrag von mairj »

So, nachdem der erste Tag mit viel Sonne vorüber ist, kann ich erfreuliches berichten. Die Werte der Wechselrichter schauen gut aus.
Download.png
Vielen Dank!

Einzige Sache, die mir aufgefallen ist: Da die Wechselrichter sich nachts ausschalten, wenn es keinen Strom vom Dach mehr gibt, füllt sich dann das Log mit Fehlermeldungen, weil die Abfrage nicht mehr klappt. Das dürfte aber ein Schönheitsfehler sein, denn man nicht umgehen kann...
monette999
Beiträge: 1
Registriert: Mo Feb 27, 2023 7:05 am

Re: Unterstützung für Solarmax Wechselrichter SMT-Serie

Beitrag von monette999 »

Hallo Forum und Mairj
ich habe diese anderen Register im Netz gefunden für den Solarmax SMT.

Bitte mal probieren ob die Register passen für die SMT Serie.

Mich würde interessieren wie man den SMT von Broadcast in eigene Heimnetz bekommt.
Oder wie habt ihr den Solarmax SMT
mit dem PC ausgelesen.

Danke
Ich bin neu hier.
Gruß monette999

#!/usr/bin/python3
#
#
from pymodbus.client.sync import ModbusTcpClient


class _Reg:
def __init__(self, name, reg, postfix="", scale=1.0):
self.name = name
self.postfix = postfix
self.scale = scale
if "/" not in reg:
reg += "/1"
li = reg.split("/", maxsplit=2)
self.reg = int(li[0])
self.count = int(li[1])

def output(self, mc):
reg = mc.read_holding_registers(self.reg, count=self.count, unit=1)
if len(reg.registers) == 1:
val = reg.registers[0]
elif len(reg.registers) == 2:
val = reg.registers[0] * 65535 + reg.registers[1]
else:
raise Exception("unknown register {}".format(reg))
return RegValue(val / self.scale, self.name, self.postfix)


class RegValue(float):
def __new__(cls, value, name, postfix):
return super().__new__(cls, value)

def __init__(self, value, name, unit):
self.value = value
self.name = name
self.unit = unit

def __str__(self):
return "{}: {:2.2f} {}".format(self.name, self.value, self.unit)


class ModbusConnectionError(Exception):
pass


class SolarmaxSmt:
def __init__(self, host):
self._host = host

def _get(self, reg):
mc = ModbusTcpClient(self._host)
res = mc.connect()
if not res:
raise ModbusConnectionError("cannot connect to {}".format(self._host))
val = reg.output(mc)
mc.close()
return val

@property
def current_power(self):
reg = _Reg("Current power", "4151/2", "kW", scale=10000)
return self._get(reg)

@property
def max_power_today(self):
reg = _Reg("Max power today", "4155/2", "kW", scale=10000)
return self._get(reg)

@property
def total_power_today(self):
reg = _Reg("Total power today", "4133/2", "kW")
return self._get(reg)

@property
def total_power(self):
reg = _Reg("Total power", "4129/2", "kW")
return self._get(reg)

@property
def converter_temperature(self):
reg = _Reg("Internal converter temperature", "4124/1", "°C")
return self._get(reg)

# XXX: improve API
@property
def voltage_1(self):
reg = _Reg("Internal converter temperature", "4124/1", "°C")
return self._get(reg)

@property
def current_1(self):
reg = _Reg("Current 1", "4113", "A", scale=100.0)
return self._get(reg)

@property
def power_1(self):
reg = _Reg("Power 1", "4115", "kW", scale=10000.0)
return self._get(reg)

@property
def voltage_2(self):
reg = _Reg("Voltage 2", "4116", "V", scale=10.0)
return self._get(reg)

@property
def current_2(self):
reg = _Reg("Current 2", "4117", "A", scale=100.0)
return self._get(reg)

@property
def power_2(self):
reg = _Reg("Power 2", "4119", "kW", scale=10000.0)
return self._get(reg)
Maxify23
Beiträge: 116
Registriert: Do Apr 15, 2021 8:53 am
Wohnort: Rastede

Re: Unterstützung für Solarmax Wechselrichter SMT-Serie

Beitrag von Maxify23 »

Ich ergänze an der Stelle mal die Modbus Doku der Batterie. Ich frage mal die vom WR beim Hersteller an
Dateianhänge
MAX.STORAGE_ModbusTCP_Datenpunktliste-1-1.pdf
(65.06 KiB) 105-mal heruntergeladen
Sungrow SH 10 hybrid WR mit automatischer Notstromumschaltung
Qcells G9 10,5 KWp
BYD HVM 11 kWh
OpenWB Series 2 Duo
GoE Charger Homefix 11kW
Nissan eNV200 (40 kWh)
Renault Zoe (22kWh)

geplant Vaillant oder Wolf Wärmepumpe
alexpa
Beiträge: 1
Registriert: So Aug 13, 2023 1:56 pm

Re: Unterstützung für Solarmax Wechselrichter SMT-Serie

Beitrag von alexpa »

Hallo,

ich hoffe ich darf mich hier kurz einklinken.

Habe einen 20SHT und möchte gerne via Modbus die Leistungsdaten abfragen vom WLAN Modul.

Habt ihr das was besonderes einstelen müssen? Irgendwie bekomme ich da nichts vom WR
Dateianhänge
1.jpg
Antworten