NEWS
Stromzähler mit Volkszähler und NodeMCU auslesen
-
Servus. Bin ganz neu hier im Forum und hoffe ich habe das richtige Unterforum ausgewählt.
Ich bin ganz frisch von Pimatic zu ioBroker (RasPi 4 4GB) in Kombination mit einem ELV Charly gewechselt und bin wirklich begeistert.
Als nächstes habe ich geplant mit einem Volkszähler (IR Sender/Empfanger) und einem NodeMCU meinen Stromverbrauch bzw Zahlerstand auszulesen und in ioBroker anzeigen zu lassen.
Gibt es dazu schon einen Adapter womit ich das realisieren kann? Den NodeMCU möchte ich gerne mit WLAN ins Netzwerk bringen. Ggf mit ESPeasy drauf geflashed? Da weiß ich noch nicht ob das klappt.
Hoffe ich erhalte hier die notwendige Unterstützung um das ganze kostengünstig zu realisieren. Einige NodeMCU habe ich noch rum liegen und der Rest kostet ja nur ein paar Cent.
Achso der Stromzähler ist ein Pafal 12EC3g der in beide Richtungen zählen kann, also auch die Einspeisung meiner PV Anlage. Vielleicht ist es sogar möglich die aktuelle Einspeisung auszulesen.
Gruß Jaschkopf
-
-
Ist es denn möglich mit dem Smartmeter Adapter auch Daten aus dem Netzwerk von einem ESP8266 zu empfangen? Habe dazu nicht im Thread gefunden. Muss jetzt sowieso erstmal den Lesekopf zusammen bauen, dann kann ich mal ein bisschen probieren.
Vielleicht hat ja noch jemand eine Idee bzw hat es vielleicht schon laufen und kann mit sagen wie er es realisiert hat. Will ungerne die teure Lösung von Homematic für 80€ kaufen...
Gruß Jaschkopf
-
Ich habe es mit einer nodemcu 8266 mit tasmota software per mqtt und auf'm iobroker mit sonoff adapter realisiert.
-
Das ist doch mal ne vernünftige Aussage dann werde ich das mal probieren. Muss man die tasmota Firmware noch konfigurieren? Gibts dazu vielleicht ne Anleitung?
Gruß Jaschkopf
-
Ich habe den Source Code von KLICK heruntergeladen. Mit Visual Studio Code KLICK angepasst und auf die NodeMCU geflasht. Große Änderungen am Code mussst du nicht machen. Wichtig eigentlich nur SML Support aktivieren und den passenden Stromzählertyp einrichten. Auf der WIKI Seite von der Tasmota Software ist einiges beschrieben. Der Source Code für das Auslesen der Stromzählersache stammt von gemu2015. Ihn findest du auch auf der Github Seite.
-
@ecki945 said in Stromzähler mit Volkszähler und NodeMCU auslesen:
Der Source Code für das Auslesen der Stromzählersache stammt von gemu2015. Ihn findest du auch auf der Github Seite.
Ich kann leider den Source Code nicht finden. Hast du da einen Link für mich?
-
Lade hier KLICK den Source Code als Zip Archiv herunter. Entpacke es in einem Verzeichnis. Die Datei user_config_override_sample kopieren und in user_config_override umbenennen. Falls du mit Visual Studio arbeiten möchtest, Programm starten und "Ordner öffnen" auswählen und das Verzeichniss sonoff markieren. Dann die Datei unser_config_override öffnen. Hier kannst du Parameter in der Standardsoftware "überschreiben / ändern". Hat den Vorteil wenn du später eine neuere Version der Tamsota Software herunterlädst, nicht in x Files Änderungen machen musst, sondern nur zentral in einer Datei.
// -- Setup your own Wifi settings --------------- #undef STA_SSID1 #define STA_SSID1 "SSID DEINES WLAN ROUTERS" // [Ssid1] Wifi SSID #undef STA_PASS1 #define STA_PASS1 "PASSWORT DEINES WLAN ROUTERS " // [Password1] Wifi password // -- Setup your own MQTT settings --------------- #undef MQTT_HOST #define MQTT_HOST "IP ADRESSE DEINES MQTT SERVERS" // [MqttHost] #undef MQTT_PORT #define MQTT_PORT 1882 // [MqttPort] MQTT port (10123 on CloudMQTT) #undef MQTT_USER #define MQTT_USER "DVES_USER" // [MqttUser] Optional user #undef MQTT_PASS #define MQTT_PASS "DVES_PASS" // [MqttPassword] Optional password #undef MY_LANGUAGE #define MY_LANGUAGE de-DE // German in Germany #ifdef TELE_PERIOD #undef TELE_PERIOD #define TELE_PERIOD 10 // [TelePeriod] Telemetry (0 = disable, 10 - 3600 seconds) #endif // Einstellungen für SML - Stromzählersensor #define USE_SML_M #ifdef SPECIAL_SS #undef SPECIAL_SS #endif #ifdef METER #undef METER #define METER EHZ363 //hier den passenden Stromzählertyp auswählen. #endif
In der Datei platformio.ini konfigurierst du die Parameter deines Zielsystems: Bei meinen Anwendungen hab ich noch ein Display an der nodemcu angeschlossen. Deshalb habe ich Typ sonoff-display gewählt. Ohne Display ist Typ sonoff-basic der richtige. Hier mal die Konfiguration von mir bei Verwendung einer nodemcu mit Display:
[platformio] src_dir = sonoff build_dir = .pioenvs ; *** Uncomment one of the lines below to build/upload only one environment ;default_envs = sonoff ;default_envs = sonoff-ircustom ; alternative to 'sonoff' with full IR protocols activated, you will need to disable some features to keep code not too big ;default_envs = sonoff-minimal ;default_envs = sonoff-basic ;default_envs = sonoff-classic ;default_envs = sonoff-knx ;default_envs = sonoff-sensors default_envs = sonoff-display ;default_envs = sonoff-ir ;default_envs = sonoff-BG ;default_envs = sonoff-BR ;default_envs = sonoff-CN ;default_envs = sonoff-CZ ;default_envs = sonoff-DE ;default_envs = sonoff-ES ;default_envs = sonoff-FR ;default_envs = sonoff-GR ;default_envs = sonoff-HE ;default_envs = sonoff-HU ;default_envs = sonoff-IT ;default_envs = sonoff-KO ;default_envs = sonoff-NL ;default_envs = sonoff-PL ;default_envs = sonoff-PT ;default_envs = sonoff-RU ;default_envs = sonoff-SE ;default_envs = sonoff-SK ;default_envs = sonoff-TR ;default_envs = sonoff-TW ;default_envs = sonoff-UK [esp82xx_defaults] build_flags = -D NDEBUG -mtarget-align -Wl,-Map,firmware.map [core_2_3_0] ; *** Esp8266 core for Arduino version 2.3.0 platform = espressif8266@1.5.0 build_flags = ${esp82xx_defaults.build_flags} -Wl,-Tesp8266.flash.1m0.ld [core_2_4_2] ; *** Esp8266 core for Arduino version 2.4.2 platform = espressif8266@1.8.0 build_flags = ${esp82xx_defaults.build_flags} -Wl,-Teagle.flash.1m0.ld -lstdc++ -lsupc++ ; lwIP 1.4 ; -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH ; lwIP 2 - Low Memory ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY ; lwIP 2 - Higher Bandwidth (Tasmota default) -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -DVTABLES_IN_FLASH [core_2_5_2] ; *** Esp8266 core for Arduino version 2.5.2 platform = espressif8266@~2.2.2 build_flags = ${esp82xx_defaults.build_flags} -Wl,-Teagle.flash.1m.ld ; Code optimization see https://github.com/esp8266/Arduino/issues/5790#issuecomment-475672473 -O2 -DBEARSSL_SSL_BASIC ; nonos-sdk 22x -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x ; nonos-sdk-pre-v3 ; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK3 ; lwIP 1.4 ; -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH ; lwIP 2 - Low Memory ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY ; lwIP 2 - Higher Bandwidth ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH ; lwIP 2 - Higher Bandwidth Low Memory no Features ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY_LOW_FLASH ; lwIP 2 - Higher Bandwidth no Features (Tasmota default) -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH -DVTABLES_IN_FLASH -fno-exceptions -lstdc++ [core_stage] ; *** Esp8266 core for Arduino version latest beta platform = https://github.com/platformio/platform-espressif8266.git#feature/stage build_flags = ${esp82xx_defaults.build_flags} -Wl,-Teagle.flash.1m.ld ; Code optimization see https://github.com/esp8266/Arduino/issues/5790#issuecomment-475672473 -O2 -DBEARSSL_SSL_BASIC ; nonos-sdk 22y -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22y ; nonos-sdk 22x ; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x ; nonos-sdk-pre-v3 ; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK3 ; lwIP 1.4 ; -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH ; lwIP 2 - Low Memory ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY ; lwIP 2 - Higher Bandwidth ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH ; lwIP 2 - Higher Bandwitdh Low Memory no Features ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY_LOW_FLASH ; lwIP 2 - Higher Bandwitdh no Features -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH ; VTABLES in Flash (default) -DVTABLES_IN_FLASH ; VTABLES in Heap ; -DVTABLES_IN_DRAM ; VTABLES in IRAM ; -DVTABLES_IN_IRAM ; enable one option set -> No exception recommended ; No exception code in firmware -fno-exceptions -lstdc++ ; Exception code in firmware /needs much space! 90k ; -fexceptions ; -lstdc++-exc [core_pre] ; *** Arduino Esp8266 core pre 2.6.x for Tasmota (mqtt reconnects fixed) platform = https://github.com/Jason2866/platform-espressif8266.git#Tasmota build_flags = ${esp82xx_defaults.build_flags} -Wl,-Tesp8266.flash.1m.ld -O2 -DBEARSSL_SSL_BASIC ; nonos-sdk 22y -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22y ; nonos-sdk 22x ; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x ; nonos-sdk-pre-v3 ; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK3 ; lwIP 1.4 ; -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH ; lwIP 2 - Low Memory ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY ; lwIP 2 - Higher Bandwidth ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH ; lwIP 2 - Higher Bandwitdh Low Memory no Features ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY_LOW_FLASH ; lwIP 2 - Higher Bandwitdh no Features -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH ; VTABLES in Flash (default) -DVTABLES_IN_FLASH ; VTABLES in Heap ; -DVTABLES_IN_DRAM ; VTABLES in IRAM ; -DVTABLES_IN_IRAM ; enable one option set -> No exception recommended ; No exception code in firmware -fno-exceptions -lstdc++ ; Exception code in firmware /needs much space! ; -fexceptions ; -lstdc++-exc [core_active] ; Select one core set for platform and build_flags ;platform = ${core_2_3_0.platform} ;build_flags = ${core_2_3_0.build_flags} ;platform = ${core_2_4_2.platform} ;build_flags = ${core_2_4_2.build_flags} platform = ${core_2_5_2.platform} build_flags = ${core_2_5_2.build_flags} ;platform = ${core_stage.platform} ;build_flags = ${core_stage.build_flags} ;platform = ${core_pre.platform} ;build_flags = ${core_pre.build_flags} [common] framework = arduino ;board = esp01_1m //ecki945 board = nodemcuv2 board_build.flash_mode = dout platform = ${core_active.platform} build_flags = ${core_active.build_flags} ; *** Optional Debug messages ; -DDEBUG_TASMOTA_CORE ; -DDEBUG_TASMOTA_DRIVER ; -DDEBUG_TASMOTA_SENSOR ; *** Optional Firmware configurations ; -DFIRMWARE_CLASSIC ; -DFIRMWARE_MINIMAL ; -DFIRMWARE_SENSORS ; -DFIRMWARE_BASIC ; -DFIRMWARE_KNX_NO_EMULATION -DFIRMWARE_DISPLAYS ; -DFIRMWARE_IR ; -DFIRMWARE_IR_CUSTOM -DUSE_CONFIG_OVERRIDE ; *** Fix espressif8266@1.7.0 induced undesired all warnings build_unflags = -Wall ; set CPU frequency to 80MHz (default) or 160MHz ;board_build.f_cpu = 80000000L ecki945 board_build.f_cpu = 160000000L monitor_speed = 115200 upload_speed = 115200 upload_resetmethod = nodemcu ; *** Upload Serial reset method for Wemos and NodeMCU upload_port = COM3 extra_scripts = pio/strip-floats.py ; *** Upload file to OTA server using SCP ;upload_port = user@host:/path ;extra_scripts = pio/strip-floats.py, pio/sftp-uploader.py ; *** Upload file to OTA server in folder api/arduino using HTTP ;upload_port = domus1:80/api/upload-arduino.php ;extra_scripts = pio/strip-floats.py, pio/http-uploader.py ; *********************************************************************
-
Für alle die auch an dem Thema dran sind. Ich hab mittlerweile meinen Zähler ausgelesen und eine ausführliche Anleitung verfasst: https://forum.iobroker.net/topic/27999/stromzähler-per-sonoff-esp8266-auslesen