Growatt Wechselrichter mit Shine-X LAN und HomeAssistant

Hallo an alle,

mich interessiert es, einen Growatt Hybridwechselrichter mit HomeAssistant zu verbinden. Ich möchte damit sämtliche Daten, die der Wechselrichter liefert, in HA verarbeiten.

Ich habe bemerkt, dass es unzählige Diskussionen darüber gibt, aber leider zielen alle darauf ab, einen Shine-X WLAN Stick neu zu flashen oder eine Bastellösung über einen ESP32 zu verwenden.

Mir ist es jedoch sehr wichtig, WLAN zu vermeiden, daher verwende ich den Shine-X LAN Stick.

Ich habe hier im Forum gelesen, dass jemand dies über einen Proxy-Server gelöst hat, der die Daten an HomeAssistant weiterleitet. Leider kann ich dieses Posting dazu nicht mehr finden.

Gibt es jemanden, der mir mit dieser Lösung weiterhelfen kann?

Gruß
Hans

Wenn du wlan vermeiden willst, könntest du ein esp32 lan modul verwenden.

So bleibt der shinestick unberührt, kann zur not original verwendet werden. Ich hab das über esp32 direkt an der rs485 schnittstelle, nicht über den usb port.

Nehme ne alte 5 V versorgung für Smartphone oder anderes elektronisches gerät, das schon längst verschrottet wurde. Ich hebe mir immer die spannungsversorgungen auf. Damit den esp32 versorgen.

Den esp code kann ich dir geben, im internet findet sich (fast) nur code für den usb port. Ich hab sau lange gesucht bis ich das hatte, dass es direkt an der rs485 schnittstelle funktioniert.

Servus,

da der WR in der Garage installiert wird, werde ich dort auch LAN installieren. Mit WLAN komme ich da nicht rein und möchte das auch grundsätzlich vermeiden. Das heißt, ein AP wird dann in der Garage nur eingeschaltet, in der Zeit in der ich diese als Werkstatt verwende.

Ich könnte natürlich einen AccessPoint oder das von dir erwähnte ESP32 LAN Modul verwenden und durchgehend eingeschaltet lassen, aber ich bevorzuge eine direkte Verkabelung. So wenig Funk wie möglich.

Den Shine-X LAN Stick muss ich mir sowieso noch besorgen. Ich denke, den Shine-X WIFI Stick werde ich nicht benötigen.

Damit ich dich richtig verstehe: Du verwendest ein ESP32 Modul, das als Brücke von WLAN auf RS485 dient? WLAN -> ESP32 -> RS485 Modul -> WR, ist das dein Aufbau? Klingt sehr interessant.

Ich kann mir sehr gut vorstellen, dass du für den Aufbau sehr viel Zeit investiert hast.

Du müsstest eine:

ESP32 WT32-ETH01 Embedded Serielle Schnittstelle zu Ethernet WiFi Bluetooth Entwicklungsplatine

Kaufen. Dazu noch:

DollaTek 5PCS 5V MAX485 / RS485 Modul TTL zu RS-485 MCU Entwicklungsboard

Zeit hat es gekostet, den entsprechenden code für esp32 im internet zu finden.

Das ist ungefähr die verdrahtung. Es gibt statt dem esp8266 ein esp32. Da sind die pins natürlich andere. Ich habe ne alte 5V spannungsversorgung genommen, nicht wie im Bild die Spannung von einem usb Port.

Wie wäre es mit einem RS485 To usb Stick oder RS845 to Ethernet Konverter?
Dann kann man den Modbus direkt auslesen.

Die Methode den Modbus für HomeAssistant abzugreifen finde ich schon interessant, das gefällt mir.

ESP8266, ESP32, ein Ethernetmodul für Arduino, RS485 Module und RS485 USB Adapter liegen alle parat und noch vieles mehr.

Dann kann ich das theoretisch aufbauen.
Ich verstehe, der ESP benötigt die passende Firmware damit er mit HA kompatibel ist, damit die Kommunikation funktioniert.

Wie würde das mit einem fertigen RS485 zu Ethernet Adapter aussehen? Den habe ich nicht, aber für das Verständnis würde ich das gerne wissen.

Alter :rabbit:, ich bin neugierig ob du bereits deine USB-Ports anderwertig belegt hast, weil du den Modbus abgreifst und ein externes 5V Netzgerät verwendest und nicht die Spannung über den USB-Port nützt?

Fehlendes Material kann ich natürlich jederzeit besorgen.

Vielen Dank für eure Unterstützung

