diff --git a/.vscode/settings.json b/.vscode/settings.json index d2e3661..9c61a6c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -55,5 +55,58 @@ "C_Cpp_Runner.useLeakSanitizer": false, "C_Cpp_Runner.showCompilationTime": false, "C_Cpp_Runner.useLinkTimeOptimization": false, - "C_Cpp_Runner.msvcSecureNoWarnings": false + "C_Cpp_Runner.msvcSecureNoWarnings": false, + "C_Cpp.errorSquiggles": "disabled", + "files.associations": { + "array": "cpp", + "atomic": "cpp", + "*.tcc": "cpp", + "bitset": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "unordered_map": "cpp", + "unordered_set": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "map": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "optional": "cpp", + "random": "cpp", + "regex": "cpp", + "string": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "fstream": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "ostream": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "cinttypes": "cpp", + "typeinfo": "cpp" + } } \ No newline at end of file diff --git a/src/ise_display.cpp b/src/ise_display.cpp index 2756d41..bdb03aa 100644 --- a/src/ise_display.cpp +++ b/src/ise_display.cpp @@ -717,7 +717,7 @@ void ISEDisplay::updateAirPurifierState() return; } else if(currentPage ==1){ - updateAirPurifierStateStandby(); + updateAirPurifierStateStandby(); return; } // Get the state diff --git a/src/main.cpp b/src/main.cpp index 22e0d94..7ffe910 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -100,6 +100,29 @@ void setup() climateCard.loadStateFromFRAM(); climateCard.setFRAMAutoSave(true); espmega.display->bindClimateCard(&climateCard); + // auto binded_display_update_on_pm25_out = std::bind(&display_update,0,std::placeholders::_1); + // auto binded_display_update_on_pm25_in = std::bind(&display_update,1,std::placeholders::_1); + // auto binded_display_update_on_temp_out = std::bind(&display_update,2,std::placeholders::_1); + // auto binded_display_update_on_weather = std::bind(&display_update,3,std::placeholders::_1); + // auto binded_display_update_on_pm_switch = std::bind(&display_update,4,std::placeholders::_1); + // auto binded_display_update_on_pm_fan_speed = std::bind(&display_update,5,std::placeholders::_1); + + // pm25_out.registerCallback(std::function(binded_display_update_on_pm25_out)); + // pm25_in.registerCallback(std::function(binded_display_update_on_pm25_in)); + // temp_out.registerCallback(std::function(binded_display_update_on_temp_out)); + // weather.registerCallback(std::function(binded_display_update_on_weather)); + // pm_switch.registerCallback(std::function(binded_display_update_on_pm_switch)); + // pm_fan_speed.registerCallback(std::function(binded_display_update_on_pm_fan_speed)); + + pm25_out.registerCallback(&pm25outupdatedisplay); + pm25_in.registerCallback(&pm25inupdatedisplay); + temp_out.registerCallback(&tempoutupdatedisplay); + weather.registerCallback(&weatherupdatedisplay); + pm_switch.registerCallback(&pmswitchupdatedisplay); + pm_fan_speed.registerCallback(&pmfanspeedupdatedisplay); + + + // placeholder // PM2.5 PPM Remote Variable // 12 bytes remote variable, 11 characters + null terminator @@ -128,6 +151,51 @@ void setup() } +// void update_display(uint8_t type, char *value){ +// switch (type) +// { +// case 0: +// iseDisplay.updatePMoutside(get_pm25_out()); +// break; +// case 1: +// iseDisplay.updatePMinside(get_pm25_in()); +// break; +// case 2: +// iseDisplay.updateTempOutside(get_temp_out()); +// break; +// case 3: +// iseDisplay.updateWeather(weather.getValue()); +// break; +// case 4: +// iseDisplay.updateAirPurifierState(); +// break; +// case 5: +// iseDisplay.updateAirPurifierState(); +// break; +// default: +// break; +// } +// } +void pm25outupdatedisplay(char* value){ + iseDisplay.updatePMoutside(get_pm25_out()); +} +void pm25inupdatedisplay(char* value){ + iseDisplay.updatePMinside(get_pm25_in()); +} +void tempoutupdatedisplay(char* value){ + iseDisplay.updateTempOutside(get_temp_out()); +} +void weatherupdatedisplay(char* value){ + iseDisplay.updateWeather(weather.getValue()); +} +void pmfanspeedupdatedisplay(char* value){ + iseDisplay.updateAirPurifierState(); +} +void pmswitchupdatedisplay(char* value){ + iseDisplay.updateAirPurifierState(); +} + + void loop() { espmega.loop(); @@ -155,46 +223,46 @@ void loop() iseDisplay.updateDateTimeText(time); last_time_updated = millis(); } - // Update the PM2.5 PPM value every 15 seconds - static uint32_t last_pm25_out_update = 0; - if (millis() - last_pm25_out_update > 15000) - { - uint16_t pm25_out_value = get_pm25_out(); - // ESP_LOGI("loopPM2.5","updating PM2.5 from MQTT inside loop: %d", pm25_out_value); - iseDisplay.updatePMoutside(pm25_out_value); - last_pm25_out_update = millis(); - } - // Update the PM2.5 PPM value every 15 seconds - static uint32_t last_pm25_in_update = 0; - if (millis() - last_pm25_in_update > 15000) - { - uint8_t pm25_in_value = get_pm25_in(); - iseDisplay.updatePMinside(pm25_in_value); - last_pm25_in_update = millis(); - } + // // Update the PM2.5 PPM value every 15 seconds + // static uint32_t last_pm25_out_update = 0; + // if (millis() - last_pm25_out_update > 15000) + // { + // uint16_t pm25_out_value = get_pm25_out(); + // // ESP_LOGI("loopPM2.5","updating PM2.5 from MQTT inside loop: %d", pm25_out_value); + // iseDisplay.updatePMoutside(pm25_out_value); + // last_pm25_out_update = millis(); + // } + // // Update the PM2.5 PPM value every 15 seconds + // static uint32_t last_pm25_in_update = 0; + // if (millis() - last_pm25_in_update > 15000) + // { + // uint8_t pm25_in_value = get_pm25_in(); + // iseDisplay.updatePMinside(pm25_in_value); + // last_pm25_in_update = millis(); + // } // Update the temperature value every 15 seconds - static uint32_t last_temp_out_update = 0; - if (millis() - last_temp_out_update > 15000) - { - float temp_out_value = get_temp_out(); - iseDisplay.updateTempOutside(temp_out_value); - last_temp_out_update = millis(); - } - // Update the weather value every 15 seconds - static uint32_t last_weather_update = 0; - if (millis() - last_weather_update > 15000) - { - char *weather_value = weather.getValue(); - iseDisplay.updateWeather(weather_value); - last_weather_update = millis(); - } - // Update the PM state every 1 seconds - static uint32_t last_pm_switch_update = 0; - if (millis() - last_pm_switch_update > 500) - { - iseDisplay.updateAirPurifierState(); - last_pm_switch_update = millis(); - } + // static uint32_t last_temp_out_update = 0; + // if (millis() - last_temp_out_update > 15000) + // { + // float temp_out_value = get_temp_out(); + // iseDisplay.updateTempOutside(temp_out_value); + // last_temp_out_update = millis(); + // } + // // Update the weather value every 15 seconds + // static uint32_t last_weather_update = 0; + // if (millis() - last_weather_update > 15000) + // { + // char *weather_value = weather.getValue(); + // iseDisplay.updateWeather(weather_value); + // last_weather_update = millis(); + // } + // // Update the PM state every 1 seconds + // static uint32_t last_pm_switch_update = 0; + // if (millis() - last_pm_switch_update > 500) + // { + // iseDisplay.updateAirPurifierState(); + // last_pm_switch_update = millis(); + // } } void on_pin_change(uint8_t pin, uint8_t value) diff --git a/src/main.hpp b/src/main.hpp index e98301f..61aa049 100644 --- a/src/main.hpp +++ b/src/main.hpp @@ -38,4 +38,11 @@ uint16_t get_pm25_out(); uint16_t get_pm25_in(); float get_temp_out(); void toggle_pm_switch(); -void set_pm_fanspeed(uint8_t speed); \ No newline at end of file +void set_pm_fanspeed(uint8_t speed); +void display_update(); +void pm25outupdatedisplay(char* value); +void pm25inupdatedisplay(char* value); +void tempoutupdatedisplay(char* value); +void weatherupdatedisplay(char* value); +void pmfanspeedupdatedisplay(char* value); +void pmswitchupdatedisplay(char* value); \ No newline at end of file