From f2014c6994b994c5d2634741777855ccaeaa8bd6 Mon Sep 17 00:00:00 2001 From: Fernando Garcia Date: Tue, 15 Mar 2022 13:13:16 -0300 Subject: [PATCH 1/8] Restructured project to work as library --- .gitignore | 2 +- .../LightState}/LightMqttSettingsService.cpp | 0 .../LightState}/LightMqttSettingsService.h | 0 .../LightState}/LightStateService.cpp | 0 .../LightState}/LightStateService.h | 0 {src => examples/LightState}/main.cpp | 0 interface/config-overrides.js | 2 +- lib/readme.txt | 36 ------------------- platformio.ini | 11 ++++-- scripts/build_interface.py | 6 +++- {lib/framework => src}/APSettingsService.cpp | 0 {lib/framework => src}/APSettingsService.h | 0 {lib/framework => src}/APStatus.cpp | 0 {lib/framework => src}/APStatus.h | 0 {lib/framework => src}/ArduinoJsonJWT.cpp | 0 {lib/framework => src}/ArduinoJsonJWT.h | 0 .../AuthenticationService.cpp | 0 .../framework => src}/AuthenticationService.h | 0 {lib/framework => src}/ESP8266React.cpp | 0 {lib/framework => src}/ESP8266React.h | 0 {lib/framework => src}/ESPFS.h | 0 {lib/framework => src}/FSPersistence.h | 0 .../framework => src}/FactoryResetService.cpp | 0 {lib/framework => src}/FactoryResetService.h | 0 {lib/framework => src}/Features.h | 0 {lib/framework => src}/FeaturesService.cpp | 0 {lib/framework => src}/FeaturesService.h | 0 {lib/framework => src}/HttpEndpoint.h | 0 {lib/framework => src}/IPUtils.h | 0 {lib/framework => src}/JsonUtils.h | 0 {lib/framework => src}/MqttPubSub.h | 0 .../framework => src}/MqttSettingsService.cpp | 0 {lib/framework => src}/MqttSettingsService.h | 0 {lib/framework => src}/MqttStatus.cpp | 0 {lib/framework => src}/MqttStatus.h | 0 {lib/framework => src}/NTPSettingsService.cpp | 0 {lib/framework => src}/NTPSettingsService.h | 0 {lib/framework => src}/NTPStatus.cpp | 0 {lib/framework => src}/NTPStatus.h | 0 {lib/framework => src}/OTASettingsService.cpp | 0 {lib/framework => src}/OTASettingsService.h | 0 {lib/framework => src}/RestartService.cpp | 0 {lib/framework => src}/RestartService.h | 0 {lib/framework => src}/SecurityManager.h | 0 .../SecuritySettingsService.cpp | 0 .../SecuritySettingsService.h | 0 {lib/framework => src}/SettingValue.cpp | 0 {lib/framework => src}/SettingValue.h | 0 {lib/framework => src}/StatefulService.cpp | 0 {lib/framework => src}/StatefulService.h | 0 {lib/framework => src}/SystemStatus.cpp | 0 {lib/framework => src}/SystemStatus.h | 0 .../UploadFirmwareService.cpp | 0 .../framework => src}/UploadFirmwareService.h | 0 {lib/framework => src}/WebSocketTxRx.h | 0 {lib/framework => src}/WiFiScanner.cpp | 0 {lib/framework => src}/WiFiScanner.h | 0 .../framework => src}/WiFiSettingsService.cpp | 0 {lib/framework => src}/WiFiSettingsService.h | 0 {lib/framework => src}/WiFiStatus.cpp | 0 {lib/framework => src}/WiFiStatus.h | 0 61 files changed, 16 insertions(+), 41 deletions(-) rename {src => examples/LightState}/LightMqttSettingsService.cpp (100%) rename {src => examples/LightState}/LightMqttSettingsService.h (100%) rename {src => examples/LightState}/LightStateService.cpp (100%) rename {src => examples/LightState}/LightStateService.h (100%) rename {src => examples/LightState}/main.cpp (100%) delete mode 100644 lib/readme.txt rename {lib/framework => src}/APSettingsService.cpp (100%) rename {lib/framework => src}/APSettingsService.h (100%) rename {lib/framework => src}/APStatus.cpp (100%) rename {lib/framework => src}/APStatus.h (100%) rename {lib/framework => src}/ArduinoJsonJWT.cpp (100%) rename {lib/framework => src}/ArduinoJsonJWT.h (100%) rename {lib/framework => src}/AuthenticationService.cpp (100%) rename {lib/framework => src}/AuthenticationService.h (100%) rename {lib/framework => src}/ESP8266React.cpp (100%) rename {lib/framework => src}/ESP8266React.h (100%) rename {lib/framework => src}/ESPFS.h (100%) rename {lib/framework => src}/FSPersistence.h (100%) rename {lib/framework => src}/FactoryResetService.cpp (100%) rename {lib/framework => src}/FactoryResetService.h (100%) rename {lib/framework => src}/Features.h (100%) rename {lib/framework => src}/FeaturesService.cpp (100%) rename {lib/framework => src}/FeaturesService.h (100%) rename {lib/framework => src}/HttpEndpoint.h (100%) rename {lib/framework => src}/IPUtils.h (100%) rename {lib/framework => src}/JsonUtils.h (100%) rename {lib/framework => src}/MqttPubSub.h (100%) rename {lib/framework => src}/MqttSettingsService.cpp (100%) rename {lib/framework => src}/MqttSettingsService.h (100%) rename {lib/framework => src}/MqttStatus.cpp (100%) rename {lib/framework => src}/MqttStatus.h (100%) rename {lib/framework => src}/NTPSettingsService.cpp (100%) rename {lib/framework => src}/NTPSettingsService.h (100%) rename {lib/framework => src}/NTPStatus.cpp (100%) rename {lib/framework => src}/NTPStatus.h (100%) rename {lib/framework => src}/OTASettingsService.cpp (100%) rename {lib/framework => src}/OTASettingsService.h (100%) rename {lib/framework => src}/RestartService.cpp (100%) rename {lib/framework => src}/RestartService.h (100%) rename {lib/framework => src}/SecurityManager.h (100%) rename {lib/framework => src}/SecuritySettingsService.cpp (100%) rename {lib/framework => src}/SecuritySettingsService.h (100%) rename {lib/framework => src}/SettingValue.cpp (100%) rename {lib/framework => src}/SettingValue.h (100%) rename {lib/framework => src}/StatefulService.cpp (100%) rename {lib/framework => src}/StatefulService.h (100%) rename {lib/framework => src}/SystemStatus.cpp (100%) rename {lib/framework => src}/SystemStatus.h (100%) rename {lib/framework => src}/UploadFirmwareService.cpp (100%) rename {lib/framework => src}/UploadFirmwareService.h (100%) rename {lib/framework => src}/WebSocketTxRx.h (100%) rename {lib/framework => src}/WiFiScanner.cpp (100%) rename {lib/framework => src}/WiFiScanner.h (100%) rename {lib/framework => src}/WiFiSettingsService.cpp (100%) rename {lib/framework => src}/WiFiSettingsService.h (100%) rename {lib/framework => src}/WiFiStatus.cpp (100%) rename {lib/framework => src}/WiFiStatus.h (100%) diff --git a/.gitignore b/.gitignore index f52970ba..9bc9f818 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,7 @@ .gcc-flags.json *Thumbs.db /data/www -/lib/framework/WWWData.h +src/WWWData.h /interface/build /interface/node_modules /interface/.eslintcache diff --git a/src/LightMqttSettingsService.cpp b/examples/LightState/LightMqttSettingsService.cpp similarity index 100% rename from src/LightMqttSettingsService.cpp rename to examples/LightState/LightMqttSettingsService.cpp diff --git a/src/LightMqttSettingsService.h b/examples/LightState/LightMqttSettingsService.h similarity index 100% rename from src/LightMqttSettingsService.h rename to examples/LightState/LightMqttSettingsService.h diff --git a/src/LightStateService.cpp b/examples/LightState/LightStateService.cpp similarity index 100% rename from src/LightStateService.cpp rename to examples/LightState/LightStateService.cpp diff --git a/src/LightStateService.h b/examples/LightState/LightStateService.h similarity index 100% rename from src/LightStateService.h rename to examples/LightState/LightStateService.h diff --git a/src/main.cpp b/examples/LightState/main.cpp similarity index 100% rename from src/main.cpp rename to examples/LightState/main.cpp diff --git a/interface/config-overrides.js b/interface/config-overrides.js index 8f3f7f3c..500b465e 100644 --- a/interface/config-overrides.js +++ b/interface/config-overrides.js @@ -22,7 +22,7 @@ module.exports = function override(config, env) { terserPlugin.options.extractComments = false; // build progmem data files - config.plugins.push(new ProgmemGenerator({ outputPath: "../lib/framework/WWWData.h", bytesPerLine: 20 })); + config.plugins.push(new ProgmemGenerator({ outputPath: "../src/WWWData.h", bytesPerLine: 20 })); } return config; }; diff --git a/lib/readme.txt b/lib/readme.txt deleted file mode 100644 index dbadc3d6..00000000 --- a/lib/readme.txt +++ /dev/null @@ -1,36 +0,0 @@ - -This directory is intended for the project specific (private) libraries. -PlatformIO will compile them to static libraries and link to executable file. - -The source code of each library should be placed in separate directory, like -"lib/private_lib/[here are source files]". - -For example, see how can be organized `Foo` and `Bar` libraries: - -|--lib -| |--Bar -| | |--docs -| | |--examples -| | |--src -| | |- Bar.c -| | |- Bar.h -| |--Foo -| | |- Foo.c -| | |- Foo.h -| |- readme.txt --> THIS FILE -|- platformio.ini -|--src - |- main.c - -Then in `src/main.c` you should use: - -#include -#include - -// rest H/C/CPP code - -PlatformIO will find your libraries automatically, configure preprocessor's -include paths and build them. - -More information about PlatformIO Library Dependency Finder -- http://docs.platformio.org/page/librarymanager/ldf.html diff --git a/platformio.ini b/platformio.ini index f83cf677..5ccd51fc 100644 --- a/platformio.ini +++ b/platformio.ini @@ -30,7 +30,7 @@ framework = arduino monitor_speed = 115200 extra_scripts = - pre:scripts/build_interface.py + pre:lib/esp8266-react/scripts/build_interface.py lib_deps = ArduinoJson@>=6.0.0,<7.0.0 @@ -46,9 +46,16 @@ board = esp12e board_build.f_cpu = 160000000L board_build.filesystem = littlefs -[env:node32s] ; Comment out min_spiffs.csv setting if disabling PROGMEM_WWW with ESP32 + +[env:node32s] board_build.partitions = min_spiffs.csv platform = espressif32 board = node32s board_build.filesystem = littlefs + +[env:esp32dev] +board_build.partitions = min_spiffs.csv +platform = espressif32 +board = esp32dev +board_build.filesystem = littlefs diff --git a/scripts/build_interface.py b/scripts/build_interface.py index aea3a18d..cf5bb947 100644 --- a/scripts/build_interface.py +++ b/scripts/build_interface.py @@ -3,9 +3,13 @@ from subprocess import check_output, Popen, PIPE, STDOUT, CalledProcessError import os import gzip +import inspect Import("env") +filename = inspect.getframeinfo(inspect.currentframe()).filename +dir_path = os.path.dirname(os.path.abspath(filename)) + def gzipFile(file): with open(file, 'rb') as f_in: with gzip.open(file + '.gz', 'wb') as f_out: @@ -19,7 +23,7 @@ def flagExists(flag): return True def buildWeb(): - os.chdir("interface") + os.chdir(dir_path + '/../interface') print("Building interface with npm") try: env.Execute("npm install") diff --git a/lib/framework/APSettingsService.cpp b/src/APSettingsService.cpp similarity index 100% rename from lib/framework/APSettingsService.cpp rename to src/APSettingsService.cpp diff --git a/lib/framework/APSettingsService.h b/src/APSettingsService.h similarity index 100% rename from lib/framework/APSettingsService.h rename to src/APSettingsService.h diff --git a/lib/framework/APStatus.cpp b/src/APStatus.cpp similarity index 100% rename from lib/framework/APStatus.cpp rename to src/APStatus.cpp diff --git a/lib/framework/APStatus.h b/src/APStatus.h similarity index 100% rename from lib/framework/APStatus.h rename to src/APStatus.h diff --git a/lib/framework/ArduinoJsonJWT.cpp b/src/ArduinoJsonJWT.cpp similarity index 100% rename from lib/framework/ArduinoJsonJWT.cpp rename to src/ArduinoJsonJWT.cpp diff --git a/lib/framework/ArduinoJsonJWT.h b/src/ArduinoJsonJWT.h similarity index 100% rename from lib/framework/ArduinoJsonJWT.h rename to src/ArduinoJsonJWT.h diff --git a/lib/framework/AuthenticationService.cpp b/src/AuthenticationService.cpp similarity index 100% rename from lib/framework/AuthenticationService.cpp rename to src/AuthenticationService.cpp diff --git a/lib/framework/AuthenticationService.h b/src/AuthenticationService.h similarity index 100% rename from lib/framework/AuthenticationService.h rename to src/AuthenticationService.h diff --git a/lib/framework/ESP8266React.cpp b/src/ESP8266React.cpp similarity index 100% rename from lib/framework/ESP8266React.cpp rename to src/ESP8266React.cpp diff --git a/lib/framework/ESP8266React.h b/src/ESP8266React.h similarity index 100% rename from lib/framework/ESP8266React.h rename to src/ESP8266React.h diff --git a/lib/framework/ESPFS.h b/src/ESPFS.h similarity index 100% rename from lib/framework/ESPFS.h rename to src/ESPFS.h diff --git a/lib/framework/FSPersistence.h b/src/FSPersistence.h similarity index 100% rename from lib/framework/FSPersistence.h rename to src/FSPersistence.h diff --git a/lib/framework/FactoryResetService.cpp b/src/FactoryResetService.cpp similarity index 100% rename from lib/framework/FactoryResetService.cpp rename to src/FactoryResetService.cpp diff --git a/lib/framework/FactoryResetService.h b/src/FactoryResetService.h similarity index 100% rename from lib/framework/FactoryResetService.h rename to src/FactoryResetService.h diff --git a/lib/framework/Features.h b/src/Features.h similarity index 100% rename from lib/framework/Features.h rename to src/Features.h diff --git a/lib/framework/FeaturesService.cpp b/src/FeaturesService.cpp similarity index 100% rename from lib/framework/FeaturesService.cpp rename to src/FeaturesService.cpp diff --git a/lib/framework/FeaturesService.h b/src/FeaturesService.h similarity index 100% rename from lib/framework/FeaturesService.h rename to src/FeaturesService.h diff --git a/lib/framework/HttpEndpoint.h b/src/HttpEndpoint.h similarity index 100% rename from lib/framework/HttpEndpoint.h rename to src/HttpEndpoint.h diff --git a/lib/framework/IPUtils.h b/src/IPUtils.h similarity index 100% rename from lib/framework/IPUtils.h rename to src/IPUtils.h diff --git a/lib/framework/JsonUtils.h b/src/JsonUtils.h similarity index 100% rename from lib/framework/JsonUtils.h rename to src/JsonUtils.h diff --git a/lib/framework/MqttPubSub.h b/src/MqttPubSub.h similarity index 100% rename from lib/framework/MqttPubSub.h rename to src/MqttPubSub.h diff --git a/lib/framework/MqttSettingsService.cpp b/src/MqttSettingsService.cpp similarity index 100% rename from lib/framework/MqttSettingsService.cpp rename to src/MqttSettingsService.cpp diff --git a/lib/framework/MqttSettingsService.h b/src/MqttSettingsService.h similarity index 100% rename from lib/framework/MqttSettingsService.h rename to src/MqttSettingsService.h diff --git a/lib/framework/MqttStatus.cpp b/src/MqttStatus.cpp similarity index 100% rename from lib/framework/MqttStatus.cpp rename to src/MqttStatus.cpp diff --git a/lib/framework/MqttStatus.h b/src/MqttStatus.h similarity index 100% rename from lib/framework/MqttStatus.h rename to src/MqttStatus.h diff --git a/lib/framework/NTPSettingsService.cpp b/src/NTPSettingsService.cpp similarity index 100% rename from lib/framework/NTPSettingsService.cpp rename to src/NTPSettingsService.cpp diff --git a/lib/framework/NTPSettingsService.h b/src/NTPSettingsService.h similarity index 100% rename from lib/framework/NTPSettingsService.h rename to src/NTPSettingsService.h diff --git a/lib/framework/NTPStatus.cpp b/src/NTPStatus.cpp similarity index 100% rename from lib/framework/NTPStatus.cpp rename to src/NTPStatus.cpp diff --git a/lib/framework/NTPStatus.h b/src/NTPStatus.h similarity index 100% rename from lib/framework/NTPStatus.h rename to src/NTPStatus.h diff --git a/lib/framework/OTASettingsService.cpp b/src/OTASettingsService.cpp similarity index 100% rename from lib/framework/OTASettingsService.cpp rename to src/OTASettingsService.cpp diff --git a/lib/framework/OTASettingsService.h b/src/OTASettingsService.h similarity index 100% rename from lib/framework/OTASettingsService.h rename to src/OTASettingsService.h diff --git a/lib/framework/RestartService.cpp b/src/RestartService.cpp similarity index 100% rename from lib/framework/RestartService.cpp rename to src/RestartService.cpp diff --git a/lib/framework/RestartService.h b/src/RestartService.h similarity index 100% rename from lib/framework/RestartService.h rename to src/RestartService.h diff --git a/lib/framework/SecurityManager.h b/src/SecurityManager.h similarity index 100% rename from lib/framework/SecurityManager.h rename to src/SecurityManager.h diff --git a/lib/framework/SecuritySettingsService.cpp b/src/SecuritySettingsService.cpp similarity index 100% rename from lib/framework/SecuritySettingsService.cpp rename to src/SecuritySettingsService.cpp diff --git a/lib/framework/SecuritySettingsService.h b/src/SecuritySettingsService.h similarity index 100% rename from lib/framework/SecuritySettingsService.h rename to src/SecuritySettingsService.h diff --git a/lib/framework/SettingValue.cpp b/src/SettingValue.cpp similarity index 100% rename from lib/framework/SettingValue.cpp rename to src/SettingValue.cpp diff --git a/lib/framework/SettingValue.h b/src/SettingValue.h similarity index 100% rename from lib/framework/SettingValue.h rename to src/SettingValue.h diff --git a/lib/framework/StatefulService.cpp b/src/StatefulService.cpp similarity index 100% rename from lib/framework/StatefulService.cpp rename to src/StatefulService.cpp diff --git a/lib/framework/StatefulService.h b/src/StatefulService.h similarity index 100% rename from lib/framework/StatefulService.h rename to src/StatefulService.h diff --git a/lib/framework/SystemStatus.cpp b/src/SystemStatus.cpp similarity index 100% rename from lib/framework/SystemStatus.cpp rename to src/SystemStatus.cpp diff --git a/lib/framework/SystemStatus.h b/src/SystemStatus.h similarity index 100% rename from lib/framework/SystemStatus.h rename to src/SystemStatus.h diff --git a/lib/framework/UploadFirmwareService.cpp b/src/UploadFirmwareService.cpp similarity index 100% rename from lib/framework/UploadFirmwareService.cpp rename to src/UploadFirmwareService.cpp diff --git a/lib/framework/UploadFirmwareService.h b/src/UploadFirmwareService.h similarity index 100% rename from lib/framework/UploadFirmwareService.h rename to src/UploadFirmwareService.h diff --git a/lib/framework/WebSocketTxRx.h b/src/WebSocketTxRx.h similarity index 100% rename from lib/framework/WebSocketTxRx.h rename to src/WebSocketTxRx.h diff --git a/lib/framework/WiFiScanner.cpp b/src/WiFiScanner.cpp similarity index 100% rename from lib/framework/WiFiScanner.cpp rename to src/WiFiScanner.cpp diff --git a/lib/framework/WiFiScanner.h b/src/WiFiScanner.h similarity index 100% rename from lib/framework/WiFiScanner.h rename to src/WiFiScanner.h diff --git a/lib/framework/WiFiSettingsService.cpp b/src/WiFiSettingsService.cpp similarity index 100% rename from lib/framework/WiFiSettingsService.cpp rename to src/WiFiSettingsService.cpp diff --git a/lib/framework/WiFiSettingsService.h b/src/WiFiSettingsService.h similarity index 100% rename from lib/framework/WiFiSettingsService.h rename to src/WiFiSettingsService.h diff --git a/lib/framework/WiFiStatus.cpp b/src/WiFiStatus.cpp similarity index 100% rename from lib/framework/WiFiStatus.cpp rename to src/WiFiStatus.cpp diff --git a/lib/framework/WiFiStatus.h b/src/WiFiStatus.h similarity index 100% rename from lib/framework/WiFiStatus.h rename to src/WiFiStatus.h From 6fbcb87248b5bef5ecc5c17177bd711b7dd8fcf1 Mon Sep 17 00:00:00 2001 From: Fernando Garcia Date: Sat, 2 Apr 2022 23:19:22 -0300 Subject: [PATCH 2/8] This lines breaks the code in Arduino-Espressif32 v2.0.x --- src/WiFiSettingsService.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/WiFiSettingsService.cpp b/src/WiFiSettingsService.cpp index 1a6b7ad4..c5771077 100644 --- a/src/WiFiSettingsService.cpp +++ b/src/WiFiSettingsService.cpp @@ -71,10 +71,10 @@ void WiFiSettingsService::manageSTA() { } else { // configure for DHCP #ifdef ESP32 - WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE); + //WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE); WiFi.setHostname(_state.hostname.c_str()); #elif defined(ESP8266) - WiFi.config(INADDR_ANY, INADDR_ANY, INADDR_ANY); + //WiFi.config(INADDR_ANY, INADDR_ANY, INADDR_ANY); WiFi.hostname(_state.hostname); #endif } From 13b3dd0a72cf8f2f57bb3ac9ba656afb934f408a Mon Sep 17 00:00:00 2001 From: Fernando Garcia Date: Sat, 2 Apr 2022 23:26:32 -0300 Subject: [PATCH 3/8] Change platform source Use Tasmota repository while Arduino-Espressif32 V2.0.x is not available in PIO. --- platformio.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/platformio.ini b/platformio.ini index 5ccd51fc..039d53a0 100644 --- a/platformio.ini +++ b/platformio.ini @@ -4,6 +4,7 @@ extra_configs = features.ini default_envs = esp12e ;default_envs = node32s +;default_envs = esp32dev [env] build_flags= From a8a7d9e6513c1da43af591dc07616a63aa7eadbe Mon Sep 17 00:00:00 2001 From: Fernando Garcia Date: Tue, 5 Apr 2022 14:08:18 -0300 Subject: [PATCH 4/8] Use LittleFS for ESP32 --- src/FactoryResetService.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/FactoryResetService.cpp b/src/FactoryResetService.cpp index 97422070..cef36ba4 100644 --- a/src/FactoryResetService.cpp +++ b/src/FactoryResetService.cpp @@ -19,11 +19,7 @@ void FactoryResetService::handleRequest(AsyncWebServerRequest* request) { */ void FactoryResetService::factoryReset() { #ifdef ESP32 - File root = fs->open(FS_CONFIG_DIRECTORY); - File file; - while (file = root.openNextFile()) { - fs->remove(file.name()); - } + fs->rmdir(FS_CONFIG_DIRECTORY); #elif defined(ESP8266) Dir configDirectory = fs->openDir(FS_CONFIG_DIRECTORY); while (configDirectory.next()) { From 1089b0314ad2fa40b690f016af292b44eb744fd2 Mon Sep 17 00:00:00 2001 From: Fernando Garcia Date: Fri, 8 Apr 2022 15:18:03 -0300 Subject: [PATCH 5/8] Create a pseudo library.json --- library.json | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 library.json diff --git a/library.json b/library.json new file mode 100644 index 00000000..cb50304b --- /dev/null +++ b/library.json @@ -0,0 +1,24 @@ +{ + "name": "esp8266-react", + "description": "A framework for ESP8266 & ESP32 microcontrollers with a React UI ", + "keywords": "react,framework,wifimanager,http,async,websocket,webserver", + "authors": { + "name": "rjwats", + "maintainer": true + }, + "repository": { + "type": "git", + "url": "https://github.com/rjwats/esp8266-react.git" + }, + "build": { + "extraScript": "scripts/build_interface.py" + }, + "version": "1.0.0", + "license": "LGPL-3.0", + "frameworks": "arduino", + "platforms": [ + "espressif8266", + "espressif32" + ], + "dependencies": [] +} \ No newline at end of file From fab2bcb4608085c0d038dd45ce5d81636d0d5be8 Mon Sep 17 00:00:00 2001 From: Fernando Garcia Date: Fri, 8 Apr 2022 20:57:47 -0300 Subject: [PATCH 6/8] Fix issue with file not being created in ESP32 with LittleFS The output now should be like this at first run. ./components/esp_littlefs/src/littlefs/lfs.c:1071:error: Corrupted dir pair at {0x0, 0x1} Directory doesn't exists. Directory created. /config/wifiSettings.json was opened. Directory exists. /config/apSettings.json was opened. Directory exists. /config/securitySettings.json was opened. --- src/FSPersistence.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/FSPersistence.h b/src/FSPersistence.h index f3d9573c..427a6176 100644 --- a/src/FSPersistence.h +++ b/src/FSPersistence.h @@ -3,6 +3,7 @@ #include #include +#include template class FSPersistence { @@ -51,13 +52,33 @@ class FSPersistence { JsonObject jsonObject = jsonDocument.to(); _statefulService->read(jsonObject, _stateReader); + if(!_fs->exists(FS_CONFIG_DIRECTORY)){ + Serial.println(F("Directory doesn't exists.")); + + if(_fs->mkdir(FS_CONFIG_DIRECTORY)){ + Serial.println(F("Directory created.")); + } + else{ + Serial.println(F("Can't create the directory.")); + } + } + else{ + Serial.println(F("Directory exists.")); + } + // serialize it to filesystem File settingsFile = _fs->open(_filePath, "w"); // failed to open file, return false if (!settingsFile) { + Serial.print(F("Can't open the file: ")); + Serial.println(_filePath); return false; } + else{ + Serial.print(_filePath); + Serial.println(F(" was opened.")); + } // serialize the data to the file serializeJson(jsonDocument, settingsFile); From 004d271d43a2d0a720209af46ba4c9b92b06da38 Mon Sep 17 00:00:00 2001 From: Fernando Garcia Date: Fri, 16 Dec 2022 13:33:16 -0300 Subject: [PATCH 7/8] Update library.json --- library.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library.json b/library.json index cb50304b..2ab69bde 100644 --- a/library.json +++ b/library.json @@ -11,7 +11,7 @@ "url": "https://github.com/rjwats/esp8266-react.git" }, "build": { - "extraScript": "scripts/build_interface.py" + }, "version": "1.0.0", "license": "LGPL-3.0", @@ -21,4 +21,4 @@ "espressif32" ], "dependencies": [] -} \ No newline at end of file +} From 5ca954cc4a6d95f7f2c01c0838740071ea95d776 Mon Sep 17 00:00:00 2001 From: Fernando Garcia Date: Sat, 15 Jul 2023 13:43:15 -0300 Subject: [PATCH 8/8] Improve example --- examples/LightState/.gitignore | 5 ++ examples/LightState/factory_settings.ini | 54 ++++++++++++++++ examples/LightState/features.ini | 8 +++ examples/LightState/platformio.ini | 64 +++++++++++++++++++ .../{ => src}/LightMqttSettingsService.cpp | 0 .../{ => src}/LightMqttSettingsService.h | 0 .../{ => src}/LightStateService.cpp | 0 .../LightState/{ => src}/LightStateService.h | 0 examples/LightState/{ => src}/main.cpp | 0 9 files changed, 131 insertions(+) create mode 100644 examples/LightState/.gitignore create mode 100644 examples/LightState/factory_settings.ini create mode 100644 examples/LightState/features.ini create mode 100644 examples/LightState/platformio.ini rename examples/LightState/{ => src}/LightMqttSettingsService.cpp (100%) rename examples/LightState/{ => src}/LightMqttSettingsService.h (100%) rename examples/LightState/{ => src}/LightStateService.cpp (100%) rename examples/LightState/{ => src}/LightStateService.h (100%) rename examples/LightState/{ => src}/main.cpp (100%) diff --git a/examples/LightState/.gitignore b/examples/LightState/.gitignore new file mode 100644 index 00000000..89cc49cb --- /dev/null +++ b/examples/LightState/.gitignore @@ -0,0 +1,5 @@ +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch diff --git a/examples/LightState/factory_settings.ini b/examples/LightState/factory_settings.ini new file mode 100644 index 00000000..b9fbd60a --- /dev/null +++ b/examples/LightState/factory_settings.ini @@ -0,0 +1,54 @@ +; The indicated settings support placeholder substitution as follows: +; +; #{platform} - The microcontroller platform, e.g. "esp32" or "esp8266" +; #{unique_id} - A unique identifier derived from the MAC address, e.g. "0b0a859d6816" +; #{random} - A random number encoded as a hex string, e.g. "55722f94" + +[factory_settings] +build_flags = + ; WiFi settings + -D FACTORY_WIFI_SSID=\"\" + -D FACTORY_WIFI_PASSWORD=\"\" + -D FACTORY_WIFI_HOSTNAME=\"#{platform}-#{unique_id}\" ; supports placeholders + + ; Access point settings + -D FACTORY_AP_PROVISION_MODE=AP_MODE_DISCONNECTED + -D FACTORY_AP_SSID=\"ESP8266-React-#{unique_id}\" ; 1-64 characters, supports placeholders + -D FACTORY_AP_PASSWORD=\"esp-react\" ; 8-64 characters + -D FACTORY_AP_CHANNEL=1 + -D FACTORY_AP_SSID_HIDDEN=false + -D FACTORY_AP_MAX_CLIENTS=4 + -D FACTORY_AP_LOCAL_IP=\"192.168.4.1\" + -D FACTORY_AP_GATEWAY_IP=\"192.168.4.1\" + -D FACTORY_AP_SUBNET_MASK=\"255.255.255.0\" + + ; User credentials for admin and guest user + -D FACTORY_ADMIN_USERNAME=\"admin\" + -D FACTORY_ADMIN_PASSWORD=\"admin\" + -D FACTORY_GUEST_USERNAME=\"guest\" + -D FACTORY_GUEST_PASSWORD=\"guest\" + + ; NTP settings + -D FACTORY_NTP_ENABLED=true + -D FACTORY_NTP_TIME_ZONE_LABEL=\"Europe/London\" + -D FACTORY_NTP_TIME_ZONE_FORMAT=\"GMT0BST,M3.5.0/1,M10.5.0\" + -D FACTORY_NTP_SERVER=\"time.google.com\" + + ; OTA settings + -D FACTORY_OTA_PORT=8266 + -D FACTORY_OTA_PASSWORD=\"esp-react\" + -D FACTORY_OTA_ENABLED=true + + ; MQTT settings + -D FACTORY_MQTT_ENABLED=false + -D FACTORY_MQTT_HOST=\"test.mosquitto.org\" + -D FACTORY_MQTT_PORT=1883 + -D FACTORY_MQTT_USERNAME=\"\" ; supports placeholders + -D FACTORY_MQTT_PASSWORD=\"\" + -D FACTORY_MQTT_CLIENT_ID=\"#{platform}-#{unique_id}\" ; supports placeholders + -D FACTORY_MQTT_KEEP_ALIVE=60 + -D FACTORY_MQTT_CLEAN_SESSION=true + -D FACTORY_MQTT_MAX_TOPIC_LENGTH=128 + + ; JWT Secret + -D FACTORY_JWT_SECRET=\"#{random}-#{random}\" ; supports placeholders diff --git a/examples/LightState/features.ini b/examples/LightState/features.ini new file mode 100644 index 00000000..ffb890d9 --- /dev/null +++ b/examples/LightState/features.ini @@ -0,0 +1,8 @@ +[features] +build_flags = + -D FT_PROJECT=1 + -D FT_SECURITY=1 + -D FT_MQTT=1 + -D FT_NTP=1 + -D FT_OTA=1 + -D FT_UPLOAD_FIRMWARE=1 diff --git a/examples/LightState/platformio.ini b/examples/LightState/platformio.ini new file mode 100644 index 00000000..4c509ecb --- /dev/null +++ b/examples/LightState/platformio.ini @@ -0,0 +1,64 @@ +[platformio] +extra_configs = + factory_settings.ini + features.ini +default_envs = esp12e +;default_envs = node32s +;default_envs = esp32dev + +[env] +build_flags= + ${factory_settings.build_flags} + ${features.build_flags} + -D NO_GLOBAL_ARDUINOOTA + ; Uncomment PROGMEM_WWW to enable the storage of the WWW data in PROGMEM + -D PROGMEM_WWW + ; Uncomment to configure Cross-Origin Resource Sharing + ;-D ENABLE_CORS + ;-D CORS_ORIGIN=\"*\" + +; ensure transitive dependencies are included for correct platforms only +lib_compat_mode = strict + +; Uncomment & modify the lines below in order to configure OTA updates +;upload_flags = +; --port=8266 +; --auth=esp-react +;upload_port = 192.168.0.11 +;upload_protocol = espota + +framework = arduino +monitor_speed = 115200 + +extra_scripts = + pre:$PROJECT_LIBDEPS_DIR/$PIOENV/esp8266-react/scripts/build_interface.py + +lib_deps = + ArduinoJson@>=6.0.0,<7.0.0 + ; The following allows the use of the latest code for ESPAsyncWebServer - there hasn't been a release in a while + ; Work around for https://github.com/me-no-dev/ESPAsyncWebServer/issues/1151 + https://github.com/me-no-dev/ESPAsyncWebServer + ;ESP Async WebServer@>=1.2.0,<2.0.0 + AsyncMqttClient@>=0.9.0,<1.0.0 + https://github.com/FernandoGarcia/esp8266-react.git + +[env:esp12e] +platform = espressif8266 +board = esp12e +board_build.f_cpu = 160000000L +board_build.filesystem = littlefs + +; Comment out min_spiffs.csv setting if disabling PROGMEM_WWW with ESP32 + +[env:node32s] +board_build.partitions = min_spiffs.csv +platform = espressif32 +board = node32s +board_build.filesystem = littlefs + +[env:esp32dev] +; Comment out min_spiffs.csv setting if disabling PROGMEM_WWW with ESP32 +board_build.partitions = min_spiffs.csv +platform = espressif32 +board = esp32dev +board_build.filesystem = littlefs \ No newline at end of file diff --git a/examples/LightState/LightMqttSettingsService.cpp b/examples/LightState/src/LightMqttSettingsService.cpp similarity index 100% rename from examples/LightState/LightMqttSettingsService.cpp rename to examples/LightState/src/LightMqttSettingsService.cpp diff --git a/examples/LightState/LightMqttSettingsService.h b/examples/LightState/src/LightMqttSettingsService.h similarity index 100% rename from examples/LightState/LightMqttSettingsService.h rename to examples/LightState/src/LightMqttSettingsService.h diff --git a/examples/LightState/LightStateService.cpp b/examples/LightState/src/LightStateService.cpp similarity index 100% rename from examples/LightState/LightStateService.cpp rename to examples/LightState/src/LightStateService.cpp diff --git a/examples/LightState/LightStateService.h b/examples/LightState/src/LightStateService.h similarity index 100% rename from examples/LightState/LightStateService.h rename to examples/LightState/src/LightStateService.h diff --git a/examples/LightState/main.cpp b/examples/LightState/src/main.cpp similarity index 100% rename from examples/LightState/main.cpp rename to examples/LightState/src/main.cpp