Commit Graph

44 Commits

Author SHA1 Message Date
Vikram Dattu
904938f1b0 Added support for LEDC driver
This can drive the LED on ESP32C2
2024-05-10 17:58:24 +05:30
Vikram Dattu
5dccee9eac examples: Add support for esp32c2
- Added entry for esp32c2 build in CI
- RAM optimized sdkconfig.defaults.esp32c2
- Disable ws2812 led drivers from non-rmt supported devices
- Use GPIO9 as BOOT button for C2
2024-05-09 20:38:11 +05:30
Vikram Dattu
138e2e6983 Add support for closing provisioning window after PoP mismatch
- The feature prevents brute force attacks by not allowing more than allowed PoP attempts
 - Allowed failure attempts are configurable via menuconfig and is 5 by default
 - Change added for both `app_wifi` and `app_wifi_with_homekit`
 - Min IDF version needed (release/v5.1.3)
2024-03-13 15:52:10 +05:30
Piyush Shah
20d826c232 esp_rainmaker: Update version for idf component manager
app_insights component manifest file also changed for better
handling of component versions.
2024-01-04 13:16:51 +05:30
Piyush Shah
00bf093167 app_wifi: Add an option to provide a custom Proof of Possession (PoP) for provisioning
POP_TYPE_CUSTOM has been added as an option for app_wifi_start().
app_wifi_set_custom_pop() should be used before this.
2023-11-29 13:56:05 +08:00
Vikram Dattu
10361704b4 wifi-prov cli: Set Wi-Fi creds directly for already provisioned devices
When device is already provisioned, `wifi_prov_mgr_configure_sta` API call fails.
This happens because, provisioning manager is in uninitialized state.
We set Wi-Fi credetials directly using `esp_wifi_set_config` in that case.

Also removed error check on `wifi_prov_mgr_is_provisioned` API call, as for
IDF 4.x APIs return `ESP_ERR_INVALID_STATE`
2023-10-27 18:20:00 +05:30
Vikram Dattu
f1d16cf736 examples: Added support for ESP32C6
1. ESP32C6 button configs for RGB LED and Boot GPIO
2. CI: Added entry for C6 in `.gitlab.yaml`
3. Added `partitions_4mb_optimised.csv` which uses flash to the full extent
  - Created sdkconfig.defaults for esp32c6 and used partitions_4mb_optimised.csv as default
  - This is made default for esp32c6 because, for esp32c6, image sizes exceed config from partitions.csv
4. Fixed matter examples CMakeLits.txt files for c6 support
2023-10-26 17:38:53 +05:30
Piyush Shah
cfca241575 idf_component_manager: Add components of esp rainmaker to component manager
Includes esp_rainmaker and esp_schedule
2023-09-22 09:40:00 +05:30
Piyush Shah
f6ed0c4994 components: Updated and moved some components
- qrcode, ws2812_led and gpio_button moved to examples/common
- esp-insights and rmaker_common submodules updated
- json_generator and json_parser components copied from component
  manager so that they can be used for component overrides
2023-09-22 09:39:55 +05:30
sanket.wadekar
d789c719e6 wifi_prov: Add mfg data for improved device discovery
For BLE provisioning, adding some metadata in BLE advertisement can help
apps in filtering the scanned device list better, instead of relying
just on the prefix. It can also help show the device type even before
provisioning.

Metadata has been added in led_light and switch examples only, but can be
added in any other project too, as per the apps' requirement.
2023-08-18 18:22:06 +05:30
sanket.wadekar
d7dc0c56c9 task: create event loop in app_insights 2023-05-29 15:21:34 +05:30
Vikram
7da0ec23db Bugfix: MQTT budget exceed causing WDT trigger in ESP-Insights
Cause: A vicious cycle:
MQTT budget exceed error print getting logged into ESP-Insights.
When the RTC memory is full, this causes it to drop the message and
raise memory full event, which then taken action as reporting Insights
data immediately. This again causes MQTT budget exceed error!

The fix: Do not try to send message when budget is not available

