main/task_mqtt.c

changeset 25
c5a9bde0268f
parent 24
74609f70411e
child 26
29dc2064e2ce
equal deleted inserted replaced
24:74609f70411e 25:c5a9bde0268f
248 case MQTT_EVENT_CONNECTED: 248 case MQTT_EVENT_CONNECTED:
249 ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED"); 249 ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED");
250 subscr = topic_base(); 250 subscr = topic_base();
251 subscr = xstrcat(subscr, (char *)"output/set/#"); 251 subscr = xstrcat(subscr, (char *)"output/set/#");
252 int msgid = esp_mqtt_client_subscribe(client, subscr, 0); 252 int msgid = esp_mqtt_client_subscribe(client, subscr, 0);
253 ESP_LOGI(TAG, "Subscribe `%s' id %d", subscr, msgid); 253 ESP_LOGD(TAG, "Subscribe `%s' id %d", subscr, msgid);
254 free(subscr); 254 free(subscr);
255 subscr = NULL; 255 subscr = NULL;
256 xEventGroupSetBits(xEventGroupMQTT, TASK_MQTT_CONNECTED); 256 xEventGroupSetBits(xEventGroupMQTT, TASK_MQTT_CONNECTED);
257 xEventGroupClearBits(xEventGroupMQTT, TASK_MQTT_DISCONNECTED); 257 xEventGroupClearBits(xEventGroupMQTT, TASK_MQTT_DISCONNECTED);
258 break; 258 break;
282 } 282 }
283 ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d, %d msgs in queue", event->msg_id, count_pub); 283 ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d, %d msgs in queue", event->msg_id, count_pub);
284 break; 284 break;
285 285
286 case MQTT_EVENT_DATA: 286 case MQTT_EVENT_DATA:
287 bool gotit = false;
288 char data[65], topic[128]; 287 char data[65], topic[128];
289 if (event->data_len < 65) 288 if (event->data_len < 65)
290 snprintf(data, 64, "%.*s", event->data_len, event->data); 289 snprintf(data, 64, "%.*s", event->data_len, event->data);
291 else 290 else
292 data[0] = '\0'; 291 data[0] = '\0';
298 297
299 check = topic_base(); 298 check = topic_base();
300 check = xstrcat(check, (char *)"output/set/1"); 299 check = xstrcat(check, (char *)"output/set/1");
301 if (strncmp(check, event->topic, event->topic_len) == 0) { 300 if (strncmp(check, event->topic, event->topic_len) == 0) {
302 ESP_LOGD(TAG, "Got %s `%s' %d", check, data, atoi(data)); 301 ESP_LOGD(TAG, "Got %s `%s' %d", check, data, atoi(data));
303 gotit = true;
304 Relay1 = (uint8_t)atoi(data); 302 Relay1 = (uint8_t)atoi(data);
305 nvsio_write_u8((char *)"out1", Relay1); 303 nvsio_write_u8((char *)"out1", Relay1);
306 } 304 }
307 free(check); 305
308 check = NULL; 306 check[strlen(check)-1] = '2';
309
310 check = topic_base();
311 check = xstrcat(check, (char *)"output/set/2");
312 if (strncmp(check, event->topic, event->topic_len) == 0) { 307 if (strncmp(check, event->topic, event->topic_len) == 0) {
313 ESP_LOGD(TAG, "Got %s `%s' %d", check, data, atoi(data)); 308 ESP_LOGD(TAG, "Got %s `%s' %d", check, data, atoi(data));
314 gotit = true;
315 Relay2 = (uint8_t)atoi(data); 309 Relay2 = (uint8_t)atoi(data);
316 nvsio_write_u8((char *)"out2", Relay2); 310 nvsio_write_u8((char *)"out2", Relay2);
317 } 311 }
318 free(check); 312
319 check = NULL; 313 check[strlen(check)-1] = '3';
320
321 check = topic_base();
322 check = xstrcat(check, (char *)"output/set/3");
323 if (strncmp(check, event->topic, event->topic_len) == 0) { 314 if (strncmp(check, event->topic, event->topic_len) == 0) {
324 ESP_LOGI(TAG, "Got %s `%s' %d", check, data, atoi(data)); 315 ESP_LOGD(TAG, "Got %s `%s' %d", check, data, atoi(data));
325 gotit = true;
326 Dimmer3 = (uint8_t)atoi(data); 316 Dimmer3 = (uint8_t)atoi(data);
327 nvsio_write_u8((char *)"out3", Dimmer3); 317 nvsio_write_u8((char *)"out3", Dimmer3);
328 } 318 }
329 free(check); 319
330 check = NULL; 320 check[strlen(check)-1] = '4';
331
332 check = topic_base();
333 check = xstrcat(check, (char *)"output/set/4");
334 if (strncmp(check, event->topic, event->topic_len) == 0) { 321 if (strncmp(check, event->topic, event->topic_len) == 0) {
335 ESP_LOGD(TAG, "Got %s `%s' %d", check, data, atoi(data)); 322 ESP_LOGD(TAG, "Got %s `%s' %d", check, data, atoi(data));
336 gotit = true;
337 Dimmer4 = (uint8_t)atoi(data); 323 Dimmer4 = (uint8_t)atoi(data);
338 nvsio_write_u8((char *)"out4", Dimmer4); 324 nvsio_write_u8((char *)"out4", Dimmer4);
339 } 325 }
340 free(check); 326 free(check);
341 check = NULL; 327 check = NULL;
342
343 if (! gotit) {
344 printf("TOPIC=%.*s ", event->topic_len, event->topic);
345 printf("DATA=%.*s\r\n", event->data_len, event->data);
346 }
347 break; 328 break;
348 329
349 case MQTT_EVENT_ERROR: 330 case MQTT_EVENT_ERROR:
350 ESP_LOGI(TAG, "MQTT_EVENT_ERROR"); 331 ESP_LOGI(TAG, "MQTT_EVENT_ERROR");
351 break; 332 break;

mercurial