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.
LG
Chris
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 😉
#!/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?
LG
Chris
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.
LG
Chris
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 |
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