ESP32 Increase number of interlock groups from 4 to 14

- Removed migration support for versions before v8.1.0 (Doris)
- ESP32 Increase number of interlock groups from 4 to 14
This commit is contained in:
Theo Arends 2021-02-05 15:21:06 +01:00
parent 5d58eb39cf
commit 19ef735c08
6 changed files with 22 additions and 114 deletions

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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