Thu, 28 Sep 2023 11:29:23 +0200
Some ADC code simplified.
17 | 1 | /** |
2 | * @file co2meter.c | |
3 | * @brief co2meter project. | |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
4 | */ |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
5 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
6 | #include "config.h" |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
7 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
8 | static const char *TAG = "co2meter"; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
9 | |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
10 | |
21
043ae27633f8
Moved the user interface into a separate task. Added a real seconds timer to this task.
Michiel Broek <mbroek@mbse.eu>
parents:
20
diff
changeset
|
11 | const esp_app_desc_t *app_desc = NULL; ///< Application description |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
12 | int Main_Loop1 = ML1_INIT; ///< Loop 1 init |
34
495b7eafbf5a
Temporary white splash screen. Select DS18B20 sensor per unit. Changed units result logging
Michiel Broek <mbroek@mbse.eu>
parents:
33
diff
changeset
|
13 | int num_sensors = 0; ///< Detected DS18B20 sensors |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
14 | static TaskHandle_t xTaskDS18B20 = NULL; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
15 | static TaskHandle_t xTaskADC = NULL; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
16 | static TaskHandle_t xTaskWifi = NULL; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
17 | static TaskHandle_t xTaskMQTT = NULL; |
21
043ae27633f8
Moved the user interface into a separate task. Added a real seconds timer to this task.
Michiel Broek <mbroek@mbse.eu>
parents:
20
diff
changeset
|
18 | static TaskHandle_t xTaskUser = NULL; |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
19 | |
4
2a57c466bf45
FreeRTOS scheduler from 100 Hz to 200 Hz. All units data is now protected with a semaphore.
Michiel Broek <mbroek@mbse.eu>
parents:
2
diff
changeset
|
20 | extern unit_t units[3]; ///< Pressure test units |
2a57c466bf45
FreeRTOS scheduler from 100 Hz to 200 Hz. All units data is now protected with a semaphore.
Michiel Broek <mbroek@mbse.eu>
parents:
2
diff
changeset
|
21 | extern SemaphoreHandle_t xSemaphoreUnits; ///< Units lock semaphore |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
22 | extern DS18B20_State *ds18b20_state; ///< DS18B20 state |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
23 | extern SemaphoreHandle_t xSemaphoreDS18B20; ///< DS18B20 lock semaphore |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
24 | extern ADC_State *adc_state; ///< ADC state |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
25 | extern SemaphoreHandle_t xSemaphoreADC; ///< ADC lock semaphore |
47
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
26 | extern SemaphoreHandle_t xSemaphoreWiFi; |
20
7c1dacafed03
Attempt to create a rotary editor
Michiel Broek <mbroek@mbse.eu>
parents:
19
diff
changeset
|
27 | extern WIFI_State *wifi_state; ///< WiFi state |
21
043ae27633f8
Moved the user interface into a separate task. Added a real seconds timer to this task.
Michiel Broek <mbroek@mbse.eu>
parents:
20
diff
changeset
|
28 | extern EventGroupHandle_t xEventGroupUser; |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
29 | extern int count_pub; ///< Published MQTT messages in transit |
51
5035385299f6
Added alarm timer watchdog. This resets the loop if not finished in 30 seconds.
Michiel Broek <mbroek@mbse.eu>
parents:
50
diff
changeset
|
30 | extern uint32_t AlarmTimer; ///< Alarm timer |
52
90a36619b07b
Added screen with software error counters.
Michiel Broek <mbroek@mbse.eu>
parents:
51
diff
changeset
|
31 | extern uint32_t err_connect; ///< Connect error counter |
18
d969e0fe05dc
Added splash screen and unit zero set menu.
Michiel Broek <mbroek@mbse.eu>
parents:
17
diff
changeset
|
32 | |
19 | 33 | |
57
232f318a6b51
Code cleanup, doxygen comments added.
Michiel Broek <mbroek@mbse.eu>
parents:
52
diff
changeset
|
34 | /** |
232f318a6b51
Code cleanup, doxygen comments added.
Michiel Broek <mbroek@mbse.eu>
parents:
52
diff
changeset
|
35 | * @brief Main program entry |
232f318a6b51
Code cleanup, doxygen comments added.
Michiel Broek <mbroek@mbse.eu>
parents:
52
diff
changeset
|
36 | */ |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
37 | void app_main() |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
38 | { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
39 | esp_err_t ret; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
40 | |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
41 | Main_Loop1 = ML1_INIT; |
18
d969e0fe05dc
Added splash screen and unit zero set menu.
Michiel Broek <mbroek@mbse.eu>
parents:
17
diff
changeset
|
42 | app_desc = esp_ota_get_app_description(); |
38
46e2c385e9de
Removed all the deepsleep code since there will be no battery operation.
Michiel Broek <mbroek@mbse.eu>
parents:
37
diff
changeset
|
43 | /* |
46e2c385e9de
Removed all the deepsleep code since there will be no battery operation.
Michiel Broek <mbroek@mbse.eu>
parents:
37
diff
changeset
|
44 | * event handler and event group for the user interface |
46e2c385e9de
Removed all the deepsleep code since there will be no battery operation.
Michiel Broek <mbroek@mbse.eu>
parents:
37
diff
changeset
|
45 | */ |
21
043ae27633f8
Moved the user interface into a separate task. Added a real seconds timer to this task.
Michiel Broek <mbroek@mbse.eu>
parents:
20
diff
changeset
|
46 | xEventGroupUser = xEventGroupCreate(); |
38
46e2c385e9de
Removed all the deepsleep code since there will be no battery operation.
Michiel Broek <mbroek@mbse.eu>
parents:
37
diff
changeset
|
47 | user_cold(); |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
48 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
49 | /* |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
50 | * Initialize NVS |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
51 | */ |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
52 | ret = nvs_flash_init(); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
53 | if (ret == ESP_ERR_NVS_NO_FREE_PAGES) { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
54 | ESP_ERROR_CHECK(nvs_flash_erase()); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
55 | ret = nvs_flash_init(); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
56 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
57 | ESP_ERROR_CHECK(ret); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
58 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
59 | /* |
6
06a5028dbcdf
Hookup OLED I2C display to temorary display some data.
Michiel Broek <mbroek@mbse.eu>
parents:
4
diff
changeset
|
60 | * Setup SPIFFS filesystem |
06a5028dbcdf
Hookup OLED I2C display to temorary display some data.
Michiel Broek <mbroek@mbse.eu>
parents:
4
diff
changeset
|
61 | */ |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
62 | ESP_LOGI(TAG, "Initializing SPIFFS"); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
63 | esp_vfs_spiffs_conf_t conf = { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
64 | .base_path = "/spiffs", |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
65 | .partition_label = NULL, |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
66 | .max_files = 5, |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
67 | .format_if_mount_failed = true |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
68 | }; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
69 | |
6
06a5028dbcdf
Hookup OLED I2C display to temorary display some data.
Michiel Broek <mbroek@mbse.eu>
parents:
4
diff
changeset
|
70 | /* |
06a5028dbcdf
Hookup OLED I2C display to temorary display some data.
Michiel Broek <mbroek@mbse.eu>
parents:
4
diff
changeset
|
71 | * Use settings defined above to initialize and mount SPIFFS filesystem. |
06a5028dbcdf
Hookup OLED I2C display to temorary display some data.
Michiel Broek <mbroek@mbse.eu>
parents:
4
diff
changeset
|
72 | * Note: esp_vfs_spiffs_register is an all-in-one convenience function. |
06a5028dbcdf
Hookup OLED I2C display to temorary display some data.
Michiel Broek <mbroek@mbse.eu>
parents:
4
diff
changeset
|
73 | */ |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
74 | ret = esp_vfs_spiffs_register(&conf); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
75 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
76 | if (ret != ESP_OK) { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
77 | if (ret == ESP_FAIL) { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
78 | ESP_LOGE(TAG, "Failed to mount or format filesystem"); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
79 | } else if (ret == ESP_ERR_NOT_FOUND) { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
80 | ESP_LOGE(TAG, "Failed to find SPIFFS partition"); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
81 | } else { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
82 | ESP_LOGE(TAG, "Failed to initialize SPIFFS (%d)", ret); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
83 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
84 | return; // Stop application. |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
85 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
86 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
87 | size_t total = 0, used = 0; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
88 | ret = esp_spiffs_info(NULL, &total, &used); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
89 | if (ret != ESP_OK) { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
90 | ESP_LOGE(TAG, "Failed to get SPIFFS partition information"); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
91 | return; // Stop application. |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
92 | } else { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
93 | ESP_LOGI(TAG, "Partition size: %d, used: %d - %d%%", total, used, (used * 100) / total); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
94 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
95 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
96 | // Just to debug, list the /spiffs filesystem. |
6
06a5028dbcdf
Hookup OLED I2C display to temorary display some data.
Michiel Broek <mbroek@mbse.eu>
parents:
4
diff
changeset
|
97 | #if 0 |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
98 | DIR *dir = opendir("/spiffs"); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
99 | struct dirent* de = readdir(dir); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
100 | while (de) { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
101 | if (de->d_type == DT_REG) { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
102 | printf("F "); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
103 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
104 | if (de->d_type == DT_DIR) { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
105 | printf("D "); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
106 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
107 | printf("%s\n", de->d_name); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
108 | de = readdir(dir); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
109 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
110 | closedir(dir); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
111 | #endif |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
112 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
113 | /* |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
114 | * Read or create configuration |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
115 | */ |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
116 | read_config(); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
117 | read_units(); |
59
52d9405474e1
Better check for a corrupted units file. Added a small boot delay to prevent units file corruption.
Michiel Broek <mbroek@mbse.eu>
parents:
58
diff
changeset
|
118 | vTaskDelay(500 / portTICK_PERIOD_MS); |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
119 | |
6
06a5028dbcdf
Hookup OLED I2C display to temorary display some data.
Michiel Broek <mbroek@mbse.eu>
parents:
4
diff
changeset
|
120 | /* |
06a5028dbcdf
Hookup OLED I2C display to temorary display some data.
Michiel Broek <mbroek@mbse.eu>
parents:
4
diff
changeset
|
121 | * Create FreeRTOS tasks |
06a5028dbcdf
Hookup OLED I2C display to temorary display some data.
Michiel Broek <mbroek@mbse.eu>
parents:
4
diff
changeset
|
122 | */ |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
123 | xSemaphoreDS18B20 = xSemaphoreCreateMutex(); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
124 | xSemaphoreADC = xSemaphoreCreateMutex(); |
4
2a57c466bf45
FreeRTOS scheduler from 100 Hz to 200 Hz. All units data is now protected with a semaphore.
Michiel Broek <mbroek@mbse.eu>
parents:
2
diff
changeset
|
125 | xSemaphoreUnits = xSemaphoreCreateMutex(); |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
126 | |
26
8a3696620c0a
Increaded stacksize for the user process. Implemented the network update using the proven brewboard code. Reverted the lock release and display sendbuffer lines to the previous code. The networks status screen uses the wifi lock.
Michiel Broek <mbroek@mbse.eu>
parents:
24
diff
changeset
|
127 | xTaskCreate(&task_user, "task_user", 4096, NULL,10, &xTaskUser); |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
128 | xTaskCreate(&task_ds18b20, "task_ds18b20", 2560, NULL, 8, &xTaskDS18B20); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
129 | xTaskCreate(&task_adc, "task_adc", 2560, NULL, 8, &xTaskADC); |
47
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
130 | esp_log_level_set("MQTT_CLIENT", ESP_LOG_ERROR); |
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
131 | xTaskCreate(&task_mqtt, "task_mqtt", 4096, NULL, 5, &xTaskMQTT); |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
132 | esp_log_level_set("wifi", ESP_LOG_ERROR); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
133 | xTaskCreate(&task_wifi, "task_wifi", 4096, NULL, 3, &xTaskWifi); |
6
06a5028dbcdf
Hookup OLED I2C display to temorary display some data.
Michiel Broek <mbroek@mbse.eu>
parents:
4
diff
changeset
|
134 | vTaskDelay(10 / portTICK_PERIOD_MS); |
47
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
135 | int wait = 150; |
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
136 | while (wait) { |
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
137 | if (ready_WiFi()) { |
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
138 | ESP_LOGI(TAG, "Online in %.1f seconds", (150 - wait) / 10.0); |
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
139 | wait = 0; |
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
140 | } else { |
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
141 | wait--; |
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
142 | if (wait < 1) |
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
143 | ESP_LOGE(TAG, "Timeout network connection"); |
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
144 | } |
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
145 | vTaskDelay(100 / portTICK_PERIOD_MS); |
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
146 | } |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
147 | |
7
6eafc4c2bf3d
Sleep time is now 55 seconds. Code cleanup. Decrease MQTT library logging to Error.
Michiel Broek <mbroek@mbse.eu>
parents:
6
diff
changeset
|
148 | /* |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
149 | * Main application loop. |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
150 | */ |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
151 | while (1) { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
152 | |
37
358bbd5b608e
menuconfig settings now work for I2C display setup. Lot's of code cleanup.
Michiel Broek <mbroek@mbse.eu>
parents:
34
diff
changeset
|
153 | ESP_LOGI(TAG, "Entered Main loop"); |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
154 | |
21
043ae27633f8
Moved the user interface into a separate task. Added a real seconds timer to this task.
Michiel Broek <mbroek@mbse.eu>
parents:
20
diff
changeset
|
155 | /* Measure process */ |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
156 | while (1) { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
157 | switch (Main_Loop1) { |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
158 | case ML1_INIT: |
47
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
159 | status_WiFi(); |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
160 | Main_Loop1 = ML1_CONNECT; |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
161 | request_ds18b20(); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
162 | request_adc(); |
51
5035385299f6
Added alarm timer watchdog. This resets the loop if not finished in 30 seconds.
Michiel Broek <mbroek@mbse.eu>
parents:
50
diff
changeset
|
163 | AlarmTimer = 30; |
50
aae0056bc20b
Version 0.2.3 Added WiFi reconnect.
Michiel Broek <mbroek@mbse.eu>
parents:
47
diff
changeset
|
164 | if (! ready_WiFi()) { /* If WiFi was lost, try a new connection */ |
aae0056bc20b
Version 0.2.3 Added WiFi reconnect.
Michiel Broek <mbroek@mbse.eu>
parents:
47
diff
changeset
|
165 | ESP_LOGI(TAG, "Try WiFi restore"); |
aae0056bc20b
Version 0.2.3 Added WiFi reconnect.
Michiel Broek <mbroek@mbse.eu>
parents:
47
diff
changeset
|
166 | request_WiFi(); |
52
90a36619b07b
Added screen with software error counters.
Michiel Broek <mbroek@mbse.eu>
parents:
51
diff
changeset
|
167 | err_connect++; |
50
aae0056bc20b
Version 0.2.3 Added WiFi reconnect.
Michiel Broek <mbroek@mbse.eu>
parents:
47
diff
changeset
|
168 | } |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
169 | break; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
170 | |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
171 | case ML1_CONNECT: |
20
7c1dacafed03
Attempt to create a rotary editor
Michiel Broek <mbroek@mbse.eu>
parents:
19
diff
changeset
|
172 | if (ready_WiFi()) { |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
173 | Main_Loop1 = ML1_MQTT_CONNECT; |
22
cceb36fd3a2a
Better update of the user screens. Added more internal documentation.
Michiel Broek <mbroek@mbse.eu>
parents:
21
diff
changeset
|
174 | user_refresh(); |
47
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
175 | if (! ready_mqtt()) |
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
176 | connect_mqtt(true); |
20
7c1dacafed03
Attempt to create a rotary editor
Michiel Broek <mbroek@mbse.eu>
parents:
19
diff
changeset
|
177 | } |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
178 | break; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
179 | |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
180 | case ML1_MQTT_CONNECT: |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
181 | if (ready_ds18b20() && ready_adc()) { |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
182 | Main_Loop1 = ML1_WAITCON; |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
183 | |
31
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
184 | uint32_t temp[DS18B20_MAX]; |
34
495b7eafbf5a
Temporary white splash screen. Select DS18B20 sensor per unit. Changed units result logging
Michiel Broek <mbroek@mbse.eu>
parents:
33
diff
changeset
|
185 | int state[DS18B20_MAX], i; |
31
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
186 | char rom_code[DS18B20_MAX][17]; |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
187 | for (i = 0; i < DS18B20_MAX; i++) { |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
188 | temp[i] = 0; |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
189 | state[i] = 0; |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
190 | rom_code[i][0] = '\0'; |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
191 | } |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
192 | /* Copy results from all connected DS18B20 sensors */ |
34
495b7eafbf5a
Temporary white splash screen. Select DS18B20 sensor per unit. Changed units result logging
Michiel Broek <mbroek@mbse.eu>
parents:
33
diff
changeset
|
193 | num_sensors = 0; |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
194 | if (xSemaphoreTake(xSemaphoreDS18B20, 10) == pdTRUE) { |
31
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
195 | num_sensors = ds18b20_state->num_sensors; |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
196 | for (i = 0; i < num_sensors; i++) { |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
197 | temp[i] = (ds18b20_state->sensor[i].temperature * 1000); |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
198 | state[i] = (ds18b20_state->sensor[i].error == 0) ? 0:1; |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
199 | strncpy(rom_code[i], ds18b20_state->sensor[i].rom_code, 17); |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
200 | rom_code[i][16] = '\0'; |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
201 | } |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
202 | xSemaphoreGive(xSemaphoreDS18B20); |
23
58a328e91881
Added error logging for failed locks
Michiel Broek <mbroek@mbse.eu>
parents:
22
diff
changeset
|
203 | } else { |
58a328e91881
Added error logging for failed locks
Michiel Broek <mbroek@mbse.eu>
parents:
22
diff
changeset
|
204 | ESP_LOGE(TAG, "ML1_MQTT_CONNECT DS18B20 lock error"); |
58a328e91881
Added error logging for failed locks
Michiel Broek <mbroek@mbse.eu>
parents:
22
diff
changeset
|
205 | } |
6
06a5028dbcdf
Hookup OLED I2C display to temorary display some data.
Michiel Broek <mbroek@mbse.eu>
parents:
4
diff
changeset
|
206 | |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
207 | /* Copy measured data and calculate results */ |
31
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
208 | for (i = 0; i < 3; i++) { |
24
64078aa15512
Finished the editor using the rotary switch. Added editing of the MQTT server parameters.
Michiel Broek <mbroek@mbse.eu>
parents:
23
diff
changeset
|
209 | if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) { |
31
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
210 | /* Search configured temperature sensor for this unit */ |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
211 | for (int j = 0; j < num_sensors; j++) { |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
212 | if (strcmp(rom_code[j], units[i].temperature_rom_code) == 0) { |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
213 | units[i].temperature = temp[j]; |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
214 | units[i].temperature_state = state[j]; |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
215 | units[i].alarm = 0; |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
216 | if (state[j]) |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
217 | units[i].alarm |= ALARM_SYS_TEMPERATURE & ALARM_UNIT_TEMPERATURE; |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
218 | break; |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
219 | } |
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
220 | } |
24
64078aa15512
Finished the editor using the rotary switch. Added editing of the MQTT server parameters.
Michiel Broek <mbroek@mbse.eu>
parents:
23
diff
changeset
|
221 | |
31
1f507aba6561
Search DS18B20 sensor for the right pressure unit.
Michiel Broek <mbroek@mbse.eu>
parents:
28
diff
changeset
|
222 | /* Get the ADC results */ |
4
2a57c466bf45
FreeRTOS scheduler from 100 Hz to 200 Hz. All units data is now protected with a semaphore.
Michiel Broek <mbroek@mbse.eu>
parents:
2
diff
changeset
|
223 | if (xSemaphoreTake(xSemaphoreADC, 10) == pdTRUE) { |
2a57c466bf45
FreeRTOS scheduler from 100 Hz to 200 Hz. All units data is now protected with a semaphore.
Michiel Broek <mbroek@mbse.eu>
parents:
2
diff
changeset
|
224 | units[i].pressure_state = adc_state->Pressure[i].error; |
2a57c466bf45
FreeRTOS scheduler from 100 Hz to 200 Hz. All units data is now protected with a semaphore.
Michiel Broek <mbroek@mbse.eu>
parents:
2
diff
changeset
|
225 | units[i].pressure_channel = adc_state->Pressure[i].channel; |
2a57c466bf45
FreeRTOS scheduler from 100 Hz to 200 Hz. All units data is now protected with a semaphore.
Michiel Broek <mbroek@mbse.eu>
parents:
2
diff
changeset
|
226 | units[i].pressure_voltage = adc_state->Pressure[i].voltage; |
8 | 227 | if (units[i].pressure_state || units[i].pressure_voltage < 80) |
228 | units[i].alarm |= ALARM_UNIT_PRESSURE; | |
4
2a57c466bf45
FreeRTOS scheduler from 100 Hz to 200 Hz. All units data is now protected with a semaphore.
Michiel Broek <mbroek@mbse.eu>
parents:
2
diff
changeset
|
229 | int P = (units[i].pressure_voltage / (adc_state->Batt_voltage / 1000) - units[i].pressure_zero) * 14; // in bar |
2a57c466bf45
FreeRTOS scheduler from 100 Hz to 200 Hz. All units data is now protected with a semaphore.
Michiel Broek <mbroek@mbse.eu>
parents:
2
diff
changeset
|
230 | if (P < 0) |
2a57c466bf45
FreeRTOS scheduler from 100 Hz to 200 Hz. All units data is now protected with a semaphore.
Michiel Broek <mbroek@mbse.eu>
parents:
2
diff
changeset
|
231 | P = 0; |
2a57c466bf45
FreeRTOS scheduler from 100 Hz to 200 Hz. All units data is now protected with a semaphore.
Michiel Broek <mbroek@mbse.eu>
parents:
2
diff
changeset
|
232 | units[i].pressure = P; |
74 | 233 | ESP_LOGI(TAG, "%d vb:%.3f vp:%.3f zero:%lu scale:%3lu mbar:%4d alm: %lu t:%6.3f %s", |
234 | i, (adc_state->Batt_voltage / 1000.0), (units[i].pressure_voltage / 1000.0), units[i].pressure_zero, | |
235 | (units[i].pressure_voltage / (adc_state->Batt_voltage / 1000) - units[i].pressure_zero), P, units[i].alarm, | |
236 | (double)(units[i].temperature / 1000.0), units[i].temperature_rom_code); | |
4
2a57c466bf45
FreeRTOS scheduler from 100 Hz to 200 Hz. All units data is now protected with a semaphore.
Michiel Broek <mbroek@mbse.eu>
parents:
2
diff
changeset
|
237 | xSemaphoreGive(xSemaphoreADC); |
23
58a328e91881
Added error logging for failed locks
Michiel Broek <mbroek@mbse.eu>
parents:
22
diff
changeset
|
238 | } else { |
24
64078aa15512
Finished the editor using the rotary switch. Added editing of the MQTT server parameters.
Michiel Broek <mbroek@mbse.eu>
parents:
23
diff
changeset
|
239 | ESP_LOGE(TAG, "ML1_MQTT_CONNECT ADC[%d] lock error", i); |
23
58a328e91881
Added error logging for failed locks
Michiel Broek <mbroek@mbse.eu>
parents:
22
diff
changeset
|
240 | } |
24
64078aa15512
Finished the editor using the rotary switch. Added editing of the MQTT server parameters.
Michiel Broek <mbroek@mbse.eu>
parents:
23
diff
changeset
|
241 | xSemaphoreGive(xSemaphoreUnits); |
64078aa15512
Finished the editor using the rotary switch. Added editing of the MQTT server parameters.
Michiel Broek <mbroek@mbse.eu>
parents:
23
diff
changeset
|
242 | } else { |
64078aa15512
Finished the editor using the rotary switch. Added editing of the MQTT server parameters.
Michiel Broek <mbroek@mbse.eu>
parents:
23
diff
changeset
|
243 | ESP_LOGE(TAG, "ML1_MQTT_CONNECT units[%d] lock error", i); |
64078aa15512
Finished the editor using the rotary switch. Added editing of the MQTT server parameters.
Michiel Broek <mbroek@mbse.eu>
parents:
23
diff
changeset
|
244 | } |
64078aa15512
Finished the editor using the rotary switch. Added editing of the MQTT server parameters.
Michiel Broek <mbroek@mbse.eu>
parents:
23
diff
changeset
|
245 | } |
64078aa15512
Finished the editor using the rotary switch. Added editing of the MQTT server parameters.
Michiel Broek <mbroek@mbse.eu>
parents:
23
diff
changeset
|
246 | if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) { |
4
2a57c466bf45
FreeRTOS scheduler from 100 Hz to 200 Hz. All units data is now protected with a semaphore.
Michiel Broek <mbroek@mbse.eu>
parents:
2
diff
changeset
|
247 | write_units(); |
2a57c466bf45
FreeRTOS scheduler from 100 Hz to 200 Hz. All units data is now protected with a semaphore.
Michiel Broek <mbroek@mbse.eu>
parents:
2
diff
changeset
|
248 | xSemaphoreGive(xSemaphoreUnits); |
23
58a328e91881
Added error logging for failed locks
Michiel Broek <mbroek@mbse.eu>
parents:
22
diff
changeset
|
249 | } else { |
24
64078aa15512
Finished the editor using the rotary switch. Added editing of the MQTT server parameters.
Michiel Broek <mbroek@mbse.eu>
parents:
23
diff
changeset
|
250 | ESP_LOGE(TAG, "ML1_MQTT_CONNECT write_units lock error"); |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
251 | } |
24
64078aa15512
Finished the editor using the rotary switch. Added editing of the MQTT server parameters.
Michiel Broek <mbroek@mbse.eu>
parents:
23
diff
changeset
|
252 | user_refresh(); |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
253 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
254 | break; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
255 | |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
256 | case ML1_WAITCON: |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
257 | if (ready_mqtt()) |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
258 | Main_Loop1 = ML1_SEND; |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
259 | break; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
260 | |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
261 | case ML1_SEND: |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
262 | publishNode(); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
263 | publishUnits(); |
9
a85995941d0d
Added publish logs. Another fix for DS18B20 rom address copy.
Michiel Broek <mbroek@mbse.eu>
parents:
8
diff
changeset
|
264 | publishLogs(); |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
265 | Main_Loop1 = ML1_WAITACK; |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
266 | break; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
267 | |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
268 | case ML1_WAITACK: |
47
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
269 | if (count_pub == 0) { // Wait until all published messages are sent. |
58
e949f41034eb
Lower loglevel for one message.
Michiel Broek <mbroek@mbse.eu>
parents:
57
diff
changeset
|
270 | ESP_LOGD(TAG, "Main loop: Done, user busy: %s", user_busy() ? "true":"false"); |
47
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
271 | Main_Loop1 = ML1_DONE; |
1ab1f4a8c328
Version 0.2.2 Changed to use a permanent network and WiFi connection. Removed three mainloop stages. Removed MQTT sequence counter that was not used. Update WiFi rssi status during eacht measure cycle. Changed FreeRTOS schedulng to 500 Hz.
Michiel Broek <mbroek@mbse.eu>
parents:
38
diff
changeset
|
272 | user_refresh(); |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
273 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
274 | break; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
275 | |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
276 | case ML1_DONE: |
38
46e2c385e9de
Removed all the deepsleep code since there will be no battery operation.
Michiel Broek <mbroek@mbse.eu>
parents:
37
diff
changeset
|
277 | /* Wait here until the timer resets the loop */ |
51
5035385299f6
Added alarm timer watchdog. This resets the loop if not finished in 30 seconds.
Michiel Broek <mbroek@mbse.eu>
parents:
50
diff
changeset
|
278 | AlarmTimer = 0; |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
279 | break; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
280 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
281 | vTaskDelay(10 / portTICK_PERIOD_MS); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
282 | } |
6
06a5028dbcdf
Hookup OLED I2C display to temorary display some data.
Michiel Broek <mbroek@mbse.eu>
parents:
4
diff
changeset
|
283 | |
16
e38ffa806e84
Initial code for the rotary switch and some menus. Changed default pushbutton pin from 12 to 14 and swapped the rotary pins. Disabled always create a new units file, it should be safe to keep it now.
Michiel Broek <mbroek@mbse.eu>
parents:
14
diff
changeset
|
284 | Main_Loop1 = ML1_INIT; |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
285 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
286 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
287 |