Erfahrungen mit der Anbindung von Huawei Wechselrichtern?

Begonnen von lingerb, 30 Oktober 2020, 20:02:56

Vorheriges Thema - Nächstes Thema

lingerb

Hallo allerseits,

hat schon jemand erfolgreich einen Huawei Wechselrichter - Serie SUN2000-*KTL-MO - im LAN mit FHEM ausgelesen, und wenn ja, über welche Schnittstelle?
Soweit ich die Unterlagen verstehe, gibt es


  • einen Smart Dongle WLAN-FE, der die Daten ins Internet schickt. Der direkte Zugriff aus dem LAN ist allerdings bei meinem Gerät blockiert.
  • als Zubehör für gut 500€ extra einen SmartLogger3000A mit Web Interface - eine Ausgabe, die ich mir gerne sparen würde.
  • Die dritte Möglichkeit wäre wohl, einen 3rd party RS485/Ethernet Converter (ab 20€) an die RS485 Schnittstelle zu hängen. Die Frage hier wäre, ob das mit dem Modbus Modul von FHEM zusammen spielt.
  • Vierte Option: Einen Raspi dazwischen schalten, der sich mit dem WLAN des Wechselrichters verbindet (dort ist Port 502 offen) die Modbus-Daten periodisch ausliest und sie auf dem LAN in einem von FHEM verwertbaren Format zur Verfügung (HTML, XML) stellt

Über Tipps jeder Art wäre ich sehr dankbar.
Grüße
Bernd


lingerb

Ich beantworte meine Frage jetzt mal selber, weil ich inzwischen eine Lösung erfolgreich am Laufen habe und vermute, dass in Zukunft noch mehr dieser Wechselrichter ans Netz gehen - die sind ja wohl noch nicht so lange auf dem Markt.
Also:
Ein dedizierter Raspi hängt mit dem LAN Interface in meinem Netzwerk ist per WLAN mit dem Wechselrichter verbunden.

wpa_supplicant.conf:

...
network={
        ssid="SUN2000-HV19900xxxxx"
        psk="Changeme"
}
...


Darauf läuft eine kleine FHEM Instanz zum Einsammeln der Daten. Der Wechselrichter hat die IP 192.168.8.1

define Sun2000 ModbusAttr 0 300 192.168.8.1:502 TCP

Die Modbus-Variablen wurden nach folgendem Schema angelegt:


attr Sun2000 obj-h32114-reading Daily_energy_yield
attr Sun2000 obj-h32114-len 2
attr Sun2000 obj-h32114-unpack N
attr Sun2000 obj-h32114-expr $val/100
attr Sun2000 obj-h32114-poll 1


Am Ende habe ich die Instanz noch per FHEM2FHEM an meinen eigentlichen FHEM-Server angebunden. Das war's dann schon.

Grüße
Bernd

raika1210

#2
Hallo,

ich komme hier nicht weiter.
Wie hast du die Daten ausgelesen in deiner "Haupt" Fhem Installation?
bzw besteht auch die möglichkeit nicht nur den tageswert zu lesen

fg

bigcheese

#3
Hi,

für andere Daten könnte diese Adress-Sammlung ggf weiterhelfen:
https://community.openhab.org/t/reading-data-from-huawei-inverter-sun-2000-3ktl-10ktl-via-modbus-tcp-and-rtu/87670

Versuche mich auch gerade daran... Sun2000 Device ist schon mal "opened" (FHEM Hauptinstanz direkt neben dem Sun2000)... ob ein Reading Wert kommt ... mal sehen

Edit: woop there it is :) Tageswert kam gerade an :)

lingerb

Hallo,

habe nach längerer Pause mal wieder das Forum besucht und gesehen, dass an dem Thema doch einiges Interesse besteht.
Deshalb poste ich hier mal die Einstellungen (ohne Gewähr), die bei mir seit ca einem Jahr erfolgreich laufen.


ttr Sun2001 disable 0
attr Sun2000 icon sani_solar

