solax xHybrid Wechselrichter

Begonnen von stefan.apetz, 15 August 2017, 20:42:49

Vorheriges Thema - Nächstes Thema

Tobias

Hi,
ich versuche gerade das Tasmota Solax X1 Modul für RS485 in Gang zu bekommen. Das schickt dann alle Daten per MQTT. Ich melde mich.
Mein Ziel ist es auch, den Solax komplett ohne WiFi Stick zu betreiben. Das offene Solax WLAN ist mir ein Dorn im Auge.

Offensichtlich gibt es sehr wohl Unterschiede zwischen einem Solax X1 Hybrid und einem X3 Hybrid
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Loetkolben

Offen ist das WLAN ja nicht direkt, mit dem Kennwort 'admin' ist es doch erstmal geschützt ;D
Das Kennwort kannst Du auf der Weboberfläche ändern.

Bei meinem Stick war die Serienummmer als Passwort hinterlegt.
Man sollte jetzt denken, das es sicherer ist - Pustekuchen - die SSID war gleich der Serienummer  :-\
Neues Kennwort vergeben wollte erst nicht klappen, bis ich bemerkt habe das es max. 8 Zeichen haben darf.

Auf Dauer werde ich auf die LAN-Variante umstellen, ist sicherlich besser.

1x Pi3, 1x Pi4, CUL V3, miniCUL433+868, IKEA-Steckdosen, sonoff, shelly1, Conbee II, div. Zigbee-Leuchten, Alexa, Homematic, Tablet UI

Sunratte

Hallo Andreas,

ich probiere es mit einem alten Pi ohne integriertem Wlan. Der USB-Wlanstick funkt nur zum Solax mit der IP 5.8.8.8.
Die Abfragen mache ich dann über LAN am Pi. Ist das vielleicht der Fehler?

Gruß
Knut

Tobias

#48
Hi,
Mein X1 hat nur WLAN oder Modbus RTU.
Die Abfrage via Wlan hat funktioniert, aufgrund des offenen WLAN's aber für mich ein NoGo.
Das Modbus Protokoll hat sich imho von der G3 zur G4 Serie geändert, deswegen funktionieren die meisten Lösungen die auf Modbus RTU setzen nicht. Dazu gehört auch die Tasmota Solax X1 Implementierung.

Ich habe es jetzt hinbekommen mit einem ESP32 die Inverter SN aus der offiziellen Solax Modbus Protokoll Doku abzufragen und werde darauf aufbauend jetzt ein Modbus-RTU - MQTT Gateway schreiben. Funktioniert dann für X1 und X3 der G4 Serie sowie unabhängig der eingesetzten Haussteuerung (FHEM, symcon, openhab oder homeassist)

Mein erstes Beispiel zum Testen ob es mit eurem WR grundsätzlich funktioniert kann ich gerne zur Verfügung stellen. Es muss aber ein ESP32 sein, über Softwareserial mit einem esp8266 funktioniert es nicht oder nur mit Einschränkungen und Problemen.

Edit: mein Projekt mit Code ist im Github zu finden: https://github.com/tobiasfaust/SolaxModbusGateway
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

waraku

Hallo, ich bin neu hier und neu in Homeassistant unterwegs. Ich versuche meinen Solax WR mit Lan Adapter in Homeassistant zu integrieren. Der Wechselrichter sendet Daten in die Cloud. Das funktioniert also. Ich kann die Daten auch per API abrufen. Ich kann die Adresse 5.8.8.8 erreichen aber komm dort nicht weiter. Ich wollte jetzt versuchen über Integraton Solax den WR in HA einzubinden. Da wird die IP ,der Port und das Passwort abgefragt.IP habe ich 5.8.8.8 Port 80 und Passwort ????.Das Hat also nicht geklappt. Dann habe ich noch den Code im Netz gefunden und entsprechend angepasst und in config.yaml kopiert. Dort erhalte ich ein grünes Häkchen, aber bei Entwicklerwerkzeuge bekomme ich folgende Meldung" Integration error: sensors - Integration 'sensors' not found." Vielleicht kann mir jemand helfen. Vielen Dank im vorraus


