main/task_mqtt.c

changeset 4
2a57c466bf45
parent 3
cd760fd45271
child 8
c6bbd1380f22
equal deleted inserted replaced
3:cd760fd45271 4:2a57c466bf45
28 extern SemaphoreHandle_t xSemaphoreADC; ///< ADC lock semaphore 28 extern SemaphoreHandle_t xSemaphoreADC; ///< ADC lock semaphore
29 extern WIFI_State *wifi_state; ///< WiFi state 29 extern WIFI_State *wifi_state; ///< WiFi state
30 extern SemaphoreHandle_t xSemaphoreWiFi; ///< WiFi lock semaphore 30 extern SemaphoreHandle_t xSemaphoreWiFi; ///< WiFi lock semaphore
31 31
32 extern unit_t units[3]; 32 extern unit_t units[3];
33 extern SemaphoreHandle_t xSemaphoreUnits;
34
33 extern const esp_app_desc_t *app_desc; 35 extern const esp_app_desc_t *app_desc;
34 36
35 37
36 38
37 void connect_mqtt(bool state) 39 void connect_mqtt(bool state)
97 char *unit_data(int i) 99 char *unit_data(int i)
98 { 100 {
99 char *payload = NULL; 101 char *payload = NULL;
100 char buf[128]; 102 char buf[128];
101 103
102 payload = xstrcpy((char *)"{\"uuid\":\""); 104 if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) {
103 payload = xstrcat(payload, units[i].uuid); 105 payload = xstrcpy((char *)"{\"uuid\":\"");
104 payload = xstrcat(payload, (char *)"\",\"alias\":\""); 106 payload = xstrcat(payload, units[i].uuid);
105 payload = xstrcat(payload, units[i].alias); 107 payload = xstrcat(payload, (char *)"\",\"alias\":\"");
106 108 payload = xstrcat(payload, units[i].alias);
107 // temperature_state temperature_address temperature 109
108 payload = xstrcat(payload, (char *)"\",\"temperature\":{\"state\":\""); 110 // temperature_state temperature_address temperature
109 payload = xstrcat(payload, (char *)sensState[units[i].temperature_state]); 111 payload = xstrcat(payload, (char *)"\",\"temperature\":{\"state\":\"");
110 payload = xstrcat(payload, (char *)"\",\"address\":\""); 112 payload = xstrcat(payload, (char *)sensState[units[i].temperature_state]);
111 payload = xstrcat(payload, (char *)units[i].temperature_rom_code); 113 payload = xstrcat(payload, (char *)"\",\"address\":\"");
112 payload = xstrcat(payload, (char *)"\",\"temperature\":"); 114 payload = xstrcat(payload, (char *)units[i].temperature_rom_code);
113 sprintf(buf, "%.3f", units[i].temperature / 1000.0); 115 payload = xstrcat(payload, (char *)"\",\"temperature\":");
114 payload = xstrcat(payload, buf); 116 sprintf(buf, "%.3f", units[i].temperature / 1000.0);
115 117 payload = xstrcat(payload, buf);
116 // pressure_state pressure_channel pressure_voltage pressure_zero pressure 118
117 payload = xstrcat(payload, (char *)"},\"pressure\":{\"state\":\""); 119 // pressure_state pressure_channel pressure_voltage pressure_zero pressure
118 payload = xstrcat(payload, (char *)sensState[units[i].pressure_state]); 120 payload = xstrcat(payload, (char *)"},\"pressure\":{\"state\":\"");
119 payload = xstrcat(payload, (char *)"\",\"channel\":"); 121 payload = xstrcat(payload, (char *)sensState[units[i].pressure_state]);
120 sprintf(buf, "%d", units[i].pressure_channel); 122 payload = xstrcat(payload, (char *)"\",\"channel\":");
121 payload = xstrcat(payload, buf); 123 sprintf(buf, "%d", units[i].pressure_channel);
122 payload = xstrcat(payload, (char *)",\"voltage\":"); 124 payload = xstrcat(payload, buf);
123 sprintf(buf, "%.3f", units[i].pressure_voltage / 1000.0); 125 payload = xstrcat(payload, (char *)",\"voltage\":");
124 payload = xstrcat(payload, buf); 126 sprintf(buf, "%.3f", units[i].pressure_voltage / 1000.0);
125 payload = xstrcat(payload, (char *)",\"zero\":"); 127 payload = xstrcat(payload, buf);
126 sprintf(buf, "%.3f", units[i].pressure_zero / 1000.0); 128 payload = xstrcat(payload, (char *)",\"zero\":");
127 payload = xstrcat(payload, buf); 129 sprintf(buf, "%.3f", units[i].pressure_zero / 1000.0);
128 payload = xstrcat(payload, (char *)",\"bar\":"); 130 payload = xstrcat(payload, buf);
129 sprintf(buf, "%.2f", units[i].pressure / 1000.0); 131 payload = xstrcat(payload, (char *)",\"bar\":");
130 payload = xstrcat(payload, buf); 132 sprintf(buf, "%.2f", units[i].pressure / 1000.0);
131 payload = xstrcat(payload, (char *)"},\"mode\":\""); 133 payload = xstrcat(payload, buf);
132 payload = xstrcat(payload, (char *)unitMode[units[i].mode]); 134 payload = xstrcat(payload, (char *)"},\"mode\":\"");
133 payload = xstrcat(payload, (char *)"\"}"); 135 payload = xstrcat(payload, (char *)unitMode[units[i].mode]);
136 payload = xstrcat(payload, (char *)"\"}");
137 xSemaphoreGive(xSemaphoreUnits);
138 }
134 return payload; 139 return payload;
135 } 140 }
136 141
137 142
138 143

mercurial