From a4d4231ae019ad7f7fd854195b0ac02114343e64 Mon Sep 17 00:00:00 2001 From: Max Prokhorov Date: Mon, 20 Jan 2020 17:41:10 +0300 Subject: [PATCH] PIO: remove -ota envs, handle OTA condition in extra script (#2099) * PIO: remove -ota envs, handle OTA condition in extra script * Tweak ESPURNA_BOARD variable * Support git and latest in ota script * Handle ESPURNA_FLAGS too * Try to handle env and projenv in pylint * Add deprecation comment about -ota envs * regen arduino.h --- code/.gitignore | 1 + code/espurna/config/arduino.h | 12 +- code/ota.py | 34 +- code/platformio.ini | 1007 ++---------------------- code/platformio_ota.ini | 461 +++++++++++ code/scripts/espurna_utils/__init__.py | 12 + code/scripts/espurna_utils/flags.py | 10 + code/scripts/pio_main.py | 17 +- code/scripts/pio_pre.py | 49 +- 9 files changed, 635 insertions(+), 968 deletions(-) create mode 100644 code/platformio_ota.ini create mode 100644 code/scripts/espurna_utils/flags.py diff --git a/code/.gitignore b/code/.gitignore index 55db2a3b..dc26a7a3 100644 --- a/code/.gitignore +++ b/code/.gitignore @@ -11,3 +11,4 @@ custom.h .vscode/launch.json .pio libraries/ +espurna/espurna.ino.cpp diff --git a/code/espurna/config/arduino.h b/code/espurna/config/arduino.h index d90d8af7..4f2de0f0 100644 --- a/code/espurna/config/arduino.h +++ b/code/espurna/config/arduino.h @@ -24,11 +24,11 @@ //#define AVATTO_NAS_WR01W //#define BESTEK_MRJ1011 //#define BH_ONOFRE +//#define BLITZWOLF_BWSHP5 //#define BLITZWOLF_BWSHPX //#define BLITZWOLF_BWSHPX_V23 -//#define BLITZWOLF_BWSHP5 -//#define DELTACO_SH_LEXXW //#define DELTACO_SH_LEXXRGB +//#define DELTACO_SH_LEXXW //#define DELTACO_SH_P01 //#define DELTACO_SH_P03USB //#define DIGOO_NX_SP202 @@ -48,13 +48,13 @@ //#define GBLIFE_RGBW_SOCKET //#define GENERIC_8CH //#define GENERIC_AG_L4 +//#define GENERIC_E14 //#define GENERIC_ECH1560 //#define GENERIC_ESP01S_DHT11_V10 //#define GENERIC_ESP01S_DS18B20_V10 //#define GENERIC_ESP01S_RELAY_V40 //#define GENERIC_ESP01S_RGBLED_V10 //#define GENERIC_GU10 -//#define GENERIC_E14 //#define GENERIC_V9261F //#define GIZWITS_WITTY_CLOUD //#define GOSUND_WS1 @@ -105,16 +105,17 @@ //#define LINGAN_SWA1 //#define LINKSPRITE_LINKNODE_R4 //#define LITESUN_LA_WF3 -//#define LOHAS_E27_9W //#define LOHAS_E26_A19 -//#define TECKIN_SB53 +//#define LOHAS_E27_9W //#define LOMBEX_LUX_NOVA2_TUNABLE_WHITE //#define LOMBEX_LUX_NOVA2_WHITE_COLOR +//#define LSC_SMART_LED_LIGHT_STRIP //#define LUANI_HVIO //#define LYASI_LIGHT //#define MAGICHOME_LED_CONTROLLER //#define MAGICHOME_LED_CONTROLLER_20 //#define MAGICHOME_ZJ_ESPM_5CH_B_13 +//#define MAGICHOME_ZJ_LB_RGBWW_L //#define MAGICHOME_ZJ_WFMN_A_11 //#define MAGICHOME_ZJ_WFMN_B_11 //#define MAGICHOME_ZJ_WFMN_C_11 @@ -136,6 +137,7 @@ //#define PSH_WIFI_SENSOR //#define SMARTLIFE_MINI_SMART_SOCKET //#define STM_RELAY +//#define TECKIN_SB53 //#define TECKIN_SP20 //#define TECKIN_SP21 //#define TECKIN_SP22_V14 diff --git a/code/ota.py b/code/ota.py index 3b59dbab..7403faf4 100755 --- a/code/ota.py +++ b/code/ota.py @@ -14,6 +14,7 @@ import re import shutil import socket import subprocess +import functools import sys import time @@ -21,7 +22,7 @@ import zeroconf # ------------------------------------------------------------------------------- -__version__ = (0, 4) +__version__ = (0, 4, 1) DESCRIPTION = "ESPurna OTA Manager v{}".format(".".join(str(x) for x in __version__)) DISCOVERY_TIMEOUT = 10 @@ -312,10 +313,21 @@ def run(device, env): def parse_commandline_args(): parser = argparse.ArgumentParser(description=DESCRIPTION) parser.add_argument( - "-c", "--core", help="flash ESPurna core", action="store_true", default=False + "-c", + "--core", + help="Use ESPurna core configuration", + action="store_true", + default=False, + ) + parser.add_argument( + "-f", "--flash", help="Flash device", action="store_true", default=False ) parser.add_argument( - "-f", "--flash", help="flash device", action="store_true", default=False + "-a", + "--arduino-core", + help="Arduino ESP8266 Core version", + default="2_3_0", + choices=["2_3_0", "latest", "git"], ) parser.add_argument("-o", "--flags", help="extra flags", default="") parser.add_argument("-p", "--password", help="auth password", default="") @@ -386,6 +398,20 @@ def discover_devices(args): return devices +@functools.lru_cache(maxsize=None) +def get_platformio_env(arduino_core, size): + # todo: eventually 2_3_0 is dropped + # todo: naming + env_prefix = "esp8266" + if not size in [1, 2, 4]: + raise ValueError( + "Board memory size can only be one of: 1 for 1M, 2 for 2M, 4 for 4M" + ) + if arduino_core != "2_3_0": + env_prefix = "{}-{}".format(env_prefix, arduino_core) + return "{env_prefix}-{size:d}m-ota".format(env_prefix=env_prefix, size=size) + + def main(args): print() @@ -431,7 +457,7 @@ def main(args): if args.core: board["flags"] = "-DESPURNA_CORE " + board["flags"] - env = "esp8266-{:d}m-ota".format(board["size"]) + env = get_platformio_env(args.arduino_core, board["size"]) # Summary print() diff --git a/code/platformio.ini b/code/platformio.ini index 404333d8..eabcdbe5 100644 --- a/code/platformio.ini +++ b/code/platformio.ini @@ -2,6 +2,8 @@ default_envs = wemos-d1mini-relayshield src_dir = espurna data_dir = espurna/data +extra_configs = + platformio_ota.ini [common] # ------------------------------------------------------------------------------ @@ -10,12 +12,12 @@ data_dir = espurna/data # We use Arduino Core 2.3.0 (platformIO 1.5.0) as default # # arduino core 2.3.0 = platformIO 1.5.0 -# arduino core 2.4.0 = platformIO 1.6.0 (unsupported) -# arduino core 2.4.1 = platformIO 1.7.3 (unsupported) -# arduino core 2.4.2 = platformIO 1.8.0 (unsupported) -# arduino core 2.5.0 = platformIO 2.0.4 (unsupported) -# arduino core 2.5.1 = platformIO 2.1.1 (unsupported) -# arduino core 2.5.2 = platformIO 2.2.3 (unsupported) +# arduino core 2.4.0 = platformIO 1.6.0 (not supported) +# arduino core 2.4.1 = platformIO 1.7.3 (not supported) +# arduino core 2.4.2 = platformIO 1.8.0 (not supported) +# arduino core 2.5.0 = platformIO 2.0.4 (not supported) +# arduino core 2.5.1 = platformIO 2.1.1 (not supported) +# arduino core 2.5.2 = platformIO 2.2.3 (not supported) # arduino core 2.6.1 = platformIO 2.3.0 # arduino core 2.6.2 = platformIO 2.3.1 # arduino core 2.6.3 = platformIO 2.3.2 @@ -71,7 +73,7 @@ board_1m = esp01_1m board_2m = esp_wroom_02 board_4m = esp12e -build_flags = -g -w -DMQTT_MAX_PACKET_SIZE=1024 -DNO_GLOBAL_EEPROM ${sysenv.ESPURNA_FLAGS} -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH +build_flags = -g -w -DMQTT_MAX_PACKET_SIZE=1024 -DNO_GLOBAL_EEPROM -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH build_flags_512k = ${common.build_flags} -Wl,-Teagle.flash.512k0m1s.ld build_flags_1m0m = ${common.build_flags} -Wl,-Teagle.flash.1m0m1s.ld build_flags_2m1m = ${common.build_flags} -Wl,-Teagle.flash.2m1m4s.ld @@ -80,13 +82,6 @@ build_flags_4m3m = ${common.build_flags} -Wl,-Teagle.flash.4m3m4s.ld shared_libdeps_dir = libraries/ -# ------------------------------------------------------------------------------ -# OTA: -# ------------------------------------------------------------------------------ -ota_upload_port = "${sysenv.ESPURNA_IP}" -ota_upload_flags = --auth="${sysenv.ESPURNA_AUTH}" -ota_upload_protocol = espota - # ------------------------------------------------------------------------------ # COMMON SETTINGS: # ------------------------------------------------------------------------------ @@ -191,21 +186,45 @@ build_flags = ${common.build_flags_1m0m} -DESPURNA_BASE [env:esp8266-1m-ota] board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -D${sysenv.ESPURNA_BOARD} -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} +build_flags = ${common.build_flags_1m0m} [env:esp8266-2m-ota] board = ${common.board_2m} -build_flags = ${common.build_flags_2m1m} -D${sysenv.ESPURNA_BOARD} -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} +build_flags = ${common.build_flags_2m1m} [env:esp8266-4m-ota] board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -D${sysenv.ESPURNA_BOARD} -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} +build_flags = ${common.build_flags_4m1m} + +[env:esp8266-latest-1m-ota] +platform = ${common.platform_latest} +board = ${common.board_1m} +build_flags = ${common.build_flags_1m0m} + +[env:esp8266-latest-2m-ota] +platform = ${common.platform_latest} +board = ${common.board_2m} +build_flags = ${common.build_flags_2m1m} + +[env:esp8266-latest-4m-ota] +platform = ${common.platform_latest} +board = ${common.board_4m} +build_flags = ${common.build_flags_4m1m} + +[env:esp8266-git-1m-ota] +platform = ${common.arduino_core_git} +board = ${common.board_1m} +build_flags = ${common.build_flags_1m0m} + +[env:esp8266-git-2m-ota] +platform = ${common.arduino_core_git} +board = ${common.board_2m} +build_flags = ${common.build_flags_2m1m} + +[env:esp8266-git-4m-ota] +platform = ${common.arduino_core_git} +board = ${common.board_4m} +build_flags = ${common.build_flags_4m1m} # ------------------------------------------------------------------------------ # SPECIAL BUILDS - DO. NOT. USE. ever --- @@ -243,12 +262,6 @@ platform = ${common.platform_latest} board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DWEMOS_D1_MINI_RELAYSHIELD -DDEBUG_FAUXMO=Serial -DNOWSAUTH -DASYNC_TCP_SSL_ENABLED=1 -[env:wemos-d1mini-relayshield-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DWEMOS_D1_MINI_RELAYSHIELD -DDEBUG_FAUXMO=Serial -DNOWSAUTH -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:nodemcu-lolin] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DNODEMCU_LOLIN -DDEBUG_FAUXMO=Serial -DNOWSAUTH @@ -262,29 +275,23 @@ build_flags = ${common.build_flags_4m1m} -DNODEMCU_LOLIN -DDEBUG_FAUXMO=Serial - platform = ${common.platform_latest} board = ${common.board_4m} build_flags = - ${common.build_flags_4m1m} - -DDEBUG_FAUXMO=Serial - -DASYNC_TCP_SSL_ENABLED=1 + ${common.build_flags_4m1m} + -DDEBUG_FAUXMO=Serial + -DASYNC_TCP_SSL_ENABLED=1 src_build_flags = - -DNODEMCU_LOLIN -DNOWSAUTH + -DNODEMCU_LOLIN -DNOWSAUTH [env:nodemcu-lolin-secure-client] platform = ${common.platform_latest} board = ${common.board_4m} build_flags = - ${common.build_flags_4m1m} - -DDEBUG_FAUXMO=Serial + ${common.build_flags_4m1m} + -DDEBUG_FAUXMO=Serial src_build_flags = - -DNODEMCU_LOLIN -DNOWSAUTH - -DSECURE_CLIENT=SECURE_CLIENT_BEARSSL - -DMQTT_LIBRARY=MQTT_LIBRARY_ARDUINOMQTT - -DOTA_CLIENT=OTA_CLIENT_HTTPUPDATE - -[env:nodemcu-lolin-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DNODEMCU_LOLIN -DDEBUG_FAUXMO=Serial -DNOWSAUTH -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} + -DNODEMCU_LOLIN -DNOWSAUTH + -DSECURE_CLIENT=SECURE_CLIENT_BEARSSL + -DMQTT_LIBRARY=MQTT_LIBRARY_ARDUINOMQTT + -DOTA_CLIENT=OTA_CLIENT_HTTPUPDATE # ------------------------------------------------------------------------------ # SPECIFIC BOARDS @@ -294,22 +301,10 @@ upload_flags = ${common.ota_upload_flags} board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DTINKERMAN_ESPURNA_H06 -[env:tinkerman-espurna-h06-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DTINKERMAN_ESPURNA_H06 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:tinkerman-espurna-h08] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DTINKERMAN_ESPURNA_H08 -[env:tinkerman-espurna-h08-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DTINKERMAN_ESPURNA_H08 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:tinkerman-espurna-switch] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DTINKERMAN_ESPURNA_SWITCH @@ -326,31 +321,16 @@ build_flags = ${common.build_flags_4m1m} -DTINKERMAN_RFM69GW -DNOWSAUTH board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DNODEMCU_BASIC -DDEBUG_SERIAL_SUPPORT=0 -DPZEM004T_SUPPORT=1 -DDISABLE_POSTMORTEM_STACKDUMP -[env:tuya-generic-dimmer] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DTUYA_GENERIC_DIMMER -DDEBUG_SERIAL_SUPPORT=0 -DDISABLE_POSTMORTEM_STACKDUMP - -# ------------------------------------------------------------------------------ - [env:foxel-lightfox-dual] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DFOXEL_LIGHTFOX_DUAL -DDISABLE_POSTMORTEM_STACKDUMP -[env:foxel-lightfox-dual-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DFOXEL_LIGHTFOX_DUAL -DDISABLE_POSTMORTEM_STACKDUMP -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} -[env:itead-sonoff-basic] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_BASIC +# ------------------------------------------------------------------------------ -[env:itead-sonoff-basic-ota] +[env:itead-sonoff-basic] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_BASIC -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} [env:itead-sonoff-basic-dht] board = ${common.board_1m} @@ -360,12 +340,6 @@ build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_BASIC -DDHT_SUPPORT=1 board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_BASIC -DDHT_SUPPORT=1 -DDHT_PIN=2 -[env:itead-sonoff-basic-dht-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_BASIC -DDHT_SUPPORT=1 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-basic-dallas] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_BASIC -DDALLAS_SUPPORT=1 @@ -378,656 +352,270 @@ build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_BASIC -DDALLAS_SUPPORT=1 board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_RF -[env:itead-sonoff-rf-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_RF -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-mini] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_MINI -[env:itead-sonoff-mini-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_MINI -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-th] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_TH -[env:itead-sonoff-th-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_TH -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-pow] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_POW -[env:itead-sonoff-pow-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_POW -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-pow-r2] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_POW_R2 -DDISABLE_POSTMORTEM_STACKDUMP -[env:itead-sonoff-pow-r2-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_POW_R2 -DDISABLE_POSTMORTEM_STACKDUMP -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-dual] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_DUAL -DDISABLE_POSTMORTEM_STACKDUMP -[env:itead-sonoff-dual-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_DUAL -DDISABLE_POSTMORTEM_STACKDUMP -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-dual-r2] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_DUAL_R2 -[env:itead-sonoff-dual-r2-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_DUAL_R2 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-4ch] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_4CH -[env:itead-sonoff-4ch-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_4CH -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-4ch-pro] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_4CH_PRO -[env:itead-sonoff-4ch-pro-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_4CH_PRO -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-touch] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_TOUCH -[env:itead-sonoff-touch-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_TOUCH -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-b1] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_B1 -[env:itead-sonoff-b1-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_B1 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-t1-1ch] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_T1_1CH -[env:itead-sonoff-t1-1ch-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_T1_1CH -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-t1-2ch] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_T1_2CH -[env:itead-sonoff-t1-2ch-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_T1_2CH -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-t1-3ch] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_T1_3CH -[env:itead-sonoff-t1-3ch-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_T1_3CH -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-led] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_LED -[env:itead-sonoff-led-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_LED -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-rfbridge] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_RFBRIDGE -DDISABLE_POSTMORTEM_STACKDUMP -[env:itead-sonoff-rfbridge-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_RFBRIDGE -DDISABLE_POSTMORTEM_STACKDUMP -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-rfbridge-direct] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_RFBRIDGE -DRFB_DIRECT -[env:itead-sonoff-rfbridge-direct-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_RFBRIDGE -DRFB_DIRECT -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - # ------------------------------------------------------------------------------ [env:itead-slampher] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SLAMPHER -[env:itead-slampher-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SLAMPHER -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-s20] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_S20 -[env:itead-s20-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_S20 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-1ch-inching] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_1CH_INCHING -[env:itead-1ch-inching-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_1CH_INCHING -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-motor] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_MOTOR -[env:itead-motor-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_MOTOR -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-sv] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_SV -[env:itead-sonoff-sv-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_SV -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-s31] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_S31 -DDISABLE_POSTMORTEM_STACKDUMP -[env:itead-sonoff-s31-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_S31 -DDISABLE_POSTMORTEM_STACKDUMP -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-s31-lite] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_S31_LITE -[env:itead-sonoff-s31-lite-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_S31_LITE -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-sonoff-ifan02] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_IFAN02 -[env:itead-sonoff-ifan02-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_IFAN02 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - # ------------------------------------------------------------------------------ [env:electrodragon-wifi-iot] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DELECTRODRAGON_WIFI_IOT -DDHT_SUPPORT=1 -[env:electrodragon-wifi-iot-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DELECTRODRAGON_WIFI_IOT -DDHT_SUPPORT=1 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:workchoice-ecoplug] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DWORKCHOICE_ECOPLUG -[env:workchoice-ecoplug-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DWORKCHOICE_ECOPLUG -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:jangoe-wifi-relay-nc] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DJANGOE_WIFI_RELAY_NC -[env:jangoe-wifi-relay-nc-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DJANGOE_WIFI_RELAY_NC -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:jangoe-wifi-relay-no] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DJANGOE_WIFI_RELAY_NO -[env:jangoe-wifi-relay-no-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DJANGOE_WIFI_RELAY_NO -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:openenergymonitor-mqtt-relay] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DOPENENERGYMONITOR_MQTT_RELAY -DDALLAS_SUPPORT=1 -[env:openenergymonitor-mqtt-relay-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DOPENENERGYMONITOR_MQTT_RELAY -DDALLAS_SUPPORT=1 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:jorgegarcia-wifi-relays] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DJORGEGARCIA_WIFI_RELAYS -[env:jorgegarcia-wifi-relays-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DJORGEGARCIA_WIFI_RELAYS -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:aithinker-ai-light] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DAITHINKER_AI_LIGHT -[env:aithinker-ai-light-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DAITHINKER_AI_LIGHT -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:lyasi-rgb-light] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DLYASI_LIGHT -[env:lyasi-rgb-light-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DLYASI_LIGHT -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:magichome-led-controller] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DMAGICHOME_LED_CONTROLLER -[env:magichome-led-controller-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DMAGICHOME_LED_CONTROLLER -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:magichome-led-controller-20] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DMAGICHOME_LED_CONTROLLER_20 -[env:magichome-led-controller-20-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DMAGICHOME_LED_CONTROLLER_20 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:magichome-zj-wfmn-a-11] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DMAGICHOME_ZJ_WFMN_A_11 -[env:magichome-zj-wfmn-a-11-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DMAGICHOME_ZJ_WFMN_A_11 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:magichome-zj-wfmn-b-11] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DMAGICHOME_ZJ_WFMN_B_11 -[env:magichome-zj-wfmn-b-11-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DMAGICHOME_ZJ_WFMN_B_11 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:magichome-zj-espm-5ch-b-13] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DMAGICHOME_ZJ_ESPM_5CH_B_13 -[env:magichome-zj-espm-5ch-b-13-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DMAGICHOME_ZJ_ESPM_5CH_B_13 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:magichome-zj-lb-rgbww-l] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DMAGICHOME_ZJ_LB_RGBWW_L -[env:magichome-zj-lb-rgbww-l-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DMAGICHOME_ZJ_LB_RGBWW_L -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:magichome-zj-wfmn-c-11] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DMAGICHOME_ZJ_WFMN_C_11 -[env:magichome-zj-wfmn-c-11-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DMAGICHOME_ZJ_WFMN_C_11 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:huacanxing-h801] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DHUACANXING_H801 -[env:huacanxing-h801-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DHUACANXING_H801 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:huacanxing-h802] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DHUACANXING_H802 -[env:huacanxing-h802-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DHUACANXING_H802 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:arilux-al-lc01] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DARILUX_AL_LC01 -[env:arilux-al-lc01-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DARILUX_AL_LC01 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:arilux-al-lc02] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DARILUX_AL_LC02 -[env:arilux-al-lc02-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DARILUX_AL_LC02 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:arilux-al-lc02-v14] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DARILUX_AL_LC02_V14 -[env:arilux-al-lc02-v14-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DARILUX_AL_LC02_V14 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:arilux-al-lc06] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DARILUX_AL_LC06 -[env:arilux-al-lc06-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DARILUX_AL_LC06 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:arilux-al-lc11] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DARILUX_AL_LC11 -[env:arilux-al-lc11-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DARILUX_AL_LC11 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:arilux-e27] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DARILUX_E27 -[env:arilux-e27-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DARILUX_E27 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:itead-bnsz01] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DITEAD_BNSZ01 -[env:itead-bnsz01-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DITEAD_BNSZ01 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:wion-50055] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DWION_50055 -[env:wion-50055-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DWION_50055 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:exs-wifi-relay-v31] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DEXS_WIFI_RELAY_V31 -[env:exs-wifi-relay-v31-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DEXS_WIFI_RELAY_V31 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:exs-wifi-relay-v50] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DEXS_WIFI_RELAY_V50 -[env:exs-wifi-relay-v50-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DEXS_WIFI_RELAY_V50 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:wemos-v9261f] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DGENERIC_V9261F -[env:wemos-v9261f-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DGENERIC_V9261F -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:esp01-v9261f] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DGENERIC_V9261F -[env:esp01-v9261f-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DGENERIC_V9261F -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:wemos-ech1560] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DGENERIC_ECH1560 -[env:wemos-ech1560-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DGENERIC_ECH1560 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:esp01-ech1560] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DGENERIC_ECH1560 -[env:esp01-ech1560-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DGENERIC_ECH1560 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:mancavemade-esplive] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DMANCAVEMADE_ESPLIVE -[env:mancavemade-esplive-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DMANCAVEMADE_ESPLIVE -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - -[env:intermittech-quinled] +[env:tuya-generic-dimmer] board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DINTERMITTECH_QUINLED +build_flags = ${common.build_flags_1m0m} -DTUYA_GENERIC_DIMMER -DDEBUG_SERIAL_SUPPORT=0 -DDISABLE_POSTMORTEM_STACKDUMP -[env:intermittech-quinled-ota] +[env:intermittech-quinled] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DINTERMITTECH_QUINLED -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} [env:xenon-sm-pw702u] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DXENON_SM_PW702U -[env:xenon-sm-pw702u-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DXENON_SM_PW702U -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:iselector-sm-pw702] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DISELECTOR_SM_PW702 -[env:iselector-sm-pw702-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DISELECTOR_SM_PW702 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:authometion-lyt8266] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DAUTHOMETION_LYT8266 -[env:authometion-lyt8266-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DAUTHOMETION_LYT8266 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:kmc-70011] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DKMC_70011 -[env:kmc-70011-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DKMC_70011 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:yjzk-switch-1ch] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DYJZK_SWITCH_1CH -[env:yjzk-switch-1ch-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DYJZK_SWITCH_1CH -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:yjzk-switch-2ch] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DYJZK_SWITCH_2CH -[env:yjzk-switch-2ch-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DYJZK_SWITCH_2CH -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:yjzk-switch-3ch] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DYJZK_SWITCH_3CH -[env:yjzk-switch-3ch-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DYJZK_SWITCH_3CH -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:generic-8ch] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DGENERIC_8CH @@ -1036,284 +624,116 @@ build_flags = ${common.build_flags_4m1m} -DGENERIC_8CH board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DGIZWITS_WITTY_CLOUD -[env:gizwits-witty-cloud-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DGIZWITS_WITTY_CLOUD -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:euromate-wifi-stecker-shuko] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DEUROMATE_WIFI_STECKER_SCHUKO -[env:euromate-wifi-stecker-shuko-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DEUROMATE_WIFI_STECKER_SCHUKO -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:euromate-wifi-stecker-shuko-v2] board = ${common.board_2m} build_flags = ${common.build_flags_2m1m} -DEUROMATE_WIFI_STECKER_SCHUKO_V2 -[env:euromate-wifi-stecker-shuko-v2-ota] -board = ${common.board_2m} -build_flags = ${common.build_flags_2m1m} -DEUROMATE_WIFI_STECKER_SCHUKO_V2 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:tonbux-powerstrip02] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DTONBUX_POWERSTRIP02 -[env:tonbux-powerstrip02-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DTONBUX_POWERSTRIP02 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:lingan-swa1] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DLINGAN_SWA1 -[env:lingan-swa1-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DLINGAN_SWA1 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:stm-relay] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DSTM_RELAY -DDISABLE_POSTMORTEM_STACKDUMP -[env:stm-relay-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DSTM_RELAY -DDISABLE_POSTMORTEM_STACKDUMP -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:heygo-hy02] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DHEYGO_HY02 -[env:heygo-hy02-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DHEYGO_HY02 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:maxcio-wus002s] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DMAXCIO_WUS002S -[env:maxcio-wus002s-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DMAXCIO_WUS002S -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:maxcio-wde004] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DMAXCIO_WDE004 -[env:maxcio-wde004-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DMAXCIO_WDE004 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:yidian-xsssa05] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DYIDIAN_XSSSA05 -[env:yidian-xsssa05-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DYIDIAN_XSSSA05 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:oukitel-p1] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DOUKITEL_P1 -[env:oukitel-p1-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DOUKITEL_P1 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:tonbux-xsssa01] board = ${common.board_1m} build_flags = ${common.build_flags_4m1m} -DTONBUX_XSSSA01 -[env:tonbux-xsssa01-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_4m1m} -DTONBUX_XSSSA01 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:tonbux-xsssa06] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DTONBUX_XSSSA06 -[env:tonbux-xsssa06-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DTONBUX_XSSSA06 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:green-esp8266relay] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DGREEN_ESP8266RELAY -[env:green-esp8266relay-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DGREEN_ESP8266RELAY -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:ike-espike] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DIKE_ESPIKE -[env:ike-espike-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DIKE_ESPIKE -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:arniex-swifitch] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DARNIEX_SWIFITCH -[env:arniex-swifitch-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DARNIEX_SWIFITCH -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:zhilde-eu44-w] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DZHILDE_EU44_W -[env:zhilde-eu44-w-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DZHILDE_EU44_W -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:luani-hvio] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DLUANI_HVIO -[env:luani-hvio-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DLUANI_HVIO -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:avatto-power-plug-wifi] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DAVATTO_NAS_WR01W -[env:avatto-power-plug-wifi-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DAVATTO_NAS_WR01W -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:neo-coolcam-power-plug-wifi] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DNEO_COOLCAM_NAS_WR01W -[env:neo-coolcam-power-plug-wifi-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DNEO_COOLCAM_NAS_WR01W -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:deltaco-sh-p01] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DDELTACO_SH_P01 -[env:deltaco-sh-p01-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DDELTACO_SH_P01 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:deltaco-sh-p03usb] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DDELTACO_SH_P03USB -[env:deltaco-sh-p03usb-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DDELTACO_SH_P03USB -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:deltaco-sh-lexxw] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DDELTACO_SH_LEXXW -[env:deltaco-sh-lexxw-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DDELTACO_SH_LEXXW -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:deltaco-sh-lexxrgb] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DDELTACO_SH_LEXXRGB -[env:deltaco-sh-lexxrgb-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DDELTACO_SH_LEXXRGB -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:estink-wifi-power-strip] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DFORNORM_ZLD_34EU -[env:estink-wifi-power-strip-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DFORNORM_ZLD_34EU -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:iwoole-led-table-lamp] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DIWOOLE_LED_TABLE_LAMP -[env:iwoole-led-table-lamp-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DIWOOLE_LED_TABLE_LAMP -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:lombex-lux-nova2-tunable-white] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DLOMBEX_LUX_NOVA2_TUNABLE_WHITE -[env:lombex-lux-nova2-tunable-white-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DLOMBEX_LUX_NOVA2_TUNABLE_WHITE -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:lombex-lux-nova2-white-color] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DLOMBEX_LUX_NOVA2_WHITE_COLOR -[env:lombex-lux-nova2-white-color-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DLOMBEX_LUX_NOVA2_WHITE_COLOR -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - # ------------------------------------------------------------------------------ -# GENERIC OTA ENVIRONMENTS +# GENERIC / DEVELOPMENT BOARDS # ------------------------------------------------------------------------------ [env:generic-esp01s-relay-40] @@ -1324,514 +744,203 @@ build_flags = ${common.build_flags_1m0m} -DGENERIC_ESP01S_RELAY_V40 board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DGENERIC_ESP01S_RELAY_V40 -DRELAY1_TYPE=1 -[env:generic-esp01s-relay-40-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DGENERIC_ESP01S_RELAY_V40 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - -[env:generic-esp01s-relay-40-inv-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DGENERIC_ESP01S_RELAY_V40 -DRELAY1_TYPE=1 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:generic-esp01s-rgbled-10] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DGENERIC_ESP01S_RGBLED_V10 -[env:generic-esp01s-rgbled-10-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DGENERIC_ESP01S_RGBLED_V10 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:generic-esp01s-dht11-10] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DGENERIC_ESP01S_DHT11_V10 -[env:generic-esp01s-dht11-10-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DGENERIC_ESP01S_DHT11_V10 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:generic-esp01s-ds18b20-10] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DGENERIC_ESP01S_DS18B20_V10 -[env:generic-esp01s-ds18b20-10-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DGENERIC_ESP01S_DS18B20_V10 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:heltec-touch-relay] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DHELTEC_TOUCHRELAY -[env:heltec-touch-relay-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DHELTEC_TOUCHRELAY -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:allnet-4duino-iot-wlan-relais] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DALLNET_4DUINO_IOT_WLAN_RELAIS -[env:allnet-4duino-iot-wlan-relais-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DALLNET_4DUINO_IOT_WLAN_RELAIS -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:tonbux-mosquito-killer] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DTONBUX_MOSQUITO_KILLER -[env:tonbux-mosquito-killer-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DTONBUX_MOSQUITO_KILLER -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:pilotak-esp-din-v1] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DPILOTAK_ESP_DIN_V1 -[env:pilotak-esp-din-v1-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DPILOTAK_ESP_DIN_V1 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:nodemcu-geiger] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DNODEMCU_BASIC -DGEIGER_SUPPORT=1 -DEVENTS_SUPPORT=0 -DINFLUXDB_SUPPORT=1 -DALEXA_SUPPORT=0 -DALEXA_ENABLED=0 -[env:nodemcu-geiger-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DNODEMCU_BASIC -DGEIGER_SUPPORT=1 -DEVENTS_SUPPORT=0 -DINFLUXDB_SUPPORT=1 -DALEXA_SUPPORT=0 -DALEXA_ENABLED=0 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:blitzwolf-bwshpx] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DBLITZWOLF_BWSHPX -[env:blitzwolf-bwshpx-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DBLITZWOLF_BWSHPX -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:blitzwolf-bwshpx-v23] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DBLITZWOLF_BWSHPX_V23 -[env:blitzwolf-bwshpx-v23-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DBLITZWOLF_BWSHPX_V23 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:blitzwolf-bwshp5] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DBLITZWOLF_BWSHP5 -[env:blitzwolf-bwshp5-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DBLITZWOLF_BWSHP5 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:teckin-sp21] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DTECKIN_SP21 -[env:teckin-sp21-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DTECKIN_SP21 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:teckin-sp22-v14] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DTECKIN_SP22_V14 -[env:teckin-sp22-v14-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DTECKIN_SP22_V14 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:gosund-ws1] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DGOSUND_WS1 -[env:gosund-ws1-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DGOSUND_WS1 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:digoo-nx-sp202] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DDIGOO_NX_SP202 -[env:digoo-nx-sp202-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DDIGOO_NX_SP202 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:tflag-nx-smx00] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DTFLAG_NX_SMX00 -[env:tflag-nx-smx00-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DTFLAG_NX_SMX00 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:homecube-16a] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DHOMECUBE_16A -[env:homecube-16a-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DHOMECUBE_16A -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:bh-onofre] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DBH_ONOFRE -[env:bh-onofre-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DBH_ONOFRE -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:generic-ag-l4] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DGENERIC_AG_L4 -[env:generic-ag-l4-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DGENERIC_AG_L4 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:lohas-e27-9w] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DLOHAS_E27_9W -[env:lohas-e27-9w-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DLOHAS_E27_9W -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:lohas-e26-a19] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DLOHAS_E26_A19 -[env:lohas-e26-a19-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DLOHAS_E26_A19 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:teckin-sb53] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DTECKIN_SB53 -[env:teckin-sb53-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DTECKIN_SB53 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:allterco-shelly1] board = ${common.board_2m} build_flags = ${common.build_flags_2m1m} -DALLTERCO_SHELLY1 -[env:allterco-shelly1-ota] -board = ${common.board_2m} -build_flags = ${common.build_flags_2m1m} -DALLTERCO_SHELLY1 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:allterco-shelly2] board = ${common.board_2m} build_flags = ${common.build_flags_2m1m} -DALLTERCO_SHELLY2 -[env:allterco-shelly2-ota] -board = ${common.board_2m} -build_flags = ${common.build_flags_2m1m} -DALLTERCO_SHELLY2 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:allterco-shelly1pm] board = ${common.board_2m} build_flags = ${common.build_flags_2m1m} -DALLTERCO_SHELLY1PM -[env:allterco-shelly1pm-ota] -board = ${common.board_2m} -build_flags = ${common.build_flags_2m1m} -DALLTERCO_SHELLY1PM -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:allterco-shelly25] board = ${common.board_2m} build_flags = ${common.build_flags_2m1m} -DALLTERCO_SHELLY25 -[env:allterco-shelly25-ota] -board = ${common.board_2m} -build_flags = ${common.build_flags_2m1m} -DALLTERCO_SHELLY25 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:xiaomi-smart-desk-lamp] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DXIAOMI_SMART_DESK_LAMP -[env:xiaomi-smart-desk-lamp-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DXIAOMI_SMART_DESK_LAMP -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:phyx-esp12-rgb] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DPHYX_ESP12_RGB -[env:phyx-esp12-rgb-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DPHYX_ESP12_RGB -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:bestek-mrj1011] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DBESTEK_MRJ1011 -[env:bestek-mrj1011-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DBESTEK_MRJ1011 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:gblife-rgbw-socket] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DGBLIFE_RGBW_SOCKET -[env:gblife-rgbw-socket-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DGBLIFE_RGBW_SOCKET -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:smartlife-mini-smart-socket] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DSMARTLIFE_MINI_SMART_SOCKET -[env:smartlife-mini-smart-socket-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DSMARTLIFE_MINI_SMART_SOCKET -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:hama-wifi-steckdose-00176533] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DHAMA_WIFI_STECKDOSE_00176533 -[env:hama-wifi-steckdose-00176533-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DHAMA_WIFI_STECKDOSE_00176533 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:teckin-sp20] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DTECKIN_SP20 -[env:teckin-sp20-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DTECKIN_SP20 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:litesun-la-wf3] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DLITESUN_LA_WF3 -[env:litesun-la-wf3-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DLITESUN_LA_WF3 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:generic-gu10] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DGENERIC_GU10 -[env:generic-gu10-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DGENERIC_GU10 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:generic-e14] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DGENERIC_E14 -[env:generic-e14-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DGENERIC_E14 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:nexete-a19] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DNEXETE_A19 -[env:generic-nexete-a19-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DNEXETE_A19 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:psh-wifi-plug] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DPSH_WIFI_PLUG -[env:psh-wifi-plug-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DPSH_WIFI_PLUG -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:psh-rgbw-controller] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DPSH_RGBW_CONTROLLER -[env:psh-rgbw-controller-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DPSH_RGBW_CONTROLLER -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:psh-wifi-sensor] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DPSH_WIFI_SENSOR -[env:psh-wifi-sensor-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DPSH_WIFI_SENSOR -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:jinvoo-valve-sm-aw713] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DJINVOO_VALVE_SM_AW713 -[env:jinvoo-valve-sm-aw713-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DJINVOO_VALVE_SM_AW713 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:etekcity-esw01-usa] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DETEKCITY_ESW01_USA -[env:etekcity-esw01-usa-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DETEKCITY_ESW01_USA -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:fs-uap1] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DFS_UAP1 -[env:fs-uap1-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DFS_UAP1 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:muvit-io-miobulb001] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DMUVIT_IO_MIOBULB001 -[env:muvit-io-miobulb001-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DMUVIT_IO_MIOBULB001 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:hykker-smart-home-power-plug] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DHYKKER_SMART_HOME_POWER_PLUG -[env:hykker-smart-home-power-plug-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DHYKKER_SMART_HOME_POWER_PLUG -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:kogan-smarter-home-plug-w-pow] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DKOGAN_SMARTER_HOME_PLUG_W_POW -[env:kogan-smarter-home-plug-w-pow-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DKOGAN_SMARTER_HOME_PLUG_W_POW -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:lsc-smart-led-light-strip] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DLSC_SMART_LED_LIGHT_STRIP -[env:lsc-smart-led-light-strip-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DLSC_SMART_LED_LIGHT_STRIP -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:linksprite-linknode-r4] board = ${common.board_4m} build_flags = ${common.build_flags_4m1m} -DLINKSPRITE_LINKNODE_R4 -[env:linksprite-linknode-r4-ota] -board = ${common.board_4m} -build_flags = ${common.build_flags_4m1m} -DLINKSPRITE_LINKNODE_R4 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:ehomediy-wt02] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DEHOMEDIY_WT02 -[env:ehomediy-wt02-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DEHOMEDIY_WT02 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} - [env:ehomediy-wt03] board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DEHOMEDIY_WT03 -[env:ehomediy-wt03-ota] -board = ${common.board_1m} -build_flags = ${common.build_flags_1m0m} -DEHOMEDIY_WT03 -upload_port = ${common.ota_upload_port} -upload_flags = ${common.ota_upload_flags} diff --git a/code/platformio_ota.ini b/code/platformio_ota.ini new file mode 100644 index 00000000..ddd6b611 --- /dev/null +++ b/code/platformio_ota.ini @@ -0,0 +1,461 @@ +# ------------------------------------------------------------------------------ +# Backwards compatibility for -ota envs +# Since 1.14.2, any env: section will use ESPURNA_... contents +# ------------------------------------------------------------------------------ + +[env:wemos-d1mini-relayshield-ota] +extends = env:wemos-d1mini-relayshield + +[env:nodemcu-lolin-ota] +extends = env:nodemcu-lolin + +[env:tinkerman-espurna-h06-ota] +extends = env:tinkerman-espurna-h06 + +[env:tinkerman-espurna-h08-ota] +extends = env:tinkerman-espurna-h08 + +[env:foxel-lightfox-dual-ota] +extends = env:foxel-lightfox-dual + +[env:itead-sonoff-basic-ota] +extends = env:itead-sonoff-basic + +[env:itead-sonoff-basic-dht-ota] +extends = env:itead-sonoff-basic-dht + +[env:itead-sonoff-rf-ota] +extends = env:itead-sonoff-rf + +[env:itead-sonoff-mini-ota] +extends = env:itead-sonoff-mini + +[env:itead-sonoff-th-ota] +extends = env:itead-sonoff-th + +[env:itead-sonoff-pow-ota] +extends = env:itead-sonoff-pow + +[env:itead-sonoff-pow-r2-ota] +extends = env:itead-sonoff-pow-r2 + +[env:itead-sonoff-dual-ota] +extends = env:itead-sonoff-dual + +[env:itead-sonoff-dual-r2-ota] +extends = env:itead-sonoff-dual-r2 + +[env:itead-sonoff-4ch-ota] +extends = env:itead-sonoff-4ch + +[env:itead-sonoff-4ch-pro-ota] +extends = env:itead-sonoff-4ch-pro + +[env:itead-sonoff-touch-ota] +extends = env:itead-sonoff-touch + +[env:itead-sonoff-b1-ota] +extends = env:itead-sonoff-b1 + +[env:itead-sonoff-t1-1ch-ota] +extends = env:itead-sonoff-t1-1ch + +[env:itead-sonoff-t1-2ch-ota] +extends = env:itead-sonoff-t1-2ch + +[env:itead-sonoff-t1-3ch-ota] +extends = env:itead-sonoff-t1-3ch + +[env:itead-sonoff-led-ota] +extends = env:itead-sonoff-led + +[env:itead-sonoff-rfbridge-ota] +extends = env:itead-sonoff-rfbridge + +[env:itead-sonoff-rfbridge-direct-ota] +extends = env:itead-sonoff-rfbridge-direct + +[env:itead-slampher-ota] +extends = env:itead-slampher + +[env:itead-s20-ota] +extends = env:itead-s20 + +[env:itead-1ch-inching-ota] +extends = env:itead-1ch-inching + +[env:itead-motor-ota] +extends = env:itead-motor + +[env:itead-sonoff-sv-ota] +extends = env:itead-sonoff-sv + +[env:itead-sonoff-s31-ota] +extends = env:itead-sonoff-s31 + +[env:itead-sonoff-s31-lite-ota] +extends = env:itead-sonoff-s31-lite + +[env:itead-sonoff-ifan02-ota] +extends = env:itead-sonoff-ifan02 + +[env:electrodragon-wifi-iot-ota] +extends = env:electrodragon-wifi-iot + +[env:workchoice-ecoplug-ota] +extends = env:workchoice-ecoplug + +[env:jangoe-wifi-relay-nc-ota] +extends = env:jangoe-wifi-relay-nc + +[env:jangoe-wifi-relay-no-ota] +extends = env:jangoe-wifi-relay-no + +[env:openenergymonitor-mqtt-relay-ota] +extends = env:openenergymonitor-mqtt-relay + +[env:jorgegarcia-wifi-relays-ota] +extends = env:jorgegarcia-wifi-relays + +[env:aithinker-ai-light-ota] +extends = env:aithinker-ai-light + +[env:lyasi-rgb-light-ota] +extends = env:lyasi-rgb-light + +[env:magichome-led-controller-ota] +extends = env:magichome-led-controller + +[env:magichome-led-controller-20-ota] +extends = env:magichome-led-controller-20 + +[env:magichome-zj-wfmn-a-11-ota] +extends = env:magichome-zj-wfmn-a-11 + +[env:magichome-zj-wfmn-b-11-ota] +extends = env:magichome-zj-wfmn-b-11 + +[env:magichome-zj-espm-5ch-b-13-ota] +extends = env:magichome-zj-espm-5ch-b-13 + +[env:magichome-zj-lb-rgbww-l-ota] +extends = env:magichome-zj-lb-rgbww-l + +[env:magichome-zj-wfmn-c-11-ota] +extends = env:magichome-zj-wfmn-c-11 + +[env:huacanxing-h801-ota] +extends = env:huacanxing-h801 + +[env:huacanxing-h802-ota] +extends = env:huacanxing-h802 + +[env:arilux-al-lc01-ota] +extends = env:arilux-al-lc01 + +[env:arilux-al-lc02-ota] +extends = env:arilux-al-lc02 + +[env:arilux-al-lc02-v14-ota] +extends = env:arilux-al-lc02-v14 + +[env:arilux-al-lc06-ota] +extends = env:arilux-al-lc06 + +[env:arilux-al-lc11-ota] +extends = env:arilux-al-lc11 + +[env:arilux-e27-ota] +extends = env:arilux-e27 + +[env:itead-bnsz01-ota] +extends = env:itead-bnsz01 + +[env:wion-50055-ota] +extends = env:wion-50055 + +[env:exs-wifi-relay-v31-ota] +extends = env:exs-wifi-relay-v31 + +[env:exs-wifi-relay-v50-ota] +extends = env:exs-wifi-relay-v50 + +[env:wemos-v9261f-ota] +extends = env:wemos-v9261f + +[env:esp01-v9261f-ota] +extends = env:esp01-v9261f + +[env:wemos-ech1560-ota] +extends = env:wemos-ech1560 + +[env:esp01-ech1560-ota] +extends = env:esp01-ech1560 + +[env:mancavemade-esplive-ota] +extends = env:mancavemade-esplive + +[env:intermittech-quinled-ota] +extends = env:intermittech-quinled + +[env:xenon-sm-pw702u-ota] +extends = env:xenon-sm-pw702u + +[env:iselector-sm-pw702-ota] +extends = env:iselector-sm-pw702 + +[env:authometion-lyt8266-ota] +extends = env:authometion-lyt8266 + +[env:kmc-70011-ota] +extends = env:kmc-70011 + +[env:yjzk-switch-1ch-ota] +extends = env:yjzk-switch-1ch + +[env:yjzk-switch-2ch-ota] +extends = env:yjzk-switch-2ch + +[env:yjzk-switch-3ch-ota] +extends = env:yjzk-switch-3ch + +[env:gizwits-witty-cloud-ota] +extends = env:gizwits-witty-cloud + +[env:euromate-wifi-stecker-shuko-ota] +extends = env:euromate-wifi-stecker-shuko + +[env:euromate-wifi-stecker-shuko-v2-ota] +extends = env:euromate-wifi-stecker-shuko-v2 + +[env:tonbux-powerstrip02-ota] +extends = env:tonbux-powerstrip02 + +[env:lingan-swa1-ota] +extends = env:lingan-swa1 + +[env:stm-relay-ota] +extends = env:stm-relay + +[env:heygo-hy02-ota] +extends = env:heygo-hy02 + +[env:maxcio-wus002s-ota] +extends = env:maxcio-wus002s + +[env:maxcio-wde004-ota] +extends = env:maxcio-wde004 + +[env:yidian-xsssa05-ota] +extends = env:yidian-xsssa05 + +[env:oukitel-p1-ota] +extends = env:oukitel-p1 + +[env:tonbux-xsssa01-ota] +extends = env:tonbux-xsssa01 + +[env:tonbux-xsssa06-ota] +extends = env:tonbux-xsssa06 + +[env:green-esp8266relay-ota] +extends = env:green-esp8266relay + +[env:ike-espike-ota] +extends = env:ike-espike + +[env:arniex-swifitch-ota] +extends = env:arniex-swifitch + +[env:zhilde-eu44-w-ota] +extends = env:zhilde-eu44-w + +[env:luani-hvio-ota] +extends = env:luani-hvio + +[env:avatto-power-plug-wifi-ota] +extends = env:avatto-power-plug-wifi + +[env:neo-coolcam-power-plug-wifi-ota] +extends = env:neo-coolcam-power-plug-wifi + +[env:deltaco-sh-p01-ota] +extends = env:deltaco-sh-p01 + +[env:deltaco-sh-p03usb-ota] +extends = env:deltaco-sh-p03usb + +[env:deltaco-sh-lexxw-ota] +extends = env:deltaco-sh-lexxw + +[env:deltaco-sh-lexxrgb-ota] +extends = env:deltaco-sh-lexxrgb + +[env:estink-wifi-power-strip-ota] +extends = env:estink-wifi-power-strip + +[env:iwoole-led-table-lamp-ota] +extends = env:iwoole-led-table-lamp + +[env:lombex-lux-nova2-tunable-white-ota] +extends = env:lombex-lux-nova2-tunable-white + +[env:lombex-lux-nova2-white-color-ota] +extends = env:lombex-lux-nova2-white-color + +[env:generic-esp01s-relay-40-ota] +extends = env:generic-esp01s-relay-40 + +[env:generic-esp01s-relay-40-inv-ota] +extends = env:generic-esp01s-relay-40-inv + +[env:generic-esp01s-rgbled-10-ota] +extends = env:generic-esp01s-rgbled-10 + +[env:generic-esp01s-dht11-10-ota] +extends = env:generic-esp01s-dht11-10 + +[env:generic-esp01s-ds18b20-10-ota] +extends = env:generic-esp01s-ds18b20-10 + +[env:heltec-touch-relay-ota] +extends = env:heltec-touch-relay + +[env:allnet-4duino-iot-wlan-relais-ota] +extends = env:allnet-4duino-iot-wlan-relais + +[env:tonbux-mosquito-killer-ota] +extends = env:tonbux-mosquito-killer + +[env:pilotak-esp-din-v1-ota] +extends = env:pilotak-esp-din-v1 + +[env:nodemcu-geiger-ota] +extends = env:nodemcu-geiger + +[env:blitzwolf-bwshpx-ota] +extends = env:blitzwolf-bwshpx + +[env:blitzwolf-bwshpx-v23-ota] +extends = env:blitzwolf-bwshpx-v23 + +[env:blitzwolf-bwshp5-ota] +extends = env:blitzwolf-bwshp5 + +[env:teckin-sp21-ota] +extends = env:teckin-sp21 + +[env:teckin-sp22-v14-ota] +extends = env:teckin-sp22-v14 + +[env:gosund-ws1-ota] +extends = env:gosund-ws1 + +[env:digoo-nx-sp202-ota] +extends = env:digoo-nx-sp202 + +[env:tflag-nx-smx00-ota] +extends = env:tflag-nx-smx00 + +[env:homecube-16a-ota] +extends = env:homecube-16a + +[env:bh-onofre-ota] +extends = env:bh-onofre + +[env:generic-ag-l4-ota] +extends = env:generic-ag-l4 + +[env:lohas-e27-9w-ota] +extends = env:lohas-e27-9w + +[env:lohas-e26-a19-ota] +extends = env:lohas-e26-a19 + +[env:teckin-sb53-ota] +extends = env:teckin-sb53 + +[env:allterco-shelly1-ota] +extends = env:allterco-shelly1 + +[env:allterco-shelly2-ota] +extends = env:allterco-shelly2 + +[env:allterco-shelly1pm-ota] +extends = env:allterco-shelly1pm + +[env:allterco-shelly25-ota] +extends = env:allterco-shelly25 + +[env:xiaomi-smart-desk-lamp-ota] +extends = env:xiaomi-smart-desk-lamp + +[env:phyx-esp12-rgb-ota] +extends = env:phyx-esp12-rgb + +[env:bestek-mrj1011-ota] +extends = env:bestek-mrj1011 + +[env:gblife-rgbw-socket-ota] +extends = env:gblife-rgbw-socket + +[env:smartlife-mini-smart-socket-ota] +extends = env:smartlife-mini-smart-socket + +[env:hama-wifi-steckdose-00176533-ota] +extends = env:hama-wifi-steckdose-00176533 + +[env:teckin-sp20-ota] +extends = env:teckin-sp20 + +[env:litesun-la-wf3-ota] +extends = env:litesun-la-wf3 + +[env:generic-gu10-ota] +extends = env:generic-gu10 + +[env:generic-e14-ota] +extends = env:generic-e14 + +[env:nexete-a19-ota] +extends = env:nexete-a19 + +[env:psh-wifi-plug-ota] +extends = env:psh-wifi-plug + +[env:psh-rgbw-controller-ota] +extends = env:psh-rgbw-controller + +[env:psh-wifi-sensor-ota] +extends = env:psh-wifi-sensor + +[env:jinvoo-valve-sm-aw713-ota] +extends = env:jinvoo-valve-sm-aw713 + +[env:etekcity-esw01-usa-ota] +extends = env:etekcity-esw01-usa + +[env:fs-uap1-ota] +extends = env:fs-uap1 + +[env:muvit-io-miobulb001-ota] +extends = env:muvit-io-miobulb001 + +[env:hykker-smart-home-power-plug-ota] +extends = env:hykker-smart-home-power-plug + +[env:kogan-smarter-home-plug-w-pow-ota] +extends = env:kogan-smarter-home-plug-w-pow + +[env:lsc-smart-led-light-strip-ota] +extends = env:lsc-smart-led-light-strip + +[env:linksprite-linknode-r4-ota] +extends = env:linksprite-linknode-r4 + +[env:ehomediy-wt02-ota] +extends = env:ehomediy-wt02 + +[env:ehomediy-wt03-ota] +extends = env:ehomediy-wt03 + diff --git a/code/scripts/espurna_utils/__init__.py b/code/scripts/espurna_utils/__init__.py index 174e56aa..16642a67 100644 --- a/code/scripts/espurna_utils/__init__.py +++ b/code/scripts/espurna_utils/__init__.py @@ -25,3 +25,15 @@ from .ldscripts import ldscripts_inject_libpath from .lwip import lwip_inject_patcher from .postmortem import dummy_ets_printf from .git import app_inject_revision +from .flags import app_inject_flags + +__all__ = [ + "check_cppcheck", + "check_printsize", + "remove_float_support", + "ldscripts_inject_libpath", + "lwip_inject_patcher", + "dummy_ets_printf", + "app_inject_revision", + "app_inject_flags", +] diff --git a/code/scripts/espurna_utils/flags.py b/code/scripts/espurna_utils/flags.py new file mode 100644 index 00000000..f43e12f3 --- /dev/null +++ b/code/scripts/espurna_utils/flags.py @@ -0,0 +1,10 @@ +def app_inject_flags(projenv): + # in theory, could be something different from a single cppdefine, keeping separate from flags below + board = projenv.get("ESPURNA_BOARD", "") + if board: + projenv.Append(CPPDEFINES=[board]) + + # only CPPDEFINES make sense here, since we should not change any others + flags = projenv.get("ESPURNA_FLAGS", "") + if flags: + projenv.MergeFlags({"CPPDEFINES": projenv.ParseFlags(flags)["CPPDEFINES"]}) diff --git a/code/scripts/pio_main.py b/code/scripts/pio_main.py index a53507fc..826a71fa 100644 --- a/code/scripts/pio_main.py +++ b/code/scripts/pio_main.py @@ -1,4 +1,13 @@ -# Run this script every time building an env: +# coding=utf-8 +# pylint: dummy-variables-rgx='(_+[a-zA-Z0-9]*?$)|dummy|env|projenv' +# +# Original extra_scripts.py +# Copyright (C) 2016-2019 by Xose Pérez +# +# ldscripts, lwip patching, updated postmortem flags and git support +# Copyright (C) 2019-2020 by Maxim Prokhorov + +# Run this script every time building an env AFTER platform-specific code is loaded from espurna_utils import ( check_printsize, @@ -6,7 +15,8 @@ from espurna_utils import ( ldscripts_inject_libpath, lwip_inject_patcher, app_inject_revision, - dummy_ets_printf + dummy_ets_printf, + app_inject_flags, ) Import("env", "projenv") @@ -37,3 +47,6 @@ lwip_inject_patcher(env) # when using git, add -DAPP_REVISION=(git-commit-hash) app_inject_revision(projenv) + +# handle OTA board and flags here, since projenv is not available in pre-scripts +app_inject_flags(projenv) diff --git a/code/scripts/pio_pre.py b/code/scripts/pio_pre.py index adcdc13b..4671b3dc 100644 --- a/code/scripts/pio_pre.py +++ b/code/scripts/pio_pre.py @@ -1,3 +1,14 @@ +# coding=utf-8 +# pylint: dummy-variables-rgx='(_+[a-zA-Z0-9]*?$)|dummy|env' +# +# Original extra_scripts.py +# Copyright (C) 2016-2019 by Xose Pérez +# +# ldscripts, lwip patching, updated postmortem flags and git support +# Copyright (C) 2019-2020 by Maxim Prokhorov + +# Run this script every time building an env BEFORE platform-specific code is loaded + from __future__ import print_function Import("env") @@ -6,15 +17,24 @@ import os import sys +from SCons.Script import ARGUMENTS + + TRAVIS = os.environ.get("TRAVIS") PIO_PLATFORM = env.PioPlatform() CONFIG = env.GetProjectConfig() +VERBOSE = "1" == ARGUMENTS.get("PIOVERBOSE", "0") class ExtraScriptError(Exception): pass +def log(message, verbose=False, file=sys.stderr): + if verbose or VERBOSE: + print(message, file=file) + + # Most portable way, without depending on platformio internals def subprocess_libdeps(lib_deps, storage=None, silent=True): import subprocess @@ -46,7 +66,7 @@ def library_manager_libdeps(lib_deps, storage=None): for lib in lib_deps: if manager.get_package_dir(*manager.parse_pkg_uri(lib)): continue - print("installing: {}".format(lib), file=sys.stderr) + log("installing: {}".format(lib)) manager.install(lib) @@ -68,14 +88,27 @@ def get_shared_libdeps_dir(section, name): def ensure_platform_updated(): try: if PIO_PLATFORM.are_outdated_packages(): - print("updating platform packages", file=sys.stderr) + log("updating platform packages") PIO_PLATFORM.update_packages() except Exception: - print( - "Warning: no connection, cannot check for outdated packages", - file=sys.stderr, - ) + log("Warning: no connection, cannot check for outdated packages", verbose=True) + + +# handle OTA uploads +# using env instead of ini to fix platformio ini changing hash on every change +env.Append( + ESPURNA_BOARD=os.environ.get("ESPURNA_BOARD", ""), + ESPURNA_AUTH=os.environ.get("ESPURNA_AUTH", ""), + ESPURNA_FLAGS=os.environ.get("ESPURNA_FLAGS", "") +) +ESPURNA_OTA_PORT = os.environ.get("ESPURNA_IP") +if ESPURNA_OTA_PORT: + env.Replace(UPLOAD_PROTOCOL="espota") + env.Replace(UPLOAD_PORT=ESPURNA_OTA_PORT) + env.Replace(UPLOAD_FLAGS="--auth=$ESPURNA_AUTH") +else: + env.Replace(UPLOAD_PROTOCOL="esptool") # latest toolchain is still optional with PIO (TODO: recheck after 2.6.0!) # also updates arduino core git to the latest master commit @@ -88,9 +121,9 @@ if TRAVIS and ( if os.environ.get("ESPURNA_PIO_SHARED_LIBRARIES"): if TRAVIS: storage = None - print("using global library storage", file=sys.stderr) + log("using global library storage") else: storage = get_shared_libdeps_dir("common", "shared_libdeps_dir") - print("using shared library storage: ", storage, file=sys.stderr) + log("using shared library storage: {}".format(storage)) subprocess_libdeps(env.GetProjectOption("lib_deps"), storage)