#########################################################
#                                                       #
#         SOLAX CLOUD.                                  #
#                                                       #
#########################################################
sensors:
  - platform: rest
    resource: https://www.solaxcloud.com/proxyApp/proxy/api/getRealtimeInfo.do?tokenId=2022********&sn=SY******
    value_template: '{{ ( value_json.result.yieldtotal | round(0) ) }}'
    name: "Solax total"
    unit_of_measurement: "KWh"

  - platform: rest
    resource: https://www.solaxcloud.com/proxyApp/proxy/api/getRealtimeInfo.do?tokenId=2022********&sn=SY******
    value_template: '{{ ( value_json.result.acpower | round(0) ) }}'
    name: "Solax now"
    unit_of_measurement: "W"

  - platform: rest
    resource: https://www.solaxcloud.com/proxyApp/proxy/api/getRealtimeInfo.do?tokenId=tokenId=2022********&sn=SY******
    value_template: '{{ value_json.result.yieldtoday }}'
    name: "Solax today"
    unit_of_measurement: "KWh"

  - platform: rest
    resource: https://www.solaxcloud.com/proxyApp/proxy/api/getRealtimeInfo.do?tokenId=2022********&sn=SY******
    value_template: "{{ value_json.result.uploadTime }}"
    name: "Solax upload time"

  - platform: rest
    resource: https://www.solaxcloud.com/proxyApp/proxy/api/getRealtimeInfo.do?tokenId=tokenId=2022********&sn=SY******
    value_template: >
          {% if value_json.result.inverterStatus == '100' %}Wait
          {% elif value_json.result.inverterStatus == '101' %}Check
          {% elif value_json.result.inverterStatus == '102' %}Normal
          {% elif value_json.result.inverterStatus == '103' %}Fault
          {% elif value_json.result.inverterStatus == '104' %}Permanent Fault
          {% elif value_json.result.inverterStatus == '105' %}Update
          {% elif value_json.result.inverterStatus == '106' %}EPS Check
          {% elif value_json.result.inverterStatus == '107' %}EPS
          {% elif value_json.result.inverterStatus == '108' %}Self-test
          {% elif value_json.result.inverterStatus == '109' %}Idle
          {% elif value_json.result.inverterStatus == '110' %}Standby
          {% elif value_json.result.inverterStatus == '111' %}Pv Wake Up Bat
          {% elif value_json.result.inverterStatus == '112' %}Gen Check
          {% elif value_json.result.inverterStatus == '113' %}Gen Run
          {% else %}I dont know{% endif %}
    name: "Solax status"

#########################################################
#                                                       #
#            END OF CONFIGURATION FILE                  #
#                                                       #
#########################################################











Tobias

Hi,
Warum schmeißt du eigentlich dein wlan Stick vom Solax nicht weg und greifst die Daten via Modbus ab? Das geht viel schneller und du teilst nix in die China cloud.

In homeassist integrierst du die Daten dann über die MQTT topics.
Fertig....
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Tomk

Ich habe meinen Qcells auch so ausgelesen. Über Modbus / Rs485 und dann über einen USB Wandler an den Raspi. In Fhem dann über Modbus und ModbusAtrr auf die Register zugegriffen...

remo

Zitat von: Tobias am 10 Oktober 2022, 07:37:01
Hi,
Mein X1 hat nur WLAN oder Modbus RTU.
Die Abfrage via Wlan hat funktioniert, aufgrund des offenen WLAN's aber für mich ein NoGo.
Das Modbus Protokoll hat sich imho von der G3 zur G4 Serie geändert, deswegen funktionieren die meisten Lösungen die auf Modbus RTU setzen nicht. Dazu gehört auch die Tasmota Solax X1 Implementierung.

Ich habe es jetzt hinbekommen mit einem ESP32 die Inverter SN aus der offiziellen Solax Modbus Protokoll Doku abzufragen und werde darauf aufbauend jetzt ein Modbus-RTU - MQTT Gateway schreiben. Funktioniert dann für X1 und X3 der G4 Serie sowie unabhängig der eingesetzten Haussteuerung (FHEM, symcon, openhab oder homeassist)

Mein erstes Beispiel zum Testen ob es mit eurem WR grundsätzlich funktioniert kann ich gerne zur Verfügung stellen. Es muss aber ein ESP32 sein, über Softwareserial mit einem esp8266 funktioniert es nicht oder nur mit Einschränkungen und Problemen.

Edit: mein Projekt mit Code ist im Github zu finden: https://github.com/tobiasfaust/SolaxModbusGateway


Hi.
Das Tasmota Projekt habe ich ebenfalls im blick.
Das funktioniert aber nicht?


Tobias

Doch, das funktioniert. Aber nur mit dem Solax Mini. Der hat ein anderes Protokoll.
Könnte ich bei mir auch einbauen, ist nur eine Konfiguration, muss aber jemand machen der ein Gerät Vorort zum Testen hat.
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

remo

Ich hab einen X1 Mini 1.1

