main/task_mqtt.c

changeset 12
bb72d448e282
parent 10
eee990609da7
child 15
64028e178ff1
equal deleted inserted replaced
11:bdc123ae7b49 12:bb72d448e282
24 24
25 extern BMP280_State *bmp280_state; ///< BMP280 state 25 extern BMP280_State *bmp280_state; ///< BMP280 state
26 extern SemaphoreHandle_t xSemaphoreBMP280; ///< BMP280 lock semaphore 26 extern SemaphoreHandle_t xSemaphoreBMP280; ///< BMP280 lock semaphore
27 extern INA219_State *ina219_state; ///< INA219 state 27 extern INA219_State *ina219_state; ///< INA219 state
28 extern SemaphoreHandle_t xSemaphoreINA219; ///< INA219 lock semaphore 28 extern SemaphoreHandle_t xSemaphoreINA219; ///< INA219 lock semaphore
29 extern APDS9930_State *apds9930_state; ///< APDS9930 state
30 extern SemaphoreHandle_t xSemaphoreAPDS9930; ///< APDS9930 lock semaphore
29 extern WIFI_State *wifi_state; ///< WiFi state 31 extern WIFI_State *wifi_state; ///< WiFi state
30 extern SemaphoreHandle_t xSemaphoreWiFi; ///< WiFi lock semaphore 32 extern SemaphoreHandle_t xSemaphoreWiFi; ///< WiFi lock semaphore
31 extern const esp_app_desc_t *app_desc; 33 extern const esp_app_desc_t *app_desc;
32 34
33 extern uint32_t Alarm; 35 extern uint32_t Alarm;
34 extern float batteryState; 36 extern int batteryState;
35 extern float batteryVolts; 37 extern float batteryVolts;
36 extern float batteryCurrent; 38 extern float batteryCurrent;
37 extern float batteryPower; 39 extern float batteryPower;
38 extern float solarVolts; 40 extern float solarVolts;
39 extern float solarCurrent; 41 extern float solarCurrent;
131 133
132 void publish(void) 134 void publish(void)
133 { 135 {
134 char *topic = NULL, *payload = NULL, buf[64]; 136 char *topic = NULL, *payload = NULL, buf[64];
135 const esp_app_desc_t *app_desc = esp_app_get_description(); 137 const esp_app_desc_t *app_desc = esp_app_get_description();
136 138 int Quality = 0;
137 // {"system":{"battery":70,"alarm":0,"version":"0.2.6","rssi":-56,"wifi":88,"light":{"lux":12.34,"gain":2}},"solar":{"voltage":13.98,"current":234.1,"power":3.272718},"battery":{"voltage":13.21,"current":4.942289,"power":0.065288},"real":{"current":229.1577},"TH":{"temperature":20.2,"humidity":48.3},"output":{"relay1":0,"relay2":0,"dimmer3":0,"dimmer4":0}} 139
138 // {"system":{"battery":40,"alarm":0,"version":"0.3.1","rssi":-77,"wifi":46,"light":{"lux":0.1,"gain":3,"agl":0}},"solar":{"voltage":0.31,"current":0,"power":0},"battery":{"voltage":12.27,"current":53.5,"power":0.657},"real":{"current":-53.5},"TH":{"temperature":8.88,"humidity":0},"output":{"relay1":0,"relay2":0,"dimmer3":90,"dimmer4":80}} 140 // {"system":{"battery":40,"alarm":0,"version":"0.3.1","rssi":-77,"wifi":46,"light":{"lux":0.1,"gain":3,"agl":0}},"solar":{"voltage":0.31,"current":0,"power":0},"battery":{"voltage":12.27,"current":53.5,"power":0.657},"real":{"current":-53.5},"TH":{"temperature":8.88,"humidity":0},"output":{"relay1":0,"relay2":0,"dimmer3":90,"dimmer4":80}}
139 payload = xstrcpy((char *)"{\"system\":{\"battery\":"); 141 payload = xstrcpy((char *)"{\"system\":{\"battery\":");
140 sprintf(buf, "%.0f", batteryState); 142 sprintf(buf, "%d", batteryState);
141 payload = xstrcat(payload, buf); 143 payload = xstrcat(payload, buf);
142 payload = xstrcat(payload, (char *)",\"alarm\":"); 144 payload = xstrcat(payload, (char *)",\"alarm\":");
143 sprintf(buf, "%ld", Alarm); 145 sprintf(buf, "%ld", Alarm);
144 payload = xstrcat(payload, buf); 146 payload = xstrcat(payload, buf);
145 payload = xstrcat(payload, (char *)",\"version\":\""); 147 payload = xstrcat(payload, (char *)",\"version\":\"");
146 payload = xstrcat(payload, (char *)app_desc->version); 148 payload = xstrcat(payload, (char *)app_desc->version);
147 payload = xstrcat(payload, (char *)"\",\"rssi\":"); 149 payload = xstrcat(payload, (char *)"\",\"rssi\":");
148 if (xSemaphoreTake(xSemaphoreWiFi, 25) == pdTRUE) { 150 if (xSemaphoreTake(xSemaphoreWiFi, 25) == pdTRUE) {
149 sprintf(buf, "%d", wifi_state->STA_rssi); 151 sprintf(buf, "%d", wifi_state->STA_rssi);
150 payload = xstrcat(payload, buf); 152 payload = xstrcat(payload, buf);
153 payload = xstrcat(payload, (char *)",\"wifi\":");
154 if (wifi_state->STA_rssi <= -100) {
155 Quality = 0;
156 } else if (wifi_state->STA_rssi >= -50) {
157 Quality = 100;
158 } else {
159 Quality = 2 * (wifi_state->STA_rssi + 100);
160 }
161 sprintf(buf, "%d", Quality);
162 payload = xstrcat(payload, buf);
151 xSemaphoreGive(xSemaphoreWiFi); 163 xSemaphoreGive(xSemaphoreWiFi);
152 } 164 }
153 payload = xstrcat(payload, (char *)",\"light\":{\"lux\":"); 165 payload = xstrcat(payload, (char *)",\"light\":{\"lux\":");
154 166 if (xSemaphoreTake(xSemaphoreAPDS9930, 25) == pdTRUE) {
155 payload = xstrcat(payload, (char *)",\"gain\":"); 167 sprintf(buf, "%.1f", apds9930_state->ambient_light);
156 168 payload = xstrcat(payload, buf);
169 payload = xstrcat(payload, (char *)",\"gain\":");
170 sprintf(buf, "%d", apds9930_state->gain);
171 payload = xstrcat(payload, buf);
172 payload = xstrcat(payload, (char *)",\"agl\":");
173 sprintf(buf, "%d", apds9930_state->aglbit);
174 payload = xstrcat(payload, buf);
175 xSemaphoreGive(xSemaphoreAPDS9930);
176 }
157 payload = xstrcat(payload, (char *)"}},\"solar\":{\"voltage\":"); 177 payload = xstrcat(payload, (char *)"}},\"solar\":{\"voltage\":");
158 sprintf(buf, "%.2f", solarVolts); 178 sprintf(buf, "%.2f", solarVolts);
159 payload = xstrcat(payload, buf); 179 payload = xstrcat(payload, buf);
160 payload = xstrcat(payload, (char *)",\"current\":"); 180 payload = xstrcat(payload, (char *)",\"current\":");
161 sprintf(buf, "%.1f", solarCurrent); 181 sprintf(buf, "%.1f", solarCurrent);
198 payload = xstrcat(payload, buf); 218 payload = xstrcat(payload, buf);
199 payload = xstrcat(payload, (char *)"}}"); 219 payload = xstrcat(payload, (char *)"}}");
200 topic = topic_base(); 220 topic = topic_base();
201 topic = xstrcat(topic, (char *)"status"); 221 topic = xstrcat(topic, (char *)"status");
202 ESP_LOGI(TAG, "%s %s", topic, payload); 222 ESP_LOGI(TAG, "%s %s", topic, payload);
203 // publisher(topic, payload); 223 publisher(topic, payload);
204 free(topic); 224 free(topic);
205 topic = NULL; 225 topic = NULL;
206 free(payload); 226 free(payload);
207 payload = NULL; 227 payload = NULL;
208 } 228 }

mercurial