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();
};