mirror of https://github.com/arendst/Tasmota.git
Bump version to 8.0.0.1
Change Settings text handling allowing variable length text within a total text pool of 699 characters
This commit is contained in:
parent
d2ebefbb16
commit
f55e02e800
|
@ -2,8 +2,6 @@
|
|||
|
||||
# RELEASE NOTES
|
||||
|
||||
### Sonoff-Tasmota is now Tasmota
|
||||
|
||||
## Migration Information
|
||||
|
||||
See [migration path](https://tasmota.github.io/docs/#/Upgrading?id=migration-path) for instructions how to migrate to a major version. Pay attention to the following version breaks due to dynamic settings updates:
|
||||
|
@ -13,8 +11,7 @@ See [migration path](https://tasmota.github.io/docs/#/Upgrading?id=migration-pat
|
|||
3. Migrate to **Sonoff-Tasmota 5.14**
|
||||
4. Migrate to **Sonoff-Tasmota 6.x**
|
||||
5. Migrate to **Tasmota 7.x**
|
||||
|
||||
Only this version will support fallback from version 8.x.
|
||||
6. Migrate to **Tasmota 8.x**
|
||||
|
||||
## Supported Core versions
|
||||
|
||||
|
@ -49,33 +46,6 @@ The following binary downloads have been compiled with ESP8266/Arduino library c
|
|||
|
||||
## Changelog
|
||||
|
||||
### Version 7.2.0 Constance
|
||||
### Version 8.0.0.1
|
||||
|
||||
- Change Exception reporting removing exception details from ``Status 1`` and consolidated in ``Status 12`` if available
|
||||
- Change HTTP CORS from command ``SetOption73 0/1`` to ``Cors <cors_domain>`` allowing user control of specific CORS domain by Shantur Rathore (#7066)
|
||||
- Change GUI Shutter button text to Up and Down Arrows based on PR by Xavier Muller (#7166)
|
||||
- Change amount of supported DHT sensors from 3 to 4 by Xavier Muller (#7167)
|
||||
- Change some Settings locations freeing up space for future single char allowing variable length text
|
||||
- Change tasmota-basic.bin and FIRMWARE_BASIC to tasmota-lite.bin and FIRMWARE_LITE
|
||||
- Fix flashing H801 led at boot by Stefan Hadinger (#7165, #649)
|
||||
- Fix duplicated ``Backlog`` when using Event inside a Backlog by Adrian Scillato (#7178, #7147)
|
||||
- Fix Gui Timer when using a negative zero offset of -00:00 by Peter Ooms (#7174)
|
||||
- Fix DeepSleep in case there is no wifi by Stefan Bode (#7213)
|
||||
- Fix Fade would ignore ``savedata 0`` and store to flash anyways (#7262)
|
||||
- Add command ``SerialConfig 0..23`` or ``SerialConfig 8N1`` to select Serial Config based in PR by Luis Teixeira (#7108)
|
||||
- Add command ``Sensor34 9 <weight code>`` to set minimum delta to trigger JSON message by @tobox (#7188)
|
||||
- Add rule var ``%topic%`` by Adrian Scillato (#5522)
|
||||
- Add rule triggers ``tele-wifi1#xxx`` by Adrian Scillato (#7093)
|
||||
- Add SML bus decoder syntax support for byte order by Gerhard Mutz (#7112)
|
||||
- Add experimental support for stepper motor shutter control by Stefan Bode
|
||||
- Add optional USE_MQTT_TLS to tasmota-minimal.bin by Bohdan Kmit (#7115)
|
||||
- Add save call stack in RTC memory in case of crash, command ``Status 12`` to dump the stack by Stefan Hadinger
|
||||
- Add Home Assistant force update by Frederico Leoni (#7140, #7074)
|
||||
- Add Wifi Signal Strength in dBm in addition to RSSI Wifi Experience by Andreas Schultz (#7145)
|
||||
- Add Yaw, Pitch and Roll support for MPU6050 by Philip Barclay (#7058)
|
||||
- Add reporting of raw weight to JSON from HX711 to overcome auto-tare functionality by @tobox (#7171)
|
||||
- Add Zigbee support for Xiaomi Aqara Vibration Sensor and Presence Sensor by Stefan Hadinger
|
||||
- Add Shutter functions ramp up/down and MQTT reporting by Stefan Bode
|
||||
- Add fallback support from version 8.x
|
||||
- Add restriction if fallback firmware is incompatible with settings resulting in unreachable device
|
||||
- Add support for DHT12 Temperature and Humidity sensor by Stefan Oskamp
|
||||
- Change Settings text handling allowing variable length text within a total text pool of 699 characters
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
## Unreleased (development)
|
||||
|
||||
### 7.2.0.1 20191221
|
||||
### 8.0.0.1 20191221
|
||||
|
||||
- Change Settings text handling allowing variable length text within a total text pool of 699 characters
|
||||
|
||||
## Released
|
||||
|
||||
|
|
|
@ -231,13 +231,6 @@ typedef struct {
|
|||
|
||||
const uint8_t MAX_TUYA_FUNCTIONS = 16;
|
||||
|
||||
/*
|
||||
struct SYSCFG {
|
||||
unsigned long cfg_holder; // 000 Pre v6 header
|
||||
unsigned long save_flag; // 004
|
||||
unsigned long version; // 008
|
||||
unsigned long bootcount; // 00C
|
||||
*/
|
||||
struct SYSCFG {
|
||||
uint16_t cfg_holder; // 000 v6 header
|
||||
uint16_t cfg_size; // 002
|
||||
|
@ -274,8 +267,6 @@ struct SYSCFG {
|
|||
|
||||
uint8_t ex_free_1d6[10]; // 1D6
|
||||
|
||||
// End of single char array of 456 chars max (phase 3)
|
||||
|
||||
SysBitfield4 ex_flag4; // 1E0
|
||||
uint8_t ex_serial_config; // 1E4
|
||||
uint8_t ex_wifi_output_power; // 1E5
|
||||
|
|
|
@ -488,10 +488,7 @@ void UpdateQuickPowerCycle(bool update)
|
|||
* Config Settings.text char array support
|
||||
\*********************************************************************************************/
|
||||
|
||||
char aws_mqtt_host[66];
|
||||
char aws_mqtt_user[1] { 0 };
|
||||
|
||||
const uint32_t settings_text_size = 457; // Settings.flag4 (1E0) - Settings.ota_url (017)
|
||||
const uint32_t settings_text_size = 699; // Settings.flag4 (2D2) - Settings.ota_url (017)
|
||||
|
||||
uint32_t GetSettingsTextLen(void)
|
||||
{
|
||||
|
@ -513,60 +510,43 @@ bool SettingsUpdateText(uint32_t index, const char* replace_me)
|
|||
char replace[replace_len +1];
|
||||
memcpy(replace, replace_me, sizeof(replace));
|
||||
|
||||
uint32_t idx = 0;
|
||||
switch (index) {
|
||||
case SET_OTAURL: strlcpy(Settings.ota_url, replace, sizeof(Settings.ota_url)); break;
|
||||
case SET_MQTTPREFIX3: idx++;
|
||||
case SET_MQTTPREFIX2: idx++;
|
||||
case SET_MQTTPREFIX1: strlcpy(Settings.mqtt_prefix[idx], replace, sizeof(Settings.mqtt_prefix[idx])); break;
|
||||
case SET_STASSID2: idx++;
|
||||
case SET_STASSID1: strlcpy(Settings.sta_ssid[idx], replace, sizeof(Settings.sta_ssid[idx])); break;
|
||||
case SET_STAPWD2: idx++;
|
||||
case SET_STAPWD1: strlcpy(Settings.sta_pwd[idx], replace, sizeof(Settings.sta_pwd[idx])); break;
|
||||
case SET_HOSTNAME: strlcpy(Settings.hostname, replace, sizeof(Settings.hostname)); break;
|
||||
case SET_SYSLOG_HOST: strlcpy(Settings.syslog_host, replace, sizeof(Settings.syslog_host)); break;
|
||||
case SET_WEBPWD: strlcpy(Settings.web_password, replace, sizeof(Settings.web_password)); break;
|
||||
#if defined(USE_MQTT_TLS) && defined(USE_MQTT_AWS_IOT)
|
||||
case SET_MQTT_HOST:
|
||||
if (strlen(replace) <= sizeof(Settings.mqtt_host)) {
|
||||
strlcpy(Settings.mqtt_host, replace, sizeof(Settings.mqtt_host));
|
||||
Settings.mqtt_user[0] = 0;
|
||||
} else {
|
||||
// need to split in mqtt_user first then mqtt_host
|
||||
strlcpy(Settings.mqtt_user, replace, sizeof(Settings.mqtt_user));
|
||||
strlcpy(Settings.mqtt_host, &replace[sizeof(Settings.mqtt_user)-1], sizeof(Settings.mqtt_host));
|
||||
}
|
||||
break;
|
||||
case SET_MQTT_USER: break;
|
||||
#else
|
||||
case SET_MQTT_HOST: strlcpy(Settings.mqtt_host, replace, sizeof(Settings.mqtt_host)); break;
|
||||
case SET_MQTT_USER: strlcpy(Settings.mqtt_user, replace, sizeof(Settings.mqtt_user)); break;
|
||||
#endif
|
||||
case SET_MQTT_CLIENT: strlcpy(Settings.mqtt_client, replace, sizeof(Settings.mqtt_client)); break;
|
||||
case SET_MQTT_PWD: strlcpy(Settings.mqtt_pwd, replace, sizeof(Settings.mqtt_pwd)); break;
|
||||
case SET_MQTT_FULLTOPIC: strlcpy(Settings.mqtt_fulltopic, replace, sizeof(Settings.mqtt_fulltopic)); break;
|
||||
case SET_MQTT_TOPIC: strlcpy(Settings.mqtt_topic, replace, sizeof(Settings.mqtt_topic)); break;
|
||||
case SET_MQTT_BUTTON_TOPIC: strlcpy(Settings.button_topic, replace, sizeof(Settings.button_topic)); break;
|
||||
case SET_MQTT_SWITCH_TOPIC: strlcpy(Settings.switch_topic, replace, sizeof(Settings.switch_topic)); break;
|
||||
case SET_MQTT_GRP_TOPIC: strlcpy(Settings.mqtt_grptopic, replace, sizeof(Settings.mqtt_grptopic)); break;
|
||||
case SET_STATE_TXT4: idx++;
|
||||
case SET_STATE_TXT3: idx++;
|
||||
case SET_STATE_TXT2: idx++;
|
||||
case SET_STATE_TXT1: strlcpy(Settings.state_text[idx], replace, sizeof(Settings.state_text[idx])); break;
|
||||
case SET_NTPSERVER3: idx++;
|
||||
case SET_NTPSERVER2: idx++;
|
||||
case SET_NTPSERVER1: strlcpy(Settings.ntp_server[idx], replace, sizeof(Settings.ntp_server[idx])); break;
|
||||
case SET_MEM5: idx++;
|
||||
case SET_MEM4: idx++;
|
||||
case SET_MEM3: idx++;
|
||||
case SET_MEM2: idx++;
|
||||
case SET_MEM1: strlcpy(Settings.mems[idx], replace, sizeof(Settings.mems[idx])); break;
|
||||
case SET_CORS: strlcpy(Settings.cors_domain, replace, sizeof(Settings.cors_domain)); break;
|
||||
case SET_FRIENDLYNAME4: idx++;
|
||||
case SET_FRIENDLYNAME3: idx++;
|
||||
case SET_FRIENDLYNAME2: idx++;
|
||||
case SET_FRIENDLYNAME1: strlcpy(Settings.friendlyname[idx], replace, sizeof(Settings.friendlyname[idx])); break;
|
||||
uint32_t start_pos = 0;
|
||||
uint32_t end_pos = 0;
|
||||
char* position = Settings.ota_url;
|
||||
for (uint32_t size = 0; size < SET_MAX; size++) {
|
||||
while (*position++ != '\0') { }
|
||||
if (1 == index) {
|
||||
start_pos = position - Settings.ota_url;
|
||||
}
|
||||
else if (0 == index) {
|
||||
end_pos = position - Settings.ota_url -1;
|
||||
}
|
||||
index--;
|
||||
}
|
||||
uint32_t char_len = position - Settings.ota_url;
|
||||
|
||||
uint32_t current_len = end_pos - start_pos;
|
||||
int diff = replace_len - current_len;
|
||||
|
||||
// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TST: start %d, end %d, len %d, current %d, replace %d, diff %d"),
|
||||
// start_pos, end_pos, char_len, current_len, replace_len, diff);
|
||||
|
||||
int too_long = (char_len + diff) - settings_text_size;
|
||||
if (too_long > 0) {
|
||||
// AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_CONFIG "Text too long by %d char(s)"), too_long);
|
||||
return false; // Replace text too long
|
||||
}
|
||||
|
||||
if (diff != 0) {
|
||||
// Shift Settings.text up or down
|
||||
memmove_P(Settings.ota_url + start_pos + replace_len, Settings.ota_url + end_pos, char_len - end_pos);
|
||||
}
|
||||
// Replace text
|
||||
memmove_P(Settings.ota_url + start_pos, replace, replace_len);
|
||||
// Fill for future use
|
||||
memset(Settings.ota_url + char_len + diff, 0x00, settings_text_size - char_len - diff);
|
||||
|
||||
AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_CONFIG "CR %d/%d"), GetSettingsTextLen(), settings_text_size);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -578,61 +558,9 @@ char* SettingsText(uint32_t index)
|
|||
}
|
||||
|
||||
char* position = Settings.ota_url;
|
||||
|
||||
if (Settings.version < 0x08000000) {
|
||||
uint32_t idx = 0;
|
||||
switch (index) {
|
||||
case SET_MQTTPREFIX3: idx++;
|
||||
case SET_MQTTPREFIX2: idx++;
|
||||
case SET_MQTTPREFIX1: position = Settings.mqtt_prefix[idx]; break;
|
||||
case SET_STASSID2: idx++;
|
||||
case SET_STASSID1: position = Settings.sta_ssid[idx]; break;
|
||||
case SET_STAPWD2: idx++;
|
||||
case SET_STAPWD1: position = Settings.sta_pwd[idx]; break;
|
||||
case SET_HOSTNAME: position = Settings.hostname; break;
|
||||
case SET_SYSLOG_HOST: position = Settings.syslog_host; break;
|
||||
case SET_WEBPWD: position = Settings.web_password; break;
|
||||
#if defined(USE_MQTT_TLS) && defined(USE_MQTT_AWS_IOT)
|
||||
case SET_MQTT_HOST:
|
||||
snprintf_P(aws_mqtt_host, sizeof(aws_mqtt_host), PSTR("%s%s"), Settings.mqtt_user, Settings.mqtt_host);
|
||||
position = aws_mqtt_host; break;
|
||||
case SET_MQTT_USER: position = aws_mqtt_user; break;
|
||||
#else
|
||||
case SET_MQTT_HOST: position = Settings.mqtt_host; break;
|
||||
case SET_MQTT_USER: position = Settings.mqtt_user; break;
|
||||
#endif
|
||||
case SET_MQTT_CLIENT: position = Settings.mqtt_client; break;
|
||||
case SET_MQTT_PWD: position = Settings.mqtt_pwd; break;
|
||||
case SET_MQTT_FULLTOPIC: position = Settings.mqtt_fulltopic; break;
|
||||
case SET_MQTT_TOPIC: position = Settings.mqtt_topic; break;
|
||||
case SET_MQTT_BUTTON_TOPIC: position = Settings.button_topic; break;
|
||||
case SET_MQTT_SWITCH_TOPIC: position = Settings.switch_topic; break;
|
||||
case SET_MQTT_GRP_TOPIC: position = Settings.mqtt_grptopic; break;
|
||||
case SET_STATE_TXT4: idx++;
|
||||
case SET_STATE_TXT3: idx++;
|
||||
case SET_STATE_TXT2: idx++;
|
||||
case SET_STATE_TXT1: position = Settings.state_text[idx]; break;
|
||||
case SET_NTPSERVER3: idx++;
|
||||
case SET_NTPSERVER2: idx++;
|
||||
case SET_NTPSERVER1: position = Settings.ntp_server[idx]; break;
|
||||
case SET_MEM5: idx++;
|
||||
case SET_MEM4: idx++;
|
||||
case SET_MEM3: idx++;
|
||||
case SET_MEM2: idx++;
|
||||
case SET_MEM1: position = Settings.mems[idx]; break;
|
||||
case SET_CORS: position = Settings.cors_domain; break;
|
||||
case SET_FRIENDLYNAME4: idx++;
|
||||
case SET_FRIENDLYNAME3: idx++;
|
||||
case SET_FRIENDLYNAME2: idx++;
|
||||
case SET_FRIENDLYNAME1: position = Settings.friendlyname[idx]; break;
|
||||
}
|
||||
|
||||
} else {
|
||||
for (;index > 0; index--) {
|
||||
while (*position++ != '\0') { }
|
||||
}
|
||||
for (;index > 0; index--) {
|
||||
while (*position++ != '\0') { }
|
||||
}
|
||||
|
||||
return position;
|
||||
}
|
||||
|
||||
|
@ -1132,10 +1060,6 @@ void SettingsDefaultSet2(void)
|
|||
|
||||
memset(&Settings.monitors, 0xFF, 20); // Enable all possible monitors, displays and sensors
|
||||
SettingsEnableAllI2cDrivers();
|
||||
|
||||
if (VERSION < 0x08000000) {
|
||||
SettingsBackwardCompat();
|
||||
}
|
||||
}
|
||||
|
||||
/********************************************************************************************/
|
||||
|
@ -1175,17 +1099,6 @@ void SettingsEnableAllI2cDrivers(void)
|
|||
Settings.i2c_drivers[2] = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
void SettingsBackwardCompat(void)
|
||||
{
|
||||
Settings.ex_seriallog_level = Settings.seriallog_level; // 09E <- 452
|
||||
Settings.ex_sta_config = Settings.sta_config; // 09F <- EC7
|
||||
Settings.ex_sta_active = Settings.sta_active; // 0A0 <- EC8
|
||||
memcpy((char*)&Settings.ex_rule_stop, (char*)&Settings.rule_stop, 47); // 1A7 <- EC9
|
||||
Settings.ex_flag4 = Settings.flag4; // 1E0 <- EF8
|
||||
Settings.ex_mqtt_port = Settings.mqtt_port; // 20A <- EFC
|
||||
memcpy((char*)&Settings.ex_serial_config, (char*)&Settings.serial_config, 5); // 1E4 <- EFE
|
||||
}
|
||||
|
||||
/********************************************************************************************/
|
||||
|
||||
void SettingsDelta(void)
|
||||
|
@ -1405,46 +1318,26 @@ void SettingsDelta(void)
|
|||
memcpy((char*)&Settings.serial_config, (char*)&Settings.ex_serial_config, 5); // 1E4 -> EFE
|
||||
}
|
||||
|
||||
if ((VERSION < 0x08000000) && (Settings.version >= 0x08000000)) {
|
||||
SettingsUpdateText(SET_WEBPWD, SettingsText(SET_WEBPWD));
|
||||
SettingsUpdateText(SET_CORS, SettingsText(SET_CORS));
|
||||
SettingsUpdateText(SET_MQTT_FULLTOPIC, SettingsText(SET_MQTT_FULLTOPIC));
|
||||
SettingsUpdateText(SET_MQTT_SWITCH_TOPIC, SettingsText(SET_MQTT_SWITCH_TOPIC));
|
||||
SettingsUpdateText(SET_STATE_TXT1, SettingsText(SET_STATE_TXT1));
|
||||
SettingsUpdateText(SET_STATE_TXT2, SettingsText(SET_STATE_TXT2));
|
||||
SettingsUpdateText(SET_STATE_TXT3, SettingsText(SET_STATE_TXT3));
|
||||
SettingsUpdateText(SET_STATE_TXT4, SettingsText(SET_STATE_TXT4));
|
||||
SettingsUpdateText(SET_NTPSERVER1, SettingsText(SET_NTPSERVER1));
|
||||
SettingsUpdateText(SET_NTPSERVER2, SettingsText(SET_NTPSERVER2));
|
||||
SettingsUpdateText(SET_NTPSERVER3, SettingsText(SET_NTPSERVER3));
|
||||
SettingsUpdateText(SET_MEM1, SettingsText(SET_MEM1));
|
||||
SettingsUpdateText(SET_MEM2, SettingsText(SET_MEM2));
|
||||
SettingsUpdateText(SET_MEM3, SettingsText(SET_MEM3));
|
||||
SettingsUpdateText(SET_MEM4, SettingsText(SET_MEM4));
|
||||
SettingsUpdateText(SET_MEM5, SettingsText(SET_MEM5));
|
||||
SettingsUpdateText(SET_FRIENDLYNAME1, SettingsText(SET_FRIENDLYNAME1));
|
||||
SettingsUpdateText(SET_FRIENDLYNAME2, SettingsText(SET_FRIENDLYNAME2));
|
||||
SettingsUpdateText(SET_FRIENDLYNAME3, SettingsText(SET_FRIENDLYNAME3));
|
||||
SettingsUpdateText(SET_FRIENDLYNAME4, SettingsText(SET_FRIENDLYNAME4));
|
||||
|
||||
char temp[strlen(SettingsText(SET_OTAURL)) +1]; strncpy(temp, SettingsText(SET_OTAURL), sizeof(temp));
|
||||
char temp21[strlen(SettingsText(SET_MQTTPREFIX1)) +1]; strncpy(temp21, SettingsText(SET_MQTTPREFIX1), sizeof(temp21));
|
||||
char temp22[strlen(SettingsText(SET_MQTTPREFIX2)) +1]; strncpy(temp22, SettingsText(SET_MQTTPREFIX2), sizeof(temp22));
|
||||
char temp23[strlen(SettingsText(SET_MQTTPREFIX3)) +1]; strncpy(temp23, SettingsText(SET_MQTTPREFIX3), sizeof(temp23));
|
||||
char temp31[strlen(SettingsText(SET_STASSID1)) +1]; strncpy(temp31, SettingsText(SET_STASSID1), sizeof(temp31));
|
||||
char temp32[strlen(SettingsText(SET_STASSID2)) +1]; strncpy(temp32, SettingsText(SET_STASSID2), sizeof(temp32));
|
||||
char temp41[strlen(SettingsText(SET_STAPWD1)) +1]; strncpy(temp41, SettingsText(SET_STAPWD1), sizeof(temp41));
|
||||
char temp42[strlen(SettingsText(SET_STAPWD2)) +1]; strncpy(temp42, SettingsText(SET_STAPWD2), sizeof(temp42));
|
||||
char temp5[strlen(SettingsText(SET_HOSTNAME)) +1]; strncpy(temp5, SettingsText(SET_HOSTNAME), sizeof(temp5));
|
||||
char temp6[strlen(SettingsText(SET_SYSLOG_HOST)) +1]; strncpy(temp6, SettingsText(SET_SYSLOG_HOST), sizeof(temp6));
|
||||
char temp7[strlen(SettingsText(SET_MQTT_HOST)) +1]; strncpy(temp7, SettingsText(SET_MQTT_HOST), sizeof(temp7));
|
||||
char temp8[strlen(SettingsText(SET_MQTT_CLIENT)) +1]; strncpy(temp8, SettingsText(SET_MQTT_CLIENT), sizeof(temp8));
|
||||
char temp9[strlen(SettingsText(SET_MQTT_USER)) +1]; strncpy(temp9, SettingsText(SET_MQTT_USER), sizeof(temp9));
|
||||
char temp10[strlen(SettingsText(SET_MQTT_PWD)) +1]; strncpy(temp10, SettingsText(SET_MQTT_PWD), sizeof(temp10));
|
||||
char temp11[strlen(SettingsText(SET_MQTT_TOPIC)) +1]; strncpy(temp11, SettingsText(SET_MQTT_TOPIC), sizeof(temp11));
|
||||
char temp12[strlen(SettingsText(SET_MQTT_BUTTON_TOPIC)) +1]; strncpy(temp12, SettingsText(SET_MQTT_BUTTON_TOPIC), sizeof(temp12));
|
||||
char temp13[strlen(SettingsText(SET_MQTT_GRP_TOPIC)) +1]; strncpy(temp13, SettingsText(SET_MQTT_GRP_TOPIC), sizeof(temp13));
|
||||
if (Settings.version < 0x08000000) {
|
||||
char temp[strlen(Settings.ota_url) +1]; strncpy(temp, Settings.ota_url, sizeof(temp));
|
||||
char temp21[strlen(Settings.mqtt_prefix[0]) +1]; strncpy(temp21, Settings.mqtt_prefix[0], sizeof(temp21));
|
||||
char temp22[strlen(Settings.mqtt_prefix[1]) +1]; strncpy(temp22, Settings.mqtt_prefix[1], sizeof(temp22));
|
||||
char temp23[strlen(Settings.mqtt_prefix[2]) +1]; strncpy(temp23, Settings.mqtt_prefix[2], sizeof(temp23));
|
||||
char temp31[strlen(Settings.sta_ssid[0]) +1]; strncpy(temp31, Settings.sta_ssid[0], sizeof(temp31));
|
||||
char temp32[strlen(Settings.sta_ssid[1]) +1]; strncpy(temp32, Settings.sta_ssid[1], sizeof(temp32));
|
||||
char temp41[strlen(Settings.sta_pwd[0]) +1]; strncpy(temp41, Settings.sta_pwd[0], sizeof(temp41));
|
||||
char temp42[strlen(Settings.sta_pwd[1]) +1]; strncpy(temp42, Settings.sta_pwd[1], sizeof(temp42));
|
||||
char temp5[strlen(Settings.hostname) +1]; strncpy(temp5, Settings.hostname, sizeof(temp5));
|
||||
char temp6[strlen(Settings.syslog_host) +1]; strncpy(temp6, Settings.syslog_host, sizeof(temp6));
|
||||
char temp7[strlen(Settings.mqtt_host) +1]; strncpy(temp7, Settings.mqtt_host, sizeof(temp7));
|
||||
char temp8[strlen(Settings.mqtt_client) +1]; strncpy(temp8, Settings.mqtt_client, sizeof(temp8));
|
||||
char temp9[strlen(Settings.mqtt_user) +1]; strncpy(temp9, Settings.mqtt_user, sizeof(temp9));
|
||||
char temp10[strlen(Settings.mqtt_pwd) +1]; strncpy(temp10, Settings.mqtt_pwd, sizeof(temp10));
|
||||
char temp11[strlen(Settings.mqtt_topic) +1]; strncpy(temp11, Settings.mqtt_topic, sizeof(temp11));
|
||||
char temp12[strlen(Settings.button_topic) +1]; strncpy(temp12, Settings.button_topic, sizeof(temp12));
|
||||
char temp13[strlen(Settings.mqtt_grptopic) +1]; strncpy(temp13, Settings.mqtt_grptopic, sizeof(temp13));
|
||||
|
||||
memset(Settings.ota_url, 0x00, settings_text_size);
|
||||
SettingsUpdateText(SET_OTAURL, temp);
|
||||
SettingsUpdateText(SET_MQTTPREFIX1, temp21);
|
||||
SettingsUpdateText(SET_MQTTPREFIX2, temp22);
|
||||
|
@ -1455,15 +1348,46 @@ void SettingsDelta(void)
|
|||
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.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, mqtt_host);
|
||||
SettingsUpdateText(SET_MQTT_USER, "");
|
||||
}
|
||||
#else
|
||||
SettingsUpdateText(SET_MQTT_HOST, temp7);
|
||||
SettingsUpdateText(SET_MQTT_CLIENT, temp8);
|
||||
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);
|
||||
|
||||
SettingsBackwardCompat();
|
||||
SettingsUpdateText(SET_WEBPWD, Settings.web_password);
|
||||
SettingsUpdateText(SET_CORS, Settings.cors_domain);
|
||||
SettingsUpdateText(SET_MQTT_FULLTOPIC, Settings.mqtt_fulltopic);
|
||||
SettingsUpdateText(SET_MQTT_SWITCH_TOPIC, Settings.switch_topic);
|
||||
SettingsUpdateText(SET_STATE_TXT1, Settings.state_text[0]);
|
||||
SettingsUpdateText(SET_STATE_TXT2, Settings.state_text[1]);
|
||||
SettingsUpdateText(SET_STATE_TXT3, Settings.state_text[2]);
|
||||
SettingsUpdateText(SET_STATE_TXT4, Settings.state_text[3]);
|
||||
SettingsUpdateText(SET_NTPSERVER1, Settings.ntp_server[0]);
|
||||
SettingsUpdateText(SET_NTPSERVER2, Settings.ntp_server[1]);
|
||||
SettingsUpdateText(SET_NTPSERVER3, Settings.ntp_server[2]);
|
||||
SettingsUpdateText(SET_MEM1, Settings.mems[0]);
|
||||
SettingsUpdateText(SET_MEM2, Settings.mems[1]);
|
||||
SettingsUpdateText(SET_MEM3, Settings.mems[2]);
|
||||
SettingsUpdateText(SET_MEM4, Settings.mems[3]);
|
||||
SettingsUpdateText(SET_MEM5, Settings.mems[4]);
|
||||
SettingsUpdateText(SET_FRIENDLYNAME1, Settings.friendlyname[0]);
|
||||
SettingsUpdateText(SET_FRIENDLYNAME2, Settings.friendlyname[1]);
|
||||
SettingsUpdateText(SET_FRIENDLYNAME3, Settings.friendlyname[2]);
|
||||
SettingsUpdateText(SET_FRIENDLYNAME4, Settings.friendlyname[3]);
|
||||
}
|
||||
|
||||
Settings.version = VERSION;
|
||||
|
|
|
@ -27,42 +27,7 @@
|
|||
String GetStatistics(void)
|
||||
{
|
||||
char data[40];
|
||||
|
||||
if (Settings.version < 0x08000000) {
|
||||
uint32_t str_len = 0;
|
||||
for (uint32_t i = 0; i < 2; i++) {
|
||||
str_len += strlen(Settings.sta_ssid[i]);
|
||||
str_len += strlen(Settings.sta_pwd[i]);
|
||||
}
|
||||
for (uint32_t i = 0; i < 3; i++) {
|
||||
str_len += strlen(Settings.mqtt_prefix[i]);
|
||||
str_len += strlen(Settings.ntp_server[i]);
|
||||
}
|
||||
for (uint32_t i = 0; i < 4; i++) {
|
||||
str_len += strlen(Settings.state_text[i]);
|
||||
str_len += strlen(Settings.friendlyname[i]);
|
||||
}
|
||||
for (uint32_t i = 0; i < MAX_RULE_MEMS; i++) {
|
||||
str_len += strlen(Settings.mems[i]);
|
||||
}
|
||||
str_len += strlen(Settings.ota_url);
|
||||
str_len += strlen(Settings.hostname);
|
||||
str_len += strlen(Settings.syslog_host);
|
||||
str_len += strlen(Settings.mqtt_host);
|
||||
str_len += strlen(Settings.mqtt_client);
|
||||
str_len += strlen(Settings.mqtt_user);
|
||||
str_len += strlen(Settings.mqtt_pwd);
|
||||
str_len += strlen(Settings.mqtt_topic);
|
||||
str_len += strlen(Settings.button_topic);
|
||||
str_len += strlen(Settings.switch_topic);
|
||||
str_len += strlen(Settings.mqtt_grptopic);
|
||||
str_len += strlen(Settings.web_password);
|
||||
str_len += strlen(Settings.mqtt_fulltopic);
|
||||
str_len += strlen(Settings.cors_domain);
|
||||
snprintf_P(data, sizeof(data), PSTR(",\"CR\":\"%d/1151\""), 37 + str_len); // Char Usage Ratio
|
||||
} else {
|
||||
snprintf_P(data, sizeof(data), PSTR(",\"CR\":\"%d/%d\""), GetSettingsTextLen(), settings_text_size); // Char Usage Ratio
|
||||
}
|
||||
snprintf_P(data, sizeof(data), PSTR(",\"CR\":\"%d/%d\""), GetSettingsTextLen(), settings_text_size); // Char Usage Ratio
|
||||
return String(data);
|
||||
}
|
||||
|
||||
|
|
|
@ -20,9 +20,9 @@
|
|||
#ifndef _TASMOTA_VERSION_H_
|
||||
#define _TASMOTA_VERSION_H_
|
||||
|
||||
const uint32_t VERSION = 0x07020001;
|
||||
const uint32_t VERSION = 0x08000001;
|
||||
|
||||
// Lowest compatible version
|
||||
const uint32_t VERSION_COMPATIBLE = 0x06000000;
|
||||
const uint32_t VERSION_COMPATIBLE = 0x07010006;
|
||||
|
||||
#endif // _TASMOTA_VERSION_H_
|
||||
|
|
Loading…
Reference in New Issue