main/task_mqtt.c

changeset 23
58a328e91881
parent 16
e38ffa806e84
child 24
64078aa15512
equal deleted inserted replaced
22:cceb36fd3a2a 23:58a328e91881
89 /* 89 /*
90 * First count, then sent the data. 90 * First count, then sent the data.
91 */ 91 */
92 if (xSemaphoreTake(xSemaphorePcounter, 10) == pdTRUE) { 92 if (xSemaphoreTake(xSemaphorePcounter, 10) == pdTRUE) {
93 count_pub++; 93 count_pub++;
94 //printf(" up %d\n", count_pub);
95 xSemaphoreGive(xSemaphorePcounter); 94 xSemaphoreGive(xSemaphorePcounter);
96 } else { 95 } else {
97 ESP_LOGE(TAG, "Missed lock 1"); 96 ESP_LOGE(TAG, "publisher() counter lock");
98 } 97 }
99 98
100 if (payload) 99 if (payload)
101 esp_mqtt_client_publish(client, topic, payload, strlen(payload), 1, 0); 100 esp_mqtt_client_publish(client, topic, payload, strlen(payload), 1, 0);
102 else 101 else
145 payload = xstrcat(payload, (char *)",\"bar\":"); 144 payload = xstrcat(payload, (char *)",\"bar\":");
146 sprintf(buf, "%.2f", units[i].pressure / 1000.0); 145 sprintf(buf, "%.2f", units[i].pressure / 1000.0);
147 payload = xstrcat(payload, buf); 146 payload = xstrcat(payload, buf);
148 payload = xstrcat(payload, (char *)"}}"); 147 payload = xstrcat(payload, (char *)"}}");
149 xSemaphoreGive(xSemaphoreUnits); 148 xSemaphoreGive(xSemaphoreUnits);
149 } else {
150 ESP_LOGE(TAG, "unit_data(%d) lock error", i);
150 } 151 }
151 return payload; 152 return payload;
152 } 153 }
153 154
154 155
202 payload = xstrcat(payload, (char *)",\"THB\":{\"temperature\":"); 203 payload = xstrcat(payload, (char *)",\"THB\":{\"temperature\":");
203 sprintf(buf, "%.3f", ds18b20_state->sensor[0].temperature); 204 sprintf(buf, "%.3f", ds18b20_state->sensor[0].temperature);
204 payload = xstrcat(payload, buf); 205 payload = xstrcat(payload, buf);
205 payload = xstrcat(payload, (char *)"}"); 206 payload = xstrcat(payload, (char *)"}");
206 xSemaphoreGive(xSemaphoreDS18B20); 207 xSemaphoreGive(xSemaphoreDS18B20);
208 } else {
209 ESP_LOGE(TAG, "publishNode() lock DS18B20 error");
207 } 210 }
208 211
209 if (xSemaphoreTake(xSemaphoreWiFi, 10) == pdTRUE) { 212 if (xSemaphoreTake(xSemaphoreWiFi, 10) == pdTRUE) {
210 payload = xstrcat(payload, (char *)",\"net\":{\"address\":\""); 213 payload = xstrcat(payload, (char *)",\"net\":{\"address\":\"");
211 payload = xstrcat(payload, wifi_state->STA_ip); 214 payload = xstrcat(payload, wifi_state->STA_ip);
212 payload = xstrcat(payload, (char *)"\",\"ifname\":\"sta\",\"rssi\":"); 215 payload = xstrcat(payload, (char *)"\",\"ifname\":\"sta\",\"rssi\":");
213 sprintf(buf, "%d", wifi_state->STA_rssi); 216 sprintf(buf, "%d", wifi_state->STA_rssi);
214 payload = xstrcat(payload, buf); 217 payload = xstrcat(payload, buf);
215 payload = xstrcat(payload, (char *)"}"); 218 payload = xstrcat(payload, (char *)"}");
216 xSemaphoreGive(xSemaphoreWiFi); 219 xSemaphoreGive(xSemaphoreWiFi);
220 } else {
221 ESP_LOGE(TAG, "publishNode() lock WiFi error");
217 } 222 }
218 223
219 payload = xstrcat(payload, (char *)"}}"); 224 payload = xstrcat(payload, (char *)"}}");
220 // Only NBIRTH messages, no NDATA in this project. 225 // Only NBIRTH messages, no NDATA in this project.
221 topic = topic_base((char *)"NBIRTH"); 226 topic = topic_base((char *)"NBIRTH");
252 free(topic); 257 free(topic);
253 topic = NULL; 258 topic = NULL;
254 free(payload); 259 free(payload);
255 payload = NULL; 260 payload = NULL;
256 xSemaphoreGive(xSemaphoreUnits); 261 xSemaphoreGive(xSemaphoreUnits);
262 } else {
263 ESP_LOGE(TAG, "publishLogs() lock error unit %d", i);
257 } 264 }
258 } 265 }
259 } 266 }
260 } 267 }
261 268
286 case MQTT_EVENT_PUBLISHED: 293 case MQTT_EVENT_PUBLISHED:
287 ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id); 294 ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id);
288 if (xSemaphoreTake(xSemaphorePcounter, 10) == pdTRUE) { 295 if (xSemaphoreTake(xSemaphorePcounter, 10) == pdTRUE) {
289 if (count_pub) { 296 if (count_pub) {
290 count_pub--; 297 count_pub--;
291 //printf("down %d\n", count_pub);
292 } 298 }
293 xSemaphoreGive(xSemaphorePcounter); 299 xSemaphoreGive(xSemaphorePcounter);
294 } else { 300 } else {
295 ESP_LOGE(TAG, "Missed lock 2"); 301 ESP_LOGE(TAG, "mqtt_event_handler_cb(() lock error event");
296 } 302 }
297 break; 303 break;
298 304
299 case MQTT_EVENT_DATA: 305 case MQTT_EVENT_DATA:
300 ESP_LOGI(TAG, "MQTT_EVENT_DATA"); 306 ESP_LOGI(TAG, "MQTT_EVENT_DATA");
377 383
378 if (uxBits & TASK_MQTT_CONNECT) { 384 if (uxBits & TASK_MQTT_CONNECT) {
379 ESP_LOGI(TAG, "Request MQTT connect"); 385 ESP_LOGI(TAG, "Request MQTT connect");
380 err = esp_mqtt_client_start(client); 386 err = esp_mqtt_client_start(client);
381 if (err != ESP_OK) 387 if (err != ESP_OK)
382 ESP_LOGI(TAG, "Result %s", esp_err_to_name(err)); 388 ESP_LOGE(TAG, "Result %s", esp_err_to_name(err));
383 xEventGroupClearBits(xEventGroupMQTT, TASK_MQTT_CONNECT); 389 xEventGroupClearBits(xEventGroupMQTT, TASK_MQTT_CONNECT);
384 390
385 } else if (uxBits & TASK_MQTT_DISCONNECT) { 391 } else if (uxBits & TASK_MQTT_DISCONNECT) {
386 ESP_LOGI(TAG, "Request MQTT disconnect"); 392 ESP_LOGI(TAG, "Request MQTT disconnect");
387 esp_mqtt_client_stop(client); 393 esp_mqtt_client_stop(client);

mercurial