diff -r bdc123ae7b49 -r bb72d448e282 main/task_mqtt.c --- a/main/task_mqtt.c Mon Apr 03 11:08:09 2023 +0200 +++ b/main/task_mqtt.c Mon Apr 03 16:07:34 2023 +0200 @@ -26,12 +26,14 @@ extern SemaphoreHandle_t xSemaphoreBMP280; ///< BMP280 lock semaphore extern INA219_State *ina219_state; ///< INA219 state extern SemaphoreHandle_t xSemaphoreINA219; ///< INA219 lock semaphore +extern APDS9930_State *apds9930_state; ///< APDS9930 state +extern SemaphoreHandle_t xSemaphoreAPDS9930; ///< APDS9930 lock semaphore extern WIFI_State *wifi_state; ///< WiFi state extern SemaphoreHandle_t xSemaphoreWiFi; ///< WiFi lock semaphore extern const esp_app_desc_t *app_desc; extern uint32_t Alarm; -extern float batteryState; +extern int batteryState; extern float batteryVolts; extern float batteryCurrent; extern float batteryPower; @@ -133,11 +135,11 @@ { char *topic = NULL, *payload = NULL, buf[64]; const esp_app_desc_t *app_desc = esp_app_get_description(); + int Quality = 0; - // {"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}} // {"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}} payload = xstrcpy((char *)"{\"system\":{\"battery\":"); - sprintf(buf, "%.0f", batteryState); + sprintf(buf, "%d", batteryState); payload = xstrcat(payload, buf); payload = xstrcat(payload, (char *)",\"alarm\":"); sprintf(buf, "%ld", Alarm); @@ -148,12 +150,30 @@ if (xSemaphoreTake(xSemaphoreWiFi, 25) == pdTRUE) { sprintf(buf, "%d", wifi_state->STA_rssi); payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"wifi\":"); + if (wifi_state->STA_rssi <= -100) { + Quality = 0; + } else if (wifi_state->STA_rssi >= -50) { + Quality = 100; + } else { + Quality = 2 * (wifi_state->STA_rssi + 100); + } + sprintf(buf, "%d", Quality); + payload = xstrcat(payload, buf); xSemaphoreGive(xSemaphoreWiFi); } payload = xstrcat(payload, (char *)",\"light\":{\"lux\":"); - - payload = xstrcat(payload, (char *)",\"gain\":"); - + if (xSemaphoreTake(xSemaphoreAPDS9930, 25) == pdTRUE) { + sprintf(buf, "%.1f", apds9930_state->ambient_light); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"gain\":"); + sprintf(buf, "%d", apds9930_state->gain); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"agl\":"); + sprintf(buf, "%d", apds9930_state->aglbit); + payload = xstrcat(payload, buf); + xSemaphoreGive(xSemaphoreAPDS9930); + } payload = xstrcat(payload, (char *)"}},\"solar\":{\"voltage\":"); sprintf(buf, "%.2f", solarVolts); payload = xstrcat(payload, buf); @@ -200,7 +220,7 @@ topic = topic_base(); topic = xstrcat(topic, (char *)"status"); ESP_LOGI(TAG, "%s %s", topic, payload); -// publisher(topic, payload); + publisher(topic, payload); free(topic); topic = NULL; free(payload);