diff --git a/components/dht22/dht22.c b/components/dht22/dht22.c index d7d49e0..7c64386 100644 --- a/components/dht22/dht22.c +++ b/components/dht22/dht22.c @@ -1,6 +1,6 @@ #include "dht22.h" -#include "sdkconfig.h" #include "esp_log.h" +#include "sdkconfig.h" #define DATA_GPIO CONFIG_DHT22_DATA_GPIO @@ -8,8 +8,8 @@ #error "Please define your DHT22 GPIO Data Pin" #endif /* CONFIG_DHT22_DATA_GPIO == -1 */ -static const char* TAG = "DHT22"; -deci_percent _dht22_relative_humidity = UINT16_MAX; +static const char *TAG = "DHT22"; +deci_percent _dht22_relative_humidity = UINT16_MAX; deci_degrees_c _dht22_temperature = INT16_MIN; void dht22_handle_error(dht22_error e) { @@ -26,12 +26,13 @@ dht22_error dht22_read() { uint8_t data[5] = {0}; // TODO: Actually figure out how to read the data from the chip. - - // TODO test that data[x] << 8 will be promoted to 16bits otherwise I'm shifting them to just zeros + + // TODO test that data[x] << 8 will be promoted to 16bits otherwise I'm + // shifting them to just zeros _dht22_relative_humidity = data[0] << 8 | data[1]; _dht22_temperature = (data[2] & 0x7f) << 8 | data[3]; if (data[2] & 0x80) { - _dht22_temperature = -1 * _dht22_temperature; + _dht22_temperature = -1 * _dht22_temperature; } uint8_t checksum_val = (data[0] + data[1] + data[2] + data[3]) & 0xff; if (checksum_val != data[4]) { @@ -39,13 +40,9 @@ dht22_error dht22_read() { _dht22_temperature = INT16_MIN; return DHT22_CHECKSUM_ERROR; } - + return DHT22_OK; } -deci_percent dht22_relative_humidity() { - return _dht22_relative_humidity; -} -deci_degrees_c dht22_temperature() { - return _dht22_temperature; -} +deci_percent dht22_relative_humidity() { return _dht22_relative_humidity; } +deci_degrees_c dht22_temperature() { return _dht22_temperature; } diff --git a/components/dht22/dht22.h b/components/dht22/dht22.h index 6d5a394..cf488f3 100644 --- a/components/dht22/dht22.h +++ b/components/dht22/dht22.h @@ -9,11 +9,9 @@ typedef enum { } dht22_error; typedef uint16_t deci_percent; -typedef int16_t deci_degrees_c; +typedef int16_t deci_degrees_c; void dht22_handle_error(); deci_percent dht22_relative_humidity(); deci_degrees_c dht22_temperature(); dht22_error dht22_read(); - - diff --git a/components/pms5003/pms5003.c b/components/pms5003/pms5003.c index fc346b7..fc5124c 100644 --- a/components/pms5003/pms5003.c +++ b/components/pms5003/pms5003.c @@ -1,4 +1,4 @@ int test() { - int i = 5; - return i; + int i = 5; + return i; } diff --git a/components/wifi/wifi.c b/components/wifi/wifi.c index 354f069..0870a47 100644 --- a/components/wifi/wifi.c +++ b/components/wifi/wifi.c @@ -1,10 +1,10 @@ #include "wifi.h" -#include -#include "freertos/FreeRTOS.h" -#include "esp_sntp.h" -#include "esp_wifi.h" #include "esp_event.h" #include "esp_log.h" +#include "esp_sntp.h" +#include "esp_wifi.h" +#include "freertos/FreeRTOS.h" +#include static const char *TAG = "WIFI"; @@ -13,88 +13,79 @@ static bool ntp_time_obtained = false; #define WIFI_CONNECTED_BIT (1 << 0) -bool has_ntp_time_obtained_once() { - return ntp_time_obtained; -} +bool has_ntp_time_obtained_once() { return ntp_time_obtained; } -static void event_handler(void* arg, esp_event_base_t event_base, - int32_t event_id, void* event_data) -{ - if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) { - esp_wifi_connect(); - ESP_LOGI(TAG, "connecting..."); - } - else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) { - esp_wifi_connect(); - ESP_LOGI(TAG,"connect to the AP fail - trying to reconnect"); - } - else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) { - ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data; - ESP_LOGI(TAG, "got ip:" IPSTR, IP2STR(&event->ip_info.ip)); - xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT); - } +static void event_handler(void *arg, esp_event_base_t event_base, + int32_t event_id, void *event_data) { + if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) { + esp_wifi_connect(); + ESP_LOGI(TAG, "connecting..."); + } else if (event_base == WIFI_EVENT && + event_id == WIFI_EVENT_STA_DISCONNECTED) { + esp_wifi_connect(); + ESP_LOGI(TAG, "connect to the AP fail - trying to reconnect"); + } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) { + ip_event_got_ip_t *event = (ip_event_got_ip_t *)event_data; + ESP_LOGI(TAG, "got ip:" IPSTR, IP2STR(&event->ip_info.ip)); + xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT); + } } void start_wifi() { - ESP_ERROR_CHECK(esp_netif_init()); + ESP_ERROR_CHECK(esp_netif_init()); - ESP_ERROR_CHECK(esp_event_loop_create_default()); - esp_netif_create_default_wifi_sta(); + ESP_ERROR_CHECK(esp_event_loop_create_default()); + esp_netif_create_default_wifi_sta(); - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); - ESP_ERROR_CHECK(esp_wifi_init(&cfg)); + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_wifi_init(&cfg)); - s_wifi_event_group = xEventGroupCreate(); + s_wifi_event_group = xEventGroupCreate(); - esp_event_handler_instance_t instance_any_id; - esp_event_handler_instance_t instance_got_ip; - ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, - ESP_EVENT_ANY_ID, - &event_handler, - NULL, - &instance_any_id)); - ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT, - IP_EVENT_STA_GOT_IP, - &event_handler, - NULL, - &instance_got_ip)); + esp_event_handler_instance_t instance_any_id; + esp_event_handler_instance_t instance_got_ip; + ESP_ERROR_CHECK(esp_event_handler_instance_register( + WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL, &instance_any_id)); + ESP_ERROR_CHECK(esp_event_handler_instance_register( + IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL, &instance_got_ip)); - wifi_config_t wifi_config = { - .sta = { - .ssid = CONFIG_WIFI_SSID, - .password = CONFIG_WIFI_PASSWORD, - .failure_retry_cnt = 20, - // TODO Figure out what I actually removed here - }, - }; - ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) ); - ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config) ); - ESP_ERROR_CHECK(esp_wifi_start() ); - ESP_LOGI(TAG, "wifi_init_sta finished."); + wifi_config_t wifi_config = { + .sta = + { + .ssid = CONFIG_WIFI_SSID, + .password = CONFIG_WIFI_PASSWORD, + .failure_retry_cnt = 20, + // TODO Figure out what I actually removed here + }, + }; + ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); + ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config)); + ESP_ERROR_CHECK(esp_wifi_start()); + ESP_LOGI(TAG, "wifi_init_sta finished."); - // Wait for WiFi to connect - xEventGroupWaitBits(s_wifi_event_group, WIFI_CONNECTED_BIT, pdFALSE, pdFALSE, portMAX_DELAY); - esp_sntp_setservername(0, "pool.ntp.org"); - esp_sntp_setoperatingmode(SNTP_OPMODE_POLL); - sntp_set_sync_status(SNTP_SYNC_STATUS_RESET); - sntp_set_sync_mode(SNTP_SYNC_MODE_SMOOTH); - esp_sntp_init(); + // Wait for WiFi to connect + xEventGroupWaitBits(s_wifi_event_group, WIFI_CONNECTED_BIT, pdFALSE, pdFALSE, + portMAX_DELAY); + esp_sntp_setservername(0, "pool.ntp.org"); + esp_sntp_setoperatingmode(SNTP_OPMODE_POLL); + sntp_set_sync_status(SNTP_SYNC_STATUS_RESET); + sntp_set_sync_mode(SNTP_SYNC_MODE_SMOOTH); + esp_sntp_init(); - setenv("TZ", "GMT0BST,M3.5.0/1,M10.5.0", 1); - tzset(); + setenv("TZ", "GMT0BST,M3.5.0/1,M10.5.0", 1); + tzset(); - - for (uint32_t i = 0; i < 20; ++i) { - if (sntp_get_sync_status() != SNTP_SYNC_STATUS_COMPLETED) { - ESP_LOGI(TAG, "... waiting for time update"); - vTaskDelay(1000 / portTICK_PERIOD_MS); - } + for (uint32_t i = 0; i < 20; ++i) { + if (sntp_get_sync_status() != SNTP_SYNC_STATUS_COMPLETED) { + ESP_LOGI(TAG, "... waiting for time update"); + vTaskDelay(1000 / portTICK_PERIOD_MS); } + } - time_t epoch; - time(&epoch); - struct tm *timeinfo = localtime(&epoch); + time_t epoch; + time(&epoch); + struct tm *timeinfo = localtime(&epoch); - ESP_LOGI(TAG, "Current time: %i:%i", timeinfo->tm_hour, timeinfo->tm_min); - ntp_time_obtained = true; + ESP_LOGI(TAG, "Current time: %i:%i", timeinfo->tm_hour, timeinfo->tm_min); + ntp_time_obtained = true; } diff --git a/components/wifi/wifi.h b/components/wifi/wifi.h index 4560ab1..f134dbf 100644 --- a/components/wifi/wifi.h +++ b/components/wifi/wifi.h @@ -3,8 +3,8 @@ #include // The idea with this function is to check if NTP time has been obtained // at least once - and therefore time is at least vaguely accurate -// I want to call this when saving data to know whether the time is valid/trusted -// at all +// I want to call this when saving data to know whether the time is +// valid/trusted at all bool has_ntp_time_obtained_once(); // Probably should rename this to "start networking" or something because diff --git a/main/main.c b/main/main.c index 6e3b1ec..2150a42 100644 --- a/main/main.c +++ b/main/main.c @@ -5,8 +5,6 @@ */ #include "dht22.h" -#include "sdkconfig.h" -#include "wifi.h" #include "esp_log.h" #include "esp_sntp.h" #include "freertos/FreeRTOS.h" @@ -14,11 +12,13 @@ #include "freertos/task.h" #include "nvs_flash.h" #include "portmacro.h" +#include "sdkconfig.h" +#include "wifi.h" #include #include #include -static const char* TAG = "YASPAM"; +static const char *TAG = "YASPAM"; static volatile bool run_dht = true; static volatile bool run_pms5003 = true; @@ -27,20 +27,18 @@ static TaskHandle_t dht22_handle = NULL; static TaskHandle_t pms5003_handle = NULL; typedef struct { - uint8_t myt_sec; // 0 -> 61 - uint8_t myt_min; // 0 -> 69 - uint8_t myt_hour; // 0 -> 23 - uint8_t myt_day; // 1 -> 31 - uint8_t myt_month; // 0 -> 11 !! - uint8_t myt_year; // years since 1900 + uint8_t myt_sec; // 0 -> 61 + uint8_t myt_min; // 0 -> 69 + uint8_t myt_hour; // 0 -> 23 + uint8_t myt_day; // 1 -> 31 + uint8_t myt_month; // 0 -> 11 !! + uint8_t myt_year; // years since 1900 } my_time; #ifdef CONFIG_PMS5003_ENABLED #include "pms5003.h" -void -read_from_pms5003() -{ +void read_from_pms5003() { while (run_pms5003) { // TODO: actually collect some data ESP_LOGI(TAG, "Got PMS5003 data!"); @@ -79,18 +77,20 @@ void read_from_dht22() { latest_datapoint.rh = dht22_relative_humidity(); if (has_ntp_time_obtained_once()) { - // I _think_ I only want to be doing that rolling average and saving if/when - // we've got an actual time to do that with. I think that'd avoid some weird - // bugs (time changing from 1970 -> current time within a 10 min period) + // I _think_ I only want to be doing that rolling average and saving + // if/when we've got an actual time to do that with. I think that'd + // avoid some weird bugs (time changing from 1970 -> current time within + // a 10 min period) time_t epoch; time(&epoch); struct tm *timeinfo = localtime(&epoch); - // There must be a better way - I couldn't figure out how to do it nicely all at once - latest_datapoint.time.myt_sec = timeinfo->tm_sec; - latest_datapoint.time.myt_min = timeinfo->tm_min; - latest_datapoint.time.myt_hour = timeinfo->tm_hour; - latest_datapoint.time.myt_day = timeinfo->tm_mday; + // There must be a better way - I couldn't figure out how to do it + // nicely all at once + latest_datapoint.time.myt_sec = timeinfo->tm_sec; + latest_datapoint.time.myt_min = timeinfo->tm_min; + latest_datapoint.time.myt_hour = timeinfo->tm_hour; + latest_datapoint.time.myt_day = timeinfo->tm_mday; latest_datapoint.time.myt_month = timeinfo->tm_mon; latest_datapoint.time.myt_year = timeinfo->tm_year; @@ -102,20 +102,23 @@ void read_from_dht22() { (latest_datapoint.rh - ten_minute_rolling_average.rh) / num_samples_last_ten_mins; ten_minute_rolling_average.temp += - (latest_datapoint.temp - ten_minute_rolling_average.temp) / num_samples_last_ten_mins; + (latest_datapoint.temp - ten_minute_rolling_average.temp) / + num_samples_last_ten_mins; } num_samples_last_ten_mins += 1; // This should be: if (number of samples in 10 mins taken) - // This _will_ break if sampled too quickly, because we'll have more samples per 10 minutes - // than can be stored in a uint32 - I'll calculate what that is and perhaps raise a compile - // error if too high. + // This _will_ break if sampled too quickly, because we'll have more + // samples per 10 minutes than can be stored in a uint32 - I'll + // calculate what that is and perhaps raise a compile error if too high. if (num_samples_last_ten_mins >= (CONFIG_DHT22_PERIOD_POLL * 1000 * 60 * 10)) { num_samples_last_ten_mins = 0; // TODO: Write the data out somewhere - into RAM maybe - // TODO: maybe push the data somewhere - or put a flag up that data can be pushed - // ^ could do a cute Semaphore thingy here - I don't think I've actually used one before + // TODO: maybe push the data somewhere - or put a flag up that data + // can be pushed + // ^ could do a cute Semaphore thingy here - I don't think I've + // actually used one before } } } @@ -124,9 +127,7 @@ void read_from_dht22() { } #endif /* CONFIG DHT22_ENABLED */ -void -app_main(void) -{ +void app_main(void) { esp_err_t ret = nvs_flash_init(); if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { @@ -136,24 +137,22 @@ app_main(void) ESP_ERROR_CHECK(ret); #ifdef CONFIG_DHT22_ENABLED - xTaskCreate(read_from_dht22, - "DHT22", + xTaskCreate(read_from_dht22, "DHT22", 4 * 1024, // honestly I have _no_ idea NULL, - 5, // no idea either + 5, // no idea either &dht22_handle); - + #endif /* CONFIG_DHT22_ENABLED */ #ifdef CONFIG_PMS5003_ENABLED - - xTaskCreate(read_from_pms5003, - "PMS5003", + + xTaskCreate(read_from_pms5003, "PMS5003", 4 * 1024, // honestly I have _no_ idea NULL, - 5, // no idea either + 5, // no idea either &pms5003_handle); - + #endif /* CONFIG_PMS5003_ENABLED */ start_wifi();