attr Sun2000 obj-h32016-expr $val/10
attr Sun2000 obj-h32016-len 1
attr Sun2000 obj-h32016-poll 1
attr Sun2000 obj-h32016-reading PV1_voltage
attr Sun2000 obj-h32016-unpack n!

attr Sun2000 obj-h32017-expr $val/100
attr Sun2000 obj-h32017-len 1
attr Sun2000 obj-h32017-poll 1
attr Sun2000 obj-h32017-reading PV1_current
attr Sun2000 obj-h32017-unpack n!

attr Sun2000 obj-h32064-len 2
attr Sun2000 obj-h32064-poll 1
attr Sun2000 obj-h32064-reading Input_power
attr Sun2000 obj-h32064-unpack N!

attr Sun2000 obj-h32078-len 2
attr Sun2000 obj-h32078-poll 1
attr Sun2000 obj-h32078-polldelay 3600
attr Sun2000 obj-h32078-reading Peak_active_power
attr Sun2000 obj-h32078-unpack N!
#
attr Sun2000 obj-h32080-len 2
attr Sun2000 obj-h32080-poll 1
attr Sun2000 obj-h32080-reading Active_power
attr Sun2000 obj-h32080-unpack N!

attr Sun2000 obj-h32086-expr $val/100
attr Sun2000 obj-h32086-len 1
attr Sun2000 obj-h32086-poll 1
attr Sun2000 obj-h32086-reading Efficiency
attr Sun2000 obj-h32086-unpack n

attr Sun2000 obj-h32087-expr $val/10
attr Sun2000 obj-h32087-len 1
attr Sun2000 obj-h32087-poll 1
attr Sun2000 obj-h32087-reading Internal_temperature
attr Sun2000 obj-h32087-unpack n!

attr Sun2000 obj-h32089-len 1
attr Sun2000 obj-h32089-map 0:standby, 1:standby, 2:standby, 3:standby, 256:starting, 512:on_grid, 513:power_limited, 514:self_derating, 768:shutdown_fault, 769:shutdown_command, 770:shutdown_OVGR, 771:shutdown_comm_disconn, 772:shutdown_power_limited, 773:shutdown_manual_startup_required, 774:shutdown_DC_switches_disconn, 775:shutdown_rapid_cutoff, 776:shutdown_input_underpower, 1025:Grid_scheduling_cosφ-P_curve, 1026:Grid_scheduling_Q-U_curve, 1027:Grid_scheduling_PF-U_curve, 1028:Grid_scheduling_dry_contact, 1029:Grid_scheduling_Q-P_curve, 1280:Spot-check_ready, 1281:Spot-checking, 1536:Inspecting, 1792:AFCI_self_check, 2048:I-V_scanning, 2304:DC_input_detection, 2560:Running_off-grid_charging, 40960:Standby_no_irradiation
attr Sun2000 obj-h32089-poll 1
attr Sun2000 obj-h32089-reading Device_status
attr Sun2000 obj-h32089-unpack n

attr Sun2000 obj-h32106-expr $val/100
attr Sun2000 obj-h32106-len 2
attr Sun2000 obj-h32106-poll 1
attr Sun2000 obj-h32106-polldelay 3600
attr Sun2000 obj-h32106-reading Accumulated_energy_yield
attr Sun2000 obj-h32106-unpack N

attr Sun2000 obj-h32114-expr $val/100
attr Sun2000 obj-h32114-len 2
attr Sun2000 obj-h32114-poll 1
attr Sun2000 obj-h32114-reading Daily_energy_yield
attr Sun2000 obj-h32114-unpack N

attr Sun2000 obj-h37113-len 2
attr Sun2000 obj-h37113-poll 1
attr Sun2000 obj-h37113-reading PM_active_power
attr Sun2000 obj-h37113-unpack N!
attr Sun2000 room Photovoltaik
attr Sun2000 stateFormat {sprintf("Status: %s, Temp: %.1f, Aktuell %.1f Watt, Heute gesamt %.2f KWh", ReadingsVal($name,"Device_status",0), ReadingsVal($name,"Internal_temperature",0), ReadingsVal($name,"Active_power",0), ReadingsVal($name,"Daily_energy_yield",0))}

