ich stelle hier meine ESPHome Konfiguration ein um meinen Growatt 600TL-X zu überwachen. Nutzen tue ich dafür einen Growatt ShineWiFI-X - WiFi-Stick. Dieser wird per USB an den Growatt angeschlossen und kann sehr leicht mit einer anderen Firmware geflasht werden.
Dazu den Stick einfach per USB in den PC stecken. Es wird ein neuer COM Port erstellt. z.B. COM4. Jetzt lässt sich der Stick einfach mit den ESPHome Flasher versorgen. substitutions:
devicename: "esphome-growatt-01"
upper_devicename: "ESPHome Growatt 01"
esphome:
name: $devicename
platform: ESP8266
board: esp07s
Hi, vielen Dank fürs teilen des Codes. Ich bin da auch gerade dran alles vorzubereiten, wenn mein Growatt dann kommt und alles installiert ist, diesen dann in HomeAssistant zu bekommen.
Und ich bin auch am suchen nach der Möglichkeit das ExportLimit über HA setzen zu können. Scheint aber nicht ganz so trivial wie das lesenden zu sein. Zum Schreiben von Registern oder was auch immer habe ich unter folgendem Link was gefunden: https://esphome.io/components/modbus_controller.html
Ziemlich weit unten erfährt man was, das es wohl mit „lambda“ geht. Das übersteigt aber mein KnowHow über ESPHome und so.
ich würde gern auch meinen ShineWiFi X mit ESP Home betreiben, habe aber 0 Erfahrung mit ESP Controllern und dem Umgang damit. Ob Ihr kurz erklären könntet, wie ich auf einfachem Wege ESP Home da drauf bekomme und wo genau die Konfigurationsdatei dann hin muss, die pasarn gepostet hat?
Ich nutze HomeAssistant auf einer Synology NAS im Docker, habe also keinen Supervisor Zugriff, falls das wichtig ist. Wenn ich das richtig verstanden habe, brauche ich das mit dem esphome-flasher ja auch gar nicht, allerdings weiß ich nicht, welche Firmware ich dem tool da angeben soll.
Ob sich vielleicht irgendwer erbarmen könnte, einem ESP Neuling ein wenig auf die Sprünge zu helfen? Ich würde halt gern die Original Firmware vor dem flashen sichern, damit ich zur Not wieder alles zurücksetzen kann. Aber auch dies will mir bisher einfach nicht gelingen. Ein wenig Unterstützung wäre super hilfreich. Vielen Dank
Es gibt tolle Neuigkeiten. Zufällig bin ich auch Github auf ein ESP Projekt zu Growatt-WR gestoßen. Aber auch das war mehr zum auslesen der Daten. Dort hat sich aber ein User aus England (that-Dude) mit eingefunden, der eine Nulleinspeisung probieren wollte. Ich habe mit ihm ein bisschen geschrieben und er war schon fleissig am Testen und programmieren. So hat es sich ergeben, dass er nun einen Emulator des EAStrom gebaut hat, mit einem ESP8266 und RS485 Konverter. Das Ganze hat er jetzt als eigenes GitHub Projekt hochgeladen. Es ist hier zu finden: https://github.com/That-Dude/Emulated-Eastrom-SDM-Power-Meter/
Ich teile das, weil ich das einfach sau cool finde. Endlich mal jemand der nicht nur aufs Auslesen aus ist, sondern auch um die Einspeisung zu begrenzen. Das Ganze ist natürlich in einem Alphastatus. Aber ich finds trotzdem geil. Auch weil man nicht den original Stick neu flaschen muss. Man nimmt nen ESP8266, RS485 Modul und los. Das muss einfach verbeitet werden.
Ich selbst konnte es noch nicht testen. Muss erst meine Module an die Fassade bringen und dann gehts da weiter. Ich werde da auch mein bestes geben (trotz schwacher Arduinokenntnisse). Aber ich feier das gerade total, weil ich nen Shelly EM3 habe und mir nur nun so den SDM sparen kann (wenn es mit meinem Growatt auch läuft).
Hey dominicbag, bist du mit deiner Konfiguration weiter? Stehe gerade vor der Frage welcher WR es für meine kleine PV Anlage werden soll und fände die Möglichkeit per Shelly 3EM und ESP8266 den Growatt steuern zu können sehr spannend.
Vielleicht hast du ja einen ersten Erfahrungsbericht. VG
Hey dominicbag, bist du mit deiner Konfiguration weiter? Stehe gerade vor der Frage welcher WR es für meine kleine PV Anlage werden soll und fände die Möglichkeit per Shelly 3EM und ESP8266 den Growatt steuern zu können sehr spannend.
Vielleicht hast du ja einen ersten Erfahrungsbericht. VG
In der praktischen Umsetzung noch nicht. Ich habe mir aber einen Fork erstellt und auf den Shelly 3EM angepasst.
Jetzt werden alle 3 Phasen direkt per MQTT eingelesen und im ESP saldiert. Der saldierte Wert wird dann weitergegeben an die Modbus Schnittstelle.
Wie gesagt, praktisch ausprobiert mit dem Growatt habe ich das noch nicht. Habe es bisher nur mit HomeAssistant und NodeRed simuliert, sprich Werte reingeworfen per MQTT um zu sehen ob die Saldierung klappt.
Besteht irgendwie die Möglichkeit, die Wirkleistung (Begrenzung auf x Watt) über den Adapter zu ändern? Das geht zumindest über die Original App ...
Grüße, Ralf
Ja, das geht wunderbar mit ESPHome in einem lambda Call: ...
modbus_controller:
- id: growatt
## the Modbus device addr
address: 0x1
modbus_id: modbus1
setup_priority: -10
...
- lambda: !lambda |-
...
esphome::modbus_controller::ModbusController *controller = id(growatt);
int16_t relOutputPower = 50; // Max output active power (0 - 100 %), 50 % in the example
uint16_t reg = 3; // 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);
Viele Grüße
Ich habe einen Growatt SPH10000TL3 BH UP mit Wifi Shine X, wie ja hier allen klar ist, ist das System der Cloud von Growatt nicht so toll und ich möchte die Daten auch Lokal erfassen ohne der Growatt Server. Leider bin ich auf dem gebiet ein absoluter Neuling.
Einen Raspberry mit Home Assistent habe ich vorbereitet und einen mit Grafana, IO Broker und influxDB um zu üben wie das geht.
Stick ist auch fertig, nur werden hier Fehler angezeigt.
ich hab mir vor ein paar Tagen einen gebrauchten Shinewifi X Stick gekauft damit ich das mal testen kann, bevor man mal eben seinen funktionierenden Stick ggf. "zerlegt". A fatal error occurred: Failed to connect to ESP8266: No serial data received.
For troubleshooting steps visit: Troubleshooting - ESP32 - — esptool.py latest documentation
INFO Upload with baud rate 460800 failed. Trying again with baud rate 115200.
esptool.py v3.3.1
Serial port /dev/ttyUSB3
Connecting......................................
Ebenso mit dem "esphomeflasher" gibt es einen Fehler, dass man den Serial Port nicht öffnen konnte.. Using '/dev/ttyUSB3' as serial port.
Connecting......................................
Unexpected error: ESP Chip Auto-Detection failed: Failed to connect to Espressif device: No serial data received.
For troubleshooting steps visit: Troubleshooting - ESP32 - — esptool.py latest documentation
Sofern es nicht bekannt ist, der Port GPIO0 und GND müssen gebrückt sein, damit man den Stick flashen kann. Anschließend kann man die Brücke wieder entfernen und den Shinewifi Stick wie üblich OTA mit esphome flashen
ich habe eine Frage zur Funktion nach dem Flashen.
Ich habe einen kleinen Homeserver von Gira im Einsatz und werte damit meine Fronius WR, meine Mitsubishi WP und Wallbox aus und steuere entsprechend mit Überschussenergie. Nun ist wegen der Größe auf dem Carport ein Growatt Wechselrichter eingezogen und diesen möchte ich gerne intern über einen http Request ebenfalls einbinden. Mir reicht die aktuelle Energie, Tagesertrag und Gesamtertrag.
@pasarn Ist der Shine WiFi Stick nach dem Flashen im Netzwerk intern erreichbar und könnte mir Antworten liefern?
das ist mal super hilfreich! Vielen Dank für die ESPHome Vorlage. Man muss noch wissen, dass man zum initialen Flaschen die Platine aus dem Gehäuse ziehen muss und GPIO0 und Ground beim Starten / Einstecken des Sticks Brücken muss, dann klappt es wunderbar
Eine Frage: Warum rechnest du auf die Input-Read-Register immer dezimal 3000 drauf im Vergleich zu den Register Adressen aus der Dokumentation?
Hier zum Beispiel 3005 anstatt 5 wie in der Doku:
name: "${devicename} DcPower"
address: 3005 #5
Wäre super wenn du mir dieses Rätsel aufklären könntest!
@frankthetank Hallo, danke für die Denkansätze. Aber mit dem Lamdda Befehlen komme ich nicht weiter. Kann ich nicht einen "Number:"-Sensor im EspHome generieren und von HomeAsiistant die Ausgangsleistung regeln? Ich komme leider nicht weiter und im Netz finde ich wenig.
@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?
@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