diff --git a/main/main.c b/main/main.c index dc6cb1d..ab7335c 100644 --- a/main/main.c +++ b/main/main.c @@ -107,15 +107,22 @@ int8_t bme280_readout(){ void bme280_task(void *pvParameter){ int8_t ret = 1; + char msgbuf[128]; while (1) { ret = bme280_readout(); if (ret == 0) { post_data_http(client.bme280, "bme280", "bedroom-bme280-01", comp_data.temperature, comp_data.humidity, comp_data.pressure / 100.); + + snprintf(msgbuf, sizeof(msgbuf), "bme280: %.2f C, %.2f %%, %.2f hPa", + comp_data.temperature, comp_data.humidity, comp_data.pressure / 100.); + ESP_LOGI(TAG, "bme2800: %s", msgbuf); } else { post_error_http(client.bme280, "bme280", "bedroom-bme280-01", - 1, "some error"); + ret, "some error"); + snprintf(msgbuf, sizeof(msgbuf), "am2302: return code %d", ret); + ESP_LOGE(TAG, "bme280: %s", msgbuf); } // read_out every 2 sec vTaskDelay(BME280_READOUT_DELAY / portTICK_RATE_MS); @@ -135,13 +142,13 @@ void DHT_task(void *pvParameter) getTemperature(), getHumidity()); post_data_http(client.am2302, "am2302", "bedroom-am2302-01", getTemperature(), getHumidity(), -1); - ESP_LOGI(TAG, "%s", msgbuf); + ESP_LOGI(TAG, "am2302: %s", msgbuf); } else { post_error_http(client.am2302, "am2302", "bedroom-am2302-01", - 1, "some error"); + ret, "some error"); snprintf(msgbuf, sizeof(msgbuf), "am2302: return code %d", ret); - ESP_LOGE(TAG, "%s", msgbuf); + ESP_LOGE(TAG, "am2302: %s", msgbuf); } // -- wait at least 2 sec before reading again ------------ // The interval of whole process must be beyond 2 seconds !! @@ -151,8 +158,31 @@ void DHT_task(void *pvParameter) static void post_error_http(esp_http_client_handle_t client, char *sensor, char *sensor_description, int err_code, char *error_details){ + char url[80]; + snprintf(url, 80, "%s/%s", db_worker_root, sensor); + esp_http_client_config_t config = { .url = url, .event_handler = _http_event_handler}; + client = esp_http_client_init(&config); + esp_http_client_set_method(client, HTTP_METHOD_POST); + esp_http_client_set_header(client, "Content-Type", "application/json"); + // POST + char post_data[256]; + snprintf(post_data, sizeof(post_data), + "{\"status\": %d, \"error\": \"%s\", \"sensor\": \"%s\"}", + err_code, error_details, sensor_description); + esp_http_client_set_post_field(client, post_data, strlen(post_data)); + esp_err_t err = esp_http_client_perform(client); - /* snprintf(post_data, sizeof(post_data), "{\"status\": failed, \"error\": \"could not read from sensor\", \"sensor\": \"%s\"}", s); */ + if (err == ESP_OK) { + ESP_LOGI(TAG, "%s: HTTP POST Status = %d, content_length = %d", + sensor, + esp_http_client_get_status_code(client), + esp_http_client_get_content_length(client)); + } else { + ESP_LOGE(TAG, "%s: HTTP POST request failed: %s", + sensor, esp_err_to_name(err)); + } + + esp_http_client_cleanup(client); } static void post_data_http(esp_http_client_handle_t client, @@ -173,11 +203,13 @@ static void post_data_http(esp_http_client_handle_t client, esp_err_t err = esp_http_client_perform(client); if (err == ESP_OK) { - ESP_LOGI(TAG, "HTTP POST Status = %d, content_length = %d", + ESP_LOGI(TAG, "%s: HTTP POST Status = %d, content_length = %d", + sensor, esp_http_client_get_status_code(client), esp_http_client_get_content_length(client)); } else { - ESP_LOGE(TAG, "HTTP POST request failed: %s", esp_err_to_name(err)); + ESP_LOGE(TAG, "%s: HTTP POST request failed: %s", + sensor, esp_err_to_name(err)); } esp_http_client_cleanup(client);