mirror of
https://github.com/esphome/esphome.git
synced 2024-11-10 01:07:45 +01:00
Add API for dashboard to get boards list (#4154)
This commit is contained in:
parent
f843925301
commit
6ad9baa870
9 changed files with 960 additions and 234 deletions
|
@ -33,7 +33,7 @@ from .const import ( # noqa
|
||||||
VARIANT_FRIENDLY,
|
VARIANT_FRIENDLY,
|
||||||
VARIANTS,
|
VARIANTS,
|
||||||
)
|
)
|
||||||
from .boards import BOARD_TO_VARIANT
|
from .boards import BOARDS
|
||||||
|
|
||||||
# force import gpio to register pin schema
|
# force import gpio to register pin schema
|
||||||
from .gpio import esp32_pin_to_code # noqa
|
from .gpio import esp32_pin_to_code # noqa
|
||||||
|
@ -230,14 +230,14 @@ def _parse_platform_version(value):
|
||||||
def _detect_variant(value):
|
def _detect_variant(value):
|
||||||
if CONF_VARIANT not in value:
|
if CONF_VARIANT not in value:
|
||||||
board = value[CONF_BOARD]
|
board = value[CONF_BOARD]
|
||||||
if board not in BOARD_TO_VARIANT:
|
if board not in BOARDS:
|
||||||
raise cv.Invalid(
|
raise cv.Invalid(
|
||||||
"This board is unknown, please set the variant manually",
|
"This board is unknown, please set the variant manually",
|
||||||
path=[CONF_BOARD],
|
path=[CONF_BOARD],
|
||||||
)
|
)
|
||||||
|
|
||||||
value = value.copy()
|
value = value.copy()
|
||||||
value[CONF_VARIANT] = BOARD_TO_VARIANT[board]
|
value[CONF_VARIANT] = BOARDS[board][KEY_VARIANT]
|
||||||
|
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
|
@ -1066,197 +1066,738 @@ ESP32_BOARD_PINS = {
|
||||||
}
|
}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
BOARD_TO_VARIANT generated with:
|
BOARDS generated with:
|
||||||
|
|
||||||
git clone https://github.com/platformio/platform-espressif32
|
git clone https://github.com/platformio/platform-espressif32
|
||||||
for x in platform-espressif32/boards/*.json; do
|
for x in platform-espressif32/boards/*.json; do
|
||||||
mcu=$(jq -r .build.mcu <"$x");
|
mcu=$(jq -r .build.mcu <"$x");
|
||||||
|
name=$(jq -r .name <"$x");
|
||||||
fname=$(basename "$x")
|
fname=$(basename "$x")
|
||||||
board="${fname%.*}"
|
board="${fname%.*}"
|
||||||
variant=$(echo "$mcu" | tr '[:lower:]' '[:upper:]')
|
variant=$(echo "$mcu" | tr '[:lower:]' '[:upper:]')
|
||||||
echo " \"$board\": VARIANT_${variant},"
|
echo " \"$board\": {\"name\": \"$name\", \"variant\": VARIANT_${variant},},"
|
||||||
done | sort
|
done | sort
|
||||||
"""
|
"""
|
||||||
|
|
||||||
BOARD_TO_VARIANT = {
|
BOARDS = {
|
||||||
"adafruit_feather_esp32s2_tft": VARIANT_ESP32S2,
|
"adafruit_feather_esp32s2_tft": {
|
||||||
"adafruit_feather_esp32s3_nopsram": VARIANT_ESP32S3,
|
"name": "Adafruit Feather ESP32-S2 TFT",
|
||||||
"adafruit_feather_esp32s3_tft": VARIANT_ESP32S3,
|
"variant": VARIANT_ESP32S2,
|
||||||
"adafruit_feather_esp32s3": VARIANT_ESP32S3,
|
},
|
||||||
"adafruit_feather_esp32_v2": VARIANT_ESP32,
|
"adafruit_feather_esp32s3": {
|
||||||
"adafruit_funhouse_esp32s2": VARIANT_ESP32S2,
|
"name": "Adafruit Feather ESP32-S3 2MB PSRAM",
|
||||||
"adafruit_itsybitsy_esp32": VARIANT_ESP32,
|
"variant": VARIANT_ESP32S3,
|
||||||
"adafruit_magtag29_esp32s2": VARIANT_ESP32S2,
|
},
|
||||||
"adafruit_metro_esp32s2": VARIANT_ESP32S2,
|
"adafruit_feather_esp32s3_nopsram": {
|
||||||
"adafruit_qtpy_esp32c3": VARIANT_ESP32C3,
|
"name": "Adafruit Feather ESP32-S3 No PSRAM",
|
||||||
"adafruit_qtpy_esp32s2": VARIANT_ESP32S2,
|
"variant": VARIANT_ESP32S3,
|
||||||
"adafruit_qtpy_esp32s3_nopsram": VARIANT_ESP32S3,
|
},
|
||||||
"adafruit_qtpy_esp32": VARIANT_ESP32,
|
"adafruit_feather_esp32s3_tft": {
|
||||||
"airm2m_core_esp32c3": VARIANT_ESP32C3,
|
"name": "Adafruit Feather ESP32-S3 TFT",
|
||||||
"alksesp32": VARIANT_ESP32,
|
"variant": VARIANT_ESP32S3,
|
||||||
"atmegazero_esp32s2": VARIANT_ESP32S2,
|
},
|
||||||
"az-delivery-devkit-v4": VARIANT_ESP32,
|
"adafruit_feather_esp32_v2": {
|
||||||
"bee_motion_mini": VARIANT_ESP32C3,
|
"name": "Adafruit Feather ESP32 V2",
|
||||||
"bee_motion_s3": VARIANT_ESP32S3,
|
"variant": VARIANT_ESP32,
|
||||||
"bee_motion": VARIANT_ESP32S2,
|
},
|
||||||
"bee_s3": VARIANT_ESP32S3,
|
"adafruit_funhouse_esp32s2": {
|
||||||
"bpi-bit": VARIANT_ESP32,
|
"name": "Adafruit FunHouse",
|
||||||
"briki_abc_esp32": VARIANT_ESP32,
|
"variant": VARIANT_ESP32S2,
|
||||||
"briki_mbc-wb_esp32": VARIANT_ESP32,
|
},
|
||||||
"cnrs_aw2eth": VARIANT_ESP32,
|
"adafruit_itsybitsy_esp32": {
|
||||||
"connaxio_espoir": VARIANT_ESP32,
|
"name": "Adafruit ItsyBitsy ESP32",
|
||||||
"d-duino-32": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"deneyapkart1A": VARIANT_ESP32,
|
},
|
||||||
"deneyapkartg": VARIANT_ESP32C3,
|
"adafruit_magtag29_esp32s2": {
|
||||||
"deneyapkart": VARIANT_ESP32,
|
"name": "Adafruit MagTag 2.9",
|
||||||
"deneyapmini": VARIANT_ESP32S2,
|
"variant": VARIANT_ESP32S2,
|
||||||
"denky32": VARIANT_ESP32,
|
},
|
||||||
"denky_d4": VARIANT_ESP32,
|
"adafruit_metro_esp32s2": {
|
||||||
"dfrobot_beetle_esp32c3": VARIANT_ESP32C3,
|
"name": "Adafruit Metro ESP32-S2",
|
||||||
"dfrobot_firebeetle2_esp32s3": VARIANT_ESP32S3,
|
"variant": VARIANT_ESP32S2,
|
||||||
"dpu_esp32": VARIANT_ESP32,
|
},
|
||||||
"esp320": VARIANT_ESP32,
|
"adafruit_qtpy_esp32c3": {
|
||||||
"esp32-c3-devkitm-1": VARIANT_ESP32C3,
|
"name": "Adafruit QT Py ESP32-C3",
|
||||||
"esp32cam": VARIANT_ESP32,
|
"variant": VARIANT_ESP32C3,
|
||||||
"esp32-devkitlipo": VARIANT_ESP32,
|
},
|
||||||
"esp32dev": VARIANT_ESP32,
|
"adafruit_qtpy_esp32": {
|
||||||
"esp32doit-devkit-v1": VARIANT_ESP32,
|
"name": "Adafruit QT Py ESP32",
|
||||||
"esp32doit-espduino": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"esp32-evb": VARIANT_ESP32,
|
},
|
||||||
"esp32-gateway": VARIANT_ESP32,
|
"adafruit_qtpy_esp32s2": {
|
||||||
"esp32-poe-iso": VARIANT_ESP32,
|
"name": "Adafruit QT Py ESP32-S2",
|
||||||
"esp32-poe": VARIANT_ESP32,
|
"variant": VARIANT_ESP32S2,
|
||||||
"esp32-pro": VARIANT_ESP32,
|
},
|
||||||
"esp32-s2-franzininho": VARIANT_ESP32S2,
|
"adafruit_qtpy_esp32s3_nopsram": {
|
||||||
"esp32-s2-kaluga-1": VARIANT_ESP32S2,
|
"name": "Adafruit QT Py ESP32-S3 No PSRAM",
|
||||||
"esp32-s2-saola-1": VARIANT_ESP32S2,
|
"variant": VARIANT_ESP32S3,
|
||||||
"esp32s3box": VARIANT_ESP32S3,
|
},
|
||||||
"esp32s3camlcd": VARIANT_ESP32S3,
|
"airm2m_core_esp32c3": {
|
||||||
"esp32-s3-devkitc-1": VARIANT_ESP32S3,
|
"name": "AirM2M CORE ESP32C3",
|
||||||
"esp32thing_plus": VARIANT_ESP32,
|
"variant": VARIANT_ESP32C3,
|
||||||
"esp32thing": VARIANT_ESP32,
|
},
|
||||||
"esp32vn-iot-uno": VARIANT_ESP32,
|
"alksesp32": {
|
||||||
"espea32": VARIANT_ESP32,
|
"name": "ALKS ESP32",
|
||||||
"espectro32": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"espino32": VARIANT_ESP32,
|
},
|
||||||
"esp-wrover-kit": VARIANT_ESP32,
|
"atmegazero_esp32s2": {
|
||||||
"etboard": VARIANT_ESP32,
|
"name": "EspinalLab ATMegaZero ESP32-S2",
|
||||||
"featheresp32-s2": VARIANT_ESP32S2,
|
"variant": VARIANT_ESP32S2,
|
||||||
"featheresp32": VARIANT_ESP32,
|
},
|
||||||
"firebeetle32": VARIANT_ESP32,
|
"az-delivery-devkit-v4": {
|
||||||
"fm-devkit": VARIANT_ESP32,
|
"name": "AZ-Delivery ESP-32 Dev Kit C V4",
|
||||||
"franzininho_wifi_esp32s2": VARIANT_ESP32S2,
|
"variant": VARIANT_ESP32,
|
||||||
"franzininho_wifi_msc_esp32s2": VARIANT_ESP32S2,
|
},
|
||||||
"frogboard": VARIANT_ESP32,
|
"bee_motion_mini": {
|
||||||
"healthypi4": VARIANT_ESP32,
|
"name": "Smart Bee Motion Mini",
|
||||||
"heltec_wifi_kit_32_v2": VARIANT_ESP32,
|
"variant": VARIANT_ESP32C3,
|
||||||
"heltec_wifi_kit_32": VARIANT_ESP32,
|
},
|
||||||
"heltec_wifi_lora_32_V2": VARIANT_ESP32,
|
"bee_motion": {
|
||||||
"heltec_wifi_lora_32": VARIANT_ESP32,
|
"name": "Smart Bee Motion",
|
||||||
"heltec_wireless_stick_lite": VARIANT_ESP32,
|
"variant": VARIANT_ESP32S2,
|
||||||
"heltec_wireless_stick": VARIANT_ESP32,
|
},
|
||||||
"honeylemon": VARIANT_ESP32,
|
"bee_motion_s3": {
|
||||||
"hornbill32dev": VARIANT_ESP32,
|
"name": "Smart Bee Motion S3",
|
||||||
"hornbill32minima": VARIANT_ESP32,
|
"variant": VARIANT_ESP32S3,
|
||||||
"imbrios-logsens-v1p1": VARIANT_ESP32,
|
},
|
||||||
"inex_openkb": VARIANT_ESP32,
|
"bee_s3": {
|
||||||
"intorobot": VARIANT_ESP32,
|
"name": "Smart Bee S3",
|
||||||
"iotaap_magnolia": VARIANT_ESP32,
|
"variant": VARIANT_ESP32S3,
|
||||||
"iotbusio": VARIANT_ESP32,
|
},
|
||||||
"iotbusproteus": VARIANT_ESP32,
|
"bpi-bit": {
|
||||||
"kb32-ft": VARIANT_ESP32,
|
"name": "BPI-Bit",
|
||||||
"kits-edu": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"labplus_mpython": VARIANT_ESP32,
|
},
|
||||||
"lionbit": VARIANT_ESP32,
|
"briki_abc_esp32": {
|
||||||
"lolin32_lite": VARIANT_ESP32,
|
"name": "Briki ABC (MBC-WB) - ESP32",
|
||||||
"lolin32": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"lolin_c3_mini": VARIANT_ESP32C3,
|
},
|
||||||
"lolin_d32_pro": VARIANT_ESP32,
|
"briki_mbc-wb_esp32": {
|
||||||
"lolin_d32": VARIANT_ESP32,
|
"name": "Briki MBC-WB - ESP32",
|
||||||
"lolin_s2_mini": VARIANT_ESP32S2,
|
"variant": VARIANT_ESP32,
|
||||||
"lolin_s2_pico": VARIANT_ESP32S2,
|
},
|
||||||
"lolin_s3": VARIANT_ESP32S3,
|
"cnrs_aw2eth": {
|
||||||
"lopy4": VARIANT_ESP32,
|
"name": "CNRS AW2ETH",
|
||||||
"lopy": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"m5stack-atom": VARIANT_ESP32,
|
},
|
||||||
"m5stack-core2": VARIANT_ESP32,
|
"connaxio_espoir": {
|
||||||
"m5stack-core-esp32": VARIANT_ESP32,
|
"name": "Connaxio's Espoir",
|
||||||
"m5stack-coreink": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"m5stack-fire": VARIANT_ESP32,
|
},
|
||||||
"m5stack-grey": VARIANT_ESP32,
|
"d-duino-32": {
|
||||||
"m5stack-station": VARIANT_ESP32,
|
"name": "D-duino-32",
|
||||||
"m5stack-timer-cam": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"m5stick-c": VARIANT_ESP32,
|
},
|
||||||
"magicbit": VARIANT_ESP32,
|
"deneyapkart1A": {
|
||||||
"mgbot-iotik32a": VARIANT_ESP32,
|
"name": "Deneyap Kart 1A",
|
||||||
"mgbot-iotik32b": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"mhetesp32devkit": VARIANT_ESP32,
|
},
|
||||||
"mhetesp32minikit": VARIANT_ESP32,
|
"deneyapkartg": {
|
||||||
"microduino-core-esp32": VARIANT_ESP32,
|
"name": "Deneyap Kart G",
|
||||||
"micros2": VARIANT_ESP32S2,
|
"variant": VARIANT_ESP32C3,
|
||||||
"minimain_esp32s2": VARIANT_ESP32S2,
|
},
|
||||||
"nano32": VARIANT_ESP32,
|
"deneyapkart": {
|
||||||
"nina_w10": VARIANT_ESP32,
|
"name": "Deneyap Kart",
|
||||||
"node32s": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"nodemcu-32s2": VARIANT_ESP32S2,
|
},
|
||||||
"nodemcu-32s": VARIANT_ESP32,
|
"deneyapmini": {
|
||||||
"nscreen-32": VARIANT_ESP32,
|
"name": "Deneyap Mini",
|
||||||
"odroid_esp32": VARIANT_ESP32,
|
"variant": VARIANT_ESP32S2,
|
||||||
"onehorse32dev": VARIANT_ESP32,
|
},
|
||||||
"oroca_edubot": VARIANT_ESP32,
|
"denky32": {
|
||||||
"pico32": VARIANT_ESP32,
|
"name": "Denky32 (WROOM32)",
|
||||||
"piranha_esp32": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"pocket_32": VARIANT_ESP32,
|
},
|
||||||
"pycom_gpy": VARIANT_ESP32,
|
"denky_d4": {
|
||||||
"qchip": VARIANT_ESP32,
|
"name": "Denky D4 (PICO-V3-02)",
|
||||||
"quantum": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"seeed_xiao_esp32c3": VARIANT_ESP32C3,
|
},
|
||||||
"sensesiot_weizen": VARIANT_ESP32,
|
"dfrobot_beetle_esp32c3": {
|
||||||
"sg-o_airMon": VARIANT_ESP32,
|
"name": "DFRobot Beetle ESP32-C3",
|
||||||
"s_odi_ultra": VARIANT_ESP32,
|
"variant": VARIANT_ESP32C3,
|
||||||
"sparkfun_esp32_iot_redboard": VARIANT_ESP32,
|
},
|
||||||
"sparkfun_esp32micromod": VARIANT_ESP32,
|
"dfrobot_firebeetle2_esp32s3": {
|
||||||
"sparkfun_esp32s2_thing_plus_c": VARIANT_ESP32,
|
"name": "DFRobot Firebeetle 2 ESP32-S3",
|
||||||
"sparkfun_esp32s2_thing_plus": VARIANT_ESP32S2,
|
"variant": VARIANT_ESP32S3,
|
||||||
"sparkfun_lora_gateway_1-channel": VARIANT_ESP32,
|
},
|
||||||
"tamc_termod_s3": VARIANT_ESP32S3,
|
"dpu_esp32": {
|
||||||
"tinypico": VARIANT_ESP32,
|
"name": "TAMC DPU ESP32",
|
||||||
"trueverit-iot-driver-mk2": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"trueverit-iot-driver-mk3": VARIANT_ESP32,
|
},
|
||||||
"trueverit-iot-driver": VARIANT_ESP32,
|
"esp320": {
|
||||||
"ttgo-lora32-v1": VARIANT_ESP32,
|
"name": "Electronic SweetPeas ESP320",
|
||||||
"ttgo-lora32-v21": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"ttgo-lora32-v2": VARIANT_ESP32,
|
},
|
||||||
"ttgo-t1": VARIANT_ESP32,
|
"esp32-c3-devkitm-1": {
|
||||||
"ttgo-t7-v13-mini32": VARIANT_ESP32,
|
"name": "Espressif ESP32-C3-DevKitM-1",
|
||||||
"ttgo-t7-v14-mini32": VARIANT_ESP32,
|
"variant": VARIANT_ESP32C3,
|
||||||
"ttgo-t-beam": VARIANT_ESP32,
|
},
|
||||||
"ttgo-t-oi-plus": VARIANT_ESP32C3,
|
"esp32cam": {
|
||||||
"ttgo-t-watch": VARIANT_ESP32,
|
"name": "AI Thinker ESP32-CAM",
|
||||||
"turta_iot_node": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"um_feathers2_neo": VARIANT_ESP32S2,
|
},
|
||||||
"um_feathers2": VARIANT_ESP32S2,
|
"esp32-devkitlipo": {
|
||||||
"um_feathers3": VARIANT_ESP32S3,
|
"name": "OLIMEX ESP32-DevKit-LiPo",
|
||||||
"um_pros3": VARIANT_ESP32S3,
|
"variant": VARIANT_ESP32,
|
||||||
"um_rmp": VARIANT_ESP32S2,
|
},
|
||||||
"um_tinys2": VARIANT_ESP32S2,
|
"esp32dev": {
|
||||||
"um_tinys3": VARIANT_ESP32S3,
|
"name": "Espressif ESP32 Dev Module",
|
||||||
"unphone7": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"unphone8": VARIANT_ESP32S3,
|
},
|
||||||
"unphone9": VARIANT_ESP32S3,
|
"esp32doit-devkit-v1": {
|
||||||
"upesy_wroom": VARIANT_ESP32,
|
"name": "DOIT ESP32 DEVKIT V1",
|
||||||
"upesy_wrover": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"vintlabs-devkit-v1": VARIANT_ESP32,
|
},
|
||||||
"watchy": VARIANT_ESP32,
|
"esp32doit-espduino": {
|
||||||
"wemosbat": VARIANT_ESP32,
|
"name": "DOIT ESPduino32",
|
||||||
"wemos_d1_mini32": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"wemos_d1_uno32": VARIANT_ESP32,
|
},
|
||||||
"wesp32": VARIANT_ESP32,
|
"esp32-evb": {
|
||||||
"widora-air": VARIANT_ESP32,
|
"name": "OLIMEX ESP32-EVB",
|
||||||
"wifiduino32c3": VARIANT_ESP32C3,
|
"variant": VARIANT_ESP32,
|
||||||
"wifiduino32s3": VARIANT_ESP32S3,
|
},
|
||||||
"wifiduino32": VARIANT_ESP32,
|
"esp32-gateway": {
|
||||||
"wipy3": VARIANT_ESP32,
|
"name": "OLIMEX ESP32-GATEWAY",
|
||||||
"wt32-eth01": VARIANT_ESP32,
|
"variant": VARIANT_ESP32,
|
||||||
"xinabox_cw02": VARIANT_ESP32,
|
},
|
||||||
|
"esp32-poe-iso": {
|
||||||
|
"name": "OLIMEX ESP32-PoE-ISO",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"esp32-poe": {
|
||||||
|
"name": "OLIMEX ESP32-PoE",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"esp32-pro": {
|
||||||
|
"name": "OLIMEX ESP32-PRO",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"esp32-s2-franzininho": {
|
||||||
|
"name": "Franzininho WiFi Board",
|
||||||
|
"variant": VARIANT_ESP32S2,
|
||||||
|
},
|
||||||
|
"esp32-s2-kaluga-1": {
|
||||||
|
"name": "Espressif ESP32-S2-Kaluga-1 Kit",
|
||||||
|
"variant": VARIANT_ESP32S2,
|
||||||
|
},
|
||||||
|
"esp32-s2-saola-1": {
|
||||||
|
"name": "Espressif ESP32-S2-Saola-1",
|
||||||
|
"variant": VARIANT_ESP32S2,
|
||||||
|
},
|
||||||
|
"esp32s3box": {
|
||||||
|
"name": "Espressif ESP32-S3-Box",
|
||||||
|
"variant": VARIANT_ESP32S3,
|
||||||
|
},
|
||||||
|
"esp32s3camlcd": {
|
||||||
|
"name": "ESP32S3 CAM LCD",
|
||||||
|
"variant": VARIANT_ESP32S3,
|
||||||
|
},
|
||||||
|
"esp32-s3-devkitc-1": {
|
||||||
|
"name": "Espressif ESP32-S3-DevKitC-1-N8 (8 MB QD, No PSRAM)",
|
||||||
|
"variant": VARIANT_ESP32S3,
|
||||||
|
},
|
||||||
|
"esp32thing": {
|
||||||
|
"name": "SparkFun ESP32 Thing",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"esp32thing_plus": {
|
||||||
|
"name": "SparkFun ESP32 Thing Plus",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"esp32vn-iot-uno": {
|
||||||
|
"name": "ESP32vn IoT Uno",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"espea32": {
|
||||||
|
"name": "April Brother ESPea32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"espectro32": {
|
||||||
|
"name": "ESPectro32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"espino32": {
|
||||||
|
"name": "ESPino32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"esp-wrover-kit": {
|
||||||
|
"name": "Espressif ESP-WROVER-KIT",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"etboard": {
|
||||||
|
"name": "ETBoard",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"featheresp32": {
|
||||||
|
"name": "Adafruit ESP32 Feather",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"featheresp32-s2": {
|
||||||
|
"name": "Adafruit ESP32-S2 Feather Development Board",
|
||||||
|
"variant": VARIANT_ESP32S2,
|
||||||
|
},
|
||||||
|
"firebeetle32": {
|
||||||
|
"name": "FireBeetle-ESP32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"fm-devkit": {
|
||||||
|
"name": "ESP32 FM DevKit",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"franzininho_wifi_esp32s2": {
|
||||||
|
"name": "Franzininho WiFi",
|
||||||
|
"variant": VARIANT_ESP32S2,
|
||||||
|
},
|
||||||
|
"franzininho_wifi_msc_esp32s2": {
|
||||||
|
"name": "Franzininho WiFi MSC",
|
||||||
|
"variant": VARIANT_ESP32S2,
|
||||||
|
},
|
||||||
|
"frogboard": {
|
||||||
|
"name": "Frog Board ESP32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"healthypi4": {
|
||||||
|
"name": "ProtoCentral HealthyPi 4",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"heltec_wifi_kit_32": {
|
||||||
|
"name": "Heltec WiFi Kit 32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"heltec_wifi_kit_32_v2": {
|
||||||
|
"name": "Heltec WiFi Kit 32 (V2)",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"heltec_wifi_lora_32": {
|
||||||
|
"name": "Heltec WiFi LoRa 32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"heltec_wifi_lora_32_V2": {
|
||||||
|
"name": "Heltec WiFi LoRa 32 (V2)",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"heltec_wireless_stick_lite": {
|
||||||
|
"name": "Heltec Wireless Stick Lite",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"heltec_wireless_stick": {
|
||||||
|
"name": "Heltec Wireless Stick",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"honeylemon": {
|
||||||
|
"name": "HONEYLemon",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"hornbill32dev": {
|
||||||
|
"name": "Hornbill ESP32 Dev",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"hornbill32minima": {
|
||||||
|
"name": "Hornbill ESP32 Minima",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"imbrios-logsens-v1p1": {
|
||||||
|
"name": "Imbrios LogSens V1P1",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"inex_openkb": {
|
||||||
|
"name": "INEX OpenKB",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"intorobot": {
|
||||||
|
"name": "IntoRobot Fig",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"iotaap_magnolia": {
|
||||||
|
"name": "IoTaaP Magnolia",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"iotbusio": {
|
||||||
|
"name": "oddWires IoT-Bus Io",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"iotbusproteus": {
|
||||||
|
"name": "oddWires IoT-Bus Proteus",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"kb32-ft": {
|
||||||
|
"name": "MakerAsia KB32-FT",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"kits-edu": {
|
||||||
|
"name": "KITS ESP32 EDU",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"labplus_mpython": {
|
||||||
|
"name": "Labplus mPython",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"lionbit": {
|
||||||
|
"name": "Lion:Bit Dev Board",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"lolin32_lite": {
|
||||||
|
"name": "WEMOS LOLIN32 Lite",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"lolin32": {
|
||||||
|
"name": "WEMOS LOLIN32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"lolin_c3_mini": {
|
||||||
|
"name": "WEMOS LOLIN C3 Mini",
|
||||||
|
"variant": VARIANT_ESP32C3,
|
||||||
|
},
|
||||||
|
"lolin_d32": {
|
||||||
|
"name": "WEMOS LOLIN D32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"lolin_d32_pro": {
|
||||||
|
"name": "WEMOS LOLIN D32 PRO",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"lolin_s2_mini": {
|
||||||
|
"name": "WEMOS LOLIN S2 Mini",
|
||||||
|
"variant": VARIANT_ESP32S2,
|
||||||
|
},
|
||||||
|
"lolin_s2_pico": {
|
||||||
|
"name": "WEMOS LOLIN S2 PICO",
|
||||||
|
"variant": VARIANT_ESP32S2,
|
||||||
|
},
|
||||||
|
"lolin_s3": {
|
||||||
|
"name": "WEMOS LOLIN S3",
|
||||||
|
"variant": VARIANT_ESP32S3,
|
||||||
|
},
|
||||||
|
"lopy4": {
|
||||||
|
"name": "Pycom LoPy4",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"lopy": {
|
||||||
|
"name": "Pycom LoPy",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"m5stack-atom": {
|
||||||
|
"name": "M5Stack-ATOM",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"m5stack-core2": {
|
||||||
|
"name": "M5Stack Core2",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"m5stack-core-esp32": {
|
||||||
|
"name": "M5Stack Core ESP32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"m5stack-coreink": {
|
||||||
|
"name": "M5Stack-Core Ink",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"m5stack-fire": {
|
||||||
|
"name": "M5Stack FIRE",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"m5stack-grey": {
|
||||||
|
"name": "M5Stack GREY ESP32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"m5stack-station": {
|
||||||
|
"name": "M5Stack Station",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"m5stack-timer-cam": {
|
||||||
|
"name": "M5Stack Timer CAM",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"m5stick-c": {
|
||||||
|
"name": "M5Stick-C",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"magicbit": {
|
||||||
|
"name": "MagicBit",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"mgbot-iotik32a": {
|
||||||
|
"name": "MGBOT IOTIK 32A",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"mgbot-iotik32b": {
|
||||||
|
"name": "MGBOT IOTIK 32B",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"mhetesp32devkit": {
|
||||||
|
"name": "MH ET LIVE ESP32DevKIT",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"mhetesp32minikit": {
|
||||||
|
"name": "MH ET LIVE ESP32MiniKit",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"microduino-core-esp32": {
|
||||||
|
"name": "Microduino Core ESP32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"micros2": {
|
||||||
|
"name": "microS2",
|
||||||
|
"variant": VARIANT_ESP32S2,
|
||||||
|
},
|
||||||
|
"minimain_esp32s2": {
|
||||||
|
"name": "Deparment of Alchemy MiniMain ESP32-S2",
|
||||||
|
"variant": VARIANT_ESP32S2,
|
||||||
|
},
|
||||||
|
"nano32": {
|
||||||
|
"name": "MakerAsia Nano32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"nina_w10": {
|
||||||
|
"name": "u-blox NINA-W10 series",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"node32s": {
|
||||||
|
"name": "Node32s",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"nodemcu-32s2": {
|
||||||
|
"name": "Ai-Thinker NodeMCU-32S2 (ESP-12K)",
|
||||||
|
"variant": VARIANT_ESP32S2,
|
||||||
|
},
|
||||||
|
"nodemcu-32s": {
|
||||||
|
"name": "NodeMCU-32S",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"nscreen-32": {
|
||||||
|
"name": "YeaCreate NSCREEN-32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"odroid_esp32": {
|
||||||
|
"name": "ODROID-GO",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"onehorse32dev": {
|
||||||
|
"name": "Onehorse ESP32 Dev Module",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"oroca_edubot": {
|
||||||
|
"name": "OROCA EduBot",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"pico32": {
|
||||||
|
"name": "ESP32 Pico Kit",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"piranha_esp32": {
|
||||||
|
"name": "Fishino Piranha ESP-32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"pocket_32": {
|
||||||
|
"name": "Dongsen Tech Pocket 32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"pycom_gpy": {
|
||||||
|
"name": "Pycom GPy",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"qchip": {
|
||||||
|
"name": "Qchip",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"quantum": {
|
||||||
|
"name": "Noduino Quantum",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"seeed_xiao_esp32c3": {
|
||||||
|
"name": "Seeed Studio XIAO ESP32C3",
|
||||||
|
"variant": VARIANT_ESP32C3,
|
||||||
|
},
|
||||||
|
"sensesiot_weizen": {
|
||||||
|
"name": "LOGISENSES Senses Weizen",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"sg-o_airMon": {
|
||||||
|
"name": "SG-O AirMon",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"s_odi_ultra": {
|
||||||
|
"name": "S.ODI Ultra v1",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"sparkfun_esp32_iot_redboard": {
|
||||||
|
"name": "SparkFun ESP32 IoT RedBoard",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"sparkfun_esp32micromod": {
|
||||||
|
"name": "SparkFun ESP32 MicroMod",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"sparkfun_esp32s2_thing_plus_c": {
|
||||||
|
"name": "SparkFun ESP32 Thing Plus C",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"sparkfun_esp32s2_thing_plus": {
|
||||||
|
"name": "SparkFun ESP32-S2 Thing Plus",
|
||||||
|
"variant": VARIANT_ESP32S2,
|
||||||
|
},
|
||||||
|
"sparkfun_lora_gateway_1-channel": {
|
||||||
|
"name": "SparkFun LoRa Gateway 1-Channel",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"tamc_termod_s3": {
|
||||||
|
"name": "TAMC Termod S3",
|
||||||
|
"variant": VARIANT_ESP32S3,
|
||||||
|
},
|
||||||
|
"tinypico": {
|
||||||
|
"name": "Unexpected Maker TinyPICO",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"trueverit-iot-driver-mk2": {
|
||||||
|
"name": "Trueverit ESP32 Universal IoT Driver MK II",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"trueverit-iot-driver-mk3": {
|
||||||
|
"name": "Trueverit ESP32 Universal IoT Driver MK III",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"trueverit-iot-driver": {
|
||||||
|
"name": "Trueverit ESP32 Universal IoT Driver",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"ttgo-lora32-v1": {
|
||||||
|
"name": "TTGO LoRa32-OLED V1",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"ttgo-lora32-v21": {
|
||||||
|
"name": "TTGO LoRa32-OLED v2.1.6",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"ttgo-lora32-v2": {
|
||||||
|
"name": "TTGO LoRa32-OLED V2",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"ttgo-t1": {
|
||||||
|
"name": "TTGO T1",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"ttgo-t7-v13-mini32": {
|
||||||
|
"name": "TTGO T7 V1.3 Mini32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"ttgo-t7-v14-mini32": {
|
||||||
|
"name": "TTGO T7 V1.4 Mini32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"ttgo-t-beam": {
|
||||||
|
"name": "TTGO T-Beam",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"ttgo-t-oi-plus": {
|
||||||
|
"name": "TTGO T-OI PLUS RISC-V ESP32-C3",
|
||||||
|
"variant": VARIANT_ESP32C3,
|
||||||
|
},
|
||||||
|
"ttgo-t-watch": {
|
||||||
|
"name": "TTGO T-Watch",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"turta_iot_node": {
|
||||||
|
"name": "Turta IoT Node",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"um_feathers2": {
|
||||||
|
"name": "Unexpected Maker FeatherS2",
|
||||||
|
"variant": VARIANT_ESP32S2,
|
||||||
|
},
|
||||||
|
"um_feathers2_neo": {
|
||||||
|
"name": "Unexpected Maker FeatherS2 Neo",
|
||||||
|
"variant": VARIANT_ESP32S2,
|
||||||
|
},
|
||||||
|
"um_feathers3": {
|
||||||
|
"name": "Unexpected Maker FeatherS3",
|
||||||
|
"variant": VARIANT_ESP32S3,
|
||||||
|
},
|
||||||
|
"um_pros3": {
|
||||||
|
"name": "Unexpected Maker PROS3",
|
||||||
|
"variant": VARIANT_ESP32S3,
|
||||||
|
},
|
||||||
|
"um_rmp": {
|
||||||
|
"name": "Unexpected Maker RMP",
|
||||||
|
"variant": VARIANT_ESP32S2,
|
||||||
|
},
|
||||||
|
"um_tinys2": {
|
||||||
|
"name": "Unexpected Maker TinyS2",
|
||||||
|
"variant": VARIANT_ESP32S2,
|
||||||
|
},
|
||||||
|
"um_tinys3": {
|
||||||
|
"name": "Unexpected Maker TinyS3",
|
||||||
|
"variant": VARIANT_ESP32S3,
|
||||||
|
},
|
||||||
|
"unphone7": {
|
||||||
|
"name": "unPhone 7",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"unphone8": {
|
||||||
|
"name": "unPhone 8",
|
||||||
|
"variant": VARIANT_ESP32S3,
|
||||||
|
},
|
||||||
|
"unphone9": {
|
||||||
|
"name": "unPhone 9",
|
||||||
|
"variant": VARIANT_ESP32S3,
|
||||||
|
},
|
||||||
|
"upesy_wroom": {
|
||||||
|
"name": "uPesy ESP32 Wroom DevKit",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"upesy_wrover": {
|
||||||
|
"name": "uPesy ESP32 Wrover DevKit",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"vintlabs-devkit-v1": {
|
||||||
|
"name": "VintLabs ESP32 Devkit",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"watchy": {
|
||||||
|
"name": "SQFMI Watchy v2.0",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"wemosbat": {
|
||||||
|
"name": "WeMos WiFi and Bluetooth Battery",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"wemos_d1_mini32": {
|
||||||
|
"name": "WEMOS D1 MINI ESP32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"wemos_d1_uno32": {
|
||||||
|
"name": "WEMOS D1 R32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"wesp32": {
|
||||||
|
"name": "Silicognition wESP32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"widora-air": {
|
||||||
|
"name": "Widora AIR",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"wifiduino32c3": {
|
||||||
|
"name": "Blinker WiFiduinoV2 (ESP32-C3)",
|
||||||
|
"variant": VARIANT_ESP32C3,
|
||||||
|
},
|
||||||
|
"wifiduino32": {
|
||||||
|
"name": "Blinker WiFiduino32",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"wifiduino32s3": {
|
||||||
|
"name": "Blinker WiFiduino32S3",
|
||||||
|
"variant": VARIANT_ESP32S3,
|
||||||
|
},
|
||||||
|
"wipy3": {
|
||||||
|
"name": "Pycom WiPy3",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"wt32-eth01": {
|
||||||
|
"name": "Wireless-Tag WT32-ETH01 Ethernet Module",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
|
"xinabox_cw02": {
|
||||||
|
"name": "XinaBox CW02",
|
||||||
|
"variant": VARIANT_ESP32,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,10 +22,11 @@ from .const import (
|
||||||
CONF_EARLY_PIN_INIT,
|
CONF_EARLY_PIN_INIT,
|
||||||
KEY_BOARD,
|
KEY_BOARD,
|
||||||
KEY_ESP8266,
|
KEY_ESP8266,
|
||||||
|
KEY_FLASH_SIZE,
|
||||||
KEY_PIN_INITIAL_STATES,
|
KEY_PIN_INITIAL_STATES,
|
||||||
esp8266_ns,
|
esp8266_ns,
|
||||||
)
|
)
|
||||||
from .boards import ESP8266_FLASH_SIZES, ESP8266_LD_SCRIPTS
|
from .boards import BOARDS, ESP8266_LD_SCRIPTS
|
||||||
|
|
||||||
from .gpio import PinInitialState, add_pin_initial_states_array
|
from .gpio import PinInitialState, add_pin_initial_states_array
|
||||||
|
|
||||||
|
@ -218,8 +219,8 @@ async def to_code(config):
|
||||||
cg.RawExpression(f"VERSION_CODE({ver.major}, {ver.minor}, {ver.patch})"),
|
cg.RawExpression(f"VERSION_CODE({ver.major}, {ver.minor}, {ver.patch})"),
|
||||||
)
|
)
|
||||||
|
|
||||||
if config[CONF_BOARD] in ESP8266_FLASH_SIZES:
|
if config[CONF_BOARD] in BOARDS:
|
||||||
flash_size = ESP8266_FLASH_SIZES[config[CONF_BOARD]]
|
flash_size = BOARDS[config[CONF_BOARD]][KEY_FLASH_SIZE]
|
||||||
ld_scripts = ESP8266_LD_SCRIPTS[flash_size]
|
ld_scripts = ESP8266_LD_SCRIPTS[flash_size]
|
||||||
|
|
||||||
if ver <= cv.Version(2, 3, 0):
|
if ver <= cv.Version(2, 3, 0):
|
||||||
|
|
|
@ -4,50 +4,6 @@ FLASH_SIZE_2_MB = 2 * FLASH_SIZE_1_MB
|
||||||
FLASH_SIZE_4_MB = 4 * FLASH_SIZE_1_MB
|
FLASH_SIZE_4_MB = 4 * FLASH_SIZE_1_MB
|
||||||
FLASH_SIZE_16_MB = 16 * FLASH_SIZE_1_MB
|
FLASH_SIZE_16_MB = 16 * FLASH_SIZE_1_MB
|
||||||
|
|
||||||
ESP8266_FLASH_SIZES = {
|
|
||||||
"d1": FLASH_SIZE_4_MB,
|
|
||||||
"d1_mini": FLASH_SIZE_4_MB,
|
|
||||||
"d1_mini_lite": FLASH_SIZE_1_MB,
|
|
||||||
"d1_mini_pro": FLASH_SIZE_16_MB,
|
|
||||||
"esp01": FLASH_SIZE_512_KB,
|
|
||||||
"esp01_1m": FLASH_SIZE_1_MB,
|
|
||||||
"esp07": FLASH_SIZE_4_MB,
|
|
||||||
"esp12e": FLASH_SIZE_4_MB,
|
|
||||||
"esp210": FLASH_SIZE_4_MB,
|
|
||||||
"esp8285": FLASH_SIZE_1_MB,
|
|
||||||
"esp_wroom_02": FLASH_SIZE_2_MB,
|
|
||||||
"espduino": FLASH_SIZE_4_MB,
|
|
||||||
"espectro": FLASH_SIZE_4_MB,
|
|
||||||
"espino": FLASH_SIZE_4_MB,
|
|
||||||
"espinotee": FLASH_SIZE_4_MB,
|
|
||||||
"espmxdevkit": FLASH_SIZE_1_MB,
|
|
||||||
"espresso_lite_v1": FLASH_SIZE_4_MB,
|
|
||||||
"espresso_lite_v2": FLASH_SIZE_4_MB,
|
|
||||||
"gen4iod": FLASH_SIZE_512_KB,
|
|
||||||
"heltec_wifi_kit_8": FLASH_SIZE_4_MB,
|
|
||||||
"huzzah": FLASH_SIZE_4_MB,
|
|
||||||
"inventone": FLASH_SIZE_4_MB,
|
|
||||||
"modwifi": FLASH_SIZE_2_MB,
|
|
||||||
"nodemcu": FLASH_SIZE_4_MB,
|
|
||||||
"nodemcuv2": FLASH_SIZE_4_MB,
|
|
||||||
"oak": FLASH_SIZE_4_MB,
|
|
||||||
"phoenix_v1": FLASH_SIZE_4_MB,
|
|
||||||
"phoenix_v2": FLASH_SIZE_4_MB,
|
|
||||||
"sonoff_basic": FLASH_SIZE_1_MB,
|
|
||||||
"sonoff_s20": FLASH_SIZE_1_MB,
|
|
||||||
"sonoff_sv": FLASH_SIZE_1_MB,
|
|
||||||
"sonoff_th": FLASH_SIZE_1_MB,
|
|
||||||
"sparkfunBlynk": FLASH_SIZE_4_MB,
|
|
||||||
"thing": FLASH_SIZE_512_KB,
|
|
||||||
"thingdev": FLASH_SIZE_512_KB,
|
|
||||||
"wifi_slot": FLASH_SIZE_1_MB,
|
|
||||||
"wifiduino": FLASH_SIZE_4_MB,
|
|
||||||
"wifinfo": FLASH_SIZE_1_MB,
|
|
||||||
"wio_link": FLASH_SIZE_4_MB,
|
|
||||||
"wio_node": FLASH_SIZE_4_MB,
|
|
||||||
"xinabox_cw01": FLASH_SIZE_4_MB,
|
|
||||||
}
|
|
||||||
|
|
||||||
ESP8266_LD_SCRIPTS = {
|
ESP8266_LD_SCRIPTS = {
|
||||||
FLASH_SIZE_512_KB: ("eagle.flash.512k0.ld", "eagle.flash.512k.ld"),
|
FLASH_SIZE_512_KB: ("eagle.flash.512k0.ld", "eagle.flash.512k.ld"),
|
||||||
FLASH_SIZE_1_MB: ("eagle.flash.1m0.ld", "eagle.flash.1m.ld"),
|
FLASH_SIZE_1_MB: ("eagle.flash.1m0.ld", "eagle.flash.1m.ld"),
|
||||||
|
@ -206,3 +162,201 @@ ESP8266_BOARD_PINS = {
|
||||||
"wio_node": {"LED": 2, "GROVE": 15, "D0": 3, "D1": 5, "BUTTON": 0},
|
"wio_node": {"LED": 2, "GROVE": 15, "D0": 3, "D1": 5, "BUTTON": 0},
|
||||||
"xinabox_cw01": {"SDA": 2, "SCL": 14, "LED": 5, "LED_RED": 12, "LED_GREEN": 13},
|
"xinabox_cw01": {"SDA": 2, "SCL": 14, "LED": 5, "LED_RED": 12, "LED_GREEN": 13},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"""
|
||||||
|
BOARDS generate with:
|
||||||
|
|
||||||
|
git clone https://github.com/platformio/platform-espressif8266
|
||||||
|
for x in platform-espressif8266/boards/*.json; do
|
||||||
|
max_size=$(jq -r .upload.maximum_size <"$x")
|
||||||
|
name=$(jq -r .name <"$x")
|
||||||
|
fname=$(basename "$x")
|
||||||
|
board="${fname%.*}"
|
||||||
|
size_mb=$((max_size / (1024 * 1024)))
|
||||||
|
if [[ $size_mb -gt 0 ]]; then
|
||||||
|
size="${size_mb}_MB"
|
||||||
|
else
|
||||||
|
size="${$((max_size / 1024))}_KB"
|
||||||
|
fi
|
||||||
|
echo " \"$board\": {\"name\": \"$name\", \"flash_size\": FLASH_SIZE_$size,},"
|
||||||
|
done | sort
|
||||||
|
"""
|
||||||
|
|
||||||
|
BOARDS = {
|
||||||
|
"agruminolemon": {
|
||||||
|
"name": "Lifely Agrumino Lemon v4",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"d1_mini_lite": {
|
||||||
|
"name": "WeMos D1 mini Lite",
|
||||||
|
"flash_size": FLASH_SIZE_1_MB,
|
||||||
|
},
|
||||||
|
"d1_mini": {
|
||||||
|
"name": "WeMos D1 R2 and mini",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"d1_mini_pro": {
|
||||||
|
"name": "WeMos D1 mini Pro",
|
||||||
|
"flash_size": FLASH_SIZE_16_MB,
|
||||||
|
},
|
||||||
|
"d1": {
|
||||||
|
"name": "WEMOS D1 R1",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"eduinowifi": {
|
||||||
|
"name": "Schirmilabs Eduino WiFi",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"esp01_1m": {
|
||||||
|
"name": "Espressif Generic ESP8266 ESP-01 1M",
|
||||||
|
"flash_size": FLASH_SIZE_1_MB,
|
||||||
|
},
|
||||||
|
"esp01": {
|
||||||
|
"name": "Espressif Generic ESP8266 ESP-01 512k",
|
||||||
|
"flash_size": FLASH_SIZE_512_KB,
|
||||||
|
},
|
||||||
|
"esp07": {
|
||||||
|
"name": "Espressif Generic ESP8266 ESP-07 1MB",
|
||||||
|
"flash_size": FLASH_SIZE_1_MB,
|
||||||
|
},
|
||||||
|
"esp07s": {
|
||||||
|
"name": "Espressif Generic ESP8266 ESP-07S",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"esp12e": {
|
||||||
|
"name": "Espressif ESP8266 ESP-12E",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"esp210": {
|
||||||
|
"name": "SweetPea ESP-210",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"esp8285": {
|
||||||
|
"name": "Generic ESP8285 Module",
|
||||||
|
"flash_size": FLASH_SIZE_1_MB,
|
||||||
|
},
|
||||||
|
"espduino": {
|
||||||
|
"name": "ESPDuino (ESP-13 Module)",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"espectro": {
|
||||||
|
"name": "ESPectro Core",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"espino": {
|
||||||
|
"name": "ESPino",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"espinotee": {
|
||||||
|
"name": "ThaiEasyElec ESPino",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"espmxdevkit": {
|
||||||
|
"name": "ESP-Mx DevKit (ESP8285)",
|
||||||
|
"flash_size": FLASH_SIZE_1_MB,
|
||||||
|
},
|
||||||
|
"espresso_lite_v1": {
|
||||||
|
"name": "ESPresso Lite 1.0",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"espresso_lite_v2": {
|
||||||
|
"name": "ESPresso Lite 2.0",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"esp_wroom_02": {
|
||||||
|
"name": "ESP-WROOM-02",
|
||||||
|
"flash_size": FLASH_SIZE_2_MB,
|
||||||
|
},
|
||||||
|
"gen4iod": {
|
||||||
|
"name": "4D Systems gen4 IoD Range",
|
||||||
|
"flash_size": FLASH_SIZE_512_KB,
|
||||||
|
},
|
||||||
|
"heltec_wifi_kit_8": {
|
||||||
|
"name": "Heltec Wifi kit 8",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"huzzah": {
|
||||||
|
"name": "Adafruit HUZZAH ESP8266",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"inventone": {
|
||||||
|
"name": "Invent One",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"modwifi": {
|
||||||
|
"name": "Olimex MOD-WIFI-ESP8266(-DEV)",
|
||||||
|
"flash_size": FLASH_SIZE_2_MB,
|
||||||
|
},
|
||||||
|
"nodemcu": {
|
||||||
|
"name": "NodeMCU 0.9 (ESP-12 Module)",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"nodemcuv2": {
|
||||||
|
"name": "NodeMCU 1.0 (ESP-12E Module)",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"oak": {
|
||||||
|
"name": "DigiStump Oak",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"phoenix_v1": {
|
||||||
|
"name": "Phoenix 1.0",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"phoenix_v2": {
|
||||||
|
"name": "Phoenix 2.0",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"sonoff_basic": {
|
||||||
|
"name": "Sonoff Basic",
|
||||||
|
"flash_size": FLASH_SIZE_1_MB,
|
||||||
|
},
|
||||||
|
"sonoff_s20": {
|
||||||
|
"name": "Sonoff S20",
|
||||||
|
"flash_size": FLASH_SIZE_1_MB,
|
||||||
|
},
|
||||||
|
"sonoff_sv": {
|
||||||
|
"name": "Sonoff SV",
|
||||||
|
"flash_size": FLASH_SIZE_1_MB,
|
||||||
|
},
|
||||||
|
"sonoff_th": {
|
||||||
|
"name": "Sonoff TH",
|
||||||
|
"flash_size": FLASH_SIZE_1_MB,
|
||||||
|
},
|
||||||
|
"sparkfunBlynk": {
|
||||||
|
"name": "SparkFun Blynk Board",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"thingdev": {
|
||||||
|
"name": "SparkFun ESP8266 Thing Dev",
|
||||||
|
"flash_size": FLASH_SIZE_512_KB,
|
||||||
|
},
|
||||||
|
"thing": {
|
||||||
|
"name": "SparkFun ESP8266 Thing",
|
||||||
|
"flash_size": FLASH_SIZE_512_KB,
|
||||||
|
},
|
||||||
|
"wifiduino": {
|
||||||
|
"name": "WiFiduino",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"wifinfo": {
|
||||||
|
"name": "WifInfo",
|
||||||
|
"flash_size": FLASH_SIZE_1_MB,
|
||||||
|
},
|
||||||
|
"wifi_slot": {
|
||||||
|
"name": "WiFi Slot",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"wio_link": {
|
||||||
|
"name": "Wio Link",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"wio_node": {
|
||||||
|
"name": "Wio Node",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
"xinabox_cw01": {
|
||||||
|
"name": "XinaBox CW01",
|
||||||
|
"flash_size": FLASH_SIZE_4_MB,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ KEY_BOARD = "board"
|
||||||
KEY_PIN_INITIAL_STATES = "pin_initial_states"
|
KEY_PIN_INITIAL_STATES = "pin_initial_states"
|
||||||
CONF_RESTORE_FROM_FLASH = "restore_from_flash"
|
CONF_RESTORE_FROM_FLASH = "restore_from_flash"
|
||||||
CONF_EARLY_PIN_INIT = "early_pin_init"
|
CONF_EARLY_PIN_INIT = "early_pin_init"
|
||||||
|
KEY_FLASH_SIZE = "flash_size"
|
||||||
|
|
||||||
# esp8266 namespace is already defined by arduino, manually prefix esphome
|
# esp8266 namespace is already defined by arduino, manually prefix esphome
|
||||||
esp8266_ns = cg.global_ns.namespace("esphome").namespace("esp8266")
|
esp8266_ns = cg.global_ns.namespace("esphome").namespace("esp8266")
|
||||||
|
|
|
@ -17,3 +17,12 @@ RP2040_BOARD_PINS = {
|
||||||
"SCL1": 27,
|
"SCL1": 27,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOARDS = {
|
||||||
|
"rpipico": {
|
||||||
|
"name": "Raspberry Pi Pico",
|
||||||
|
},
|
||||||
|
"rpipicow": {
|
||||||
|
"name": "Raspberry Pi Pico W",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
|
@ -992,6 +992,7 @@ KEY_CORE = "core"
|
||||||
KEY_TARGET_PLATFORM = "target_platform"
|
KEY_TARGET_PLATFORM = "target_platform"
|
||||||
KEY_TARGET_FRAMEWORK = "target_framework"
|
KEY_TARGET_FRAMEWORK = "target_framework"
|
||||||
KEY_FRAMEWORK_VERSION = "framework_version"
|
KEY_FRAMEWORK_VERSION = "framework_version"
|
||||||
|
KEY_NAME = "name"
|
||||||
|
|
||||||
# Entity categories
|
# Entity categories
|
||||||
ENTITY_CATEGORY_NONE = ""
|
ENTITY_CATEGORY_NONE = ""
|
||||||
|
|
|
@ -693,6 +693,24 @@ class PrometheusServiceDiscoveryHandler(BaseHandler):
|
||||||
self.write(json.dumps(sd))
|
self.write(json.dumps(sd))
|
||||||
|
|
||||||
|
|
||||||
|
class BoardsRequestHandler(BaseHandler):
|
||||||
|
@authenticated
|
||||||
|
def get(self):
|
||||||
|
from esphome.components.esp32.boards import BOARDS as ESP32_BOARDS
|
||||||
|
from esphome.components.esp8266.boards import BOARDS as ESP8266_BOARDS
|
||||||
|
from esphome.components.rp2040.boards import BOARDS as RP2040_BOARDS
|
||||||
|
|
||||||
|
boards = {
|
||||||
|
"esp32": {key: val[const.KEY_NAME] for key, val in ESP32_BOARDS.items()},
|
||||||
|
"esp8266": {
|
||||||
|
key: val[const.KEY_NAME] for key, val in ESP8266_BOARDS.items()
|
||||||
|
},
|
||||||
|
"rp2040": {key: val[const.KEY_NAME] for key, val in RP2040_BOARDS.items()},
|
||||||
|
}
|
||||||
|
self.set_header("content-type", "application/json")
|
||||||
|
self.write(json.dumps(boards))
|
||||||
|
|
||||||
|
|
||||||
class MDNSStatusThread(threading.Thread):
|
class MDNSStatusThread(threading.Thread):
|
||||||
def run(self):
|
def run(self):
|
||||||
global IMPORT_RESULT
|
global IMPORT_RESULT
|
||||||
|
@ -1063,6 +1081,7 @@ def make_app(debug=get_bool_env(ENV_DEV)):
|
||||||
(f"{rel}json-config", JsonConfigRequestHandler),
|
(f"{rel}json-config", JsonConfigRequestHandler),
|
||||||
(f"{rel}rename", EsphomeRenameHandler),
|
(f"{rel}rename", EsphomeRenameHandler),
|
||||||
(f"{rel}prometheus-sd", PrometheusServiceDiscoveryHandler),
|
(f"{rel}prometheus-sd", PrometheusServiceDiscoveryHandler),
|
||||||
|
(f"{rel}boards", BoardsRequestHandler),
|
||||||
],
|
],
|
||||||
**app_settings,
|
**app_settings,
|
||||||
)
|
)
|
||||||
|
|
|
@ -245,7 +245,7 @@ def do_esp32():
|
||||||
|
|
||||||
setEnum(
|
setEnum(
|
||||||
output["esp32"]["schemas"]["CONFIG_SCHEMA"]["schema"]["config_vars"]["board"],
|
output["esp32"]["schemas"]["CONFIG_SCHEMA"]["schema"]["config_vars"]["board"],
|
||||||
list(esp32_boards.BOARD_TO_VARIANT.keys()),
|
list(esp32_boards.BOARDS.keys()),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue