-
Feature: Device web-portal
03/04/2024 at 13:39 • 0 commentsDevice portal brings super-easy configuration to any device using ksIotFrameworkLib. It can be accessed via LAN when connected or via WiFi-AP in configuration mode.
-
Feature: Custom RTTI implementation
09/05/2022 at 06:10 • 0 commentsTo achieve smaller binary size and get rid of function names from binary, I've implemented custom RTTI. Heavily based on Paul Varcholik and Shao Voon Wong implementations.
Currently all application components must implement KSF_RTTI_DECLARATIONS to be able to prepare downcasting.
Then user is able to check class type. It's very useful for functions finding objects by class type.
-
Moved to C++17, replaced String with std::string
08/24/2022 at 06:26 • 0 commentsDue to new amazing features, like string_view in C++ 17 I've decided replace existing String-based implementations to use string and string_view. This should generally improve performance and be more C++ friendly.
This is breaking change, projects should replace String& with std::string& or std::string_view& respectively. Python configuration script for platformio has been updated to automatically enable new standards.
Required enabled flags:
Requirements for bare Arduino users:- -std=gnu++17
- -std=c++17
Required disabled flags:
- -fno-rtti
- -std=gnu++11
-
Latest changes - LittleFS support and more
08/11/2022 at 07:05 • 0 commentsRecently I've pushed some changes:
- New filesystem - LittleFS instead of deprecated SPIFFS
- New predicate functions for component iteration
- Improvements targeting execution performance
- Improvements in ksConfigProvider component
- New "rfcalib" debug command (manually erase RF_CAL data on demand)
- Other minor improvements...
-
Always erase your chip instead of flashing it first
07/18/2022 at 07:42 • 0 commentsI've noticed that one of my devices is sometimes losing WiFi connection and is unable to reconnect again. I've updated NONOS core first, but still - same problem. Another ESP8266 based device with same code worked without issues.
Why?
Because of... RF_CAL (RF calibration area). This area isn't cleared automatically with every OTA update or serial flash - by flashing various software (with different SDK version) you might end up with incompatibile SDK in context of RF_CAL contents. That's why it's recommended to erase chip.
Doing full chip erase and then flashing software fixed the problem :)
-
Device online monitoring feature
07/09/2022 at 18:46 • 0 commentsI've added very simple MQTT-based feature that allows to monitor device connectivity.
- MQTT connector component will now use %deviceprefix%/connected topic to inform about connection state.
- Just after establishing MQTT connection, ksIotFrameworkLib will post "1" value to the topic.
- Last will message feature of MQTT protocol will post "0" value to the %deviceprefix%/connected topic.
Thanks to my Blynk-MQTT-Bridge I was able to setup uptimerobot easily:
-
PlatformIO core 6.1.0 released + MORE!
07/08/2022 at 06:52 • 0 commentsOur friends from PlatfiormIO have released 6.1.0 version of PIO core including significant change:
- Allowed to
Import("projenv")
in a library extra script (issue #4305)
This feature removed requirement to manually unflag -fno-rtti, all is now handled by fix_rtti.py script.
https://docs.platformio.org/en/latest/core/history.html
https://community.platformio.org/t/force-rtti-from-library/28176Another amazing thing, that since I've moved with ksIotFrameworkLib towards PlatformIO, CICD became easy.
Currently all my three projects based on this framework can be built on github with Github Actions, producing firmware binary file ready to be flashed on the device. This can be done even with mobile phone (as user can trigger Wifi Manager portal and then upload downloaded firmware file).
Next step is to use CICD features to implement unit tests for framework library :)
- Allowed to