[platformio]
default_envs = wemos-d1mini-relayshield
src_dir = espurna
data_dir = espurna/data

[common]
# ------------------------------------------------------------------------------
# PLATFORM:
#   !! DO NOT confuse platformio's ESP8266 development platform with Arduino core for ESP8266
#   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
#   arduino core 2.4.1 = platformIO 1.7.3
#   arduino core 2.4.2 = platformIO 1.8.0
#   arduino core 2.5.0 = platformIO 2.0.4
#   arduino core 2.5.1 = platformIO 2.1.1
#   arduino core 2.5.2 = platformIO 2.2.2
# ------------------------------------------------------------------------------
arduino_core_2_3_0 = espressif8266@1.5.0
arduino_core_2_4_0 = espressif8266@1.6.0
arduino_core_2_4_1 = espressif8266@1.7.3
arduino_core_2_4_2 = espressif8266@1.8.0
arduino_core_2_5_0 = espressif8266@2.0.4
arduino_core_2_5_1 = espressif8266@2.1.1
arduino_core_2_5_2 = espressif8266@2.2.2

# Development platforms
arduino_core_develop = https://github.com/platformio/platform-espressif8266#develop
arduino_core_git = https://github.com/platformio/platform-espressif8266#feature/stage

platform = ${common.arduino_core_2_3_0}
platform_latest = ${common.arduino_core_2_5_2}

# ------------------------------------------------------------------------------
# FLAGS: DEBUG
#
# ------------------------------------------------------------------------------
debug_flags = -DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_TLS_MEM
#if needed (for memleaks etc) also add; -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h"

# ------------------------------------------------------------------------------
# FLAGS: build flags
#   build flags for 512k/1m ESP's are different because we use Linker Scripts to adjust flash split
#    build_flags_512k ( 512 KB) =  487 KB sketch,  4 KB eeprom, 16 KB reserved
#    build_flags_1m0m (1024 KB) =  999 KB sketch,  4 KB eeprom, 16 KB reserved
#    build_flags_2m1m (2048 KB) = 1019 KB sketch, 16 KB eeprom,  992 KB spiffs, 16 KB reserved
#    build_flags_4m1m (4096 KB) = 1019 KB sketch, 16 KB eeprom,  992 KB spiffs, 16 KB reserved, 2048 KB empty/ota?
#    build_flags_4m3m (4096 KB) = 1019 KB sketch, 16 KB eeprom, 3040 KB spiffs, 16 KB reserved
#
# Available lwIP variants (macros):
#    -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH  = v1.4 Higher Bandwidth (default)
#    -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY       = v2 Lower Memory
#    -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH = v2 Higher Bandwidth
#
# BearSSL ciphers:
#   When building on core >= 2.5, you can add the build flag -DBEARSSL_SSL_BASIC in order to build BearSSL with a limited set of ciphers:
#     TLS_RSA_WITH_AES_128_CBC_SHA256 / AES128-SHA256
#     TLS_RSA_WITH_AES_256_CBC_SHA256 / AES256-SHA256
#     TLS_RSA_WITH_AES_128_CBC_SHA / AES128-SHA
#     TLS_RSA_WITH_AES_256_CBC_SHA / AES256-SHA
#  This reduces the OTA size with ~45KB, so it's especially useful on low memory boards (512k/1m).
# ------------------------------------------------------------------------------
board_1m = esp01_1m
board_2m = esp_wroom_02
board_4m = esp12e

build_flags = -g -w -DMQTT_MAX_PACKET_SIZE=400 -DNO_GLOBAL_EEPROM ${sysenv.ESPURNA_FLAGS} -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
build_flags_4m1m = ${common.build_flags} -Wl,-Teagle.flash.4m1m4s.ld
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:
# ------------------------------------------------------------------------------
[env]
platform = ${common.platform}
framework = arduino
board_build.flash_mode = dout
monitor_speed = 115200
upload_speed = 115200
extra_scripts = pre:extra_script_pre.py, extra_scripts.py
lib_extra_dirs =
    ${common.shared_libdeps_dir}

