Benachrichtigungen
Alles löschen

Growatt Wechselrichter mit ESPHome auslesen

80 Beiträge
29 Benutzer
3 Likes
16.5 K Ansichten
(@azoninc)
Newbie
Beigetreten: Vor 1 Jahr
Beiträge: 1
 

@frankthetank vielen Dank für diese Lösung. Allerdings kommen bei setzen der 50% Leistung sehr seltsame Werte zustande. Dabei wird auch der Status Code 3 gesetzt, welcher auf einen Fehler hinweist. Die zuvor genannte Variante mit dem Number Slider erzeugt die gleichen Ergebnisse.

Das ganze läuft auf dem Growatt Wifi Shine X.

Kannst du mir da ggfs. weiterhelfen wieso das zu diesem Verhalten führt?

Vor Ausführung vom Lambda:

Nach Ausführen:

Ich habe folgende Konfiguration:

output:
  - id: light_bl
    platform: gpio
    pin: 16

  - id: light_gr
    platform: gpio
    pin: 0

  - id: light_rd
    platform: gpio
    pin: 2

# Example configuration entry
uart:
  - id: uart1
    baud_rate: 115200
    tx_pin: GPIO1
    rx_pin: GPIO3

modbus:
  id: modbus1
  uart_id: uart1
  flow_control_pin: GPIO4

modbus_controller:
  - id: growatt
    address: 0x1
    modbus_id: modbus1
    setup_priority: -10

switch:
  - platform: gpio
    id: led
    internal: true
    pin: 2

  - platform: template
    id: toggle_limit
    name: "Leistung einschränken"
    icon: mdi:fraction-one-half
    lambda: 'return id(led).state;'
    turn_on_action:
      - logger.log: "Switch Turned On!"
      - switch.turn_on: led
      - lambda: !lambda |-
          esphome::modbus_controller::ModbusController *controller = id(growatt);
          int16_t relOutputPower = 50; // Max output active power (0 - 100 %)
          uint16_t reg = 3; // Register: Max output active power (in %)
          modbus_controller::ModbusCommandItem setOutputPower_command = modbus_controller::ModbusCommandItem::create_write_single_command(controller, reg, relOutputPower);
          controller->queue_command(setOutputPower_command);
          
    turn_off_action:
      - logger.log: "Switch Turned Off!"
      - switch.turn_off: led
      - lambda: !lambda |-
          esphome::modbus_controller::ModbusController *controller = id(growatt);
          int16_t relOutputPower = 100; // Max output active power (0 - 100 %)
          uint16_t reg = 3; // Register: Max output active power (in %)
          modbus_controller::ModbusCommandItem setOutputPower_command = modbus_controller::ModbusCommandItem::create_write_single_command(controller, reg, relOutputPower);
          controller->queue_command(setOutputPower_command);

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

@azoninc Wegen deiner Fehlercodes bin ich da vorsichtig 😉

Meine bisherige Lösung: ein Number Sensor =

#test power factor 02/2023 Number Sernsor für ShineWifi-X.yaml

  number:

    platform: modbus_controller
    modbus_controller_id: growatt
    id: growatt600_pv_powerfactor
    name: "${devicename} Power factor"
    address: 0x3
    value_type: U_WORD
    lambda: "return x; "
    write_lambda: |-
      ESP_LOGD("main","Modbus Number incoming value = %f",x);
      uint16_t powerfactor = x ; 
      payload.push_back(powerfactor);
      return x;

 

Jetzt kann ich zumindest den Powerfaktor in HA auslesen, ändern geht irgendwie noch nicht:

espHome Logger (Wechsel von 35% auf 36% =):

[10:44:32][D][number:054]: 'Solar West Power factor' - Setting number value
[10:44:32][D][number:113]:   New number value: 36.000000
[10:44:32][D][main:209]: Modbus Number incoming value = 36.000000
[10:44:32][D][number:012]: 'Solar West Power factor': Sending state 36.000000
[10:44:32][D][modbus_controller:029]: Modbus command to device=1 register=0x00 countdown=0 no response received - removed from send queue

