ich habe die Idee verworfen meinen Zwischenzähler mit einem Waveshare auszulesen. Ich denke die Variante mit einem ESP32 in ESPHome und einem SH-U12 RS485 zu TTL ist “schlanker”, günstiger und man muss nicht noch etwas auf dem Dashboard des Waveshare konfigurieren. Für mich als Anfänger fällt dann eine Fehlerquelle weg.
Verkabelt habe ich den ESP32 und das SH-U12 RS485 zu TTL wie folgt:
Ich brauche nun Hilfe dabei, dass ich den Stromverbrauch in Homeassistant im “Energy Dashboard” auswerten kann. Ich sehe nicht in den Entitäten bzw. es werden gar keine angelegt.
So wir machen Fortschritte.
Nachdem ich nun einen neuen ESP32 gekauft habe, habe ich diesen anders in ESPHome eingebunden.
Den ESP32, der nicht lief, habe ich über web.esphome.io installiert. Anschließen über das WLAN mit “Take Controll” in ESPHome eingebunden. Anschließend die gleiche config installiert, dann wurden keine Entitäten angelegt.
Den neuen ESP32 habe ich per USB an Home Assistant angeschlossen und dann in ESPHome eingebunden. Dann die gleiche config installiert und siehe da - alle Entitäten wurden angelegt.
Entweder der ESP32 ist kaputt, oder der Weg des Anlegens in ESPHome war das Problem.
Gut, also nun muss ich noch den Modbus zum laufen bekommen.
Ich habe ebenfalls versucht die Adressen zu kürzen (zum Beispiel 5999 statt 6000).
Ich habe RX und TX gedreht.
Trotzdem bekomme ich dieses Log:
INFO ESPHome 2026.5.3
INFO Loaded validated config cache for stromwp.yaml, skipping validation.
INFO Starting log output from stromwp.local using esphome API
INFO Successfully resolved stromwp.local in 1.593s
INFO Successfully connected to stromwp @ 10.10.7.120 in 0.007s
INFO Successful handshake with stromwp @ 10.10.7.120 in 0.096s
[19:30:33.252][I][app:151]: ESPHome version 2026.5.3 compiled on 2026-06-06 18:44:24 +0200
[19:30:33.252][I][app:158]: ESP32 Chip: ESP32 rev3.1, 2 core(s)
[19:30:33.253][W][app:171]: Chip rev >= 3.0 detected. Set minimum_chip_revision: "3.1" under esp32 > framework > advanced to reduce binary size
[19:30:33.253][W][app:198]: Bootloader supports SRAM1 as IRAM (+40KB). Set sram1_as_iram: true under esp32 > framework > advanced
[19:30:33.258][C][logger:219]: Logger:
[19:30:33.258][C][logger:219]: Max Level: DEBUG
[19:30:33.258][C][logger:219]: Initial Level: DEBUG
[19:30:33.280][C][logger:226]: Log Baud Rate: 115200
[19:30:33.280][C][logger:226]: Hardware UART: UART0
[19:30:33.281][C][logger:235]: Task Log Buffer Size: 768 bytes
[19:30:33.304][C][uart.idf:254]: UART Bus 1:
[19:30:33.305][C][uart.idf:152]: TX Pin: GPIO17
[19:30:33.308][C][uart.idf:152]: RX Pin: GPIO16
[19:30:33.309][C][uart.idf:259]: RX Buffer Size: 256
[19:30:33.309][C][uart.idf:259]: RX Full Threshold: 8
[19:30:33.309][C][uart.idf:259]: RX Timeout: 2
[19:30:33.310][C][uart.idf:268]: Baud Rate: 9600 baud
[19:30:33.310][C][uart.idf:268]: Data Bits: 8
[19:30:33.310][C][uart.idf:268]: Parity: NONE
[19:30:33.310][C][uart.idf:268]: Stop bits: 1
[19:30:33.310][C][uart.idf:268]: Wake on data RX: ENABLED
[19:30:33.329][C][modbus:320]: Modbus:
[19:30:33.329][C][modbus:320]: Send Wait Time: 250 ms
[19:30:33.329][C][modbus:320]: Turnaround Time: 100 ms
[19:30:33.329][C][modbus:320]: Frame Delay: 5 ms
[19:30:33.329][C][modbus:320]: Long Rx Buffer Delay: 10 ms
[19:30:33.329][C][modbus:320]: CRC Disabled: NO
[19:30:33.330][C][modbus:152]: Flow Control Pin: GPIO4
[19:30:33.346][C][modbus_controller.sensor:017]: modbus_controller.sensorModbus Controller Sensor 'Gesamtenergie'
[19:30:33.346]modbus_controller.sensor State Class: 'total_increasing'
[19:30:33.346]modbus_controller.sensor Unit of Measurement: 'kWh'
[19:30:33.346]modbus_controller.sensor Accuracy Decimals: 2
[19:30:33.370][C][modbus_controller.sensor:232]: modbus_controller.sensor Device Class: 'energy'
[19:30:33.370][C][modbus_controller.sensor:017]: modbus_controller.sensorModbus Controller Sensor 'Wirkenergie Vorwärts'
[19:30:33.370]modbus_controller.sensor State Class: 'total_increasing'
[19:30:33.370]modbus_controller.sensor Unit of Measurement: 'kWh'
[19:30:33.370]modbus_controller.sensor Accuracy Decimals: 2
[19:30:33.371][C][modbus_controller.sensor:232]: modbus_controller.sensor Device Class: 'energy'
[19:30:33.392][C][modbus_controller.sensor:017]: modbus_controller.sensorModbus Controller Sensor 'Leistung'
[19:30:33.392]modbus_controller.sensor State Class: 'measurement'
[19:30:33.392]modbus_controller.sensor Unit of Measurement: 'kW'
[19:30:33.392]modbus_controller.sensor Accuracy Decimals: 2
[19:30:33.430][C][modbus_controller.sensor:232]: modbus_controller.sensor Device Class: 'power'
[19:30:33.431][C][modbus_controller.sensor:017]: modbus_controller.sensorModbus Controller Sensor 'Spannung L1'
[19:30:33.431]modbus_controller.sensor State Class: 'measurement'
[19:30:33.431]modbus_controller.sensor Unit of Measurement: 'V'
[19:30:33.431]modbus_controller.sensor Accuracy Decimals: 1
[19:30:33.432][C][modbus_controller.sensor:232]: modbus_controller.sensor Device Class: 'voltage'
[19:30:33.459][C][modbus_controller.sensor:017]: modbus_controller.sensorModbus Controller Sensor 'Spannung L2'
[19:30:33.459]modbus_controller.sensor State Class: 'measurement'
[19:30:33.459]modbus_controller.sensor Unit of Measurement: 'V'
[19:30:33.459]modbus_controller.sensor Accuracy Decimals: 1
[19:30:33.492][C][modbus_controller.sensor:232]: modbus_controller.sensor Device Class: 'voltage'
[19:30:33.492][C][modbus_controller.sensor:017]: modbus_controller.sensorModbus Controller Sensor 'Spannung L3'
[19:30:33.492]modbus_controller.sensor State Class: 'measurement'
[19:30:33.492]modbus_controller.sensor Unit of Measurement: 'V'
[19:30:33.492]modbus_controller.sensor Accuracy Decimals: 1
[19:30:33.493][C][modbus_controller.sensor:232]: modbus_controller.sensor Device Class: 'voltage'
[19:30:33.515][C][modbus_controller.sensor:017]: modbus_controller.sensorModbus Controller Sensor 'Strom Gesamt'
[19:30:33.515]modbus_controller.sensor State Class: 'measurement'
[19:30:33.515]modbus_controller.sensor Unit of Measurement: 'A'
[19:30:33.515]modbus_controller.sensor Accuracy Decimals: 2
[19:30:33.561][C][modbus_controller.sensor:232]: modbus_controller.sensor Device Class: 'current'
[19:30:33.561][C][captive_portal:133]: Captive Portal:
[19:30:33.566][C][wifi:1526]: WiFi:
[19:30:33.566][C][wifi:1526]: Local MAC: 70:4B:CA:83:92:FC
[19:30:33.566][C][wifi:1526]: Connected: YES
[19:30:33.570][C][wifi:1237]: IP Address: 10.10.7.120
[19:30:33.575][C][wifi:1248]: SSID: 'jemt-SH'[redacted]
[19:30:33.575][C][wifi:1248]: BSSID: FA:9F:C2:AA:B8:43[redacted]
[19:30:33.575][C][wifi:1248]: Hostname: 'stromwp'
[19:30:33.575][C][wifi:1248]: Signal strength: -62 dB ▂▄▆█
[19:30:33.575][C][wifi:1248]: Channel: 11
[19:30:33.575][C][wifi:1248]: Subnet: 255.255.255.0
[19:30:33.575][C][wifi:1248]: Gateway: 10.10.7.1
[19:30:33.575][C][wifi:1248]: DNS1: 10.10.3.10
[19:30:33.575][C][wifi:1248]: DNS2: 0.0.0.0
[19:30:33.593][C][esphome.ota:097]: Over-The-Air updates:
[19:30:33.593][C][esphome.ota:097]: Address: stromwp.local:3232
[19:30:33.593][C][esphome.ota:097]: Version: 2
[19:30:33.611][C][esphome.ota:104]: Password configured
[19:30:33.628][C][safe_mode:058]: Safe Mode:
[19:30:33.628][C][safe_mode:058]: Successful after: 60s
[19:30:33.628][C][safe_mode:058]: Invoke after: 10 attempts
[19:30:33.628][C][safe_mode:058]: Duration: 300s
[19:30:33.630][C][safe_mode:079]: Bootloader rollback: support unknown
[19:30:33.655][C][web_server.ota:256]: Web Server OTA
[19:30:33.674][C][api:238]: Server:
[19:30:33.674][C][api:238]: Address: stromwp.local:6053
[19:30:33.674][C][api:238]: Listen backlog: 4
[19:30:33.674][C][api:238]: Max connections: 5
[19:30:33.678][C][api:245]: Noise encryption: YES
[19:30:33.697][C][mdns:230]: mDNS:
[19:30:33.697][C][mdns:230]: Hostname: stromwp
[19:30:33.715][C][modbus_controller:309]: ModbusController:
[19:30:33.715][C][modbus_controller:309]: Address: 0x01
[19:30:33.715][C][modbus_controller:309]: Max Command Retries: 4
[19:30:33.715][C][modbus_controller:309]: Offline Skip Updates: 0
[19:30:35.730][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:36.015][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:36.299][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:36.582][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:36.872][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:36.893][D][modbus_controller:038]: Modbus command to device=1 register=0x138A no response received - removed from send queue
[19:30:37.172][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:37.459][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:37.738][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:38.022][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:38.319][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:38.324][D][modbus_controller:038]: Modbus command to device=1 register=0x1394 no response received - removed from send queue
[19:30:38.610][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:38.896][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:39.178][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:39.464][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:39.751][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:39.754][D][modbus_controller:038]: Modbus command to device=1 register=0x1770 no response received - removed from send queue
[19:30:40.058][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:40.335][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:40.619][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:40.908][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:41.188][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:41.191][D][modbus_controller:038]: Modbus command to device=1 register=0x177A no response received - removed from send queue
[19:30:45.719][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:46.004][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:46.301][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:46.572][W][modbus:063]: Stop waiting for response from 1 256ms after last send
[19:30:46.857][W][modbus:063]: Stop waiting for response from 1 256ms after last send
Der nächste Schritt ist erledigt. Ich habe gestern die komplette Verkabelung (auch die vom Elektriker am Stromzähler) noch einmal abgenommen und neu aufgelegt. Nachdem ich dann die yaml nochmal geprüft habe und ein paar Kleinigkeiten angepasst habe sieht das Ergebnis nun so aus:
[092045.734][W][modbus417] Clearing buffer of 17 bytes - timeout after partial response 60ms after last send
[092045.781][C][mdns230] mDNS
[092045.781][C][mdns230] Hostname stromwp
[092045.782][C][modbus_controller309] ModbusController
[092045.782][C][modbus_controller309] Address 0x01
[092045.782][C][modbus_controller309] Max Command Retries 4
[092045.782][C][modbus_controller309] Offline Skip Updates 0
[092046.282][W][modbus063] Stop waiting for response from 1 625ms after last send
[092046.342][W][modbus417] Clearing buffer of 8 bytes - timeout after partial response 27ms after last send
[092046.353][D][modbus_controller.sensor024] Sensor new state 0.00
[092046.451][S][sensor] 'Leistung' 0.00 kW
[092046.497][W][modbus417] Clearing buffer of 17 bytes - timeout after partial response 47ms after last send
[092047.075][W][modbus063] Stop waiting for response from 1 626ms after last send
[092047.123][W][modbus417] Clearing buffer of 8 bytes - timeout after partial response 27ms after last send
[092047.160][D][modbus_controller.sensor024] Sensor new state 0.00
[092047.247][S][sensor] 'Gesamtenergie' 0.00 kWh
[092047.293][W][modbus417] Clearing buffer of 17 bytes - timeout after partial response 47ms after last send
[092047.857][W][modbus063] Stop waiting for response from 1 611ms after last send
[092047.903][W][modbus417] Clearing buffer of 8 bytes - timeout after partial response 27ms after last send
[092047.925][D][modbus_controller.sensor024] Sensor new state 0.00
[092048.041][S][sensor] 'Wirkenergie Vorwärts' 0.00 kWh
[092053.614][W][modbus417] Clearing buffer of 8 bytes - timeout after partial response 27ms after last send
[092053.645][D][modbus_controller.sensor024] Sensor new state 0.00
[092053.651][D][modbus_controller.sensor024] Sensor new state 0.00
[092053.651][D][modbus_controller.sensor024] Sensor new state 0.00
[092053.655][D][modbus_controller.sensor024] Sensor new state 0.00
[092053.748][S][sensor] 'Spannung L1' 0.0 V
[092053.748][S][sensor] 'Spannung L2' 0.0 V
[092053.749][S][sensor] 'Spannung L3' 0.0 V
[092053.750][S][sensor] 'Strom Gesamt' 0.00 A
Wenn ich GPIO05 verwende bekomme ich eine Warnung. Ebenfalls keine Ergebnisse.
parity: EVEN
Muss korrekt sein, ändere ich nur das auf NONEdann bekomme ich in den Geräten wieder “UNBEKANNT” statt “0”.
Bekomme eine Warnung das ich weder captive_portal noch web… configuriert habe. Müsste ich mich schlau machen wenn ich nun erstmal die Werte ausgelesen bekomme.
Ich denke, dass ich heute Abend nochmal A und B tausche, evtl. ist das ja das Problem. Man liest verschiedene Hinweise das A auf A soll oder manchmal auch A auf B.
Ich hatte letzte Woche ein ähnliches Problem. Hab dann die komplette Yaml von einer KI bearbeiten lassen. Nach etwas hin und her hat es dann funktioniert. Ich habe eine SDM630 Emulation für Growatt WR gebastelt.
das mache ich tatsächlich parallel mit ChatGPT. Gibt einem tatsächlich mal gute Ideen.
Ich habe gestern A B getauscht, dann kommt wieder “Unbekannt” heraus - sprich das ist richtig. Danach wieder umgedreht und nun sieht das log so aus:
[07:49:17.523][S][sensor]: 'Spannung L3' >> 0.0 V
[07:49:17.523][S][sensor]: 'Strom Gesamt' >> 0.00 A
[07:49:17.557][D][modbus_controller.sensor:024]: Sensor new state: 0.00
[07:49:17.656][S][sensor]: 'Leistung' >> 0.00 kW
[07:49:17.704][D][modbus_controller.sensor:024]: Sensor new state: 0.00
[07:49:17.805][S][sensor]: 'Gesamtenergie' >> 0.00 kWh
[07:49:17.854][D][modbus_controller.sensor:024]: Sensor new state: 0.00
[07:49:17.970][S][sensor]: 'Wirkenergie Vorwärts' >> 0.00 kWh
[07:49:27.110][D][modbus_controller.sensor:024]: Sensor new state: 0.00
[07:49:27.208][S][sensor]: 'Spannung L1' >> 0.0 V
[07:49:27.258][D][modbus_controller.sensor:024]: Sensor new state: 0.00
[07:49:27.355][S][sensor]: 'Spannung L2' >> 0.0 V
[07:49:27.410][D][modbus_controller.sensor:024]: Sensor new state: 0.00
[07:49:27.413][D][modbus_controller.sensor:024]: Sensor new state: 0.00
[07:49:27.513][S][sensor]: 'Spannung L3' >> 0.0 V
[07:49:27.513][S][sensor]: 'Strom Gesamt' >> 0.00 A
[07:49:27.559][D][modbus_controller.sensor:024]: Sensor new state: 0.00
[07:49:27.661][S][sensor]: 'Leistung' >> 0.00 kW
[07:49:27.717][D][modbus_controller.sensor:024]: Sensor new state: 0.00
[07:49:27.822][S][sensor]: 'Gesamtenergie' >> 0.00 kWh
[07:49:27.858][D][modbus_controller.sensor:024]: Sensor new state: 0.00
[07:49:27.960][S][sensor]: 'Wirkenergie Vorwärts' >> 0.00 kWh
Also keine Warnungen mehr. Nun bleibt es trotzdem “0”.
Bei den Registern habe ich schon zum Beispiel 5999 statt 6000 versucht.
Auf jeden Fall machen wir kleine Fortschritte.
Viele Grüße
Edit:
Es ist verrückt. Nun habe ich 1x debug in der yaml “an” gemacht, und danach wieder die letzte yaml gelanden. Nun sieht es wieder so aus:
[08:45:11.981][W][modbus:417]: Clearing buffer of 17 bytes - timeout after partial response 47ms after last send
[08:45:12.543][W][modbus:063]: Stop waiting for response from 1 611ms after last send
[08:45:12.611][W][modbus:417]: Clearing buffer of 17 bytes - timeout after partial response 48ms after last send
[08:45:13.174][W][modbus:063]: Stop waiting for response from 1 611ms after last send
[08:45:13.241][W][modbus:417]: Clearing buffer of 17 bytes - timeout after partial response 47ms after last send
[08:45:13.823][W][modbus:063]: Stop waiting for response from 1 626ms after last send
[08:45:13.886][W][modbus:417]: Clearing buffer of 17 bytes - timeout after partial response 47ms after last send
[08:45:14.466][W][modbus:063]: Stop waiting for response from 1 626ms after last send
[08:45:14.541][W][modbus:417]: Clearing buffer of 17 bytes - timeout after partial response 48ms after last send
[08:45:15.099][W][modbus:063]: Stop waiting for response from 1 611ms after last send
[08:45:15.116][W][modbus_controller:026]: Modbus device=1 set offline
[08:45:15.119][D][modbus_controller:038]: Modbus command to device=1 register=0x1389 no response received - removed from send queue
[08:45:15.184][W][modbus:417]: Clearing buffer of 17 bytes - timeout after partial response 47ms after last send
[08:45:15.769][W][modbus:063]: Stop waiting for response from 1 626ms after last send
[08:45:15.830][W][modbus:417]: Clearing buffer of 17 bytes - timeout after partial response 47ms after last send
[08:45:16.410][W][modbus:063]: Stop waiting for response from 1 626ms after last send
[08:45:16.483][W][modbus:417]: Clearing buffer of 17 bytes - timeout after partial response 47ms after last send
[08:45:17.055][W][modbus:063]: Stop waiting for response from 1 626ms after last send
[08:45:17.101][W][modbus:417]: Clearing buffer of 8 bytes - timeout after partial response 27ms after last send
[08:45:17.106][W][modbus_controller:068]: Modbus device=1 back online
[08:45:17.126][D][modbus_controller.sensor:024]: Sensor new state: 0.00
Ich habe die besten Erfahrungen mit Google Gemini gemacht. Chatgpt kürzt gerne mal die Yaml. Auch Copilot von MS ist ganz brauchbar. Ich habe immer Auszüge vom Log an die KI geschickt bis die Fehler ausgemerzt waren. Auch habe ich die KI immer die ganze Yaml schreiben lassen, um Fehler wie zum Beispiel Tabs zu vermeiden. Auch wenn beim Bauen Fehler oder Warnungen aufgetreten sind, habe ich diese zur KI geschickt.
Dieses kleine Gimik hat komplett Gemini programmiert.
Kommentier den mal mit einer # aus. Kann sein dass dies schon das Problem ist. Den braucht man nicht immer. Stand bei mir auch in der yaml. Hab ich einfach auskommentiert, weil ich den Anschluss auch nicht habe.
Kann es sein das bei dir unter “modbus”, die uart_id fehlt? Müsste das nicht so aussehen?