Bin auch ganz zufrieden. Nur die Sammlung von lokalen Daten klappt nicht so ganz.
Also, Daten bekomme ich. Mit curl usw.
Alles gut. Aber es fehlt an weiteren Infos zum Mapping.

Ich sträube mich eigentlich gegen den Einsatz weiterer Hardware, wenn doch das Int. WLAN Modul alles bereitzustellen scheint. Von der China Cloud ist das Teil entkoppelt (Filter auf meiner OpnSense).

Also wenn jmd Infos zum Json Mapping hätte ...

remo

#55
Zitat von: Loetkolben am 15 Juli 2022, 15:35:04
Bei mir läuft es jetzt so ganz gut und ich bekomme genug Informationen ->


defmod solax_httpmod2_local HTTPMOD http://<IP_ADRESSE_VOM_WIFI_STICK>/ 300
attr solax_httpmod2_local alias solax_httpmod2_local
attr solax_httpmod2_local reading102JSON Information_0
attr solax_httpmod2_local reading102Name rated_capacity
attr solax_httpmod2_local reading103JSON Information_5
attr solax_httpmod2_local reading103Name Information_5
attr solax_httpmod2_local reading106JSON ver
attr solax_httpmod2_local reading106Name FW_Wifi
attr solax_httpmod2_local reading115JSON Information_2
attr solax_httpmod2_local reading115Name SN_Inverter
attr solax_httpmod2_local reading130JSON Information_4
attr solax_httpmod2_local reading130Name Information_4
attr solax_httpmod2_local reading133JSON Data_9
attr solax_httpmod2_local reading133Name Inverter_Frequenz
attr solax_httpmod2_local reading133OExpr $val / 100
attr solax_httpmod2_local reading138JSON Data_1
attr solax_httpmod2_local reading138Name AC_Current
attr solax_httpmod2_local reading138OExpr $val / 10
attr solax_httpmod2_local reading141JSON Data_41
attr solax_httpmod2_local reading141Name yield_monthly
attr solax_httpmod2_local reading142JSON sn
attr solax_httpmod2_local reading142Name SN_Wifi
attr solax_httpmod2_local reading146JSON Data_0
attr solax_httpmod2_local reading146Name AC_Voltage
attr solax_httpmod2_local reading146OExpr $val / 10
attr solax_httpmod2_local reading149JSON Information_7
attr solax_httpmod2_local reading149Name Information_7
attr solax_httpmod2_local reading157JSON Information_3
attr solax_httpmod2_local reading157Name Information_3
attr solax_httpmod2_local reading158JSON Information_1
attr solax_httpmod2_local reading158Name Information_1
attr solax_httpmod2_local reading159JSON Data_5
attr solax_httpmod2_local reading159Name PV_Current
attr solax_httpmod2_local reading159OExpr $val / 10
attr solax_httpmod2_local reading166JSON Information_6
attr solax_httpmod2_local reading166Name Information_6
attr solax_httpmod2_local reading168Format %.3f
attr solax_httpmod2_local reading168JSON Data_13
attr solax_httpmod2_local reading168Name yield_today
attr solax_httpmod2_local reading168OExpr $val / 10
attr solax_httpmod2_local reading178JSON Information_8
attr solax_httpmod2_local reading178Name Information_8
attr solax_httpmod2_local reading180JSON Data_3
attr solax_httpmod2_local reading180Name PV_Voltage
attr solax_httpmod2_local reading180OExpr $val / 10
attr solax_httpmod2_local reading181JSON Data_75
attr solax_httpmod2_local reading181Name Data_75
attr solax_httpmod2_local reading182JSON Information_9
attr solax_httpmod2_local reading182Name Information_9
attr solax_httpmod2_local reading194JSON Data_7
attr solax_httpmod2_local reading194Name PV_Power
attr solax_httpmod2_local reading195JSON Data_2
attr solax_httpmod2_local reading195Name AC_Power
attr solax_httpmod2_local reading196JSON Data_11
attr solax_httpmod2_local reading196Name yield_total
attr solax_httpmod2_local reading196OExpr $val / 10
attr solax_httpmod2_local reading207JSON type
attr solax_httpmod2_local reading207Name Inverter_Type
attr solax_httpmod2_local requestData optType=ReadRealTimeData/?pwd=<SERIENNUMMER_VOM_WIFI_STICK>
attr solax_httpmod2_local requestHeader1 Content-Type: application/json
attr solax_httpmod2_local requestHeader2 Accept: application/json
attr solax_httpmod2_local room Solar
attr solax_httpmod2_local stateFormat {sprintf("AC-Strom: %.2f A <br> AC-Spannung: %.2f V <br> AC-Leistung: %.2f W <br>PV-Strom: %.2f A <br> PV-Spannung: %.2f V <br> PV-Leistung: %.2f W <br> Gesamt-Leistung: %.2f kW" ,ReadingsVal("solax_httpmod2_local","AC_Current",0),ReadingsVal("solax_httpmod2_local","AC_Voltage",0),ReadingsVal("solax_httpmod2_local","AC_Power",0),ReadingsVal("solax_httpmod2_local","PV_Current",0),ReadingsVal("solax_httpmod2_local","PV_Voltage",0),ReadingsVal("solax_httpmod2_local","PV_Power",0),ReadingsVal("solax_httpmod2_local","yield_total",0))}
attr solax_httpmod2_local verbose 0


