# HG changeset patch # User Michiel Broek # Date 1573991919 -3600 # Node ID 495b7eafbf5a98df66094336f5fac7a36aa9e808 # Parent 331e7f700971f3a47caeb69d6a3ce57708d6fb78 Temporary white splash screen. Select DS18B20 sensor per unit. Changed units result logging diff -r 331e7f700971 -r 495b7eafbf5a main/co2meter.c --- a/main/co2meter.c Tue Nov 12 21:57:40 2019 +0100 +++ b/main/co2meter.c Sun Nov 17 12:58:39 2019 +0100 @@ -14,6 +14,7 @@ time_t now; ///< Current time struct tm timeinfo; ///< Current time structure char strftime_buf[64]; ///< Time buffer +int num_sensors = 0; ///< Detected DS18B20 sensors static RTC_DATA_ATTR struct timeval sleep_enter_time; static TaskHandle_t xTaskDS18B20 = NULL; static TaskHandle_t xTaskADC = NULL; @@ -189,7 +190,7 @@ ESP_LOGI(TAG, "Loop timer: Wait MQTT"); uint32_t temp[DS18B20_MAX]; - int state[DS18B20_MAX], i, num_sensors = 0; + int state[DS18B20_MAX], i; char rom_code[DS18B20_MAX][17]; for (i = 0; i < DS18B20_MAX; i++) { temp[i] = 0; @@ -197,6 +198,7 @@ rom_code[i][0] = '\0'; } /* Copy results from all connected DS18B20 sensors */ + num_sensors = 0; if (xSemaphoreTake(xSemaphoreDS18B20, 10) == pdTRUE) { num_sensors = ds18b20_state->num_sensors; for (i = 0; i < num_sensors; i++) { @@ -236,10 +238,10 @@ if (P < 0) P = 0; units[i].pressure = P; -printf("%d volt: %d batt: %d scale: %d mbar: %d\n", i, units[i].pressure_voltage, adc_state->Batt_voltage, - units[i].pressure_voltage / (adc_state->Batt_voltage / 1000) - units[i].pressure_zero, P); -// Verbruik 10 mA -// Setup tijd max 2 mS + ESP_LOGI(TAG, "%d vb:%.3f vp:%.3f zero:%d scale:%3d mbar:%4d t:%6.3f %s", + i, adc_state->Batt_voltage / 1000.0, units[i].pressure_voltage / 1000.0, units[i].pressure_zero, + units[i].pressure_voltage / (adc_state->Batt_voltage / 1000) - units[i].pressure_zero, P, + units[i].temperature / 1000.0, units[i].temperature_rom_code); xSemaphoreGive(xSemaphoreADC); } else { ESP_LOGE(TAG, "ML1_MQTT_CONNECT ADC[%d] lock error", i); diff -r 331e7f700971 -r 495b7eafbf5a main/config.c --- a/main/config.c Tue Nov 12 21:57:40 2019 +0100 +++ b/main/config.c Sun Nov 17 12:58:39 2019 +0100 @@ -91,6 +91,7 @@ sprintf(units[i].uuid, "c0ffeeee-dead-beef-caf%d-%02x%02x%02x%02x%02x%02x", i & 3, mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]); sprintf(units[i].alias, "unit%d", (i + 1) & 3); + units[i].pressure_zero = 110; } write_units(); } else { diff -r 331e7f700971 -r 495b7eafbf5a main/config.h --- a/main/config.h Tue Nov 12 21:57:40 2019 +0100 +++ b/main/config.h Sun Nov 17 12:58:39 2019 +0100 @@ -102,6 +102,9 @@ ML2_ZERO_UNIT1, ///< Unit 1 set zero ML2_ZERO_UNIT2, ///< Unit 2 set zero ML2_ZERO_UNIT3, ///< Unit 3 set zero + ML2_SEL_SENSOR1, ///< Unit 1 select sensor + ML2_SEL_SENSOR2, ///< Unit 2 select sensor + ML2_SEL_SENSOR3, ///< Unit 3 select sensor ML2_SETUP_NETWORK, ///< Network setup ML2_SETUP_MQTT, ///< MQTT setup ML2_SETUP_WIFI, ///< WiFi setup diff -r 331e7f700971 -r 495b7eafbf5a main/task_user.c --- a/main/task_user.c Tue Nov 12 21:57:40 2019 +0100 +++ b/main/task_user.c Sun Nov 17 12:58:39 2019 +0100 @@ -26,6 +26,7 @@ int edit_ssid = 0; ///< SSID being edited int num_ssids = 0; ///< Number of SSIDs we know struct strStations editAP; ///< Data of station to edit +char sensors[DS18B20_MAX][17]; ///< Sensors to select extern const esp_app_desc_t *app_desc; extern unit_t units[3]; ///< Pressure test units @@ -39,6 +40,7 @@ extern int count_pub; ///< Published MQTT messages in transit extern int Main_Loop1; ///< Main measure loop extern int update_running; ///< If update is running +extern int num_sensors; ///< Detected DS18B20 sensors const int TASK_USER_COLD = BIT0; ///< System cold start const int TASK_USER_WAKEUP = BIT1; ///< System wakeup from deepsleep @@ -330,11 +332,14 @@ */ void screen_splash() { - screen_top("CO2 meter %s", app_desc->version); +// screen_top("CO2 meter %s", app_desc->version); - u8g2_SetFont(&u8g2, u8g2_font_t0_22b_tf); - u8g2_uint_t w = u8g2_GetUTF8Width(&u8g2, "Welkom"); - u8g2_DrawUTF8(&u8g2, (128 - w) / 2,50, "Welkom"); +// u8g2_SetFont(&u8g2, u8g2_font_t0_22b_tf); +// u8g2_uint_t w = u8g2_GetUTF8Width(&u8g2, "Welkom"); +// u8g2_DrawUTF8(&u8g2, (128 - w) / 2,50, "Welkom"); + +u8g2_SetDrawColor(&u8g2, 1); +u8g2_DrawBox(&u8g2, 0, 0, 128, 64); u8g2_SendBuffer(&u8g2); u8g2_SetPowerSave(&u8g2, 0); // wake up display @@ -430,6 +435,37 @@ +void screen_list_sensors(int no, int sub, int offset) +{ + int i; + + if (xSemaphoreTake(xSemaphoreDS18B20, 10) == pdTRUE) { + for (i = 0; i < ds18b20_state->num_sensors; i++) { + strncpy(sensors[i], ds18b20_state->sensor[i].rom_code, 17); + sensors[i][16] = '\0'; + } + xSemaphoreGive(xSemaphoreDS18B20); + } else { + ESP_LOGE(TAG, "screen_list_sensors() DS18B20 lock error"); + } + + screen_top("DS18B20 lijst"); + if (num_sensors == 0) { + menu_line(0, 1, 25, "Geen sensors"); + } else { + for (i = 0; i < num_sensors; i++) { + menu_line(sub == i, 1, 25 + (i * 12), sensors[i + offset]); + if (i == 3) + break; + } + if ((i + offset) == num_sensors) + menu_line(sub == i, 1, 25 + (i * 12), "Terug"); + } + u8g2_SendBuffer(&u8g2); +} + + + /** * @brief The unit setup screen. * @param no The unit index number. @@ -814,6 +850,14 @@ screen_unit_zero(Main_Loop2 - ML2_ZERO_UNIT1, SubMenu); break; + case ML2_SEL_SENSOR1: + case ML2_SEL_SENSOR2: + case ML2_SEL_SENSOR3: + ESP_LOGI(TAG, "Loop user: Select sensor %d", Main_Loop2 - ML2_SEL_SENSOR1); + SubMenu = SubOffset = 0; + screen_list_sensors(Main_Loop2 - ML2_SEL_SENSOR1, SubMenu, SubOffset); + break; + case ML2_INACTIVE: ESP_LOGI(TAG, "Loop user: Inactive"); u8g2_SetPowerSave(&u8g2, 1); // powersave display @@ -849,6 +893,11 @@ case ML2_ZERO_UNIT3: if (rotate_to_sub(event.state.position, 1, &SubMenu, &SubOffset)) screen_unit_zero(Main_Loop2 - ML2_ZERO_UNIT1, SubMenu); break; + case ML2_SEL_SENSOR1: + case ML2_SEL_SENSOR2: + case ML2_SEL_SENSOR3: if (rotate_to_sub(event.state.position, num_sensors, &SubMenu, &SubOffset)) + screen_list_sensors(Main_Loop2 - ML2_SEL_SENSOR1, SubMenu, SubOffset); + break; case ML2_SETUP_WIFI: if (rotate_to_sub(event.state.position, 2, &SubMenu, &SubOffset)) screen_wifi_setup(SubMenu); break; @@ -918,11 +967,13 @@ screen_unit_setup(idx, SubMenu); if (Main_Loop1 == ML1_DONE) Main_Loop1 = ML1_INIT; - } - if (SubMenu == 1) + } else if (SubMenu == 1) { New_Loop2 = ML2_ZERO_UNIT1 + idx; - if (SubMenu == 3) + } else if (SubMenu == 2) { + New_Loop2 = ML2_SEL_SENSOR1 + idx; + } else if (SubMenu == 3) { New_Loop2 = ML2_UNIT1 + idx; + } break; case ML2_ZERO_UNIT1: @@ -943,13 +994,26 @@ if (Main_Loop1 == ML1_DONE) Main_Loop1 = ML1_INIT; } - } - if (SubMenu == 1) { + } else if (SubMenu == 1) { New_Loop2 = ML2_SETUP_UNIT1 + idx; SubMenu = 1; } break; + case ML2_SEL_SENSOR1: + case ML2_SEL_SENSOR2: + case ML2_SEL_SENSOR3: + idx = Main_Loop2 - ML2_SEL_SENSOR1; + if ((SubMenu + SubOffset) < num_sensors) { + ESP_LOGI(TAG, "Select sensor %d %s for unit %d", SubMenu + SubOffset, sensors[SubMenu + SubOffset], idx + 1); + + } else { + New_Loop2 = ML2_SETUP_UNIT1 + idx; + SubMenu = 2; + SubOffset = 0; + } + break; + case ML2_WIFI: New_Loop2 = ML2_SETUP_WIFI; break; @@ -957,15 +1021,13 @@ case ML2_SETUP_WIFI: if (SubMenu == 0) { New_Loop2 = ML2_LIST_APS; - } - if (SubMenu == 1) { + } else if (SubMenu == 1) { edit_ssid = -1; editAP.SSID[0] = '\0'; editAP.Password[0] = '\0'; SubMenu = SubOffset = 0; New_Loop2 = ML2_EDIT_AP; - } - if (SubMenu == 2) { + } else if (SubMenu == 2) { New_Loop2 = ML2_WIFI; } break; @@ -987,12 +1049,10 @@ if (SubMenu == 0) { rotary_editer("SSID", editAP.SSID, "", 16, EDIT_TYPE_TEXT); screen_edit_ap(SubMenu); - } - if (SubMenu == 1) { + } else if (SubMenu == 1) { rotary_editer("PSK", editAP.Password, "", 16, EDIT_TYPE_TEXT); screen_edit_ap(SubMenu); - } - if (SubMenu == 2 || SubMenu == 3) { + } else if (SubMenu == 2 || SubMenu == 3) { update_running = 1; // Block measurements int timeout = 600; if (edit_ssid < 0) @@ -1032,12 +1092,10 @@ if (SubMenu == 0) { rotary_editer("Hostnaam", config.hostname, "", 16, EDIT_TYPE_TEXT); screen_network_setup(SubMenu); - } - if (SubMenu == 1) { + } else if (SubMenu == 1) { rotary_editer("NTP server", config.ntp_server, "", 16, EDIT_TYPE_TEXT); screen_network_setup(SubMenu); - } - if (SubMenu == 2) { + } else if (SubMenu == 2) { ESP_LOGI(TAG, "Hostname `%s`", config.hostname); ESP_LOGI(TAG, "NTP server `%s`", config.ntp_server); write_config(); @@ -1053,19 +1111,16 @@ if (SubMenu == 0) { rotary_editer("MQTT server", config.mqtt_server, "", 16, EDIT_TYPE_TEXT); screen_mqtt_setup(SubMenu); - } - if (SubMenu == 1) { + } else if (SubMenu == 1) { sprintf(txt, "%d", config.mqtt_port); rotary_editer("MQTT server poort", txt, "", 6, EDIT_TYPE_INT); config.mqtt_port = atoi(txt); screen_mqtt_setup(SubMenu); - } - if (SubMenu == 2) { + } else if (SubMenu == 2) { rotary_editer("MQTT user", config.mqtt_user, "", 16, EDIT_TYPE_TEXT); rotary_editer("MQTT password", config.mqtt_pwd, "", 16, EDIT_TYPE_TEXT); screen_mqtt_setup(SubMenu); - } - if (SubMenu == 3) { + } else if (SubMenu == 3) { ESP_LOGI(TAG, "mqtt_server %s:%d", config.mqtt_server, config.mqtt_port); ESP_LOGI(TAG, "mqtt_user/pass `%s/%s`", config.mqtt_user, config.mqtt_pwd); write_config();