Skip to content

Commit b4f7ac7

Browse files
committed
Tasmota V15.0.1 - Shelly Pro 3EM Emulation ESP8266
- extra Image für ESP8266 mit Shelly Emulationssupport erstellt. - Tasmota Scripter aktualisiert - Readme angepasst
1 parent 909fc3f commit b4f7ac7

File tree

4 files changed

+113
-77
lines changed

4 files changed

+113
-77
lines changed

README.md

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,24 @@ Eine ausführliche Anleitung dazu findet ihr auf meiner [Homepage](https://ottel
99
[ottelo.jimdo.de](https://ottelo.jimdofree.com/stromz%C3%A4hler-auslesen-tasmota/)
1010

1111
### Welches Image (Firmware Binary) für welchen ESP?
12-
| Imagename | ESP | Beschreibung |
13-
| ------------- | ------------- | ------------- |
14-
| tasmota32_ottelo | ESP32 | Generic ESP32, keine Variante, mit Ethernet Support |
15-
| tasmota32berry_ottelo | ESP32 | Generic ESP32, wie tasmota32_ottelo aber mit Berry Scripting Support |
16-
| tasmota32x_ottelo | ESP32-x | ESP32 Variante z.B. c3, s3 (solo1, s3 mit Ethernet Support) |
17-
| tasmota1m_ottelo | ESP8266 | ESP mit 1M Flash (z.B. ESP01s = Hichi v1 Lesekopf |
18-
| tasmota4m_ottelo | ESP8266 | ESP mit 4M+ Flash (auch für Steckdosen mit Energiemessung) |
19-
| tasmota1m_energy_ottelo | ESP8266 | ESP mit 1M Flash für Steckdosen mit Energiemessung z.B. Nous A1T, Sonoff Pow R2, Gosund EP2 (Web-Upgrade nur über tasmota-minimal!) |
20-
| tasmota-minimal.bin.gz | ESP8266 | Minimalimage, siehe Beschreibung unten oder tasmota_energy_ottelo |
21-
22-
Die Images sind alle gezippt. Im ZIP-Archiv befindet sich für den ESP32 immer auch das factory Image. Das wird beim erstmaligen Flashen auf einen leeren ESP32 benötigt bzw. wenn vorher noch kein Tasmota drauf war. In den ZIP-Archiven für den ESP8266 befindet sich einmal das .bin und bin.gz. Das .bin.gz muss immer für das Firmware-Upgrade via "Use file upload" über den Webbrowser verwendet werden, da das nicht komprimierte .bin Image sonst nicht übertragen werden kann (zu wenig Flash-Speicher). Falls es mal doch nicht passenden sollte (Fehlermeldung), dann muss vorher einmal das tasmota-minimal.bin.gz Image übertragen werden. Anschließend kann das .bin.gz Image übertragen werden.
23-
24-
### Ecotracker / Shelly Pro 3EM Emulation für smarte Akkus (wie z.B. Marstek Venus E)
25-
Ab V15.0.1 habe ich den Support für die Emulation des Shelly und Ecotracker inkludiert. Das Ganze dient aktuell noch zu Testzwecken und ist noch nicht ganz ausgereift. Die Shelly Emulation ist nur in den ESP32 Images inkludiert, da die ESP8266 Firmware bei mir zu instabil wurde. Aber ihr könnt den Ecotracker mit dem kleinen ESP8266 (z.B. ESP01s) emulieren. Das alles haben wir dem Tasmota Script Entwickler [gemu2015](https://github.com/gemu2015), der es zusammen mit Kalle an einem echten Marstek Akku aktuell testet, zu verdanken!! Aktueller Fortschritt siehe [im Forum](https://forum.creationx.de/forum/index.php?thread/1095-d0-z%C3%A4hler-sml-auslesen-mit-tasmota/&pageNo=110) oder [hier](https://github.com/gemu2015/Sonoff-Tasmota/commits/universal/). Gemu2015 hat ein Testscript zusammen mit Kalle erstellt und es bei sich auf dem github Repo zum Testen zur Verfügung gestellt. Ich habe die Teile aus dem Script entnommen und ins in mein Script eingefügt `2_SML_Script_Chart_PV_ShellyEcotracker.tas` [siehe hier](https://github.com/ottelo9/tasmota-sml-script/tree/main).
12+
| Imagename | Beschreibung |
13+
| ------------- | ------------- |
14+
| **ESP32 Images:** | **tasmota32xx_ottelo.zip** |
15+
| tasmota32_ottelo | Generic ESP32, keine Variante, mit Ethernet Support |
16+
| tasmota32berry_ottelo | Generic ESP32, wie tasmota32_ottelo aber mit Berry Scripting Support |
17+
| tasmota32x_ottelo | ESP32 Variante z.B. c3, s3 (solo1, s3 mit Ethernet Support) |
18+
| | |
19+
| **ESP8266 Images:** | **tasmota8266_ottelo.zip** |
20+
| tasmota1m_ottelo | ESP mit 1M Flash (z.B. ESP01s = Hichi v1 Lesekopf |
21+
| tasmota4m_ottelo | ESP mit 4M+ Flash (auch für Steckdosen mit Energiemessung) |
22+
| tasmota1m_energy_ottelo | ESP mit 1M Flash für Steckdosen mit Energiemessung z.B. Nous A1T, Sonoff Pow R2, Gosund EP2. Web-Upgrade nur über tasmota-minimal! |
23+
| tasmota1m_shelly_ottelo | ESP mit 1M Flash. Mit Shelly Pro 3EM Emulation als Meter für smarte Akkus (z.B. Marstek Venus / Jupiter). Der Scriptspeicher ist auf 4096 Zeichen begrenzt (statt 8192). Es funktioniert nur ein kleines Script ohne Charts, [Beispielscript mit Shelly Emu](https://github.com/gemu2015/Sonoff-Tasmota/blob/universal/tasmota/scripting/shelly_emu_script.tas). HomeAssistant/MQTT aber weiterhin möglich. Web-Upgrade nur über tasmota-minimal! |
24+
| tasmota-minimal | Minimalimage, siehe Beschreibung unten oder tasmota_energy_ottelo |
25+
26+
Die Images sind alle gezippt. Im ZIP-Archiv befindet sich für den ESP32 immer auch das factory Image. Das wird beim erstmaligen Flashen auf einen leeren ESP32 benötigt bzw. wenn vorher noch kein Tasmota drauf war. Im ZIP-Archiv für den ESP8266 befinden sich alle Varianten gesammelt im bin.gz Format. Das .bin.gz muss immer für das Firmware-Upgrade via "Use file upload" über den Webbrowser verwendet werden, da das nicht komprimierte .bin Image sonst nicht übertragen werden kann (zu wenig Flash-Speicher). Falls es mal doch nicht passenden sollte (Fehlermeldung), dann muss vorher einmal das tasmota-minimal.bin.gz Image übertragen werden. Anschließend kann das .bin.gz Image übertragen werden. Zum erstmaligen Flashen via USB-Flasher muss die .gz entpackt werden.
27+
28+
### Shelly Pro 3EM Emulation für smarte Akkus (wie z.B. Marstek Venus E oder Jupiter)
29+
Ab V15.0.1 habe ich den Support für die Emulation des Shelly inkludiert. Die Shelly Emulation ist in allen ESP32 Images inkludiert. Für den ESP8266 habe ich eine abgespeckte Firmware erstellt (tasmota1m_shelly), dort funktioniert nur ein kleines Script z.B. das [Beispielscript von gemu2015](https://github.com/gemu2015/Sonoff-Tasmota/blob/universal/tasmota/scripting/shelly_emu_script.tas). Das alles haben wir dem Tasmota Script Entwickler [gemu2015](https://github.com/gemu2015) zu verdanken, der es zusammen mit Kalle an einem echten Marstek Akku aktuell getestet hat!! Siehe auch [im Forum](https://forum.creationx.de/forum/index.php?thread/1095-d0-z%C3%A4hler-sml-auslesen-mit-tasmota/&pageNo=110) oder [hier](https://github.com/gemu2015/Sonoff-Tasmota/commits/universal/). Gemu2015 hat ein Testscript zusammen mit Kalle erstellt und es bei sich auf dem github Repo zum Testen zur Verfügung gestellt. Ich habe die Teile aus dem Script entnommen und ins in mein Script eingefügt `2_SML_Script_Chart_PV_Shelly.tas` [siehe hier](https://github.com/ottelo9/tasmota-sml-script/tree/main).
2630

2731
# Tasmota Image selbst erstellen - Anleitung für ESP32 / ESP8266
2832
In der user_config_override.h findet ihr eine Liste mit Features/Treibern (#define bzw. #undef), die ich für meine ESP Tasmota Images/Firmware verwende und auf ottelo.jimdo.de zum Download anbiete. Die hier hochgeladenen Dateien können euch dabei helfen, ein eigenes angepasstes Tasmota Image für euren ESP mit Gitpod (oder Visual Studio) zu erstellen, wenn ihr mit dem ESP ein Stromzähler über ein Lesekopf auslesen wollt (SML) oder eine smarte Steckdose mit Energiemessfunktion (SonOff, Gosund, Shelly) habt und ihr die Liniendiagramme (Google Chart Script) für den Verbrauch haben wollt. Das passende Script findet ihr in meinem anderen Repo https://github.com/ottelo9/tasmota-sml-script.
@@ -41,6 +45,7 @@ Zum Kompilieren unter Gitpod/VSC den passenden Befehl in die Console eingeben:
4145

4246
ESP32:
4347
`platformio run -e tasmota32_ottelo` (Generic ESP32)
48+
`platformio run -e tasmota32berry_ottelo` (Generic ESP32 + Berry)
4449
`platformio run -e tasmota32s2_ottelo`
4550
`platformio run -e tasmota32s3_ottelo`
4651
`platformio run -e tasmota32c3_ottelo`
@@ -49,7 +54,8 @@ ESP32:
4954

5055
ESP8266:
5156
`platformio run -e tasmota_ottelo` ( = 1M Flash)
52-
`platformio run -e tasmota_energy_ottelo` ( = 1M Flash, Update nur über minimal da Image zu groß für SonOff POW (R2) / Gosund EP2 SonOff Dual R3 v2)
57+
`platformio run -e tasmota_energy_ottelo` ( = 1M Flash, Update nur über minimal da Image zu groß. Für SonOff POW (R2) / Gosund EP2 SonOff Dual R3 v2 / Nous A1T)
58+
`platformio run -e tasmota_shelly_ottelo` ( = 1M Flash, Update nur über minimal da Image zu groß. Mit Shelly Pro 3EM Emulation als Meter für smarte Akkus wie z.B. Marstek Venus / Jupiter)
5359
`platformio run -e tasmota4m_ottelo` (>= 4M Flash)
5460

5561
### (Factory)Image übertragen / flashen
@@ -106,4 +112,4 @@ Für den C6 muss man aber noch die `obj-dump.py` anpassen, da der C6 dort fehlt.
106112

107113
------------------
108114
Bedanken möchte ich mich besonders bei [gemu2015](https://github.com/gemu2015), der das Tasmota Scripting und SML entwickelt hat und mir immer sofort bei Problemen geholfen hat.
109-
Und natürlich beim restlichen [Tasmota Entwickler-Team](https://tasmota.github.io/docs/About/), für das grandiose Tasmota :).
115+
Und natürlich beim restlichen [Tasmota Entwickler-Team](https://tasmota.github.io/docs/About/), für das grandiose Tasmota :).

platformio_tasmota_cenv.ini

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ lib_ignore = ; Folgende Libs werden für mein Build nicht benöti
121121
extends = env:tasmota32_base
122122
build_flags = ${env:tasmota_ottelo_base.build_flags}
123123
-DTASMOTA32_OTTELO
124-
-DCODE_IMAGE_STR='"ESP32+Berry ottelo.jimdo.de"'
124+
-DCODE_IMAGE_STR='"ESP32 ottelo.jimdo.de"'
125125
lib_extra_dirs = ${env:tasmota_ottelo_base.lib_extra_dirs}
126126
lib_ignore = ${env:tasmota_ottelo_base.lib_ignore}
127127

@@ -213,6 +213,15 @@ build_flags = ${env.build_flags}
213213
build_unflags = ${env.build_unflags}
214214
lib_ignore = ${env:tasmota_ottelo_base.lib_ignore}
215215

216+
[env:tasmota1m_shelly_ottelo]
217+
extends = env:tasmota
218+
build_flags = ${env.build_flags}
219+
-DTASMOTA1M_SHELLY_OTTELO
220+
-DOTA_URL='"KEIN OTA UPGRADE VIA WEBSERVER!"'
221+
-DCODE_IMAGE_STR='"ESP8266-1M Sh ottelo.jimdo.de"'
222+
build_unflags = ${env.build_unflags}
223+
lib_ignore = ${env:tasmota_ottelo_base.lib_ignore}
224+
216225
[env:tasmota4m_ottelo]
217226
extends = env:tasmota-4M
218227
build_flags = ${env.build_flags}

user_config_override.h

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
* Zum Kompilieren unter Gitpod den passenden Befehl in die Console eingeben:
5050
* ESP32:
5151
* platformio run -e tasmota32_ottelo (Generic ESP32)
52+
* platformio run -e tasmota32berry_ottelo (Generic ESP32 mit Berry Support)
5253
* platformio run -e tasmota32s2_ottelo
5354
* platformio run -e tasmota32s3_ottelo
5455
* platformio run -e tasmota32c3_ottelo
@@ -58,15 +59,16 @@
5859
*
5960
* ESP8266:
6061
* platformio run -e tasmota1m_ottelo ( = 1M Flash)
61-
* platformio run -e tasmota1m_energy_ottelo ( = 1M Flash, Update nur über minimal da Img zu groß. für SonOff POW (R2) / Gosund EP2 SonOff Dual R3 v2)
62+
* platformio run -e tasmota1m_energy_ottelo ( = 1M Flash, Update nur über minimal da Img zu groß. Für SonOff POW (R2) / Gosund EP2 SonOff Dual R3 v2 / Nous A1T)
63+
* platformio run -e tasmota1m_shelly_ottelo ( = 1M Flash, Update nur über minimal da Img zu groß. Mit Shelly Pro 3EM Emulation als Meter für smarte Akkus wie z.B. Marstek Venus / Jupiter)
6264
* platformio run -e tasmota4m_ottelo (>= 4M Flash)
6365
*
6466
* für weitere ESPs siehe: https://github.com/arendst/Tasmota/blob/development/platformio_override_sample.ini bei default_envs
6567
\*****************************************************************************************************/
6668

6769
//siehe platformio_tasmota_cenv.ini
6870
#if ( defined(TASMOTA32_OTTELO) || defined(TASMOTA32C3_OTTELO) || defined(TASMOTA32C6_OTTELO) || defined(TASMOTA32S2_OTTELO) || defined(TASMOTA32S3_OTTELO) || defined(TASMOTA32SOLO1_OTTELO) || \
69-
defined(TASMOTA1M_OTTELO) || defined(TASMOTA1M_ENERGY_OTTELO) || defined(TASMOTA4M_OTTELO) || defined(TASMOTA32_BERRY_OTTELO) )
71+
defined(TASMOTA1M_OTTELO) || defined(TASMOTA1M_SHELLY_OTTELO) || defined(TASMOTA1M_ENERGY_OTTELO) || defined(TASMOTA4M_OTTELO) || defined(TASMOTA32_BERRY_OTTELO) )
7072

7173
// (1) Folgende unnötige Features (siehe my_user_config.h) habe ich deaktiviert, um Tasmota schlank zu halten. Der ESP8266 z.B. hat wenig RAM,
7274
// dort müssen mindestens 12k RAM für einen stabilen Betrieb frei sein (inkl. Script).
@@ -82,7 +84,7 @@
8284
#undef USE_SONOFF_IFAN
8385
#undef USE_BUZZER
8486
#undef USE_ARILUX_RF
85-
#if ( !defined(TASMOTA1M_OTTELO) && !defined(TASMOTA1M_ENERGY_OTTELO) )
87+
#if ( !defined(TASMOTA1M_OTTELO) && !defined(TASMOTA1M_ENERGY_OTTELO) && !defined(TASMOTA1M_SHELLY_OTTELO) )
8688
#define USE_DEEPSLEEP //1KB
8789
#endif
8890
#undef USE_DEEPSLEEP
@@ -111,7 +113,7 @@
111113
#undef USE_SERIAL_BRIDGE //https://tasmota.github.io/docs/Serial-to-TCP-Bridge/#serial-to-tcp-bridge
112114
#undef USE_ENERGY_DUMMY
113115

114-
#if defined(TASMOTA1M_OTTELO)
116+
#if ( defined(TASMOTA1M_OTTELO) || defined(TASMOTA1M_SHELLY_OTTELO))
115117
#undef USE_I2C // I2C ist für die nachfolgenden Treiber erforderlich.
116118
#undef USE_ENERGY_SENSOR // Ist für die nachfolgenden Treiber erforderlich.
117119
#undef USE_HLW8012 // SonOff POW / Gosund EP2 (ESP8266)
@@ -129,7 +131,7 @@
129131
#undef USE_GPIO_VIEWER
130132
#undef USE_ADC
131133
#undef USE_NETWORK_LIGHT_SCHEMES
132-
#if !defined(TASMOTA32_BERRY_OTTELO)
134+
#if ( !defined(TASMOTA32_BERRY_OTTELO) )
133135
#undef USE_BERRY //https://tasmota.github.io/docs/Berry/
134136
#endif
135137
#undef USE_AUTOCONF //https://tasmota.github.io/docs/ESP32/#autoconf
@@ -159,13 +161,16 @@
159161
//-- enables to use 4096 in stead of 256 bytes buffer for variable names
160162
#define SCRIPT_LARGE_VNBUFF
161163

162-
163164
//-- Skriptgröße (max Anzahl an Zeichen) https://tasmota.github.io/docs/Scripting-Language/#script-buffer-size
164165
//-- ESP8266 1M Flash
165-
#if ( defined(TASMOTA1M_OTTELO) || defined(TASMOTA1M_ENERGY_OTTELO) )
166+
#if ( defined(TASMOTA1M_OTTELO) || defined(TASMOTA1M_ENERGY_OTTELO) || defined(TASMOTA1M_SHELLY_OTTELO) )
166167
#define USE_EEPROM
167168
#undef EEP_SCRIPT_SIZE
168-
#define EEP_SCRIPT_SIZE 8192
169+
#if ( defined(TASMOTA1M_SHELLY_OTTELO) )
170+
#define EEP_SCRIPT_SIZE 4096
171+
#else
172+
#define EEP_SCRIPT_SIZE 8192
173+
#endif
169174
#else
170175
//-- ESP8266 4M+ Flash / ESP32
171176
#define USE_SCRIPT_FATFS_EXT //https://tasmota.github.io/docs/Scripting-Language/#extended-commands-09k-flash
@@ -178,31 +183,27 @@
178183
#endif
179184
#endif
180185

181-
//-- benötigt USE_HOME_ASSISTANT
182-
#define USE_WEBCLIENT_HTTPS
183-
184-
//-- SML, Script und Google Chart Support
186+
//-- SML, Script, Google Chart Support und Home Assistant
185187
#define USE_SCRIPT //(+36k code, +1k mem)
186188
#define USE_SML_M
187189
#define USE_SML_CRC //enables CRC support for binary SML. Must still be enabled via line like "1,=soC,1024,15". https://tasmota.github.io/docs/Smart-Meter-Interface/#special-commands
188190
#undef USE_RULES //USE_SCRIPT & USE_RULES can't both be used at the same time
189191
#define USE_GOOGLE_CHARTS
190192
#define LARGE_ARRAYS
191193
#define USE_SCRIPT_WEB_DISPLAY
192-
#if ( !defined(TASMOTA1M_OTTELO) && !defined(TASMOTA4M_OTTELO) && !defined(TASMOTA1M_ENERGY_OTTELO) )
194+
#define USE_HOME_ASSISTANT //HA API (+12k code, +6 bytes mem)
195+
#define USE_WEBCLIENT_HTTPS //für HA benötigt
196+
#if ( !defined(TASMOTA1M_OTTELO) && !defined(TASMOTA4M_OTTELO) && !defined(TASMOTA1M_ENERGY_OTTELO) && !defined(TASMOTA1M_SHELLY_OTTELO) )
193197
#define USE_ANGLE_FUNC //~2KB
194198
#endif
195199

196200
//-- enables authentication, this is not needed by most energy meters. M,=so5
197201
#define USE_SML_AUTHKEY
198202
#define USE_TLS
199203

200-
//-- Verwende Home Assistant API
201-
#define USE_HOME_ASSISTANT //(+12k code, +6 bytes mem)
202-
203204
//-- Software Serial für ESP32 (nur RX), Pin mit dem Zeichen '-' in der SML Sektion definieren (bei mehr als 2/3-Leseköpfen, je nach ESP32 Variante)
204205
//-- Optional: Serielle Schnittstelle (RX/TX RS232) im Script verwenden
205-
#if ( !defined(TASMOTA1M_OTTELO) && !defined(TASMOTA4M_OTTELO) && !defined(TASMOTA1M_ENERGY_OTTELO) )
206+
#if ( !defined(TASMOTA1M_OTTELO) && !defined(TASMOTA4M_OTTELO) && !defined(TASMOTA1M_ENERGY_OTTELO) && !defined(TASMOTA1M_SHELLY_OTTELO) )
206207
#define USE_ESP32_SW_SERIAL
207208
#define USE_SCRIPT_SERIAL //3KB
208209
#endif
@@ -217,7 +218,7 @@
217218
#endif
218219

219220
//-- Optional: TCP-Server Script Support
220-
#if ( !defined(TASMOTA1M_OTTELO) && !defined(TASMOTA4M_OTTELO) && !defined(TASMOTA1M_ENERGY_OTTELO) )
221+
#if ( !defined(TASMOTA1M_OTTELO) && !defined(TASMOTA4M_OTTELO) && !defined(TASMOTA1M_ENERGY_OTTELO) && !defined(TASMOTA1M_SHELLY_OTTELO) )
221222
#define USE_SCRIPT_TCP_SERVER
222223
#define USE_SCRIPT_TASK
223224
#endif

0 commit comments

Comments
 (0)