Der usb port vom growatt ist frei. Ich habe auch nen original shine wifi stick . Den habe ich nicht im einsatz.
Jeder von uns hat doch massig alte 5V Spannungsversorgungen von irgend alten Telefonen oder anderen Geräten. Stecker abschneiden, die polarität messen, an die leitungen die stecker löten, die an die pins vom esp modul passen. Die leerlaufspannung der spannungsversorgungen sind natürlich einiges höher als 5 V.
Das ist ok so.
Ich habe das über ein esp32 der wlan hat. Das esp32 modul mit lan anschluss sollte genauso funktionieren, die daten werden dann statt über wlan über lan gesendet.
Ich hab ein esp32 mit lan mdul bei mir rum liegen, habe das mal bei aliexpress zum rum spielen mit bestellt. Bis jetzt aber noch nicht benötigt.

Ich hab den growatt wechselrichter in home assistant. Läuft stabil und sehr gut. Der growatt schaltet im gegensatz zum victron inselwechselrichter aber ab, wenn keine Panelleistung vorhanden ist.

Servus Hase, bei mir liegen ebenfalls massig Netzteile herum. Ich bevorzuge aber Steckverbindungen, anstatt die Netzteile direkt anzulöten.
Ich baue mir meist gerne fliegende Prototypen und anschließend wenn die gut funktionieren wird eine Platine in Auftrag gegeben.
Bei aufwendigen Schaltungen wird gleich eine Platine erstellt.

Dann ist die RS485Schnittstelle wohl das beste um mit HA zu kommunizieren, vielen Dank für die Erleuchtung.
Abhängig wo ich dann den Einplatinencomputer aufstelle, wird entweder ein RS485 - USB Wandler oder ein RS485 - LAN Interface in Betracht gezogen.

Bei RS485 zu USB wird ja eine serielle Schnittstelle am Computer eingerichtet.
Wie das aber dann über Netzwerk (LAN/WLAN) eingerichtet wird, ist mir noch ein Rätsel, da muss wohl HA bestimmt ein Plugin hierfür haben?

Mit RS485 über Netzwerk habe ich noch keine Erfahrung, da kann ich dann aber bei euch hier im Forum nachhaken wenn es soweit ist - oder ich nicht weiter komme.

Liebe Grüße
Hans

Ich nutze ein normales esp32 modul. Das hat wlan dabei und man gibt einfach im code den router ein. Ich vergebe meist eine feste ip adresse. Wenn ein eps32 modul mit verbauter lan schnittstelle genutzt wird, gibt man das im code an und das ding kommuniziert dann über lan statt wlan.
In home assistant gibt es esphome plugin. Damit kann man komfortabel alles esp platinen programmieren/verwalten.
Da kommt man nicht dran vorbei wenn man mit home assistant ein smart home system aufbaut. Das ist unglaublich günstig, läuft sehr stabil und ist vergleichsweise einfach einzurichten.

Moin,

ich bin auch auf der Suche nach einer dauerhaften Lösung, um meinen Growatt WR im Homeassistant auszulesen.
Ich habe einen SPH 10000 TL3-BH.
Lösungen für den USB-Anschluss habe ich auch einige gefunden aber die andere Variante hört sich besser an.
@alter-hase Könntest Du mir den Code für den ESP zusenden?
Danke!

hier mein code esp32:

esphome:
  name: growatt
  friendly_name: growatt

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "6lmLX0xxxxxxxxxxxxxxxxxxxxxxxxxxx"

ota:
  - platform: esphome
    password: "efxxxxxxxxxxxxxxxxxxxxxxxxxxx"

wifi:
  ssid: !secret wifi_tplink_ssid
  password: !secret wifi_tplink_password
  manual_ip:
    static_ip: 192.168.111.111
    gateway: 192.168.111.1
    subnet: 255.255.255.0
    dns1: 192.168.111.1

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Growat32 Fallback Hotspot"
    password: "TWxxxxxxxx"

web_server: # creates a web server where you can access all this stuff without home assistant (good for debugging or working headless (no HA))
  port: 80
  include_internal: true
  ota: true

captive_portal:

time:
  - platform: homeassistant
    id: homeassistant_time


# uart für Growatt MIC
uart:
  - id: modbus_uart_mic
    #baud_rate: 115200
    baud_rate: 9600
    tx_pin: GPIO18
    rx_pin: GPIO19
  

modbus:
  - id: modbus_mic1
    flow_control_pin: GPIO21
    uart_id: modbus_uart_mic

modbus_controller:
  - id: modbus_growatt_mic
    ## the Modbus device adds
    address: 0x1
    modbus_id: modbus_mic1
    setup_priority: -10
    update_interval: 5000ms

text_sensor:
  - platform: wifi_info
    ip_address:
      name: IP Address
    ssid:
      name: Connected SSID
    bssid:
      name: Connected BSSID
    mac_address:
      name: Mac Wifi Address
    
  - platform: template
    name: Uptime Human Readable
    id: uptime_human
    icon: mdi:clock-start
    update_interval: 10s

  - platform: version
    name: "ESPHome Version"

  - platform: modbus_controller
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC Firmware Version"
    address: 9
    register_count: 3
    register_type: holding
    #internal: true
    entity_category: diagnostic

  - platform: template
    name: "Growatt MIC Status"
    icon: mdi:eye
    entity_category: diagnostic
    lambda: |-
      if (id(status).state == 1) {
        return {"Normal"};
      } else if (id(status).state == 0)  {
        return {"Waiting"};
      } else {
        return {"Fault!"};
      }
# ------------------------------------------------------------------------------------#
sensor:

# ------------------------------------------------------------------------------------
  - platform: modbus_controller
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC status"  
    address: 0
    register_type: "read"
    internal: true
    id: status

  - platform: modbus_controller
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC DcPower"
    address: 3005 #5
    register_type: "read"
    unit_of_measurement: W
    device_class: power
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1
    
  - platform: modbus_controller
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC DcVoltage"
    address: 3003 #3
    register_type: "read"
    unit_of_measurement: V
    device_class: voltage
    icon: mdi:flash
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1
    
  - platform: modbus_controller
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC DcInputCurrent"
    address: 3004 #4
    register_type: "read"
    unit_of_measurement: A
    device_class: current
    icon: mdi:flash
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC AcPower"
    address: 3023 #40
    register_type: "read"
    unit_of_measurement: W
    device_class: power
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC AcFrequency"
    address: 3025 #37
    register_type: "read"
    unit_of_measurement: Hz
    icon: mdi:flash
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.01
  
  - platform: modbus_controller
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC AcVoltage"
    address: 3026 #38
    register_type: "read"
    unit_of_measurement: V
    device_class: voltage
    icon: mdi:flash
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1
  
  - platform: modbus_controller
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC AcOutputCurrent"
    address: 3027 #39
    register_type: "read"
    unit_of_measurement: A
    device_class: current
    icon: mdi:flash
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1
  
  - platform: modbus_controller
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC AcPowerVA"
    address: 3028 #40
    register_type: "read"
    unit_of_measurement: VA
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1
    
  - platform: modbus_controller
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC EnergyToday"
    address: 3049 #53
    register_type: "read"
    unit_of_measurement: kWh
    device_class: energy
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1
    
  - platform: modbus_controller
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC EnergyTotal"
    address: 3051 #55
    register_type: "read"
    unit_of_measurement: kWh
    state_class: total_increasing
    device_class: energy
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

    
  - platform: modbus_controller
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC Temperature"
    address: 3093
    register_type: "read"
    unit_of_measurement: C
    device_class: temperature
    icon: mdi:thermometer
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

select:
  - platform: modbus_controller
    id: powermode
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC Power Mode"
    address: 121
    value_type: U_WORD
    optionsmap:
      "600": 6
      "750": 7
      "1000": 10
      "1500": 15
      "2000": 20
    entity_category: config

switch:
  - platform: modbus_controller
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC OnOff"
    address: 0
    register_type: holding
    bitmask: 1

  - platform: modbus_controller
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC Tracking Mode"
    address: 124
    register_type: holding
    bitmask: 1
    
number:
  - platform: modbus_controller
    modbus_controller_id: modbus_growatt_mic
    name: "Growatt MIC Max Output Power"
    address: 3
    value_type: U_WORD
    min_value: 0
    max_value: 100
    entity_category: config

zu beachten ist: einen esp32 wroom mit ch340 Treiber kaufen, denn ESP Home unterstützt nur den ch340 Treiber in Windows.
Weiter wird noch eine RS485 Modul TTL zu RS-485 Platine benötigt.

Vielen Dank.
Die Hardware habe ich schon hier liegen.
Aber der Hinweis mit dem CH340 ist gut, sonst hätte ich mich evtl. gewundert, dass es nicht funktioniert.

Ich hab 10 esp8266, da ist kein ch340 chip drauf. Über umwege bekomm ich die auch in home assistant. Man muss dann in home assistant ein bin file generieren, das dann extern auf den esp8266 flashen. Danach ist das ding in home assistant, lässt sich dann aber nur über wlan ansprechen. Aber das macht man letzendlich sowieso, wenn das iwo im haus verbaut ist. Muss aber nicht sein, ich achte jetzt jedenfalls drauf, dass auf den esp ein ch340 chip verbaut ist.