# подготавливаем папку для локального сервера обновлений # для этого компилируем проект и получаем бинарные файлы: # firmware.bin, littlefs.bin, partitions.bin и ver.json import shutil import configparser import os, json, sys, getopt from pathlib import Path def copyFileIfExist(fileName, deviceName): srcFilePath = ".pio/build/" + deviceName + "/" + fileName dstFilePath = "iotm/" + deviceName + "/400/" + fileName if Path(srcFilePath).is_file(): print("Ok...... \"" + srcFilePath + "\" на месте!") Path(dstFilePath).parent.mkdir(parents=True, exist_ok=True) shutil.copy(srcFilePath, dstFilePath) return True else: print("Error...... \"" + srcFilePath + "\" НЕ существует!") return False config = configparser.ConfigParser() # создаём объекта парсера INI config.read("platformio.ini") deviceName = config["platformio"]["default_envs"] homeDir = os.path.expanduser('~') os.system(homeDir + "\.platformio\penv\Scripts\pio run") os.system(homeDir + "\.platformio\penv\Scripts\pio run -t buildfs --disable-auto-clean") if copyFileIfExist("firmware.bin", deviceName) and copyFileIfExist("littlefs.bin", deviceName): copyFileIfExist("partitions.bin", deviceName) versionsJson = json.loads('{"' + deviceName + '": {"0": "400"}}') with open("iotm/ver.json", "w", encoding='utf-8') as write_file: json.dump(versionsJson, write_file, ensure_ascii=False, indent=4, sort_keys=False) print(f"\x1b[1;31;42m Сервер для обновления 'по воздуху' для " + deviceName + " подготовлен. Не забудьте установить расширение Live Server, запустить его и прописать в ESP IP вашего компьютера. Подробнее смотрите в WIKI: https://iotmanager.org/wiki.\x1b[0m")