220 payload = NULL; |
220 payload = NULL; |
221 } |
221 } |
222 |
222 |
223 |
223 |
224 |
224 |
|
225 void publishLogs(void) |
|
226 { |
|
227 char *topic = NULL, *payload = NULL, buf[64]; |
|
228 |
|
229 for (int i = 0; i < 3; i++) { |
|
230 if (units[i].mode && ! units[i].alarm) { |
|
231 if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) { |
|
232 payload = payload_header(); |
|
233 payload = xstrcat(payload, (char *)"{\"uuid\":\""); |
|
234 payload = xstrcat(payload, units[i].uuid); |
|
235 payload = xstrcat(payload, (char *)"\",\"temperature\":"); |
|
236 sprintf(buf, "%.3f", units[i].temperature / 1000.0); |
|
237 payload = xstrcat(payload, buf); |
|
238 payload = xstrcat(payload, (char *)",\"pressure\":"); |
|
239 sprintf(buf, "%.3f", units[i].pressure / 1000.0); |
|
240 payload = xstrcat(payload, buf); |
|
241 payload = xstrcat(payload, (char *)"}}"); |
|
242 topic = topic_base((char *)"DLOG"); |
|
243 topic = xstrcat(topic, (char *)"/"); |
|
244 topic = xstrcat(topic, units[i].alias); |
|
245 publisher(topic, payload); |
|
246 free(topic); |
|
247 topic = NULL; |
|
248 free(payload); |
|
249 payload = NULL; |
|
250 xSemaphoreGive(xSemaphoreUnits); |
|
251 } |
|
252 } |
|
253 } |
|
254 } |
|
255 |
|
256 |
|
257 |
225 static esp_err_t mqtt_event_handler_cb(esp_mqtt_event_handle_t event) |
258 static esp_err_t mqtt_event_handler_cb(esp_mqtt_event_handle_t event) |
226 { |
259 { |
227 switch (event->event_id) { |
260 switch (event->event_id) { |
228 |
261 |
229 case MQTT_EVENT_CONNECTED: |
262 case MQTT_EVENT_CONNECTED: |