Es kommen nach der Einrichtung jede Menge Readings (siehe List in meinen Beitrag vorher).
Irgendwo versteckt sich auch noch die Temperatur vom Inverter, da werde ich dann morgen früh mal schauen.  Da mein Inverter derzeit noch draußen aufgebaut ist, sollte Aussentemperatur=Invertertemperatur sein.



Gehe ich soweit mit.


Ich denke aber, dass Data_41 eher YIELD TOTAL und Data_11 eher MONTHLY YIELD entspricht?!
Was meinst du?


Noch nicht ganz zuordnen kann ich:

Data_10
Data_39 (Temperatur?)
Data_55



Hier meine Interpretation:


attr httpmod_Solax_Wifi userReadings 00_AC_Voltage { ReadingsVal($name, "Data_0", 0) / 10 }, \
00_AC_Current { ReadingsVal($name, "Data_1", 0) / 10 }, \
00_AC_Power { ReadingsVal($name, "Data_2", 0)  }, \
00_DC_Voltage { ReadingsVal($name, "Data_3", 0) / 10 }, \
00_DC_Current { ReadingsVal($name, "Data_5", 0) / 10 }, \
00_DC_Power { ReadingsVal($name, "Data_7", 0)  }, \
00_AC_Frequency { ReadingsVal($name, "Data_9", 0) / 100 }, \
00_Yield_Today { ReadingsVal($name, "Data_13", 0) / 10 }, \
00_Yield_Month { ReadingsVal($name, "Data_11", 0) / 10 }, \
00_Yield_Total { ReadingsVal($name, "Data_41", 0) / 10 }

Tobias

Also ich für meinen Teil würde mich freuen wenn du meinen ModBusMQTT Gateway ausprobieren könntest. Dann könnte ich nämlich die register.h mit deinen Daten erweitern und alle anderen Solax Mini User könnten davon profitieren.
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

emmes

Hallo Tobias,

ich besitze seit Ende letzten Jahres einen Solax WR X3-Hybrid-G4 und bin an den Daten für meine Hausautomatisierung interessiert. Mit Interesse habe ich von Deinem Projekt hier gelesen und das auch mit einem ESP32 umgesetzt. Das hat auch prima funktioniert. Dar Zugriff auf den µC über den PC funktioniert. Leider kommen keine Daten vom WR an. Alle Deine Möglichkeiten zum Troubleshooting habe ich ausprobiert, jedoch ohne Erfolg. Ich bin mir ehrlich geschrieben aber auch nicht sicher, ob über die RTU-Schnittstelle vom WR überhaupt Daten kommen. Ich habe den Ausgang mal mit dem Oszi geprüft und das ist ziemliche Ruhe, wogegen aus dem Smartmeter (auch Modbus) Traffic zu erkennen ist. Am Wechselrichter ist RS485 für den COM eingestellt. Deshalb nun die Frage an Dich: Werden die Daten auf Abruf von außen geliefert oder sendet der WR selbst Daten auf den Modbus?

Danke und viele Grüße
Thomas

Alveole

Hallo,
und wie hast Du das genau definiert bzw eingebunden?

Zitat von: Tomk am 01 Januar 2023, 10:43:49Ich habe meinen Qcells auch so ausgelesen. Über Modbus / Rs485 und dann über einen USB Wandler an den Raspi. In Fhem dann über Modbus und ModbusAtrr auf die Register zugegriffen...

Tobias

@alveole: qcells WR haben exakt das selbe Protokoll wie der Solax X3. Damit funktioniert es

@emmes: der WR sendet nur auf Anforderung, nicht selbständig.

Hast du im WR alle Modbus Einstellungen kontrolliert?

Wenn es am Ende immer noch nicht funktioniert, benutze bitte das Example Programm. Das ist minimalistisch und konzentriert sich nur auf das wesentliche der Kommunikation
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter