| | --- |
| | license: apache-2.0 |
| | --- |
| | <b><i>Note: Use this [guide](https://github.com/OTAINFO/Downloads/blob/main/predictor_models/README.md) to create your own Predictor using this model for any CPU/MCU that support TFLite</i></b> |
| |
|
| | π€ esp32-process-success-predictor |
| | Tagline: Lightweight neural network for predicting process success on ESP32-based systems. |
| |
|
| | π§ Model Summary |
| | This model is designed for microcontrollers like the ESP32. It predicts the likelihood of success or failure for embedded tasks or processes based on sensor input or operational parameters. |
| |
|
| | Framework: TensorFlow Lite |
| |
|
| | Optimized for: Embedded deployment (ESP32, low-memory environments) |
| |
|
| | Input: Vector of process/task-specific features (e.g., Heap values, Default cpu temperature, Wifi attributes etc.) |
| |
|
| | Output: Score based prediction |
| |
|
| | ποΈ Intended Use |
| | Predict process outcomes in automation, robotics, or real-time control systems. |
| |
|
| | Deploy in constrained environments (under 1.2MB flash, < 300KB RAM). |
| |
|
| | Integrate with OTA update strategies and on-device decision-making. |
| |
|
| | π How to Use |
| | Checkout the following: |
| |
|
| | [Link](https://github.com/OTAINFO/Downloads/tree/main/predictor_models/ESP-IDF/esp32) |
| | Note: Variable(s) name(s) in esp32-process-success-predictor-model.cc may differ on the sample code. |
| |
|
| | π¦ Files Included |
| | esp32-process-success-predictor.keras: Full Keras model |
| |
|
| | esp32-process-success-predictor.tflite: TensorFlow Lite version for microcontroller inference |
| |
|
| | esp32-process-success-predictor-model.cc: This can be directly used in ESP-IDF environment. |
| |
|
| | π§ͺ Training Info |
| | Epochs: 5 |
| |
|
| | Accuracy: ~98.9% |
| |
|
| | Loss: ~0.025 on validation set |
| |
|
| | Dataset: Synthetic data set based on 3 years of data internally generated. |
| |
|
| | How to use the model? |
| | Input Attributes: battery_level,heap_largest_free_block,free_heap_size,wifi_rssi,cpu_temperature,is_charging |
| | Important: all these variables need to be set between 0 and 1 to get best results. |
| | |
| | Definition and Convertion of values: |
| | 1. battery_level: adc_cali_raw_to_voltage() give the value in voltage. Depending upon the range, divide the output of this function by maximum voltage. if value is > 1.0 set it to 0.99 |
| | ([Reference](https://esp32.com/viewtopic.php?t=6729)) |
| | 2. heap_largest_free_block: Assuming 32KB of heap as minimum requirement and maximum of 64K is requied to do an https call for OTA update of 1.2 MB size. Divide the number by 65536.0 |
| | If the value is > 1.0 give it 1.0 or 0.99. |
| | if value from function is < 32KB, set it to 0 |
| | Note: Depending upon the usecase, 32kb-64kb requirement may vary. The goal here is to adjust the value within the range. |
| | A low heap warning can be issued. Check [Sample](https://github.com/OTAINFO/Downloads/tree/main/predictor_models/ESP-IDF/esp32) |
| | |
| | 4. free_heap_size: Assumption is 80KB to 100KB requirement. More than 100kb is good so set it to 1 less than 80KB let the value remain. |
| | |
| | 5. wifi_rssi: -30 to -67 range is considered. > -30 is must be 0 or near to 0 and < -67 must also be set to 0 |
| | |
| | 5. cpu_temperature: Range 10-80 degrees. Above and below this range will result in low score with Temperature warning. |
| |
|
| | 6. is_charging: if charging keep it as 1 else 0 |
| | |
| | Next Release: Including probe data attributes from chip. Stay tuned! |
| | |
| | Contact us:[Contact us](https://join.slack.com/t/hal-fpo6396/shared_invite/zt-2swttq21s-IBozsESCoDnMt2N3QYRKRg) |
| | |
| | π License |
| | Apache 2.0 |