PowMr POW-HPM5.6KW RS485 MQTT

Ich bin auf der Suche meinen PowMr POW-HPM5.6KW mittels RS485- oder USB-Schnittstelle an FHEM anzuknüpfen.

Unter FHEM möchte ich ein Monitoring und Smart Home Steuer- und Regelung realisieren.

Nun musste ich feststellen, dass die Beschreibungen der RS485 von PowMr Geräten unterschiedlich sind. Primär benötige ich die korrekte Pin-Belegung der beiden RS485 Schnittstellen und die Einstellungen. Als nächstes ist die Schnittstelle unter FHEM einzurichten.

Vielleicht hat jemand mit den PowMr Geräten schon Erfahrungen und kann mir weiterhelfen.

Hallo Chris, ich habe auch einen POWMR 10 kw Akku. Ich habe die Dokumentation vom Verkäufer für RS232 und RS485 Komunikation.

Leider bekomme ich keine RS485 verbindung zustande.

Meine noch sehr frische Lösung für genau ebendiesen POW-HPM5.6KW, läuft einfach auf einem Pi Zero 2 W welcher per USB an dem WR angeschlossen wird.

Bei mir ist besagter Pi Zero2 für BMS und WR zuständig, die Daten werden per MQTT an Homeassistant durchgereicht. Alternativ funktioniert wohl Solaranzeige auch mit dem WR, dort muss der wohl baugleiche EASUN SMG II eingetragen werden. Wenn man mit dem Easun sucht, bekommt man auch ein ESP-basiertes System per RS485 Adapter, fand da direkt USB einfacher :wink:

#!/usr/bin/env python3
import minimalmodbus
import time
import random
from paho.mqtt import client as mqtt_client
broker = 'MQTT SERVER'
port = 1883
prefix_topic = "homeassistant/inverter/"
username = 'MQTT USERNAME'
password = 'MQTT PASSWORT'
client_id = f'publish-{random.randint(0, 1000)}'
instrument = minimalmodbus.Instrument('/dev/ttyUSB0', 1, 'rtu')  # port name, slave address (in decimal)
instrument.serial.baudrate = 9600
instrument.serial.bytesize = 8
instrument.serial.parity = 'N'
instrument.serial.stoppbits = 1
instrument.clear_buffers_before_each_transaction = True
instrument.serial.timeout  = 0.2          # seconds
instrument.mode = minimalmodbus.MODE_RTU
pausetime=1
def connect_mqtt():
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Connected to MQTT Broker!")
else:
print("Failed to connect, return code %d\n", rc)
client = mqtt_client.Client(client_id)
client.username_pw_set(username, password)
client.on_connect = on_connect
client.connect(broker, port)
return client
def publish(client,topic,payload):
topic = prefix_topic + topic
result = client.publish(topic, payload)
# result: [0, 1]
status = result[0]
if status == 0:
print(f"Send `{payload}` to topic `{topic}`")
else:
print(f"Failed to send message to topic {topic}")
def run():
client = connect_mqtt()
client.loop_start()
while (1):
battery_voltage = instrument.read_register(0x101, 1,3)
print(battery_voltage)
publish(client,"battery_voltage",battery_voltage)
time.sleep(pausetime)
pv_power = instrument.read_register(0x109, 1,3)*10
print(pv_power)
publish(client,"pv_power",pv_power)
time.sleep(pausetime)
pv_voltage = instrument.read_register(0x107, 1,3)
print(pv_voltage)
publish(client,"pv_voltage",pv_voltage)
time.sleep(pausetime)
pv_current = instrument.read_register(0x108, 1,3)
print(pv_current)
publish(client,"pv_current",pv_current)
time.sleep(pausetime)
temp_dcdc = instrument.read_register(0x220, 1,3)
print(temp_dcdc)
publish(client,"temp_dcdc",temp_dcdc)
time.sleep(pausetime)
temp_dcac = instrument.read_register(0x221, 1,3)
print(temp_dcac)
publish(client,"temp_dcac",temp_dcac)
time.sleep(pausetime)
temp_trans = instrument.read_register(0x222, 1,3)
print(temp_trans)
publish(client,"temp_transformer",temp_trans)
time.sleep(pausetime)
loadva = instrument.read_register(0x21C, 1,3)
print(loadva)
publish(client,"load_va",loadva)
time.sleep(pausetime)
loadpower = instrument.read_register(0x21B, 1,3)*10
print(loadpower)
publish(client,"load_power",loadpower)
time.sleep(pausetime)
voltage_inverter = instrument.read_register(0x216, 1,3)
print(voltage_inverter)
publish(client,"voltage_inverter",voltage_inverter)
time.sleep(pausetime)
current_inverter = instrument.read_register(0x217, 1,3)
print(current_inverter)
publish(client,"current_inverter",current_inverter)
time.sleep(pausetime)
pv_charging_current = instrument.read_register(0x224, 1,3)
print(pv_charging_current)
publish(client,"pv_charging_current",pv_charging_current)
time.sleep(pausetime)
instrument.serial.close()
client.loop_stop()
if __name__ == '__main__':
run()

