mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-23 18:56:38 +00:00
parent
49ada1cab9
commit
103808ce44
@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file.
|
||||
### Added
|
||||
- Zigbee device plugin mechanism with commands ``ZbLoad``, ``ZbUnload`` and ``ZbLoadDump`` (#16252)
|
||||
- ESP32-S3 support for internal temperature sensor
|
||||
- Command ``StatusRetain`` (#11109)
|
||||
|
||||
### Changed
|
||||
- ESP32 NimBLE library from v1.3.6 to v1.4.0
|
||||
|
@ -109,6 +109,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo
|
||||
|
||||
## Changelog v12.1.0.1
|
||||
### Added
|
||||
- Command ``StatusRetain`` (#11109)
|
||||
- Zigbee device plugin mechanism with commands ``ZbLoad``, ``ZbUnload`` and ``ZbLoadDump`` [#16252](https://github.com/arendst/Tasmota/issues/16252)
|
||||
- ESP32-S3 support for internal temperature sensor
|
||||
|
||||
|
@ -416,6 +416,7 @@
|
||||
#define D_CMND_SENSORRETAIN "SensorRetain"
|
||||
#define D_CMND_INFORETAIN "InfoRetain"
|
||||
#define D_CMND_STATERETAIN "StateRetain"
|
||||
#define D_CMND_STATUSRETAIN "StatusRetain"
|
||||
#define D_CMND_PUBLISH "Publish"
|
||||
#define D_CMND_FILEUPLOAD "FileUpload"
|
||||
#define D_CMND_FILEDOWNLOAD "FileDownload"
|
||||
|
@ -172,7 +172,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu
|
||||
uint32_t wait_for_wifi_result : 1; // bit 28 (v11.1.0.4) - SetOption142 - (Wifi) Wait 1 second for wifi connection solving some FRITZ!Box modem issues (1)
|
||||
uint32_t zigbee_no_batt_autoprobe : 1; // bit 29 (v12.0.2.4) - SetOption143 - (Zigbee) Disable Battery auto-probe and using auto-binding
|
||||
uint32_t zigbee_include_time : 1; // bit 30 (v12.0.2.4) - SetOption144 - (Zigbee) Include time in `ZbReceived` messages like other sensors
|
||||
uint32_t spare31 : 1; // bit 31
|
||||
uint32_t mqtt_status_retain : 1; // bit 31 (v12.1.0.1) - CMND_STATUSRETAIN
|
||||
};
|
||||
} SOBitfield5;
|
||||
|
||||
|
@ -131,6 +131,7 @@
|
||||
#define MQTT_SENSOR_RETAIN false // [SensorRetain] Sensor may send retain flag (false = off, true = on)
|
||||
#define MQTT_INFO_RETAIN false // [InfoRetain] Info may send retain flag (false = off, true = on)
|
||||
#define MQTT_STATE_RETAIN false // [StateRetain] State may send retain flag (false = off, true = on)
|
||||
#define MQTT_STATUS_RETAIN false // [StatusRetain] Status may send retain flag (false = off, true = on)
|
||||
#define MQTT_NO_HOLD_RETAIN false // [SetOption62] Disable retain flag on HOLD messages
|
||||
#define MQTT_NO_RETAIN false // [SetOption104] No Retain - disable all MQTT retained messages, some brokers don't support it: AWS IoT, Losant
|
||||
|
||||
|
@ -989,6 +989,7 @@ void SettingsDefaultSet2(void) {
|
||||
flag.mqtt_sensor_retain |= MQTT_SENSOR_RETAIN;
|
||||
flag5.mqtt_info_retain |= MQTT_INFO_RETAIN;
|
||||
flag5.mqtt_state_retain |= MQTT_STATE_RETAIN;
|
||||
flag5.mqtt_status_retain |= MQTT_STATUS_RETAIN;
|
||||
flag5.mqtt_switches |= MQTT_SWITCHES;
|
||||
flag5.mqtt_persistent |= ~MQTT_CLEAN_SESSION;
|
||||
// flag.mqtt_serial |= 0;
|
||||
|
@ -651,7 +651,7 @@ void CmndStatusResponse(uint32_t index) {
|
||||
all_status.replace("}{", ",");
|
||||
char cmnd_status[10]; // STATUS11
|
||||
snprintf_P(cmnd_status, sizeof(cmnd_status), PSTR(D_CMND_STATUS "0"));
|
||||
MqttPublishPayloadPrefixTopicRulesProcess_P(STAT, cmnd_status, all_status.c_str());
|
||||
MqttPublishPayloadPrefixTopicRulesProcess_P(STAT, cmnd_status, all_status.c_str(), Settings->flag5.mqtt_status_retain);
|
||||
all_status = (const char*) nullptr;
|
||||
} else {
|
||||
if (0 == index) { all_status = ""; }
|
||||
@ -662,7 +662,7 @@ void CmndStatusResponse(uint32_t index) {
|
||||
char cmnd_status[10]; // STATUS11
|
||||
char number[4] = { 0 };
|
||||
snprintf_P(cmnd_status, sizeof(cmnd_status), PSTR(D_CMND_STATUS "%s"), (index) ? itoa(index, number, 10) : "");
|
||||
MqttPublishPrefixTopicRulesProcess_P(STAT, cmnd_status);
|
||||
MqttPublishPrefixTopicRulesProcess_P(STAT, cmnd_status, Settings->flag5.mqtt_status_retain);
|
||||
}
|
||||
}
|
||||
|
||||
@ -698,7 +698,7 @@ void CmndStatus(void)
|
||||
D_CMND_BUTTONTOPIC "\":\"%s\",\"" D_CMND_POWER "\":%d,\"" D_CMND_POWERONSTATE "\":%d,\"" D_CMND_LEDSTATE "\":%d,\""
|
||||
D_CMND_LEDMASK "\":\"%04X\",\"" D_CMND_SAVEDATA "\":%d,\"" D_JSON_SAVESTATE "\":%d,\"" D_CMND_SWITCHTOPIC "\":\"%s\",\""
|
||||
D_CMND_SWITCHMODE "\":[%s],\"" D_CMND_BUTTONRETAIN "\":%d,\"" D_CMND_SWITCHRETAIN "\":%d,\"" D_CMND_SENSORRETAIN "\":%d,\"" D_CMND_POWERRETAIN "\":%d,\""
|
||||
D_CMND_INFORETAIN "\":%d,\"" D_CMND_STATERETAIN "\":%d}}"),
|
||||
D_CMND_INFORETAIN "\":%d,\"" D_CMND_STATERETAIN "\":%d,\"" D_CMND_STATUSRETAIN "\":%d}}"),
|
||||
ModuleNr(), EscapeJSONString(SettingsText(SET_DEVICENAME)).c_str(), stemp, TasmotaGlobal.mqtt_topic,
|
||||
SettingsText(SET_MQTT_BUTTON_TOPIC), TasmotaGlobal.power, Settings->poweronstate, Settings->ledstate,
|
||||
Settings->ledmask, Settings->save_data,
|
||||
@ -710,7 +710,9 @@ void CmndStatus(void)
|
||||
Settings->flag.mqtt_sensor_retain, // CMND_SENSORRETAIN
|
||||
Settings->flag.mqtt_power_retain, // CMND_POWERRETAIN
|
||||
Settings->flag5.mqtt_info_retain, // CMND_INFORETAIN
|
||||
Settings->flag5.mqtt_state_retain); // CMND_STATERETAIN
|
||||
Settings->flag5.mqtt_state_retain, // CMND_STATERETAIN
|
||||
Settings->flag5.mqtt_status_retain // CMND_STATUSRETAIN
|
||||
);
|
||||
CmndStatusResponse(0);
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ const char kMqttCommands[] PROGMEM = "|" // No prefix
|
||||
D_CMND_MQTTHOST "|" D_CMND_MQTTPORT "|" D_CMND_MQTTRETRY "|" D_CMND_STATETEXT "|" D_CMND_MQTTCLIENT "|"
|
||||
D_CMND_FULLTOPIC "|" D_CMND_PREFIX "|" D_CMND_GROUPTOPIC "|" D_CMND_TOPIC "|" D_CMND_PUBLISH "|" D_CMND_MQTTLOG "|"
|
||||
D_CMND_BUTTONTOPIC "|" D_CMND_SWITCHTOPIC "|" D_CMND_BUTTONRETAIN "|" D_CMND_SWITCHRETAIN "|" D_CMND_POWERRETAIN "|"
|
||||
D_CMND_SENSORRETAIN "|" D_CMND_INFORETAIN "|" D_CMND_STATERETAIN
|
||||
D_CMND_SENSORRETAIN "|" D_CMND_INFORETAIN "|" D_CMND_STATERETAIN "|" D_CMND_STATUSRETAIN
|
||||
#endif // FIRMWARE_MINIMAL_ONLY
|
||||
;
|
||||
|
||||
@ -92,8 +92,8 @@ void (* const MqttCommand[])(void) PROGMEM = {
|
||||
#endif // USE_MQTT_FILE
|
||||
&CmndMqttHost, &CmndMqttPort, &CmndMqttRetry, &CmndStateText, &CmndMqttClient,
|
||||
&CmndFullTopic, &CmndPrefix, &CmndGroupTopic, &CmndTopic, &CmndPublish, &CmndMqttlog,
|
||||
&CmndButtonTopic, &CmndSwitchTopic, &CmndButtonRetain, &CmndSwitchRetain, &CmndPowerRetain, &CmndSensorRetain,
|
||||
&CmndInfoRetain, &CmndStateRetain
|
||||
&CmndButtonTopic, &CmndSwitchTopic, &CmndButtonRetain, &CmndSwitchRetain, &CmndPowerRetain,
|
||||
&CmndSensorRetain, &CmndInfoRetain, &CmndStateRetain, &CmndStatusRetain
|
||||
#endif // FIRMWARE_MINIMAL_ONLY
|
||||
};
|
||||
|
||||
@ -1654,9 +1654,9 @@ void CmndInfoRetain(void) {
|
||||
ResponseClear();
|
||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_INFO), Settings->flag5.mqtt_info_retain); // CMND_INFORETAIN
|
||||
}
|
||||
Settings->flag5.mqtt_info_retain = XdrvMailbox.payload; // CMND_INFORETAIN
|
||||
Settings->flag5.mqtt_info_retain = XdrvMailbox.payload; // CMND_INFORETAIN
|
||||
}
|
||||
ResponseCmndStateText(Settings->flag5.mqtt_info_retain); // CMND_INFORETAIN
|
||||
ResponseCmndStateText(Settings->flag5.mqtt_info_retain); // CMND_INFORETAIN
|
||||
}
|
||||
|
||||
void CmndStateRetain(void) {
|
||||
@ -1665,9 +1665,20 @@ void CmndStateRetain(void) {
|
||||
ResponseClear();
|
||||
MqttPublishPrefixTopic_P(STAT, PSTR(D_RSLT_STATE), Settings->flag5.mqtt_state_retain); // CMND_STATERETAIN
|
||||
}
|
||||
Settings->flag5.mqtt_state_retain = XdrvMailbox.payload; // CMND_STATERETAIN
|
||||
Settings->flag5.mqtt_state_retain = XdrvMailbox.payload; // CMND_STATERETAIN
|
||||
}
|
||||
ResponseCmndStateText(Settings->flag5.mqtt_state_retain); // CMND_STATERETAIN
|
||||
ResponseCmndStateText(Settings->flag5.mqtt_state_retain); // CMND_STATERETAIN
|
||||
}
|
||||
|
||||
void CmndStatusRetain(void) {
|
||||
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 1)) {
|
||||
if (!XdrvMailbox.payload) {
|
||||
ResponseClear();
|
||||
MqttPublishPrefixTopic_P(STAT, PSTR(D_RSLT_STATE), Settings->flag5.mqtt_status_retain); // CMND_STATUSRETAIN
|
||||
}
|
||||
Settings->flag5.mqtt_status_retain = XdrvMailbox.payload; // CMND_STATUSRETAIN
|
||||
}
|
||||
ResponseCmndStateText(Settings->flag5.mqtt_status_retain); // CMND_STATUSRETAIN
|
||||
}
|
||||
|
||||
/*********************************************************************************************\
|
||||
|
@ -199,7 +199,7 @@ a_setoption = [[
|
||||
"(Wifi) Wait 1 second for wifi connection solving some FRITZ!Box modem issues (1)",
|
||||
"(Zigbee) Disable Battery auto-probe and using auto-binding",
|
||||
"(Zigbee) Include time in `ZbReceived` messages like other sensors",
|
||||
""
|
||||
"(MQTT) Retain on Status"
|
||||
],[
|
||||
"","","","",
|
||||
"","","","",
|
||||
@ -319,7 +319,7 @@ else:
|
||||
obj = json.load(fp)
|
||||
|
||||
def StartDecode():
|
||||
print ("\n*** decode-status.py v12.0.2.4 by Theo Arends and Jacek Ziolkowski ***")
|
||||
print ("\n*** decode-status.py v12.1.0.1 by Theo Arends and Jacek Ziolkowski ***")
|
||||
|
||||
# print("Decoding\n{}".format(obj))
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user