Signed-off-by: Vikram <vikram.dattu@espressif.com>
2023-02-01 12:43:41 +05:30
sanket.wadekar
2f2c383e5e mqtt_topics: Added support for AWS basic ingest topics.
Signed-off-by: sanket.wadekar <sanket.wadekar@espressif.com>
2022-11-21 18:59:47 +05:30
sanket.wadekar
cf3b8d851a Added MQTT disconnect and user node mapping reset calls on WiFi/Factory Reset.
Signed-off-by: sanket.wadekar <sanket.wadekar@espressif.com>
2022-11-15 10:43:09 +05:30
Vikram
3834314f72 Use SPIRAM for esp-insights allocations
When SPIRAM not available, it falls to internal RAM

Signed-off-by: Vikram <vikram.dattu@espressif.com>
2022-09-16 13:10:50 +05:30
Vikram
a9798f71df IDF5.0 build fixes
1. Added requires wherever necessary
2. Use exact format specifiers
3. Updated `esp-insights` and `rmaker_common` submodules

Signed-off-by: Vikram <vikram.dattu@espressif.com>
2022-08-26 19:04:02 +05:30
Chirag Atal
8fb1966178 gpio_button: Renaming button to gpio_button to fix compilation errors
Multiple components with the same name are detected if the idf_component_manager also includes the button component.
2022-07-20 14:43:07 -04:00
Chirag Atal
db2c8d3b58 minor: Fix support for cpp 2022-07-13 12:46:41 -04:00
Piyush Shah
4250addc13 app_wifi: Make provisioning prefix configurable 2022-04-28 17:21:34 +05:30
Piyush Shah
c0af462fee app_wifi: Add an option to reset prov state machine on failure
Earlier, a reset and reboot were required if wrong Wi-Fi credentials
were given during provisioning. With this change, based on some
configured number of reconnection attempts, the firmware will go back into
provisioning mode.
2022-04-28 17:21:34 +05:30
Piyush Shah
d796985bac app_wifi: Minor feature additions to provisioning workflow
- Provide an option of provisioning without PoP pin (use with caution).
- Config option for provisioning timeout (set to 30 min by default).
Useful especially when there is no PoP, and so you want to keep the device
in provisioning mode only for a few minutes after boot up.
2022-04-28 17:21:34 +05:30
Shubham Patil
e3573c81da app_insights: Insights transport changes 2022-03-04 17:44:31 +05:30
Shubham Patil
dc65f11661 esp_insights: Update submodule and minor fixes
- app_insights:
 - Replaced esp_insights_rmaker_enable() API with esp_insights_enable()
 - Enable errors, warnings, and events when user selects LOG_TYPE_ALL
 - Fixed compilation errors and warnings
2021-10-29 09:48:59 +05:30
Piyush Shah
8738eb0fab esp32s3: Add support for the new platform ESP32-S3 2021-09-08 00:32:39 +05:30
Piyush Shah
f1b92c293f Minor fixes
- Compilation issues were seen on some hosts after insights components were included.
- app_wifi: CMake file had esp_rainmaker as a dependency even if it was no dependent on it.
- WS2812 could not be used for ESP32 due to Kconfig logic
2021-07-06 23:02:24 +05:30
Piyush Shah
0c84527cfb esp_insights: Add facility to enable esp_insights in the examples
Please check out CHANGES.md as this commit may break your existing
projects' compilation.
2021-07-06 00:39:07 +05:30
Piyush Shah
fce91c4fb0 esp_rmaker_core: Add a system service for reboot/reset 2021-05-28 23:21:58 +05:30
Piyush Shah
66dc818ba8 esp_events: Corrected the event handler prototypes to be in sync with esp_event_handler_t
Closes https://github.com/espressif/esp-rainmaker/issues/55
2021-03-15 11:03:32 +05:30
Piyush Shah
50c3023e43 esp32-c3: Minor changes for ESP32-C3 support 2021-02-08 23:27:57 +05:30
Piyush Shah
2271c51144 Merge branch 'task/module_restructure' into 'master'
esp_rmaker: Moved out some generic modules from esp_rainmaker component

