diff --git a/docs/source/api/rainmaker.rst b/docs/source/api/rainmaker.rst index ae0c735b00b..1b157a790b7 100644 --- a/docs/source/api/rainmaker.rst +++ b/docs/source/api/rainmaker.rst @@ -22,9 +22,6 @@ The key features of ESP RainMaker are: Additional information about ESP RainMaker can be found `here `__. -######################### -Arduino ESP Rainmaker API -######################### ESP RainMaker Agent API ----------------------- @@ -127,6 +124,21 @@ This function will return 1. `ESP_OK` : On success 2. Error in case of failure +RMaker.enableScenes +******************* + +This API enables the Scenes service for the node. It should be called after `RMaker.initNode()` and before `RMaker.start()`. +For more information, check `here `__. + +.. code-block:: arduino + + esp_err_t enableScenes() + +This function will return + +1. `ESP_OK` : On success +2. Error in case of failure + RMaker.setTimeZone ****************** diff --git a/libraries/RainMaker/examples/RMakerCustom/RMakerCustom.ino b/libraries/RainMaker/examples/RMakerCustom/RMakerCustom.ino index f10f858cad7..74b0c39bd3d 100644 --- a/libraries/RainMaker/examples/RMakerCustom/RMakerCustom.ino +++ b/libraries/RainMaker/examples/RMakerCustom/RMakerCustom.ino @@ -26,7 +26,7 @@ static Device my_device("Dimmer", "custom.device.dimmer", &gpio_dimmer); void sysProvEvent(arduino_event_t *sys_event) { - switch (sys_event->event_id) { + switch (sys_event->event_id) { case ARDUINO_EVENT_PROV_START: #if CONFIG_IDF_TARGET_ESP32S2 Serial.printf("\nProvisioning Started with name \"%s\" and PoP \"%s\" on SoftAP\n", service_name, pop); @@ -34,7 +34,7 @@ void sysProvEvent(arduino_event_t *sys_event) #else Serial.printf("\nProvisioning Started with name \"%s\" and PoP \"%s\" on BLE\n", service_name, pop); printQR(service_name, pop, "ble"); -#endif +#endif break; default:; } @@ -63,7 +63,7 @@ void setup() pinMode(gpio_dimmer, OUTPUT); digitalWrite(gpio_dimmer, DEFAULT_POWER_MODE); - Node my_node; + Node my_node; my_node = RMaker.initNode("ESP RainMaker Node"); //Create custom dimmer device @@ -78,13 +78,13 @@ void setup() my_device.addParam(level_param); my_device.addCb(write_callback); - - //Add custom dimmer device to the node + + //Add custom dimmer device to the node my_node.addDevice(my_device); - //This is optional + //This is optional RMaker.enableOTA(OTA_USING_PARAMS); - //If you want to enable scheduling, set time zone for your region using setTimeZone(). + //If you want to enable scheduling, set time zone for your region using setTimeZone(). //The list of available values are provided here https://rainmaker.espressif.com/docs/time-service.html // RMaker.setTimeZone("Asia/Shanghai"); // Alternatively, enable the Timezone service and let the phone apps set the appropriate timezone @@ -92,6 +92,8 @@ void setup() RMaker.enableSchedule(); + RMaker.enableScenes(); + RMaker.start(); WiFi.onEvent(sysProvEvent); diff --git a/libraries/RainMaker/examples/RMakerCustomAirCooler/RMakerCustomAirCooler.ino b/libraries/RainMaker/examples/RMakerCustomAirCooler/RMakerCustomAirCooler.ino index 5b36ecffd06..aa59c060f70 100644 --- a/libraries/RainMaker/examples/RMakerCustomAirCooler/RMakerCustomAirCooler.ino +++ b/libraries/RainMaker/examples/RMakerCustomAirCooler/RMakerCustomAirCooler.ino @@ -43,7 +43,7 @@ static Device my_device("Air Cooler", "my.device.air-cooler", NULL); void sysProvEvent(arduino_event_t *sys_event) { - switch (sys_event->event_id) { + switch (sys_event->event_id) { case ARDUINO_EVENT_PROV_START: #if CONFIG_IDF_TARGET_ESP32S2 Serial.printf("\nProvisioning Started with name \"%s\" and PoP \"%s\" on SoftAP\n", service_name, pop); @@ -51,7 +51,7 @@ void sysProvEvent(arduino_event_t *sys_event) #else Serial.printf("\nProvisioning Started with name \"%s\" and PoP \"%s\" on BLE\n", service_name, pop); printQR(service_name, pop, "ble"); -#endif +#endif break; default:; } @@ -114,7 +114,7 @@ void setup() pinMode(gpio_speed, OUTPUT); analogWrite(gpio_speed, DEFAULT_SPEED); - Node my_node; + Node my_node; my_node = RMaker.initNode("ESP RainMaker Node"); //Create custom air cooler device @@ -138,13 +138,13 @@ void setup() my_device.addParam(mode_param); my_device.addCb(write_callback); - - //Add custom Air Cooler device to the node + + //Add custom Air Cooler device to the node my_node.addDevice(my_device); - //This is optional + //This is optional // RMaker.enableOTA(OTA_USING_PARAMS); - //If you want to enable scheduling, set time zone for your region using setTimeZone(). + //If you want to enable scheduling, set time zone for your region using setTimeZone(). //The list of available values are provided here https://rainmaker.espressif.com/docs/time-service.html // RMaker.setTimeZone("Asia/Shanghai"); //Alternatively, enable the Timezone service and let the phone apps set the appropriate timezone @@ -152,6 +152,8 @@ void setup() RMaker.enableSchedule(); + RMaker.enableScenes(); + RMaker.start(); WiFi.onEvent(sysProvEvent); diff --git a/libraries/RainMaker/examples/RMakerSonoffDualR3/RMakerSonoffDualR3.ino b/libraries/RainMaker/examples/RMakerSonoffDualR3/RMakerSonoffDualR3.ino index cf9a58b7111..38b459ffd20 100644 --- a/libraries/RainMaker/examples/RMakerSonoffDualR3/RMakerSonoffDualR3.ino +++ b/libraries/RainMaker/examples/RMakerSonoffDualR3/RMakerSonoffDualR3.ino @@ -136,6 +136,7 @@ void setup() // Alternatively, enable the Timezone service and let the phone apps set the appropriate timezone RMaker.enableTZService(); RMaker.enableSchedule(); + RMaker.enableScenes(); //Service Name for(int i=0; i<17; i=i+8) { diff --git a/libraries/RainMaker/examples/RMakerSwitch/RMakerSwitch.ino b/libraries/RainMaker/examples/RMakerSwitch/RMakerSwitch.ino index 2da78ad0744..53d71387b15 100644 --- a/libraries/RainMaker/examples/RMakerSwitch/RMakerSwitch.ino +++ b/libraries/RainMaker/examples/RMakerSwitch/RMakerSwitch.ino @@ -81,6 +81,8 @@ void setup() RMaker.enableSchedule(); + RMaker.enableScenes(); + RMaker.start(); WiFi.onEvent(sysProvEvent); diff --git a/libraries/RainMaker/src/RMaker.cpp b/libraries/RainMaker/src/RMaker.cpp index fc80e716424..c7e3e921dd5 100644 --- a/libraries/RainMaker/src/RMaker.cpp +++ b/libraries/RainMaker/src/RMaker.cpp @@ -3,6 +3,7 @@ #include "RMaker.h" #include #include +#include bool wifiLowLevelInit(bool persistent); static esp_err_t err; @@ -28,12 +29,12 @@ static void event_handler(void *arg, esp_event_base_t event_base, int32_t event_ log_i("Unhandled RainMaker Event:"); } } else if (event_base == RMAKER_OTA_EVENT) { - if(event_data == NULL){ + if (event_data == NULL) { event_data = (void*)""; } switch(event_id) { case RMAKER_OTA_EVENT_STARTING: - log_i("Starting OTA : %s", (char*)event_data); + log_i("Starting OTA"); break; case RMAKER_OTA_EVENT_IN_PROGRESS: log_i("OTA in progress : %s", (char*)event_data); @@ -146,5 +147,13 @@ esp_err_t RMakerClass::enableOTA(ota_type_t type, const char *cert) return err; } +esp_err_t RMakerClass::enableScenes() +{ + err = esp_rmaker_scenes_enable(); + if (err != ESP_OK) { + log_e("Scenes enable failed"); + } + return err; +} RMakerClass RMaker; #endif diff --git a/libraries/RainMaker/src/RMaker.h b/libraries/RainMaker/src/RMaker.h index dbfbe5c49f5..69930052f6a 100644 --- a/libraries/RainMaker/src/RMaker.h +++ b/libraries/RainMaker/src/RMaker.h @@ -25,9 +25,9 @@ class RMakerClass { private: esp_rmaker_config_t rainmaker_cfg = {false}; - + public: - + void setTimeSync(bool val); Node initNode(const char *name, const char *type = "ESP RainMaker with Arduino"); esp_err_t deinitNode(Node node); @@ -35,6 +35,7 @@ class RMakerClass esp_err_t enableSchedule(); esp_err_t enableTZService(); esp_err_t enableOTA(ota_type_t type, const char *cert = ESP_RMAKER_OTA_DEFAULT_SERVER_CERT); + esp_err_t enableScenes(); esp_err_t start(); esp_err_t stop(); };