BitBastelei #321 - WLAN-Stromzähler mit Modbus, ESP8266/Arduino und SDM120
(1 GB) 00:35:49
2019-02-17 11:00 🛈Vor einiger Zeit hatte ich mir einen Messwandlerzähler besorgt, welcher beim Thema Stromnetzanalyse deutlich mehr Daten als mein bisheriger S0-Zähler liefern sollte. Die digitale Schnittstelle dazu nennt sich „Modbus“ und basiert auf RS485. Um mich damit vertraut zu machen habe ich mir einen kleineren, einphasigen Modbus-Zähler geschnappt und mir angesehen was notwendig ist um diesen mit einem ESP8266 zu verbinden.
Wollte mal meinen Energieverbrauch messen und per Handy kontrollieren. Verwende zum Test einen SDM 230. In deinem Video jagst du manchmal ziemlich schnell dadurch. Ich hab da Probleme zu folgen. Die Bib. SDM_Energy_Meter-master scheint nun etwas umfangreicher …
Ich habe das einfache Beispiel mit Ausgabe am Laptop-Bildschirm hinbekommen. Allerdings nur mit einen Wandler TTL/RS485 der einen Rx und Tx Anschluss hatte. Das Umschaltpin, bei dir D3 glaube ich, habe ich nicht gebraucht.
Nun wollte ich die Web-Variante probieren. Allerdings per HARDEWARESERIAL klappt es nicht. Ich habe auch mal die Datenkabel umgesteckt. Komischerweise macht er auch keine Web-Seite auf. Nun habe ich einfach die serielle funktionierende Kommunikation in die sdm_live_page_esp8266_hwserial kopiert und die Web-Seite wird mit sinnvollen Werten angezeigt. Die LED`s auf dem Schnittstellenwandler blinken. Das klappt aber nur solange das USB-Kabel im Laptop steckt. Nehme ich die 5 V von einem Netzteil ist die Kommunikation gestört. Es sieht so aus als wenn er eine Kommunikation mit dem Laptop braucht obwohl nichts auf dem seriellen Monitor im Arduino-Fenster angezeigt wird.
Komisch ist auch, dass ich die Stromversorgung für den Schnittstellenwandler beim Laden des Programms von der NodeMCU ESP8266 abziehen muss, sonst läd er nicht. Danach kann ich es wieder anstecken. Vielleicht ist die Stromaufnahme zu gross 😉
Hallo,
du hast in dem Video Import/Export Energy mit aufgenommen. Könntest Du mir Deinen geänderten Code zusenden? Ich bekomme es einfach nicht zum laufen.
VG
Micha
Puh, das was nur ein kurzer Test, den Code habe ich nicht gespeichert. Prinzipiell sind alle möglichen Messwerte unter https://github.com/reaper7/SDM_Energy_Meter/blob/c199eba64cb2b8831dea004073b51540df0482d8/SDM.h#L119 zu finden. Im Beispiel kann man die wie die anderen Blöcke einfach dazu schreiben. Für jeden Messwert muss man NBREG um 1 hochzählen (https://github.com/reaper7/SDM_Energy_Meter/blob/c199eba64cb2b8831dea004073b51540df0482d8/examples/sdm_live_page_esp8266_hwserial/sdm_live_page_esp8266_hwserial.ino#L4) und den Wert in admarr ergänzen (https://github.com/reaper7/SDM_Energy_Meter/blob/c199eba64cb2b8831dea004073b51540df0482d8/examples/sdm_live_page_esp8266_hwserial/sdm_live_page_esp8266_hwserial.ino#L69). Für die Anzeige muss man den Zähler in der For-Schleife (im Beispiel 5) auf die Zahl aus NBREG setzen (https://github.com/reaper7/SDM_Energy_Meter/blob/c199eba64cb2b8831dea004073b51540df0482d8/examples/sdm_live_page_esp8266_hwserial/index_page.h#L28) und in der Tabelle hinter der Frequenz die passende Zeile ergänzen – die Zahl bei „resp“ zählt entsprechend hoch. https://github.com/reaper7/SDM_Energy_Meter/blob/c199eba64cb2b8831dea004073b51540df0482d8/examples/sdm_live_page_esp8266_hwserial/index_page.h#L63