Wieso schreibt er hier register=0x00 ?? Müsste da nicht 0x03 stehen? 

Der Weg scheint aber ein komplett anderer zu sein, als dein Codebeispiel. ESPHome ist schon komisch 😉

 

Vielleicht finden wir bald ne Lösung für uns,

rkr


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

   
FrankTheTank reacted
AntwortZitat
Rattenfänger
(@rattenfaenger)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 7
 

Guten Abend zusammen ich habe mal eine frage ich habe das ganze jetzt mal wie ihr hier geschrieben habt nach gemacht mit einem Wemos D1 mini

es funzt alles auch soweit wie kann man das jetzt am besten mit Hassio verwirklichen das man eine null einspeisung automatisiert

mein aufbau zuhause

Hassio

Hichi smartmeter Daten per Mqtt

Growatt WR mit Wemos D1 Mini Daten per Esphome

 

ich danke euch schon mal im vorraus Smile /p>

Diese r Beitrag wurde geändert Vor 1 Jahr von Rattenfänger

   
AntwortZitat
Rattenfänger
(@rattenfaenger)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 7
 

Bin bisher nicht fündig geworden leider 


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

Veröffentlicht von: @rattenfaenger

Guten Abend zusammen ich habe mal eine frage ich habe das ganze jetzt mal wie ihr hier geschrieben habt nach gemacht mit einem Wemos D1 mini

es funzt alles auch soweit wie kann man das jetzt am besten mit Hassio verwirklichen das man eine null einspeisung automatisiert

mein aufbau zuhause

Hassio

Hichi smartmeter Daten per Mqtt

Growatt WR mit Wemos D1 Mini Daten per Esphome

 

ich danke euch schon mal im vorraus Smile /p>

Hast du Esphome einfach so auf den Wemos geflasht und dann dort eingerichtet? Frage, weil ich das lieber mit nem Wemos teste als das ich meinen Shine-Stick zerschieße. Smile
Ich hatte das Ganze schon mal per RS485 probiert. Da war die Regelung dann aber recht träge. Also ne "flotte" 0-Einspeiseregelung ist das eher nicht.
Die Wirkleistung bezieht sich, wenn ich das richtig interpretiert habe, immer auf die theoretische Gesamtleistung des WR. Sprich bei nem 600er -> 100% = 600Watt. Bei nem 3000er -> 100% = 3000Watt.

Meine Idee war da, mir über nen Dreisatz ne Regelstrecke zu bauen. Da ich eh NodeRed am laufen habe, würde ich das vermutlich da einbauen. Denn das runterregeln, sehe ich als letzten Schritt, vorher schalte ich lieber noch ein paar Verbraucher (Infrarotheizung im Winter..... im Sommer dann ne Split-Klima, etc.).

Das ist jetzt kein finaler Code, sondern vielmehr die Idee wie ich das in nen functions-Block in NodeRed verpacken würde. 

var WR_max = 3000 //Maximalleistung des WR
var neue_WL = 100 //100% als Startwert festlegen
var aktueller_Bezug = 3000 // Damit wir im Falle 3000Watt als Bezug defineirt haben
var offest_Bezug = 150 // Ich gebe dem aktuellen Bezug noch 150Watt oben drauf. Einfach damit immer 150Watt mehr Leistung geliefert werden. Kann man natürlich anpassen

aktueller_Bezug = muss man sich per MQTT erst holen und hier in die Variable speichern

aktueller_Bezug = aktueller_Bezug+offset_Bezug;

neue_WL = aktueller_Bezug*100/WL_max;

return = neue_WL;

 

 


   
AntwortZitat
Rattenfänger
(@rattenfaenger)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 7
 

   
dominicbag reacted
AntwortZitat
Rattenfänger
(@rattenfaenger)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 7
 

@dominicbag

danke dir erst mal für den code Node-Red kenne ich mich so garnicht aus aber ich versuche es mal


   
AntwortZitat
profantus
(@profantus)
Mitglied
Beigetreten: Vor 2 Jahren
Beiträge: 1198
 

