@@ -39,27 +39,27 @@ bool power_state = true;
39
39
40
40
// The framework provides some standard device types like switch, lightbulb, fan, temperature sensor.
41
41
// But, you can also define custom devices using the 'Device' base class object, as shown here
42
- static Device my_device ( " Air Cooler " , " my.device.air-cooler " , NULL ) ;
42
+ static Device * my_device = NULL ;
43
43
44
44
void sysProvEvent (arduino_event_t *sys_event)
45
45
{
46
46
switch (sys_event->event_id ) {
47
- case ARDUINO_EVENT_PROV_START:
47
+ case ARDUINO_EVENT_PROV_START:
48
48
#if CONFIG_IDF_TARGET_ESP32S2
49
- Serial.printf (" \n Provisioning Started with name \" %s\" and PoP \" %s\" on SoftAP\n " , service_name, pop);
50
- printQR (service_name, pop, " softap" );
49
+ Serial.printf (" \n Provisioning Started with name \" %s\" and PoP \" %s\" on SoftAP\n " , service_name, pop);
50
+ printQR (service_name, pop, " softap" );
51
51
#else
52
- Serial.printf (" \n Provisioning Started with name \" %s\" and PoP \" %s\" on BLE\n " , service_name, pop);
53
- printQR (service_name, pop, " ble" );
52
+ Serial.printf (" \n Provisioning Started with name \" %s\" and PoP \" %s\" on BLE\n " , service_name, pop);
53
+ printQR (service_name, pop, " ble" );
54
54
#endif
55
- break ;
56
- case ARDUINO_EVENT_PROV_INIT:
57
- wifi_prov_mgr_disable_auto_stop (10000 );
58
- break ;
59
- case ARDUINO_EVENT_PROV_CRED_SUCCESS:
60
- wifi_prov_mgr_stop_provisioning ();
61
- break ;
62
- default :;
55
+ break ;
56
+ case ARDUINO_EVENT_PROV_INIT:
57
+ wifi_prov_mgr_disable_auto_stop (10000 );
58
+ break ;
59
+ case ARDUINO_EVENT_PROV_CRED_SUCCESS:
60
+ wifi_prov_mgr_stop_provisioning ();
61
+ break ;
62
+ default :;
63
63
}
64
64
}
65
65
@@ -68,13 +68,13 @@ void write_callback(Device *device, Param *param, const param_val_t val, void *p
68
68
const char *device_name = device->getDeviceName ();
69
69
const char *param_name = param->getParamName ();
70
70
71
- if (strcmp (param_name, " Power" ) == 0 ) {
72
- Serial.printf (" Received value = %s for %s - %s\n " , val.val .b ? " true" : " false" , device_name, param_name);
71
+ if (strcmp (param_name, " Power" ) == 0 ) {
72
+ Serial.printf (" Received value = %s for %s - %s\n " , val.val .b ? " true" : " false" , device_name, param_name);
73
73
power_state = val.val .b ;
74
74
(power_state == false ) ? digitalWrite (gpio_power, LOW) : digitalWrite (gpio_power, HIGH);
75
75
param->updateAndReport (val);
76
76
} else if (strcmp (param_name, " Swing" ) == 0 ) {
77
- Serial.printf (" \n Received value = %s for %s - %s\n " , val.val .b ? " true" : " false" , device_name, param_name);
77
+ Serial.printf (" \n Received value = %s for %s - %s\n " , val.val .b ? " true" : " false" , device_name, param_name);
78
78
bool swing = val.val .b ;
79
79
(swing == false ) ? digitalWrite (gpio_swing, LOW) : digitalWrite (gpio_swing, HIGH);
80
80
param->updateAndReport (val);
@@ -84,7 +84,7 @@ void write_callback(Device *device, Param *param, const param_val_t val, void *p
84
84
analogWrite (gpio_speed, speed);
85
85
param->updateAndReport (val);
86
86
} else if (strcmp (param_name, " Mode" ) == 0 ) {
87
- const char * mode = val.val .s ;
87
+ const char * mode = val.val .s ;
88
88
if (strcmp (mode, " Auto" ) == 0 ) {
89
89
digitalWrite (gpio_mode_auto, HIGH);
90
90
digitalWrite (gpio_mode_heat, LOW);
@@ -112,41 +112,50 @@ void setup()
112
112
pinMode (gpio_swing, OUTPUT);
113
113
digitalWrite (gpio_swing, DEFAULT_SWING);
114
114
pinMode (gpio_mode_auto, OUTPUT);
115
- if (strcmp (DEFAULT_MODE, " Auto" ) == 0 ) digitalWrite (gpio_mode_auto, HIGH);
115
+ if (strcmp (DEFAULT_MODE, " Auto" ) == 0 ) {
116
+ digitalWrite (gpio_mode_auto, HIGH);
117
+ }
116
118
pinMode (gpio_mode_cool, OUTPUT);
117
- if (strcmp (DEFAULT_MODE, " Cool" ) == 0 ) digitalWrite (gpio_mode_auto, HIGH);
119
+ if (strcmp (DEFAULT_MODE, " Cool" ) == 0 ) {
120
+ digitalWrite (gpio_mode_auto, HIGH);
121
+ }
118
122
pinMode (gpio_mode_heat, OUTPUT);
119
- if (strcmp (DEFAULT_MODE, " Heat" ) == 0 ) digitalWrite (gpio_mode_auto, HIGH);
123
+ if (strcmp (DEFAULT_MODE, " Heat" ) == 0 ) {
124
+ digitalWrite (gpio_mode_auto, HIGH);
125
+ }
120
126
pinMode (gpio_speed, OUTPUT);
121
127
analogWrite (gpio_speed, DEFAULT_SPEED);
122
128
123
129
Node my_node;
124
130
my_node = RMaker.initNode (" ESP RainMaker Node" );
125
-
131
+ my_device = new Device (" Air Cooler" , " my.device.air-cooler" , NULL );
132
+ if (!my_device) {
133
+ return ;
134
+ }
126
135
// Create custom air cooler device
127
- my_device. addNameParam ();
128
- my_device. addPowerParam (DEFAULT_POWER_MODE);
129
- my_device. assignPrimaryParam (my_device. getParamByName (ESP_RMAKER_DEF_POWER_NAME));
136
+ my_device-> addNameParam ();
137
+ my_device-> addPowerParam (DEFAULT_POWER_MODE);
138
+ my_device-> assignPrimaryParam (my_device-> getParamByName (ESP_RMAKER_DEF_POWER_NAME));
130
139
131
140
Param swing (" Swing" , ESP_RMAKER_PARAM_TOGGLE, value (DEFAULT_SWING), PROP_FLAG_READ | PROP_FLAG_WRITE);
132
141
swing.addUIType (ESP_RMAKER_UI_TOGGLE);
133
- my_device. addParam (swing);
142
+ my_device-> addParam (swing);
134
143
135
144
Param speed (" Speed" , ESP_RMAKER_PARAM_RANGE, value (DEFAULT_SPEED), PROP_FLAG_READ | PROP_FLAG_WRITE);
136
145
speed.addUIType (ESP_RMAKER_UI_SLIDER);
137
146
speed.addBounds (value (0 ), value (255 ), value (1 ));
138
- my_device. addParam (speed);
147
+ my_device-> addParam (speed);
139
148
140
- static const char * modes[] = { " Auto" , " Cool" , " Heat" };
149
+ static const char * modes[] = { " Auto" , " Cool" , " Heat" };
141
150
Param mode_param (" Mode" , ESP_RMAKER_PARAM_MODE, value (" Auto" ), PROP_FLAG_READ | PROP_FLAG_WRITE);
142
151
mode_param.addValidStrList (modes, 3 );
143
152
mode_param.addUIType (ESP_RMAKER_UI_DROPDOWN);
144
- my_device. addParam (mode_param);
153
+ my_device-> addParam (mode_param);
145
154
146
- my_device. addCb (write_callback);
155
+ my_device-> addCb (write_callback);
147
156
148
157
// Add custom Air Cooler device to the node
149
- my_node.addDevice (my_device);
158
+ my_node.addDevice (* my_device);
150
159
151
160
// This is optional
152
161
// RMaker.enableOTA(OTA_USING_TOPICS);
@@ -172,29 +181,33 @@ void setup()
172
181
173
182
void loop ()
174
183
{
175
- if (digitalRead (gpio_reset) == LOW) { // Push button pressed
184
+ if (digitalRead (gpio_reset) == LOW) { // Push button pressed
176
185
177
186
// Key debounce handling
178
187
delay (100 );
179
188
int startTime = millis ();
180
- while (digitalRead (gpio_reset) == LOW) delay (50 );
189
+ while (digitalRead (gpio_reset) == LOW) {
190
+ delay (50 );
191
+ }
181
192
int press_duration = millis () - startTime;
182
193
183
194
if (press_duration > 10000 ) {
184
- // If key pressed for more than 10secs, reset all
185
- Serial.printf (" Reset to factory.\n " );
186
- RMakerFactoryReset (2 );
195
+ // If key pressed for more than 10secs, reset all
196
+ Serial.printf (" Reset to factory.\n " );
197
+ RMakerFactoryReset (2 );
187
198
} else if (press_duration > 3000 ) {
188
- Serial.printf (" Reset Wi-Fi.\n " );
189
- // If key pressed for more than 3secs, but less than 10, reset Wi-Fi
190
- RMakerWiFiReset (2 );
199
+ Serial.printf (" Reset Wi-Fi.\n " );
200
+ // If key pressed for more than 3secs, but less than 10, reset Wi-Fi
201
+ RMakerWiFiReset (2 );
191
202
} else {
192
- // Toggle device state
193
- power_state = !power_state;
194
- Serial.printf (" Toggle power state to %s.\n " , power_state ? " true" : " false" );
195
- my_device.updateAndReportParam (ESP_RMAKER_DEF_POWER_NAME, power_state);
196
- (power_state == false ) ? digitalWrite (gpio_power, LOW) : digitalWrite (gpio_power, HIGH);
197
- }
203
+ // Toggle device state
204
+ power_state = !power_state;
205
+ Serial.printf (" Toggle power state to %s.\n " , power_state ? " true" : " false" );
206
+ if (my_device) {
207
+ my_device->updateAndReportParam (ESP_RMAKER_DEF_POWER_NAME, power_state);
208
+ }
209
+ (power_state == false ) ? digitalWrite (gpio_power, LOW) : digitalWrite (gpio_power, HIGH);
210
+ }
198
211
}
199
212
delay (100 );
200
213
}
0 commit comments