attr Sun2000 verbose 2



HTH

Grüße
Bernd

baedman

Vielen Dank!
Dank Euch kann ich den Huawei nun endlich auslesen.
Meine Solateur ist nach Wochen immer noch dran ihn ins Monitoring zu bringen...

muecke36

Zitat von: lingerb am 19 November 2020, 10:17:18
Ein dedizierter Raspi hängt mit dem LAN Interface in meinem Netzwerk ist per WLAN mit dem Wechselrichter verbunden.

Hallo Bernd,

wieso hängt der Wechselrichter denn nicht einfach direkt in Deinem WLAN und du greifst mit Deinem zetralen FHEM darauf zu?

Viele Grüße
Michael

pula

Dieser Frage würde ich mich gerne anschließen....
Zitat von: muecke36 am 22 Mai 2022, 16:59:16
Hallo Bernd,

wieso hängt der Wechselrichter denn nicht einfach direkt in Deinem WLAN und du greifst mit Deinem zetralen FHEM darauf zu?

Viele Grüße
Michael
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

lingerb

Hallo,

habe gerade erste die Frage gelesen, schaue hier nur selten rein, sorry.
Ich wüsste nicht, wie ich die WLAN-Parameter des Smart Dongle so verändern könnte, dass er sich mit meinem vorhandenen WLAN verbindet.

Grüße
Bernd

Jasimo

Servus, also "eigentlich" sollte das über den Dongle per Modbus TCP funktionieren. Modbus TCP Zugriff muss im Dongle halt nur aktiviert werden.
Das Projekt Solaranzeige.de kommuniziert ja auch per Modbus TCP mit dem Dongle des Wechselrichters

aperoap

Hallo Zusammen, hat jemand noch die Kommunikation mittels Modbus hinbekommen?
Bei mir sind 2 KTL - M1 per Wlan mit in meinem Heimnetzwerk verbunden.
somit haben beide lokale IPs.
die MODBUS ist in beiden Wechselrichtern eingeschaltet (uneingeschränkt).
FHEM schreib Connect / Disconnect.
hat jemand eine Idee?
Gruß

Torxgewinde

#11
@lingerb: Ganz herzlichen Dank für das Posting!