@rattenfaenger

Veröffentlicht von: @rattenfaenger

wie kann man das jetzt am besten mit Hassio verwirklichen das man eine null einspeisung automatisiert

mein aufbau zuhause

Hassio

Hichi smartmeter Daten per Mqtt

Growatt WR mit Wemos D1 Mini Daten per Esphome

Du kannst einen Automatisierung erstellen die den Growatt anweist den Überschuss in den Akku zu stecken bzw. raus zu holen.

Ich würde dazu aber ein Venus OS installieren und dort die Daten einbinden via MQTT oder Modbus.

HOWTO Wechselrichter Dimensionierung


   
AntwortZitat
Rattenfänger
(@rattenfaenger)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 7
 

@profantus ich würde das schon gern mit Hassio machen das Hassio am besten den eigendlichen verbrauch abliest und dann den wemos D1 sagt hey du brauchst nicht soviel und den dann automatisch runter regelt


   
AntwortZitat
 jay
(@jay)
Heroischer Stromgenerator
Beigetreten: Vor 2 Jahren
Beiträge: 1283
 

Veröffentlicht von: @rattenfaenger

ich würde das schon gern mit Hassio machen

Finde ich auch am Einfachsten...

 


   
AntwortZitat
profantus
(@profantus)
Mitglied
Beigetreten: Vor 2 Jahren
Beiträge: 1198
 

Ok, dann eine Automation erstellen die z.B. alle 30 Sec. automatisch läuft. Die holt sich den Zählerstand vom Stromzähler. Ich hoffe mal du hast einen 2 Richtungszähler ansonsten geht das nicht.

Also 1.8.1 und 2.8.1 holen. Wenn du Einspeist (2.8.1) dann über MQTT einen Befehl schicken zum Akku laden.

Wenn du Verbrauch hast umgekehrt.

Du brauchst dann auch noch den SOC vom Akku und eine Hysterese z.B 50W damit du nicht ständig hoch und runter regelst.

 

Im ESPHome musst du dann noch ein MQTT Subscribe Sensor einrichten der auf deine Nachricht aus Home Assistant hört und das auf die korrekten Modbus Register umsetzt.

HOWTO Wechselrichter Dimensionierung


   
AntwortZitat
Rattenfänger
(@rattenfaenger)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 7
 

@profantus wie geht das Ganze den ohne Akku da ich kein habe des Wegen 0 Einspeisung


   
AntwortZitat
profantus
(@profantus)
Mitglied
Beigetreten: Vor 2 Jahren
Beiträge: 1198
 

@rattenfaenger Wenn du keinen Akku hast musst du dem WR sagen was er an PV Einspeisung generieren darf. Wenn der WR das kann dann Regelt der die Leistung passen runter. Das musst du auch machen wenn du einen Akku hast. Darin unterscheiden sich die Anlagen nicht. Ist der Akku voll und du möchtest nicht einspeisen muss du auch dann den WR runter regeln.

Hast du die Modbus-Spezifikation von deinem Wechselrichter? Dann kannst du die ja mal teilen. Dort muss ja beschrieben sein auf welches Register du schreiben musst um die Einspeiseleistung zu regeln.

HOWTO Wechselrichter Dimensionierung


   
AntwortZitat
Rattenfänger
(@rattenfaenger)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 7
 

 

Ich habe den growatt mic 600tl-x

hab da was gefunden weiß nur nicht ob das mit meinem WSR zusammen passt 

Growatt_Manual modbus RTU Protocol.pdf

das ist der Befehl aus der esphome mit dem ich mein WSR regeln kann habe in Hassio auch den slider um ihn runter zu regeln 

platform: modbus_controller
    modbus_controller_id: growatt
    id: growatt600_pv_powerfactor
    name: "${devicename} Power factor"
    address: 0x3
    value_type: U_WORD
    min_value: 0
    max_value: 100
    step: 1

   
AntwortZitat
Seite 2 / 6
Teilen: