[BT] MQTT corruption fix (#2183)
Storing a copy of the ID instead of a pointer to a local variable to avoid MQTT publishing id topic and id property corruption.
This commit is contained in:
1 parent
585df9a420
commit
f0491e188c
4 files changed
+16
-12
No files matched your search
+1
-1
@@ -188,7 +188,7 @@ custom_hardware = Theengs Plug
|
||||
platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
extra_scripts = ${com-esp32.extra_scripts}
|
||||
board_build.partitions = partitions/no_coredump.csv
|
||||
board_build.partitions = partitions/alltest_large.csv
|
||||
lib_deps =
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
|
||||
+10
-10
@@ -82,7 +82,7 @@ bool zBLEConnect::processActions(std::vector<BLEAction>& actions) {
|
||||
if (NimBLEAddress(it.addr) == m_pClient->getPeerAddress()) {
|
||||
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||
BLEdata["id"] = m_pClient->getPeerAddress().toString().c_str();
|
||||
BLEdata["id"] = m_pClient->getPeerAddress().toString();
|
||||
BLEdata["service"] = it.service.toString();
|
||||
BLEdata["characteristic"] = it.characteristic.toString();
|
||||
|
||||
@@ -141,10 +141,10 @@ void LYWSD03MMC_connect::notifyCB(NimBLERemoteCharacteristic* pChar, uint8_t* pD
|
||||
Log.trace(F("Device identified creating BLE buffer" CR));
|
||||
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||
auto mac_addr = m_pClient->getPeerAddress().toString().c_str();
|
||||
auto mac_addr = m_pClient->getPeerAddress().toString();
|
||||
for (std::vector<BLEdevice*>::iterator it = devices.begin(); it != devices.end(); ++it) {
|
||||
BLEdevice* p = *it;
|
||||
if ((strcmp(p->macAdr, mac_addr) == 0)) {
|
||||
if (p->macAdr == mac_addr) {
|
||||
if (p->sensorModel_id == BLEconectable::id::LYWSD03MMC)
|
||||
BLEdata["model"] = "LYWSD03MMC";
|
||||
else if (p->sensorModel_id == BLEconectable::id::MHO_C401)
|
||||
@@ -211,7 +211,7 @@ void DT24_connect::notifyCB(NimBLERemoteCharacteristic* pChar, uint8_t* pData, s
|
||||
Log.trace(F("Device identified creating BLE buffer" CR));
|
||||
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||
auto mac_address = m_pClient->getPeerAddress().toString().c_str();
|
||||
auto mac_address = m_pClient->getPeerAddress().toString();
|
||||
BLEdata["model"] = "DT24";
|
||||
BLEdata["id"] = mac_address;
|
||||
Log.trace(F("Device identified in CB: %s" CR), mac_address);
|
||||
@@ -268,7 +268,7 @@ void BM2_connect::notifyCB(NimBLERemoteCharacteristic* pChar, uint8_t* pData, si
|
||||
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||
BLEdata["model"] = "BM2 Battery Monitor";
|
||||
BLEdata["id"] = m_pClient->getPeerAddress().toString().c_str();
|
||||
BLEdata["id"] = m_pClient->getPeerAddress().toString();
|
||||
mbedtls_aes_context aes;
|
||||
mbedtls_aes_init(&aes);
|
||||
unsigned char output[16];
|
||||
@@ -353,7 +353,7 @@ void HHCCJCY01HHCC_connect::publishData() {
|
||||
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||
BLEdata["model"] = "HHCCJCY01HHCC";
|
||||
BLEdata["id"] = m_pClient->getPeerAddress().toString().c_str();
|
||||
BLEdata["id"] = m_pClient->getPeerAddress().toString();
|
||||
BLEdata["batt"] = (int)batteryValue;
|
||||
buildTopicFromId(BLEdata, subjectBTtoMQTT);
|
||||
enqueueJsonObject(BLEdata, QueueSemaphoreTimeOutTask);
|
||||
@@ -377,7 +377,7 @@ void XMWSDJ04MMC_connect::notifyCB(NimBLERemoteCharacteristic* pChar, uint8_t* p
|
||||
Log.trace(F("Device identified creating BLE buffer" CR));
|
||||
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||
auto mac_address = m_pClient->getPeerAddress().toString().c_str();
|
||||
auto mac_address = m_pClient->getPeerAddress().toString();
|
||||
BLEdata["model"] = "XMWSDJ04MMC";
|
||||
BLEdata["id"] = mac_address;
|
||||
Log.trace(F("Device identified in CB: %s" CR), mac_address);
|
||||
@@ -490,7 +490,7 @@ bool SBS1_connect::processActions(std::vector<BLEAction>& actions) {
|
||||
if (result || it.ttl <= 1) {
|
||||
StaticJsonDocument<JSON_MSG_BUFFER> BLEdataBuffer;
|
||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||
BLEdata["id"] = m_pClient->getPeerAddress().toString().c_str();
|
||||
BLEdata["id"] = m_pClient->getPeerAddress().toString();
|
||||
BLEdata["state"] = std::string(it.value);
|
||||
buildTopicFromId(BLEdata, subjectBTtoMQTT);
|
||||
enqueueJsonObject(BLEdata, QueueSemaphoreTimeOutTask);
|
||||
@@ -585,7 +585,7 @@ bool SBBT_connect::processActions(std::vector<BLEAction>& actions) {
|
||||
if (result || it.ttl <= 1) {
|
||||
StaticJsonDocument<JSON_MSG_BUFFER> BLEdataBuffer;
|
||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||
BLEdata["id"] = it.addr.toString().c_str();
|
||||
BLEdata["id"] = it.addr.toString();
|
||||
if (value != -99 || value != -1)
|
||||
BLEdata["tilt"] = value;
|
||||
if (value == 50) {
|
||||
@@ -687,7 +687,7 @@ bool SBCU_connect::processActions(std::vector<BLEAction>& actions) {
|
||||
if (result || it.ttl <= 1) {
|
||||
StaticJsonDocument<JSON_MSG_BUFFER> BLEdataBuffer;
|
||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||
BLEdata["id"] = it.addr.toString().c_str();
|
||||
BLEdata["id"] = it.addr.toString();
|
||||
if (value != -99 || value != -1)
|
||||
BLEdata["position"] = value;
|
||||
buildTopicFromId(BLEdata, subjectBTtoMQTT);
|
||||
|
||||
+1
-1
@@ -1400,7 +1400,7 @@ void immediateBTAction(void* pvParameters) {
|
||||
gatewayState = GatewayState::ERROR;
|
||||
StaticJsonDocument<JSON_MSG_BUFFER> BLEdataBuffer;
|
||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||
BLEdata["id"] = BLEactions.back().addr.toString().c_str();
|
||||
BLEdata["id"] = BLEactions.back().addr.toString();
|
||||
BLEdata["success"] = false;
|
||||
buildTopicFromId(BLEdata, subjectBTtoMQTT);
|
||||
enqueueJsonObject(BLEdata, QueueSemaphoreTimeOutTask);
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
# Name, Type, SubType, Offset, Size, Flags
|
||||
nvs, data, nvs, 0x9000, 0x5000,
|
||||
app0, app, ota_0, 0x10000, 0x200000,
|
||||
spiffs, data, spiffs, 0x310000,0x4F000,
|
||||
|
Reference in new issue
Block a user