@ Visnu777

Deine Beschreibung habe ich leider noch nicht verstanden, ausser das du die Verbindung per USB erreicht hast. Wie und wo das Script zur Anwendung kommt, da fehlt mir noch der Durchblick.

Kann man die notwendigen Vorbereitungen irgendwo finden um das Benötigte zu installieren?

Das Script könnte bspw. auf einem Raspberry Pi laufen, an den der WR per USB angeschlossen wird.

Evtl. wäre die Solaranzeige ja etwas für dich? Die/der Entwickler haben/hat alles zu einem fertigen Image gepackt, das man nur auf eine SD-Karte packen muss und es kommt eine nutzbare Monitoring Geschichte heraus. Mein Script ist eher für die Bastler die sich lieber selber zusammenbasteln was gebraucht wird. Ich habe es ergänzt mit einem SystemD Startscript, es läuft als Dienst und sendet im Loop die Daten an den Broker.

Es gibt für FHEM MQTT Anwendung wie ich ein Monitoring für den besagten Inverter einrichten möchte noch nichts. Da muss ich noch einiges in Erfahrung bringen.

Hi Chris , inzwischen habe etwas über die RJ45-Belegung am PowMr entdeckt .

<a href=" Link entfernt ">What is a Battery Management System (BMS) in Solar? – PowMr

PowMr RS485 PIN7 : RS485A PIN8 : RS485B
Soll also Modbus sein. Die Frage stellt such, welche Daten vom Inverter lesbar sind. .? Bei mir ist der RS232 -Anschluß schon vom WIFI-Plug besetzt, der sollte weiter dran bleiben. .

Bist Du noch an dem Thema dran?

Grüße Bert

Hallo zusammen,

ich habe einen POW-HVM5.5K-48V (was ist eigentlich der Unterschied zum HPM?). Das, was wie ein RS485 aussieht, ist ein RS232 (MODBUS) Port an einem RJ-48/45 Western-Stecker. Dabei ist die Belegung 1 und 2 =RX/TX 4=+10V und 8 =GND. Ich konnte schon erfolgreich ein paar Signale hin- und herschicken (Achtung CRC!), aber mir fehlt die genaue Liste der MODBUS-Befehle, um tatsächlich den Inverter zu steuern. Hat jemand eine solche Liste? Ich habe eine von SUN2000, passt aber nicht richtig.

Grüße Andreas

Das Open Source Projekt "Solaranzeige" kann jetzt die PowMr HVM Serie und auch die PowMr HPM Serie auslesen und anzeigen. Die beiden Serien haben ganz unterschiedliche Register, deshalb braucht man 2 unterschiedliche Ausleseroutinen.

Hallo Andreas,
brauchst du noch die Register Liste?
Dann schreibe mich bitte an, da ich nicht weiß ob ich den Beitrag hier noch wieder finde😊
Ich habe auch diesen PowMr Wechselrichter mit 5.5 kW
Auch habe ich die Register Liste.
Nur weiß ich nicht wie und womit ich auslesen soll.
Vielleicht können wir uns ja gegenseitig unterstützen?
Schöne Grüße
kaffeeonkel