See merge request app-frameworks/esp-rainmaker!222
2021-02-04 00:51:19 +08:00
Piyush Shah
31d4b375e3 esp_rmaker: Moved out some generic modules from esp_rainmaker component
The following are now part of a separate repo (and included as git submodule):
- MQTT glue layer
- Work Queue
- Utilities (reset, reboot, time sync, timezone, etc.)
- Factory Storage

Even CLI is now a part of a seperate repo, included here as a git submodule.
2021-02-03 15:30:55 +05:30
Shubham Patil
460eb620e0 app_wifi: Initialized the nvs_random to NULL. 2021-02-01 20:53:25 +05:30
Piyush Shah
63b7471a88 app_wifi: Added some optional prints on console to help getting started
CONFIG_APP_WIFI_SHOW_DEMO_INTRO_TEXT needs to be set to enable these prints
2021-01-28 16:03:46 +05:30
Piyush Shah
fd50262b42 app_wifi: Changes in SSID and PoP generation for Provisioning
- In claiming, change the 4 byte random number to 64 byte and store it
as binary data instead of hex representation.
- Instead of reading PoP as hex string from NVS, read it as binary data
(because of above change) and then convert to hex representation.
- Instead of using mac address, use last 3 bytes of the above random number
number as suffix for SSID.

The last change was made so as to allow generating the QR code completely outside
the device, without knowing its mac address.
2020-10-16 18:44:29 +05:30
Piyush Shah
52f9d01956 esp_rmaker_user_mapping: Create and register user_mapping handlers internally
Earlier, it was the application code's responsibility to call the
esp_rmaker_user_mapping_endpoint_create() and esp_rmaker_user_mapping_endpoint_register()
APIs at appropriate places in Wi-Fi provisioning code to enable user node mapping
functionality. To simplify this, the logic has been moved to RainMaker Core, so that
this happens automatically.

For some reason, if you want to retain the older logic in your application code
and do not want RainMaker_core to enable this, please set the
CONFIG_ESP_RMAKER_DISABLE_USER_MAPPING_PROV config option.
2020-10-01 00:58:37 +05:30
Piyush Shah
dc61b3429f app_wifi: Make BLE provisioning as the default for ESP32
- This will be required for the new "Assisted Claiming" feature.
2020-09-11 22:32:50 +05:30
Piyush Shah
7d5c39eb83 idf4.0_compat: Minor changes for IDF 4.0 compatibility
If IDF version being used is 4.0, following changes will happen:
- tcpip_adapter will be used, instead of esp_netif.
- MQTT port 8883 will be used, even if 443 is chosen, because
443 requires ALPN options in MQTT, which aren't supported in IDF 4.0
2020-09-01 16:08:09 +05:30
Piyush Shah
196bcb2d41 examples: Use the new wifi-reset and factory-reset APIs 2020-08-21 23:21:53 +05:30
Shubham Patil
e19abab592 wifi_provisioning: Use a random pop instead of creating it from MAC address
MAC address is a public information and can also be sniffed easily. Creating the proof of
possession pin from that is not secure enough. Instead, a random stream of bytes is now generated
and stored in the fctry partition during claiming and that is used for the PoP.
2020-08-05 23:12:08 +05:30
Piyush Shah
2bc2c7396f esp_rainmaker: Combine the various components into a single esp_rainmaker component
- Better exchange of data between different rainmaker components
- Single Kconfig file
- Easier to manage events and other common functionality
2020-07-22 19:16:04 +05:30
Piyush Shah
febb4bc745 examples: Use the common app_wifi file even in the gpio example 2020-06-25 12:08:04 +05:30
Chirag Atal
227a705430 app_wifi: Add support for BLE based provisioning. 2020-06-22 18:51:08 +05:30
Piyush Shah
ea3bfcda4b app_wifi: Add a link which can be copy-pasted in browser for provisioning QR code 2020-04-22 19:39:55 +05:30
Piyush Shah
cdb696649b app_wifi: Move the code to a common folder as it is same across all examples 2020-04-22 22:08:34 +08:00