main/task_mqtt.c

changeset 8
c6bbd1380f22
parent 4
2a57c466bf45
child 9
a85995941d0d
equal deleted inserted replaced
7:6eafc4c2bf3d 8:c6bbd1380f22
17 esp_mqtt_client_handle_t client; ///< MQTT client handle 17 esp_mqtt_client_handle_t client; ///< MQTT client handle
18 const int TASK_MQTT_CONNECT = BIT0; ///< Request MQTT connection 18 const int TASK_MQTT_CONNECT = BIT0; ///< Request MQTT connection
19 const int TASK_MQTT_DISCONNECT = BIT1; ///< Request MQTT disconnect 19 const int TASK_MQTT_DISCONNECT = BIT1; ///< Request MQTT disconnect
20 const int TASK_MQTT_CONNECTED = BIT2; ///< MQTT is connected 20 const int TASK_MQTT_CONNECTED = BIT2; ///< MQTT is connected
21 21
22 const char *sensState[] = { "Ok", "Error" }; 22 const char *sensState[] = { "OK", "ERROR" };
23 const char *unitMode[] = { "Off", "On" }; 23 const char *unitMode[] = { "OFF", "ON" };
24 24
25 extern DS18B20_State *ds18b20_state; ///< DS18B20 state 25 extern DS18B20_State *ds18b20_state; ///< DS18B20 state
26 extern SemaphoreHandle_t xSemaphoreDS18B20; ///< DS18B20 lock semaphore 26 extern SemaphoreHandle_t xSemaphoreDS18B20; ///< DS18B20 lock semaphore
27 extern ADC_State *adc_state; ///< ADC state 27 extern ADC_State *adc_state; ///< ADC state
28 extern SemaphoreHandle_t xSemaphoreADC; ///< ADC lock semaphore 28 extern SemaphoreHandle_t xSemaphoreADC; ///< ADC lock semaphore
74 74
75 char *topic_base(char *msgtype) 75 char *topic_base(char *msgtype)
76 { 76 {
77 char *tmp; 77 char *tmp;
78 78
79 tmp = xstrcpy((char *)"mbv1.0/co2meter/"); 79 tmp = xstrcpy((char *)"mbv1.0/co2meters/");
80 tmp = xstrcat(tmp, msgtype); 80 tmp = xstrcat(tmp, msgtype);
81 tmp = xstrcat(tmp, (char *)"/"); 81 tmp = xstrcat(tmp, (char *)"/");
82 tmp = xstrcat(tmp, config.hostname); 82 tmp = xstrcat(tmp, config.hostname);
83 return tmp; 83 return tmp;
84 } 84 }
104 if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) { 104 if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) {
105 payload = xstrcpy((char *)"{\"uuid\":\""); 105 payload = xstrcpy((char *)"{\"uuid\":\"");
106 payload = xstrcat(payload, units[i].uuid); 106 payload = xstrcat(payload, units[i].uuid);
107 payload = xstrcat(payload, (char *)"\",\"alias\":\""); 107 payload = xstrcat(payload, (char *)"\",\"alias\":\"");
108 payload = xstrcat(payload, units[i].alias); 108 payload = xstrcat(payload, units[i].alias);
109 payload = xstrcat(payload, (char *)"\",\"mode\":\"");
110 payload = xstrcat(payload, (char *)unitMode[units[i].mode]);
111 payload = xstrcat(payload, (char *)"\",\"alarm\":");
112 sprintf(buf, "%d", units[i].alarm);
113 payload = xstrcat(payload, buf);
109 114
110 // temperature_state temperature_address temperature 115 // temperature_state temperature_address temperature
111 payload = xstrcat(payload, (char *)"\",\"temperature\":{\"state\":\""); 116 payload = xstrcat(payload, (char *)",\"temperature\":{\"state\":\"");
112 payload = xstrcat(payload, (char *)sensState[units[i].temperature_state]); 117 payload = xstrcat(payload, (char *)sensState[units[i].temperature_state]);
113 payload = xstrcat(payload, (char *)"\",\"address\":\""); 118 payload = xstrcat(payload, (char *)"\",\"address\":\"");
114 payload = xstrcat(payload, (char *)units[i].temperature_rom_code); 119 payload = xstrcat(payload, (char *)units[i].temperature_rom_code);
115 payload = xstrcat(payload, (char *)"\",\"temperature\":"); 120 payload = xstrcat(payload, (char *)"\",\"temperature\":");
116 sprintf(buf, "%.3f", units[i].temperature / 1000.0); 121 sprintf(buf, "%.3f", units[i].temperature / 1000.0);
129 sprintf(buf, "%.3f", units[i].pressure_zero / 1000.0); 134 sprintf(buf, "%.3f", units[i].pressure_zero / 1000.0);
130 payload = xstrcat(payload, buf); 135 payload = xstrcat(payload, buf);
131 payload = xstrcat(payload, (char *)",\"bar\":"); 136 payload = xstrcat(payload, (char *)",\"bar\":");
132 sprintf(buf, "%.2f", units[i].pressure / 1000.0); 137 sprintf(buf, "%.2f", units[i].pressure / 1000.0);
133 payload = xstrcat(payload, buf); 138 payload = xstrcat(payload, buf);
134 payload = xstrcat(payload, (char *)"},\"mode\":\""); 139 payload = xstrcat(payload, (char *)"}}");
135 payload = xstrcat(payload, (char *)unitMode[units[i].mode]);
136 payload = xstrcat(payload, (char *)"\"}");
137 xSemaphoreGive(xSemaphoreUnits); 140 xSemaphoreGive(xSemaphoreUnits);
138 } 141 }
139 return payload; 142 return payload;
140 } 143 }
141 144

mercurial