Ich habe einen LUNA2000 Akku zur SUN2000 und konnte die Angaben sinnvoll erweitern. Hilfreich war aus dem Photovoltaikforum die PDF mit den Modbus Registern (Alternativ und in höherer Auflösung: https://cryptpad.fr/file/#/2/file/b9xVgq38q2vNKNZb9VWiFnnp/). Der Dongle wird nicht genutzt und es muss auch dort nicht Modbus aktiviert werden, ich verbinde mich auch direkt mit dem WLAN aus dem Sun2000-Wechselrichter "SUN2000-TA224XXXXXXXX". Der TCP-Port hat sich scheinbar von 502 auf 6607 geändert!


defmod Sun2000 ModbusAttr 0 10 192.168.200.1:6607 TCP
attr Sun2000 obj-h32016-expr $val/10
attr Sun2000 obj-h32016-len 1
attr Sun2000 obj-h32016-poll 1
attr Sun2000 obj-h32016-reading PV1_voltage
attr Sun2000 obj-h32016-unpack n!
attr Sun2000 obj-h32017-expr $val/100
attr Sun2000 obj-h32017-len 1
attr Sun2000 obj-h32017-poll 1
attr Sun2000 obj-h32017-reading PV1_current
attr Sun2000 obj-h32017-unpack n!
attr Sun2000 obj-h32018-expr $val/10
attr Sun2000 obj-h32018-len 1
attr Sun2000 obj-h32018-poll 1
attr Sun2000 obj-h32018-reading PV2_voltage
attr Sun2000 obj-h32018-unpack n!
attr Sun2000 obj-h32019-expr $val/100
attr Sun2000 obj-h32019-len 1
attr Sun2000 obj-h32019-poll 1
attr Sun2000 obj-h32019-reading PV2_current
attr Sun2000 obj-h32019-unpack n!
attr Sun2000 obj-h32064-len 2
attr Sun2000 obj-h32064-poll 1
attr Sun2000 obj-h32064-reading Input_power
attr Sun2000 obj-h32064-unpack N!
attr Sun2000 obj-h32078-len 2
attr Sun2000 obj-h32078-poll 1
attr Sun2000 obj-h32078-polldelay 3600
attr Sun2000 obj-h32078-reading Peak_active_power
attr Sun2000 obj-h32078-unpack N!
attr Sun2000 obj-h32080-len 2
attr Sun2000 obj-h32080-poll 1
attr Sun2000 obj-h32080-reading Active_power
attr Sun2000 obj-h32080-unpack N!
attr Sun2000 obj-h32086-expr $val/100
attr Sun2000 obj-h32086-len 1
attr Sun2000 obj-h32086-poll 1
attr Sun2000 obj-h32086-reading Efficiency
attr Sun2000 obj-h32086-unpack n
attr Sun2000 obj-h32087-expr $val/10
attr Sun2000 obj-h32087-len 1
attr Sun2000 obj-h32087-poll 1
attr Sun2000 obj-h32087-reading Internal_temperature
attr Sun2000 obj-h32087-unpack n!
attr Sun2000 obj-h32089-len 1
attr Sun2000 obj-h32089-map 0:standby, 1:standby, 2:standby, 3:standby, 256:starting, 512:on_grid, 513:power_limited, 514:self_derating, 768:shutdown_fault, 769:shutdown_command, 770:shutdown_OVGR, 771:shutdown_comm_disconn, 772:shutdown_power_limited, 773:shutdown_manual_startup_required, 774:shutdown_DC_switches_disconn, 775:shutdown_rapid_cutoff, 776:shutdown_input_underpower, 1025:Grid_scheduling_cosφ-P_curve, 1026:Grid_scheduling_Q-U_curve, 1027:Grid_scheduling_PF-U_curve, 1028:Grid_scheduling_dry_contact, 1029:Grid_scheduling_Q-P_curve, 1280:Spot-check_ready, 1281:Spot-checking, 1536:Inspecting, 1792:AFCI_self_check, 2048:I-V_scanning, 2304:DC_input_detection, 2560:Running_off-grid_charging, 40960:Standby_no_irradiation
attr Sun2000 obj-h32089-poll 1
attr Sun2000 obj-h32089-reading Device_status
attr Sun2000 obj-h32089-unpack n
attr Sun2000 obj-h32106-expr $val/100
attr Sun2000 obj-h32106-len 2
attr Sun2000 obj-h32106-poll 1
attr Sun2000 obj-h32106-polldelay 3600
attr Sun2000 obj-h32106-reading Accumulated_energy_yield
attr Sun2000 obj-h32106-unpack N
attr Sun2000 obj-h32114-expr $val/100
attr Sun2000 obj-h32114-len 2
attr Sun2000 obj-h32114-poll 1
attr Sun2000 obj-h32114-reading Daily_energy_yield
attr Sun2000 obj-h32114-unpack N
attr Sun2000 obj-h37004-expr $val/10
attr Sun2000 obj-h37004-len 1
attr Sun2000 obj-h37004-poll 1
attr Sun2000 obj-h37004-reading Battery1_SOC
attr Sun2000 obj-h37004-unpack n
attr Sun2000 obj-h37022-expr $val/10
attr Sun2000 obj-h37022-len 1
attr Sun2000 obj-h37022-poll 1
attr Sun2000 obj-h37022-reading Battery1_temperature
attr Sun2000 obj-h37022-unpack n!
attr Sun2000 obj-h37113-len 2
attr Sun2000 obj-h37113-poll 1
attr Sun2000 obj-h37113-reading PM_active_power
attr Sun2000 obj-h37113-unpack N!
attr Sun2000 obj-h37760-expr $val/10
attr Sun2000 obj-h37760-len 1
attr Sun2000 obj-h37760-poll 1
attr Sun2000 obj-h37760-reading Battery_SOC
attr Sun2000 obj-h37760-unpack n
attr Sun2000 obj-h37762-len 1
attr Sun2000 obj-h37762-map 0:offline, 1:standby, 2:running, 3:fault, 4:sleep_mode
attr Sun2000 obj-h37762-poll 1
attr Sun2000 obj-h37762-reading Battery_status
attr Sun2000 obj-h37762-unpack n
attr Sun2000 obj-h47415-len 1
attr Sun2000 obj-h47415-map 0:unlimited, 1:DI_active_scheduling, 5:zero_power_grid_connection, 6:power_limited_grid_connection_kw, 7:power_limited_grid_connection_percent
attr Sun2000 obj-h47415-poll 1
attr Sun2000 obj-h47415-reading Active_power_control_mode
attr Sun2000 obj-h47415-unpack n
attr Sun2000 room Keller
attr Sun2000 stateFormat {sprintf("Status: %s, Temp: %.1f, Aktuell %.1f Watt, Heute gesamt %.2f KWh", ReadingsVal($name,"Device_status",0), ReadingsVal($name,"Internal_temperature",0), ReadingsVal($name,"Active_power",0), ReadingsVal($name,"Daily_energy_yield",0))}
attr Sun2000 verbose 2

Torxgewinde

Hallo,
Ich kann bei dem WR scheinbar keine Werte schreiben. Es kann aber auch daran liegen, dass ich mit ModbusAttr bisher noch keine weitere Erfahrung habe. Folgendes hatte ich testweise definiert:
defmod SunTest ModbusAttr 0 10 192.168.200.1:6607 TCP
attr SunTest obj-h47075-len 2
attr SunTest obj-h47075-poll 1
attr SunTest obj-h47075-reading Battery_Maximum_charging_power
attr SunTest obj-h47075-set 1
attr SunTest obj-h47075-unpack L>


Der neue Wert den man mit "set" abschickt wird nicht übernommen. Woran könnte das liegen? Hat jemand einen Hinweis?

aperoap

#13
Hallo, danke für deine Hilfe:
die Verbindung ist bei mir aufgebaut. bekomme keine werte zurück.

2022.10.03 15:22:23 3: Sun2000_1: Timeout waiting for a modbus response, read buffer empty,
request: id 0, read fc 3 h32016, len 1, tid 178, master device Sun2000_1, reading PV1_voltage (getUpdate for PV1_voltage len 1), queued 2.00 secs ago, sent 2.00 secs ago
2022.10.03 15:22:33 3: Sun2000_1: Timeout waiting for a modbus response, read buffer empty,
request: id 0, read fc 3 h32016, len 1, tid 133, master device Sun2000_1, reading PV1_voltage (getUpdate for PV1_voltage len 1), queued 2.00 secs ago, sent 2.00 secs ago


Hast du eine Idee woran das liegt?

Torxgewinde

Wenn man sich direkt mit dem WR verbindet, also auf dessen WLAN mit einem WLAN-Client verbindet, verteilt der DHCP aus dem WR IPv4 Adressen. Der WR selbst hat dann bei mir die IP 192.168.200.1, mein Client MUSS die IP 192.168.200.2 erhalten, sonst klappt die Kommunikation nicht. Wenn man zeitgleich auch mit dem Handy eine Verbindung hat, kann das durchaus mal vorkommen, dass man die 192.168.200.3 erhält und dann antwortet der WR einfach nicht. Könnte das bei dir das Problem sein?

Man kann sich auch mit dem Modbus auf dem Dongle verbinden, das habe ich bisher noch nicht gemacht. Bei Nutzung des Dongle kann es manchmal Performanceprobleme geben laut: https://skyboo.net/2022/02/huawei-sun2000-why-using-a-usb-dongle-for-monitoring-is-not-a-good-idea/