в modinfo модулей добавлен moduleDefines для условной компиляции

This commit is contained in:
Дмитрий
2025-09-19 18:19:40 +03:00
parent d255efaefb
commit f46e75786a
9 changed files with 34 additions and 7 deletions

View File

@@ -182,7 +182,8 @@ with open("data_svelte/settings.json", "w", encoding='utf-8') as write_file:
# параллельно собираем необходимые активным модулям библиотеки для включения в компиляцию для текущего типа устройства (esp8266_4m, esp32_4mb, esp8266_1m, esp8266_1m_ota) # параллельно собираем необходимые активным модулям библиотеки для включения в компиляцию для текущего типа устройства (esp8266_4m, esp32_4mb, esp8266_1m, esp8266_1m_ota)
activeModulesName = [] # список имен активных модулей activeModulesName = [] # список имен активных модулей
allLibs = "" # подборка всех библиотек необходимых модулям для дальнейшей записи в конфигурацию platformio allLibs = "" # подборка всех библиотек необходимых модулям для дальнейшей записи в конфигурацию platformio
itemsCount = 1; allDefs = "" # для каждого модуля создаем глобальный define "-D" + moduleJson['about']['moduleType']
itemsCount = 1
includeDirs = "" # подборка путей ко всем модулям для дальнейшей записи в конфигурацию platformio includeDirs = "" # подборка путей ко всем модулям для дальнейшей записи в конфигурацию platformio
itemsJson = json.loads('[{"name": "Выберите элемент", "num": 0}]') itemsJson = json.loads('[{"name": "Выберите элемент", "num": 0}]')
for section, modules in profJson['modules'].items(): for section, modules in profJson['modules'].items():
@@ -191,6 +192,8 @@ for section, modules in profJson['modules'].items():
if module['active']: if module['active']:
with open(module['path'] + "/modinfo.json", "r", encoding='utf-8') as read_file: with open(module['path'] + "/modinfo.json", "r", encoding='utf-8') as read_file:
moduleJson = json.load(read_file) moduleJson = json.load(read_file)
if 'moduleType' in moduleJson['about']:
allDefs = allDefs + "\n" + "-D" + moduleJson['about']['moduleType']
if deviceName in moduleJson['usedLibs']: # проверяем поддерживает ли модуль текущее устройство if deviceName in moduleJson['usedLibs']: # проверяем поддерживает ли модуль текущее устройство
if not 'exclude' in moduleJson['usedLibs'][deviceName]: # смотрим не нужно ли исключить данный модуль из указанной платы deviceName if not 'exclude' in moduleJson['usedLibs'][deviceName]: # смотрим не нужно ли исключить данный модуль из указанной платы deviceName
activeModulesName.append(moduleJson['about']['moduleName']) # запоминаем имена для использования на след шагах activeModulesName.append(moduleJson['about']['moduleName']) # запоминаем имена для использования на след шагах
@@ -250,7 +253,10 @@ config.clear()
config.read("platformio.ini") config.read("platformio.ini")
config["env:" + deviceName + "_fromitems"]["lib_deps"] = allLibs config["env:" + deviceName + "_fromitems"]["lib_deps"] = allLibs
config["env:" + deviceName + "_fromitems"]["build_src_filter"] = includeDirs config["env:" + deviceName + "_fromitems"]["build_src_filter"] = includeDirs
config["env:" + deviceName + "_fromitems"]["build_flags"] = allDefs
config["platformio"]["default_envs"] = deviceName config["platformio"]["default_envs"] = deviceName
if "${env:" + deviceName + "_fromitems.build_flags}" not in config["env:" + deviceName]["build_flags"]:
config["env:" + deviceName]["build_flags"] += "\n${env:" + deviceName + "_fromitems.build_flags}"
# config["platformio"]["data_dir"] = profJson['projectProp']['platformio']['data_dir'] # config["platformio"]["data_dir"] = profJson['projectProp']['platformio']['data_dir']
with open("platformio.ini", 'w') as configFile: with open("platformio.ini", 'w') as configFile:
config.write(configFile) config.write(configFile)

View File

@@ -66,7 +66,9 @@
*****************************************глобальные объекты классов*************************************************** *****************************************глобальные объекты классов***************************************************
**********************************************************************************************************************/ **********************************************************************************************************************/
extern IoTGpio IoTgpio; extern IoTGpio IoTgpio;
#ifdef mod_RtcDriver
extern IoTItem* rtcItem; extern IoTItem* rtcItem;
#endif
//extern IoTItem* camItem; //extern IoTItem* camItem;
extern IoTItem* tlgrmItem; extern IoTItem* tlgrmItem;
extern IoTBench* benchLoadItem; extern IoTBench* benchLoadItem;

View File

@@ -55,7 +55,6 @@ class IoTItem {
bool enableDoByInt = true; bool enableDoByInt = true;
virtual IoTGpio* getGpioDriver(); virtual IoTGpio* getGpioDriver();
virtual IoTItem* getRtcDriver();
//virtual IoTItem* getCAMDriver(); //virtual IoTItem* getCAMDriver();
virtual IoTItem* getTlgrmDriver(); virtual IoTItem* getTlgrmDriver();
//virtual IoTBench* getBenchmark(); //virtual IoTBench* getBenchmark();
@@ -63,8 +62,10 @@ class IoTItem {
virtual IoTBench* getBenchmarkLoad(); virtual IoTBench* getBenchmarkLoad();
virtual IoTDiscovery* getHADiscovery(); virtual IoTDiscovery* getHADiscovery();
virtual IoTDiscovery* getHOMEdDiscovery(); virtual IoTDiscovery* getHOMEdDiscovery();
#ifdef mod_RtcDriver
virtual IoTItem* getRtcDriver();
virtual unsigned long getRtcUnixTime(); virtual unsigned long getRtcUnixTime();
#endif
// делаем доступным модулям отправку сообщений в телеграм // делаем доступным модулям отправку сообщений в телеграм
virtual void sendTelegramMsg(bool often, String msg); virtual void sendTelegramMsg(bool often, String msg);
virtual void sendFoto(uint8_t *buf, uint32_t length, const String &name); virtual void sendFoto(uint8_t *buf, uint32_t length, const String &name);

View File

@@ -228,6 +228,7 @@ lib_ignore = LT_WebSockets
build_flags = build_flags =
-Desp32_4mb3f="esp32_4mb3f" -Desp32_4mb3f="esp32_4mb3f"
-Wl,--wrap=esp_panic_handler -Wl,--wrap=esp_panic_handler
${env:esp32_4mb3f_fromitems.build_flags}
framework = arduino framework = arduino
board = esp32dev board = esp32dev
platform = espressif32 @6.6.0 platform = espressif32 @6.6.0
@@ -777,7 +778,7 @@ lib_deps =
adafruit/Adafruit BME280 Library adafruit/Adafruit BME280 Library
adafruit/Adafruit BMP280 Library adafruit/Adafruit BMP280 Library
beegee-tokyo/DHT sensor library for ESPx beegee-tokyo/DHT sensor library for ESPx
https://github.com/milesburton/Arduino-Temperature-Control-Library milesburton/DallasTemperature @ ^4.0.4
plerup/EspSoftwareSerial plerup/EspSoftwareSerial
gyverlibs/EncButton @ ^2.0 gyverlibs/EncButton @ ^2.0
build_src_filter = build_src_filter =
@@ -805,12 +806,14 @@ build_src_filter =
+<modules/exec/AnalogBtn> +<modules/exec/AnalogBtn>
+<modules/exec/ButtonIn> +<modules/exec/ButtonIn>
+<modules/exec/ButtonOut> +<modules/exec/ButtonOut>
+<modules/exec/Buzzer>
+<modules/exec/Enconder> +<modules/exec/Enconder>
+<modules/exec/Multitouch> +<modules/exec/Multitouch>
+<modules/exec/Pwm32> +<modules/exec/Pwm32>
+<modules/exec/TelegramLT> +<modules/exec/TelegramLT>
+<modules/exec/Thermostat> +<modules/exec/Thermostat>
build_flags =
-Dmod_RtcDriver
-DhardRTC=1
[env:esp32cam_4mb_fromitems] [env:esp32cam_4mb_fromitems]
lib_deps = lib_deps =

View File

@@ -35,8 +35,10 @@ void configure(String path) {
void* driver; void* driver;
// пробуем спросить драйвер GPIO // пробуем спросить драйвер GPIO
if (driver = myIoTItem->getGpioDriver()) IoTgpio.regDriver((IoTGpio*)driver); if (driver = myIoTItem->getGpioDriver()) IoTgpio.regDriver((IoTGpio*)driver);
#ifdef mod_RtcDriver
// пробуем спросить драйвер RTC // пробуем спросить драйвер RTC
if (driver = myIoTItem->getRtcDriver()) rtcItem = (IoTItem*)driver; if (driver = myIoTItem->getRtcDriver()) rtcItem = (IoTItem*)driver;
#endif
// пробуем спросить драйвер CAM // пробуем спросить драйвер CAM
//if (driver = myIoTItem->getCAMDriver()) camItem = (IoTItem*)driver; //if (driver = myIoTItem->getCAMDriver()) camItem = (IoTItem*)driver;
// пробуем спросить драйвер Benchmark // пробуем спросить драйвер Benchmark
@@ -78,11 +80,12 @@ void configure(String path) {
void clearConfigure() { void clearConfigure() {
Serial.printf("Start clearing config\n"); Serial.printf("Start clearing config\n");
#ifdef mod_RtcDriver
rtcItem = nullptr; rtcItem = nullptr;
#endif
//camItem = nullptr; //camItem = nullptr;
tlgrmItem = nullptr; tlgrmItem = nullptr;
IoTgpio.clearDrivers(); IoTgpio.clearDrivers();
for (std::list<IoTItem*>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) { for (std::list<IoTItem*>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
Serial.printf("Start delete iotitem %s \n", (*it)->getID().c_str()); Serial.printf("Start delete iotitem %s \n", (*it)->getID().c_str());
if (*it) delete *it; if (*it) delete *it;

View File

@@ -34,7 +34,9 @@ WebSocketsServer standWebSocket = WebSocketsServer(81);
***********************************************глобальные переменные************************************************** ***********************************************глобальные переменные**************************************************
**********************************************************************************************************************/ **********************************************************************************************************************/
IoTGpio IoTgpio(0); IoTGpio IoTgpio(0);
#ifdef mod_RtcDriver
IoTItem* rtcItem = nullptr; IoTItem* rtcItem = nullptr;
#endif
//IoTItem* camItem = nullptr; //IoTItem* camItem = nullptr;
IoTItem* tlgrmItem = nullptr; IoTItem* tlgrmItem = nullptr;
IoTBench* benchTaskItem = nullptr; IoTBench* benchTaskItem = nullptr;

View File

@@ -31,9 +31,13 @@ void ntpInit() {
synchTime(); synchTime();
// проверяем присутствие RTC с батарейкой и получаем время при наличии // проверяем присутствие RTC с батарейкой и получаем время при наличии
#ifdef mod_RtcDriver
if (rtcItem) { if (rtcItem) {
unixTime = rtcItem->getRtcUnixTime(); unixTime = rtcItem->getRtcUnixTime();
} else return; }
else
#endif
return; // ToDo разобраться: если нет железных часов дальше ничего не делать ???
} }
unixTimeShort = unixTime - START_DATETIME; unixTimeShort = unixTime - START_DATETIME;

View File

@@ -238,9 +238,12 @@ IoTGpio* IoTItem::getGpioDriver() {
return nullptr; return nullptr;
} }
#ifdef mod_RtcDriver
IoTItem* IoTItem::getRtcDriver() { IoTItem* IoTItem::getRtcDriver() {
return nullptr; return nullptr;
} }
#endif
/* /*
IoTItem* IoTItem::getCAMDriver() { IoTItem* IoTItem::getCAMDriver() {
return nullptr; return nullptr;
@@ -266,10 +269,12 @@ IoTDiscovery *IoTItem::getHADiscovery()
{ {
return nullptr; return nullptr;
} }
#ifdef mod_RtcDriver
unsigned long IoTItem::getRtcUnixTime() unsigned long IoTItem::getRtcUnixTime()
{ {
return 0; return 0;
} }
#endif
// сетевое общение==================================================================================================================================== // сетевое общение====================================================================================================================================

View File

@@ -28,6 +28,7 @@
"exampleURL": "https://iotmanager.org/wiki", "exampleURL": "https://iotmanager.org/wiki",
"specialThanks": "", "specialThanks": "",
"moduleName": "RTC", "moduleName": "RTC",
"moduleDefines": ["mod_RtcDriver", "hardRTC=1"],
"moduleVersion": "1.0", "moduleVersion": "1.0",
"usedRam": { "usedRam": {
"esp32_4mb": 15, "esp32_4mb": 15,