# ------------------------------------------------------------------------------
# LIBRARIES: required dependencies
#   Please note that we don't always use the latest version of a library.
# ------------------------------------------------------------------------------
lib_deps =
    ArduinoJson@5.13.4
    https://github.com/marvinroger/async-mqtt-client#v0.8.1
    Brzo I2C
    https://github.com/xoseperez/debounceevent.git#2.0.5
    https://github.com/xoseperez/eeprom_rotate#0.9.2
    Embedis
    https://github.com/plerup/espsoftwareserial#3.4.1
    https://github.com/me-no-dev/ESPAsyncTCP#7e9ed22
    https://github.com/me-no-dev/ESPAsyncWebServer#b0c6144
    https://bitbucket.org/xoseperez/fauxmoesp.git#3.1.0
    https://github.com/xoseperez/hlw8012.git#1.1.0
    https://github.com/markszabo/IRremoteESP8266#v2.2.0
    https://github.com/xoseperez/justwifi.git#2.0.2
    https://github.com/madpilot/mDNSResolver#4cfcda1
    https://github.com/xoseperez/my92xx#3.0.1
    MQTT
    https://bitbucket.org/xoseperez/nofuss.git#0.3.0
    https://github.com/xoseperez/NtpClient.git#0942ebc
    OneWire
    PZEM004T
    PubSubClient
    rc-switch
    https://github.com/LowPowerLab/RFM69#1.1.3
    https://github.com/xoseperez/Time
    NewPing
    https://github.com/sparkfun/SparkFun_VEML6075_Arduino_Library#V_1.0.3
    https://github.com/pololu/vl53l1x-arduino#1.0.1
    https://github.com/mcleng/MAX6675-Library#2.0.1
    https://github.com/ElderJoy/esp8266-oled-ssd1306#4.0.1
lib_ignore =

# ------------------------------------------------------------------------------
# ESPURNA CORE BUILDS
# ------------------------------------------------------------------------------

[env:espurna-core-1MB]
board = ${common.board_1m}
build_flags = ${common.build_flags_1m0m} -DESPURNA_CORE

[env:espurna-core-2MB]
board = ${common.board_2m}
build_flags = ${common.build_flags_2m1m} -DESPURNA_CORE

[env:espurna-core-4MB]
board = ${common.board_4m}
build_flags = ${common.build_flags_4m1m} -DESPURNA_CORE

[env:espurna-core-smartconfig-1MB]
board = ${common.board_1m}
build_flags = ${common.build_flags_1m0m} -DESPURNA_CORE -DJUSTWIFI_ENABLE_SMARTCONFIG=1

[env:espurna-core-smartconfig-2MB]
board = ${common.board_2m}
build_flags = ${common.build_flags_2m1m} -DESPURNA_CORE -DJUSTWIFI_ENABLE_SMARTCONFIG=1

[env:espurna-core-smartconfig-4MB]
board = ${common.board_4m}
build_flags = ${common.build_flags_4m1m} -DESPURNA_CORE -DJUSTWIFI_ENABLE_SMARTCONFIG=1

[env:espurna-core-wps-1MB]
board = ${common.board_1m}
build_flags = ${common.build_flags_1m0m} -DESPURNA_CORE -DJUSTWIFI_ENABLE_WPS=1

[env:espurna-core-wps-2MB]
board = ${common.board_2m}
build_flags = ${common.build_flags_2m1m} -DESPURNA_CORE -DJUSTWIFI_ENABLE_WPS=1

[env:espurna-core-wps-4MB]
board = ${common.board_4m}
build_flags = ${common.build_flags_4m1m} -DESPURNA_CORE -DJUSTWIFI_ENABLE_WPS=1

# ------------------------------------------------------------------------------
# GENERIC OTA ENVIRONMENTS
# ------------------------------------------------------------------------------

[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}

[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}

[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}

# ------------------------------------------------------------------------------
# SPECIAL BUILDS - DO. NOT. USE. ever ---
# ------------------------------------------------------------------------------

[env:travis01]
platform = ${common.platform}
board = ${common.board_4m}
build_flags = ${common.build_flags_4m1m} -DTRAVIS01

[env:travis02]
platform = ${common.platform_latest}
board = ${common.board_4m}
build_flags = ${common.build_flags_4m1m} -DTRAVIS02

[env:travis03]
platform = ${common.platform_latest}
board = ${common.board_4m}
build_flags = ${common.build_flags_4m1m} -DTRAVIS03 -DNOWSAUTH -DASYNC_TCP_SSL_ENABLED=1

[env:travis04]
platform = ${common.arduino_core_git}
board = ${common.board_4m}
build_flags = ${common.build_flags_4m1m} -DTRAVIS03 -DNOWSAUTH

# ------------------------------------------------------------------------------
# DEVELOPMENT BOARDS
# ------------------------------------------------------------------------------

[env:wemos-d1mini]
board = d1_mini
build_flags = ${common.build_flags_4m1m} -DWEMOS_D1_MINI -DDEBUG_FAUXMO=Serial -DNOWSAUTH

[env:wemos-d1mini-relayshield]
board = ${common.board_4m}
build_flags = ${common.build_flags_4m1m} -DWEMOS_D1_MINI_RELAYSHIELD -DDEBUG_FAUXMO=Serial -DNOWSAUTH

[env:wemos-d1mini-relayshield-ssl]
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

[env:nodemcu-lolin-252]
platform = ${common.arduino_core_2_5_2}
board = ${common.board_4m}
build_flags = ${common.build_flags_4m1m} -DNODEMCU_LOLIN -DDEBUG_FAUXMO=Serial -DNOWSAUTH

[env:nodemcu-lolin-ssl]
platform = ${common.platform_latest}
board = ${common.board_4m}
build_flags = ${common.build_flags_4m1m} -DNODEMCU_LOLIN -DDEBUG_FAUXMO=Serial -DNOWSAUTH -DASYNC_TCP_SSL_ENABLED=1

[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}

# ------------------------------------------------------------------------------
# SPECIFIC BOARDS
# ------------------------------------------------------------------------------

[env:tinkerman-espurna-h06]
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

[env:wemos-d1-tarpunashield]
board = ${common.board_4m}
build_flags = ${common.build_flags_4m1m} -DWEMOS_D1_TARPUNA_SHIELD

[env:tinkerman-rfm69gw]
board = esp12e
build_flags = ${common.build_flags_4m1m} -DTINKERMAN_RFM69GW -DNOWSAUTH

[env:nodemcu-pzem004t]
board = ${common.board_4m}
build_flags = ${common.build_flags_4m1m} -DNODEMCU_BASIC -DDEBUG_SERIAL_SUPPORT=0 -DPZEM004T_SUPPORT=1 -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]
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}
build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_BASIC -DDHT_SUPPORT=1

[env:itead-sonoff-basic-r2-dht]
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

[env:itead-sonoff-basic-r2-dallas]
board = ${common.board_1m}
build_flags = ${common.build_flags_1m0m} -DITEAD_SONOFF_BASIC -DDALLAS_SUPPORT=1 -DDALLAS_PIN=2

[env:itead-sonoff-rf]
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-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: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]
board = ${common.board_1m}
build_flags = ${common.build_flags_1m0m} -DINTERMITTECH_QUINLED

[env:intermittech-quinled-ota]
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

[env:gizwits-witty-cloud]
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: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: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
# ------------------------------------------------------------------------------

[env:generic-esp01s-relay-40]
board = ${common.board_1m}
build_flags = ${common.build_flags_1m0m} -DGENERIC_ESP01S_RELAY_V40

[env:generic-esp01s-relay-40-inv]
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: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: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_9W

[env:lohas-e27-9w-ota]
board = ${common.board_1m}
build_flags = ${common.build_flags_1m0m} -DLOHAS_9W
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: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}
