diff --git a/CHANGELOG.md b/CHANGELOG.md index 04a9da372..10997e198 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,8 @@ All notable changes to this project will be documented in this file. - HASPmota support for `min` and `max` attribute in `slider` (#20582) - ESP32-C3 support for GPIO11 (#18350) - ESP32 support for Shelly Plus Add-On using DS18x20 or DHT11/AM2301/DHT21/DHT22/AM2302/AM2321/SI7021 on GPIO0/1 (#20580) -- Berry add `introspect.contains` and `bytes.addfloat` +- ESP32 MI32 Legacy initial support for sensors using BTHOME packet format (#20625) +- Berry `introspect.contains` and `bytes.addfloat` (#20635) ### Breaking Changed @@ -19,6 +20,7 @@ All notable changes to this project will be documented in this file. - ESP32 Core3 platform update from 2024.01.11 to 2024.01.12 (#20576) - Utouch optimizations, rgb i2c init (#20596) - GPIO Viewer update from 1.0.7 to 1.5.0 +- Miel HVAC lower the minimum temperature to 10C (#20628) ### Fixed - Berry C mapping, raise an error if too many arguments are sent (#20604) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 8aabdf518..0393061ea 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -133,8 +133,8 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - ESP32 used UART information - ESP32 support GPIOViewer when ``define USE_ESP32_GPIO_VIEWER`` is enabled - ESP32 MI BLE support for Xiaomi LYWSD02MMC [#20381](https://github.com/arendst/Tasmota/issues/20381) -- ESP32 support for Shelly Plus Add-On using DS18x20 or DHT11/AM2301/DHT21/DHT22/AM2302/AM2321/SI7021 on GPIO0/1 (#20580) - [#20580](https://github.com/arendst/Tasmota/issues/20580) +- ESP32 support for Shelly Plus Add-On using DS18x20 or DHT11/AM2301/DHT21/DHT22/AM2302/AM2321/SI7021 on GPIO0/1 [#20580](https://github.com/arendst/Tasmota/issues/20580) +- ESP32 MI32 Legacy initial support for sensors using BTHOME packet format [#20625](https://github.com/arendst/Tasmota/issues/20625) - ESP32-C3 support for GPIO11 [#18350](https://github.com/arendst/Tasmota/issues/18350) - Berry GPIO viewer initial version using async webserver [#20416](https://github.com/arendst/Tasmota/issues/20416) - Berry `introspect.set()` for class attributes [#20339](https://github.com/arendst/Tasmota/issues/20339) @@ -152,6 +152,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Berry solidification of strings longer than 255 bytes [#20529](https://github.com/arendst/Tasmota/issues/20529) - Berry syntax coloring for Notepad++ by FransO [#20541](https://github.com/arendst/Tasmota/issues/20541) - Berry/Zigbee web hook per device for customized status display [#20542](https://github.com/arendst/Tasmota/issues/20542) +- Berry `introspect.contains` and `bytes.addfloat` [#20635](https://github.com/arendst/Tasmota/issues/20635) - Zigbee ``ZbEmulation`` to selectively exclude some devices from Hue/Alexa emulation [#20552](https://github.com/arendst/Tasmota/issues/20552) - LVGL `lv.str_arr` [#20480](https://github.com/arendst/Tasmota/issues/20480) - LVGL option to add `lv.keyboard` extra widget [#20496](https://github.com/arendst/Tasmota/issues/20496) @@ -176,6 +177,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Web file upload response on upload error [#20340](https://github.com/arendst/Tasmota/issues/20340) - Header `Host` is now collected by Webserver [#20446](https://github.com/arendst/Tasmota/issues/20446) - Utouch optimizations, rgb i2c init [#20596](https://github.com/arendst/Tasmota/issues/20596) +- Miel HVAC lower the minimum temperature to 10C [#20628](https://github.com/arendst/Tasmota/issues/20628) - Webcam tweaks [#20451](https://github.com/arendst/Tasmota/issues/20451) - IP stack compatible with new Core3 IPv6 implementation [#20509](https://github.com/arendst/Tasmota/issues/20509) - Refactored Pio filesystem download script [#20544](https://github.com/arendst/Tasmota/issues/20544) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_121_gpioviewer.ino b/tasmota/tasmota_xdrv_driver/xdrv_121_gpioviewer.ino index a2e16c0dc..0bfbf7644 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_121_gpioviewer.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_121_gpioviewer.ino @@ -58,24 +58,23 @@ enum GVPinTypes { GV_DigitalPin = 0, GV_PWMPin = 1, GV_AnalogPin = 2, -#ifdef GV_INPUT_DETECTION GV_InputPin = 3, GV_InputPullUp = 4, GV_InputPullDn = 5 -#endif // GV_INPUT_DETECTION }; typedef struct { ESP8266WebServer *WebServer; Ticker ticker; String baseUrl; + int lastPinStates[MAX_GPIO_PIN]; uint32_t lastSentWithNoActivity; uint32_t freeHeap; uint32_t freePSRAM; uint32_t sampling; uint16_t port; - int8_t lastPinStates[MAX_GPIO_PIN]; bool sse_ready; + bool init_done; } tGV; tGV* GV = nullptr; WiFiClient GVWebClient; @@ -94,6 +93,7 @@ int GetPinMode(uint8_t pin) { uint32_t port = digitalPinToPort(pin); volatile uint32_t *reg = portModeRegister(port); if (*reg & bit) { return OUTPUT; } // ESP8266 = 0x01, ESP32 = 0x03 + // Detecting INPUT_PULLUP doesn't function consistently volatile uint32_t *out = portOutputRegister(port); return ((*out & bit) ? INPUT_PULLUP : INPUT); // ESP8266 = 0x02 : 0x00, ESP32 = 0x05 : x01 } @@ -140,6 +140,8 @@ void GVBegin(void) { void GVHandleRoot(void) { GVCloseEvent(); + GV->init_done = false; + char* content = ext_snprintf_malloc_P(HTTP_GV_PAGE, SettingsTextEscaped(SET_DEVICENAME).c_str(), GV->baseUrl.c_str(), @@ -299,15 +301,7 @@ void GVMonitorTask(void) { String jsonMessage = "{"; for (uint32_t pin = 0; pin < MAX_GPIO_PIN; pin++) { int currentState = 0; -/* - // Skip unconfigured GPIO - uint32_t pin_type = GetPin(pin) / 32; - if (GPIO_NONE == pin_type) { - pintype = GV_DigitalPin; - originalValue = 0; -// currentState = 0; - } -*/ + #ifdef ESP32 // Read PWM GPIO int pwm_resolution = ledcReadDutyResolution(pin); @@ -371,7 +365,18 @@ void GVMonitorTask(void) { } } jsonMessage += "}"; - if (hasChanges) { + + if (!GV->init_done) { + // Show at least configured GPIOs + for (uint32_t pin = 0; pin < MAX_GPIO_PIN; pin++) { + uint32_t pin_type = GetPin(pin) / 32; + if (pin_type != GPIO_NONE) { + GV->lastPinStates[pin] = -1; + } + } + GV->init_done = true; + } + else if (hasChanges) { GVEventSend(jsonMessage.c_str(), "gpio-state", millis()); }