Benachrichtigungen
Alles löschen

PowMr POW-HPM5.6KW RS485 MQTT

7 Beiträge
4 Benutzer
0 Likes
361 Ansichten
(@burny)
Vorsichtiger Stromfühler
Beigetreten: Vor 8 Monaten
Beiträge: 5
Themenstarter  

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


   
Zitat
(@karlo62)
Newbie
Beigetreten: Vor 9 Monaten
Beiträge: 1
 

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.


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

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()



   
AntwortZitat
(@burny)
Vorsichtiger Stromfühler
Beigetreten: Vor 8 Monaten
Beiträge: 5
Themenstarter  

@ 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?

Diese r Beitrag wurde geändert Vor 5 Monaten von Burny

LG
Chris


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

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.


   
AntwortZitat
(@burny)
Vorsichtiger Stromfühler
Beigetreten: Vor 8 Monaten
Beiträge: 5
Themenstarter  

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.

Diese r Beitrag wurde geändert Vor 5 Monaten von Burny

LG
Chris


   
AntwortZitat
(@bert97)
Newbie
Beigetreten: Vor 2 Wochen
Beiträge: 1
 

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


   
AntwortZitat
Teilen: