Merge pull request #5750 from esphome/bump-2023.11.0b6

2023.11.0b6
This commit is contained in:
Jesse Hills 2023-11-14 16:16:11 +13:00 committed by GitHub
commit 2a20a5fc11
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 63 additions and 25 deletions

View file

@ -386,10 +386,21 @@ FRAMEWORK_SCHEMA = cv.typed_schema(
) )
FLASH_SIZES = [
"4MB",
"8MB",
"16MB",
"32MB",
]
CONF_FLASH_SIZE = "flash_size"
CONFIG_SCHEMA = cv.All( CONFIG_SCHEMA = cv.All(
cv.Schema( cv.Schema(
{ {
cv.Required(CONF_BOARD): cv.string_strict, cv.Required(CONF_BOARD): cv.string_strict,
cv.Optional(CONF_FLASH_SIZE, default="4MB"): cv.one_of(
*FLASH_SIZES, upper=True
),
cv.Optional(CONF_VARIANT): cv.one_of(*VARIANTS, upper=True), cv.Optional(CONF_VARIANT): cv.one_of(*VARIANTS, upper=True),
cv.Optional(CONF_FRAMEWORK, default={}): FRAMEWORK_SCHEMA, cv.Optional(CONF_FRAMEWORK, default={}): FRAMEWORK_SCHEMA,
} }
@ -401,6 +412,7 @@ CONFIG_SCHEMA = cv.All(
async def to_code(config): async def to_code(config):
cg.add_platformio_option("board", config[CONF_BOARD]) cg.add_platformio_option("board", config[CONF_BOARD])
cg.add_platformio_option("board_upload.flash_size", config[CONF_FLASH_SIZE])
cg.add_build_flag("-DUSE_ESP32") cg.add_build_flag("-DUSE_ESP32")
cg.add_define("ESPHOME_BOARD", config[CONF_BOARD]) cg.add_define("ESPHOME_BOARD", config[CONF_BOARD])
cg.add_build_flag(f"-DUSE_ESP32_VARIANT_{config[CONF_VARIANT]}") cg.add_build_flag(f"-DUSE_ESP32_VARIANT_{config[CONF_VARIANT]}")
@ -505,24 +517,46 @@ async def to_code(config):
) )
ARDUINO_PARTITIONS_CSV = """\ APP_PARTITION_SIZES = {
nvs, data, nvs, 0x009000, 0x005000, "4MB": 0x1C0000, # 1792 KB
otadata, data, ota, 0x00e000, 0x002000, "8MB": 0x3C0000, # 3840 KB
app0, app, ota_0, 0x010000, 0x1C0000, "16MB": 0x7C0000, # 7936 KB
app1, app, ota_1, 0x1D0000, 0x1C0000, "32MB": 0xFC0000, # 16128 KB
eeprom, data, 0x99, 0x390000, 0x001000, }
spiffs, data, spiffs, 0x391000, 0x00F000
def get_arduino_partition_csv(flash_size):
app_partition_size = APP_PARTITION_SIZES[flash_size]
eeprom_partition_size = 0x1000 # 4 KB
spiffs_partition_size = 0xF000 # 60 KB
app0_partition_start = 0x010000 # 64 KB
app1_partition_start = app0_partition_start + app_partition_size
eeprom_partition_start = app1_partition_start + app_partition_size
spiffs_partition_start = eeprom_partition_start + eeprom_partition_size
partition_csv = f"""\
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xE000, 0x2000,
app0, app, ota_0, 0x{app0_partition_start:X}, 0x{app_partition_size:X},
app1, app, ota_1, 0x{app1_partition_start:X}, 0x{app_partition_size:X},
eeprom, data, 0x99, 0x{eeprom_partition_start:X}, 0x{eeprom_partition_size:X},
spiffs, data, spiffs, 0x{spiffs_partition_start:X}, 0x{spiffs_partition_size:X}
""" """
return partition_csv
IDF_PARTITIONS_CSV = """\ def get_idf_partition_csv(flash_size):
# Name, Type, SubType, Offset, Size, Flags app_partition_size = APP_PARTITION_SIZES[flash_size]
partition_csv = f"""\
otadata, data, ota, , 0x2000, otadata, data, ota, , 0x2000,
phy_init, data, phy, , 0x1000, phy_init, data, phy, , 0x1000,
app0, app, ota_0, , 0x1C0000, app0, app, ota_0, , 0x{app_partition_size:X},
app1, app, ota_1, , 0x1C0000, app1, app, ota_1, , 0x{app_partition_size:X},
nvs, data, nvs, , 0x6d000, nvs, data, nvs, , 0x6D000,
""" """
return partition_csv
def _format_sdkconfig_val(value: SdkconfigValueType) -> str: def _format_sdkconfig_val(value: SdkconfigValueType) -> str:
@ -565,13 +599,17 @@ def copy_files():
if CORE.using_arduino: if CORE.using_arduino:
write_file_if_changed( write_file_if_changed(
CORE.relative_build_path("partitions.csv"), CORE.relative_build_path("partitions.csv"),
ARDUINO_PARTITIONS_CSV, get_arduino_partition_csv(
CORE.platformio_options.get("board_upload.flash_size")
),
) )
if CORE.using_esp_idf: if CORE.using_esp_idf:
_write_sdkconfig() _write_sdkconfig()
write_file_if_changed( write_file_if_changed(
CORE.relative_build_path("partitions.csv"), CORE.relative_build_path("partitions.csv"),
IDF_PARTITIONS_CSV, get_idf_partition_csv(
CORE.platformio_options.get("board_upload.flash_size")
),
) )
# IDF build scripts look for version string to put in the build. # IDF build scripts look for version string to put in the build.
# However, if the build path does not have an initialized git repo, # However, if the build path does not have an initialized git repo,

View file

@ -1,6 +1,6 @@
"""Constants used by esphome.""" """Constants used by esphome."""
__version__ = "2023.11.0b5" __version__ = "2023.11.0b6"
ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_" ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
VALID_SUBSTITUTIONS_CHARACTERS = ( VALID_SUBSTITUTIONS_CHARACTERS = (

View file

@ -1,8 +1,8 @@
from __future__ import annotations from __future__ import annotations
import asyncio
import base64 import base64
import binascii import binascii
import codecs
import collections import collections
import datetime import datetime
import functools import functools
@ -339,8 +339,8 @@ class EsphomeCommandWebSocket(tornado.websocket.WebSocketHandler):
def handle_stdin(self, json_message): def handle_stdin(self, json_message):
if not self.is_process_active: if not self.is_process_active:
return return
data = json_message["data"] text: str = json_message["data"]
data = codecs.encode(data, "utf8", "replace") data = text.encode("utf-8", "replace")
_LOGGER.debug("< stdin: %s", data) _LOGGER.debug("< stdin: %s", data)
self._proc.stdin.write(data) self._proc.stdin.write(data)
@ -351,18 +351,18 @@ class EsphomeCommandWebSocket(tornado.websocket.WebSocketHandler):
while True: while True:
try: try:
if self._use_popen: if self._use_popen:
data = yield self._queue.get() data: bytes = yield self._queue.get()
if data is None: if data is None:
self._proc_on_exit(self._proc.poll()) self._proc_on_exit(self._proc.poll())
break break
else: else:
data = yield self._proc.stdout.read_until_regex(reg) data: bytes = yield self._proc.stdout.read_until_regex(reg)
except tornado.iostream.StreamClosedError: except tornado.iostream.StreamClosedError:
break break
data = codecs.decode(data, "utf8", "replace")
_LOGGER.debug("> stdout: %s", data) text = data.decode("utf-8", "replace")
self.write_message({"event": "line", "data": data}) _LOGGER.debug("> stdout: %s", text)
self.write_message({"event": "line", "data": text})
def _stdout_thread(self): def _stdout_thread(self):
if not self._use_popen: if not self._use_popen:
@ -509,8 +509,8 @@ class EsphomeUpdateAllHandler(EsphomeCommandWebSocket):
class SerialPortRequestHandler(BaseHandler): class SerialPortRequestHandler(BaseHandler):
@authenticated @authenticated
def get(self): async def get(self):
ports = get_serial_ports() ports = await asyncio.get_running_loop().run_in_executor(None, get_serial_ports)
data = [] data = []
for port in ports: for port in ports:
desc = port.description desc = port.description