diff --git a/CHANGELOG.md b/CHANGELOG.md index 695ba56f8..6f9b21442 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,8 +5,10 @@ All notable changes to this project will be documented in this file. ## [9.2.0.6] ### Changed +- Removed migration support for versions before v8.1.0 (Doris) - Increase number of switch GPIOs from 8 to 28 - Increase number of button GPIOs from 4 to 8 +- ESP32 Increase number of interlock groups from 4 to 14 ## [9.2.0.5] 20210205 ### Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 04c83b5fe..a97fe8c8b 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -114,15 +114,17 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - Replaced RA8876 GPIO selection from ``SPI CS`` by ``RA8876 CS`` ### Changed +- Removed migration support for versions before v8.1.0 (Doris) - Command ``Sleep 0`` removes any sleep from wifi modem except when ESP32 BLE is active - Logging from heap to stack freeing 700 bytes RAM - Disabled ``USE_LIGHT`` light support for ZBBridge saving 17.6kB [#10374](https://github.com/arendst/Tasmota/issues/10374) - Force initial default state ``SetOption57 1`` to scan wifi network every 44 minutes for strongest signal [#10395](https://github.com/arendst/Tasmota/issues/10395) - PubSubClient MQTT_SOCKET_TIMEOUT from 15 to 4 seconds - Domoticz fixed 2 decimals resolution by user selectable ``TempRes``, ``HumRes`` and ``PressRes`` resolutions -- ESP32 increase number of relay GPIOs from 8 to 28 - Increase number of switch GPIOs from 8 to 28 - Increase number of button GPIOs from 4 to 8 +- ESP32 increase number of relay GPIOs from 8 to 28 +- ESP32 Increase number of interlock groups from 4 to 14 ### Fixed - Redesign syslog and mqttlog using log buffer [#10164](https://github.com/arendst/Tasmota/issues/10164) diff --git a/tasmota/settings.h b/tasmota/settings.h index c16148531..3ed06eba9 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -493,9 +493,13 @@ struct { uint8_t free_4c5[5]; // 4C5 - uint8_t interlock[MAX_INTERLOCKS]; // 4CA + uint8_t ex_interlock[4]; // 4CA MAX_INTERLOCKS = MAX_RELAYS / 2 (Legacy) - char ex_ntp_server[3][33]; // 4CE Free since 8.0.0.1 + uint8_t free_4ce[2]; // 4CE + + power_t interlock[MAX_INTERLOCK_GROUPS]; // 4D0 MAX_INTERLOCKS = MAX_RELAYS / 2 + + uint8_t free_508[41]; // 508 uint8_t ina219_mode; // 531 uint16_t pulse_timer[MAX_PULSETIMERS]; // 532 diff --git a/tasmota/settings.ino b/tasmota/settings.ino index c772e38f5..db0579a75 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -1111,111 +1111,6 @@ void SettingsDelta(void) { if (Settings.version != VERSION) { // Fix version dependent changes #ifdef ESP8266 -#ifndef UPGRADE_V8_MIN - if (Settings.version < 0x07000002) { - Settings.web_color2[0][0] = Settings.web_color[0][0]; - Settings.web_color2[0][1] = Settings.web_color[0][1]; - Settings.web_color2[0][2] = Settings.web_color[0][2]; - } - if (Settings.version < 0x07000003) { - SettingsEnableAllI2cDrivers(); - } - if (Settings.version < 0x07000004) { - Settings.ex_wifi_output_power = 170; - } - if (Settings.version < 0x07010202) { - Settings.ex_serial_config = TS_SERIAL_8N1; - } - if (Settings.version < 0x07010204) { - if (Settings.flag3.mqtt_buttons == 1) { - strlcpy(Settings.ex_cors_domain, CORS_ENABLED_ALL, sizeof(Settings.ex_cors_domain)); - } else { - Settings.ex_cors_domain[0] = 0; - } - } - if (Settings.version < 0x07010205) { - Settings.seriallog_level = Settings.ex_seriallog_level; // 09E -> 452 - Settings.sta_config = Settings.ex_sta_config; // 09F -> EC7 - Settings.sta_active = Settings.ex_sta_active; // 0A0 -> EC8 - memcpy((char*)&Settings.rule_stop, (char*)&Settings.ex_rule_stop, 47); // 1A7 -> EC9 - } - if (Settings.version < 0x07010206) { - Settings.flag4 = Settings.ex_flag4; // 1E0 -> EF8 - Settings.mqtt_port = Settings.ex_mqtt_port; // 20A -> EFC - memcpy((char*)&Settings.serial_config, (char*)&Settings.ex_serial_config, 5); // 1E4 -> EFE - } - if (Settings.version < 0x08000000) { - char temp[strlen(Settings.text_pool) +1]; strncpy(temp, Settings.text_pool, sizeof(temp)); // Was ota_url - char temp21[strlen(Settings.ex_mqtt_prefix[0]) +1]; strncpy(temp21, Settings.ex_mqtt_prefix[0], sizeof(temp21)); - char temp22[strlen(Settings.ex_mqtt_prefix[1]) +1]; strncpy(temp22, Settings.ex_mqtt_prefix[1], sizeof(temp22)); - char temp23[strlen(Settings.ex_mqtt_prefix[2]) +1]; strncpy(temp23, Settings.ex_mqtt_prefix[2], sizeof(temp23)); - char temp31[strlen(Settings.ex_sta_ssid[0]) +1]; strncpy(temp31, Settings.ex_sta_ssid[0], sizeof(temp31)); - char temp32[strlen(Settings.ex_sta_ssid[1]) +1]; strncpy(temp32, Settings.ex_sta_ssid[1], sizeof(temp32)); - char temp41[strlen(Settings.ex_sta_pwd[0]) +1]; strncpy(temp41, Settings.ex_sta_pwd[0], sizeof(temp41)); - char temp42[strlen(Settings.ex_sta_pwd[1]) +1]; strncpy(temp42, Settings.ex_sta_pwd[1], sizeof(temp42)); - char temp5[strlen(Settings.ex_hostname) +1]; strncpy(temp5, Settings.ex_hostname, sizeof(temp5)); - char temp6[strlen(Settings.ex_syslog_host) +1]; strncpy(temp6, Settings.ex_syslog_host, sizeof(temp6)); - char temp7[strlen(Settings.ex_mqtt_host) +1]; strncpy(temp7, Settings.ex_mqtt_host, sizeof(temp7)); - char temp8[strlen(Settings.ex_mqtt_client) +1]; strncpy(temp8, Settings.ex_mqtt_client, sizeof(temp8)); - char temp9[strlen(Settings.ex_mqtt_user) +1]; strncpy(temp9, Settings.ex_mqtt_user, sizeof(temp9)); - char temp10[strlen(Settings.ex_mqtt_pwd) +1]; strncpy(temp10, Settings.ex_mqtt_pwd, sizeof(temp10)); - char temp11[strlen(Settings.ex_mqtt_topic) +1]; strncpy(temp11, Settings.ex_mqtt_topic, sizeof(temp11)); - char temp12[strlen(Settings.ex_button_topic) +1]; strncpy(temp12, Settings.ex_button_topic, sizeof(temp12)); - char temp13[strlen(Settings.ex_mqtt_grptopic) +1]; strncpy(temp13, Settings.ex_mqtt_grptopic, sizeof(temp13)); - - memset(Settings.text_pool, 0x00, settings_text_size); - SettingsUpdateText(SET_OTAURL, temp); - SettingsUpdateText(SET_MQTTPREFIX1, temp21); - SettingsUpdateText(SET_MQTTPREFIX2, temp22); - SettingsUpdateText(SET_MQTTPREFIX3, temp23); - SettingsUpdateText(SET_STASSID1, temp31); - SettingsUpdateText(SET_STASSID2, temp32); - SettingsUpdateText(SET_STAPWD1, temp41); - SettingsUpdateText(SET_STAPWD2, temp42); - SettingsUpdateText(SET_HOSTNAME, temp5); - SettingsUpdateText(SET_SYSLOG_HOST, temp6); -#if defined(USE_MQTT_TLS) && defined(USE_MQTT_AWS_IOT) - if (!strlen(Settings.ex_mqtt_user)) { - SettingsUpdateText(SET_MQTT_HOST, temp7); - SettingsUpdateText(SET_MQTT_USER, temp9); - } else { - char aws_mqtt_host[66]; - snprintf_P(aws_mqtt_host, sizeof(aws_mqtt_host), PSTR("%s%s"), temp9, temp7); - SettingsUpdateText(SET_MQTT_HOST, aws_mqtt_host); - SettingsUpdateText(SET_MQTT_USER, ""); - } -#else - SettingsUpdateText(SET_MQTT_HOST, temp7); - SettingsUpdateText(SET_MQTT_USER, temp9); -#endif - SettingsUpdateText(SET_MQTT_CLIENT, temp8); - SettingsUpdateText(SET_MQTT_PWD, temp10); - SettingsUpdateText(SET_MQTT_TOPIC, temp11); - SettingsUpdateText(SET_MQTT_BUTTON_TOPIC, temp12); - SettingsUpdateText(SET_MQTT_GRP_TOPIC, temp13); - -// SettingsUpdateText(SET_WEBPWD, Settings.ex_web_password); - SettingsUpdateText(SET_CORS, Settings.ex_cors_domain); - SettingsUpdateText(SET_MQTT_FULLTOPIC, Settings.ex_mqtt_fulltopic); -// SettingsUpdateText(SET_MQTT_SWITCH_TOPIC, Settings.ex_switch_topic); - SettingsUpdateText(SET_STATE_TXT1, Settings.ex_state_text[0]); - SettingsUpdateText(SET_STATE_TXT2, Settings.ex_state_text[1]); - SettingsUpdateText(SET_STATE_TXT3, Settings.ex_state_text[2]); - SettingsUpdateText(SET_STATE_TXT4, Settings.ex_state_text[3]); - SettingsUpdateText(SET_NTPSERVER1, Settings.ex_ntp_server[0]); - SettingsUpdateText(SET_NTPSERVER2, Settings.ex_ntp_server[1]); - SettingsUpdateText(SET_NTPSERVER3, Settings.ex_ntp_server[2]); - SettingsUpdateText(SET_MEM1, Settings.script_pram[0]); - SettingsUpdateText(SET_MEM2, Settings.script_pram[1]); - SettingsUpdateText(SET_MEM3, Settings.script_pram[2]); - SettingsUpdateText(SET_MEM4, Settings.script_pram[3]); - SettingsUpdateText(SET_MEM5, Settings.script_pram[4]); -// SettingsUpdateText(SET_FRIENDLYNAME1, Settings.ex_friendlyname[0]); -// SettingsUpdateText(SET_FRIENDLYNAME2, Settings.ex_friendlyname[1]); -// SettingsUpdateText(SET_FRIENDLYNAME3, Settings.ex_friendlyname[2]); -// SettingsUpdateText(SET_FRIENDLYNAME4, Settings.ex_friendlyname[3]); - } -#else // UPGRADE_V8_MIN if (Settings.version < 0x08000000) { #ifdef UPGRADE_V8_MIN_KEEP_WIFI // Save SSIDs and Passwords @@ -1269,7 +1164,7 @@ void SettingsDelta(void) { SettingsUpdateText(SET_MQTT_TOPIC, temp11); #endif // UPGRADE_V8_MIN_KEEP_MQTT } -#endif // UPGRADE_V8_MIN + if (Settings.version < 0x08020003) { SettingsUpdateText(SET_TEMPLATE_NAME, Settings.user_template_name); Settings.zb_channel = 0; // set channel to zero to force reinit of zigbee parameters @@ -1338,6 +1233,9 @@ void SettingsDelta(void) { for (uint32_t i = 0; i < MAX_SWITCHES; i++) { Settings.switchmode[i] = (i < 8) ? Settings.ex_switchmode[i] : SWITCH_MODE; } + for (uint32_t i = 0; i < MAX_INTERLOCK_GROUPS; i++) { + Settings.interlock[i] = (i < 4) ? Settings.ex_interlock[i] : 0; + } } Settings.version = VERSION; diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index b168905a7..c79566c12 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -1682,7 +1682,7 @@ void CmndInterlock(void) if (max_relays > sizeof(Settings.interlock[0]) * 8) { max_relays = sizeof(Settings.interlock[0]) * 8; } if (max_relays > 1) { // Only interlock with more than 1 relay if (XdrvMailbox.data_len > 0) { - if (strchr(XdrvMailbox.data, ',') != nullptr) { // Interlock entry + if (strchr(XdrvMailbox.data, ',') != nullptr) { // Interlock entry for (uint32_t i = 0; i < MAX_INTERLOCKS; i++) { Settings.interlock[i] = 0; } // Reset current interlocks char *group; char *q; diff --git a/tasmota/tasmota.h b/tasmota/tasmota.h index 0c1e7cec7..491e042c1 100644 --- a/tasmota/tasmota.h +++ b/tasmota/tasmota.h @@ -49,15 +49,17 @@ const uint32_t POWER_MASK = 0xffffffffUL; // Power (Relay) full mask \*********************************************************************************************/ #ifdef ESP8266 -const uint8_t MAX_RELAYS = 8; // Max number of relays +const uint8_t MAX_RELAYS = 8; // Max number of relays (up to 28) +const uint8_t MAX_INTERLOCKS = 4; // Max number of interlock groups (up to MAX_INTERLOCK_GROUPS) #endif // ESP8266 #ifdef ESP32 -const uint8_t MAX_RELAYS = 28; // Max number of relays +const uint8_t MAX_RELAYS = 28; // Max number of relays (up to 28) +const uint8_t MAX_INTERLOCKS = 14; // Max number of interlock groups (up to MAX_INTERLOCK_GROUPS) #endif // ESP32 -const uint8_t MAX_KEYS = 8; // Max number of keys or buttons +const uint8_t MAX_KEYS = 8; // Max number of keys or buttons (up to 28) // Changes to the following MAX_ defines will impact settings layout -const uint8_t MAX_INTERLOCKS = 4; // Max number of interlock groups (MAX_RELAYS / 2) +const uint8_t MAX_INTERLOCK_GROUPS = 14; // Max number of interlock groups (MAX_RELAYS / 2) const uint8_t MAX_SWITCHES = 28; // Max number of switches const uint8_t MAX_LEDS = 4; // Max number of leds const uint8_t MAX_PWMS = 5; // Max number of PWM channels