From 327b16520e7d19083cbe1930cfaa8cf027ed59f8 Mon Sep 17 00:00:00 2001 From: chinswain Date: Tue, 2 Apr 2024 19:07:03 +0100 Subject: [PATCH 1/9] Update ATC_MiThermometer.cpp --- src/ATC_MiThermometer.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/ATC_MiThermometer.cpp b/src/ATC_MiThermometer.cpp index 5dab6e2..5319962 100644 --- a/src/ATC_MiThermometer.cpp +++ b/src/ATC_MiThermometer.cpp @@ -127,7 +127,12 @@ unsigned ATC_MiThermometer::getData(uint32_t duration) { data[n].batt_voltage = (volt_msb << 8) | volt_lsb; // Battery state [%] - data[n].batt_level = foundDevices.getDevice(i).getServiceData().c_str()[12]; + data[n].batt_level = foundDevices.getDevice(i).getServiceData().c_str()[12]; + + // switch state + data[n].switch_state = foundDevices.getDevice(i).getServiceData().c_str()[13]; + + } else if (len == 13) { log_d("ATC1441 format"); From 9339830d88e58aae2a5f10b503d034bca153cb68 Mon Sep 17 00:00:00 2001 From: chinswain Date: Tue, 2 Apr 2024 19:07:59 +0100 Subject: [PATCH 2/9] Update ATC_MiThermometer.h --- src/ATC_MiThermometer.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ATC_MiThermometer.h b/src/ATC_MiThermometer.h index ce223ea..2c5164e 100644 --- a/src/ATC_MiThermometer.h +++ b/src/ATC_MiThermometer.h @@ -60,6 +60,7 @@ struct MiThData_S { uint16_t batt_voltage; //!< battery voltage [mv] uint8_t batt_level; //!< battery level [%] int16_t rssi; //!< RSSI [dBm] + bool switch_state; //!< Switch status }; typedef struct MiThData_S MiThData_t; //!< Shortcut for struct MiThData_S From 3285e37ae1dbfb30918900a9bd9cbd0cf11b258d Mon Sep 17 00:00:00 2001 From: chinswain Date: Tue, 2 Apr 2024 19:10:21 +0100 Subject: [PATCH 3/9] Update ATC_MiThermometer_Client.ino --- examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino b/examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino index d157346..8660f3d 100644 --- a/examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino +++ b/examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino @@ -86,6 +86,7 @@ void loop() { Serial.printf("%.3fV\n", miThermometer.data[i].batt_voltage/1000.0); Serial.printf("%d%%\n", miThermometer.data[i].batt_level); Serial.printf("%ddBm\n", miThermometer.data[i].rssi); + Serial.println(miThermometer.data[i].switch_state); Serial.println(); } } From 3d689d476dd2323a133d6d76ad7ea9de7075b533 Mon Sep 17 00:00:00 2001 From: chinswain Date: Wed, 3 Apr 2024 18:12:23 +0100 Subject: [PATCH 4/9] Update ATC_MiThermometer.h --- src/ATC_MiThermometer.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ATC_MiThermometer.h b/src/ATC_MiThermometer.h index 2c5164e..3ea0151 100644 --- a/src/ATC_MiThermometer.h +++ b/src/ATC_MiThermometer.h @@ -60,7 +60,13 @@ struct MiThData_S { uint16_t batt_voltage; //!< battery voltage [mv] uint8_t batt_level; //!< battery level [%] int16_t rssi; //!< RSSI [dBm] - bool switch_state; //!< Switch status + uint8_t count; //!< measurement count + bool reedSwitchState; + bool gpioTrgOutput; + bool controlParameters; + bool tempTriggerEvent; + bool humiTriggerEvent; + }; typedef struct MiThData_S MiThData_t; //!< Shortcut for struct MiThData_S From 095bd90abf454e0d600e6b758e348965dc1a8d96 Mon Sep 17 00:00:00 2001 From: chinswain Date: Wed, 3 Apr 2024 18:15:04 +0100 Subject: [PATCH 5/9] Update ATC_MiThermometer.cpp --- src/ATC_MiThermometer.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/ATC_MiThermometer.cpp b/src/ATC_MiThermometer.cpp index 5319962..b68f308 100644 --- a/src/ATC_MiThermometer.cpp +++ b/src/ATC_MiThermometer.cpp @@ -128,10 +128,17 @@ unsigned ATC_MiThermometer::getData(uint32_t duration) { // Battery state [%] data[n].batt_level = foundDevices.getDevice(i).getServiceData().c_str()[12]; - - // switch state - data[n].switch_state = foundDevices.getDevice(i).getServiceData().c_str()[13]; + // Count + data[n].count = foundDevices.getDevice(i).getServiceData().c_str()[13]; + + //Flags + uint8_t flagsByte = foundDevices.getDevice(i).getServiceData().c_str()[14]; + data[n].reedSwitchState = flagsByte & 0x01; // Extract bit 0 (Reed Switch) + data[n].gpioTrgOutput = (flagsByte >> 1) & 0x01; // Extract bit 1 (GPIO_TRG pin output) + data[n].controlParameters = (flagsByte >> 2) & 0x01; // Extract bit 2 (Control parameters) + data[n].tempTriggerEvent = (flagsByte >> 3) & 0x01; // Extract bit 3 (Temperature trigger event) + data[n].humiTriggerEvent = (flagsByte >> 4) & 0x01; // Extract bit 4 (Humidity trigger event) } else if (len == 13) { From d2fd1558fdd539fd5d247e20e93d9e3a43798bac Mon Sep 17 00:00:00 2001 From: chinswain Date: Wed, 3 Apr 2024 18:16:37 +0100 Subject: [PATCH 6/9] Update ATC_MiThermometer_Client.ino --- .../ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino b/examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino index 8660f3d..98bc751 100644 --- a/examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino +++ b/examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino @@ -87,6 +87,13 @@ void loop() { Serial.printf("%d%%\n", miThermometer.data[i].batt_level); Serial.printf("%ddBm\n", miThermometer.data[i].rssi); Serial.println(miThermometer.data[i].switch_state); + Serial.printf("Count: %d\n", miThermometer.data[i].count); + // Print boolean flags + Serial.printf("Reed Switch State: %s\n", miThermometer.data[i].reedSwitchState ? "Open" : "Closed"); + Serial.printf("GPIO TRG Output: %s\n", miThermometer.data[i].gpioTrgOutput ? "High" : "Low"); + Serial.printf("Control Parameters: %s\n", miThermometer.data[i].controlParameters ? "Set" : "Not Set"); + Serial.printf("Temperature Trigger Event: %s\n", miThermometer.data[i].tempTriggerEvent ? "Triggered" : "Not Triggered"); + Serial.printf("Humidity Trigger Event: %s\n", miThermometer.data[i].humiTriggerEvent ? "Triggered" : "Not Triggered"); Serial.println(); } } From f5100a58655c6d544c7fe3c83f230d07911a71cc Mon Sep 17 00:00:00 2001 From: chinswain Date: Wed, 3 Apr 2024 18:18:06 +0100 Subject: [PATCH 7/9] Update ATC_MiThermometer.cpp --- src/ATC_MiThermometer.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ATC_MiThermometer.cpp b/src/ATC_MiThermometer.cpp index b68f308..17e8638 100644 --- a/src/ATC_MiThermometer.cpp +++ b/src/ATC_MiThermometer.cpp @@ -129,16 +129,16 @@ unsigned ATC_MiThermometer::getData(uint32_t duration) { // Battery state [%] data[n].batt_level = foundDevices.getDevice(i).getServiceData().c_str()[12]; - // Count - data[n].count = foundDevices.getDevice(i).getServiceData().c_str()[13]; + // Count + data[n].count = foundDevices.getDevice(i).getServiceData().c_str()[13]; //Flags - uint8_t flagsByte = foundDevices.getDevice(i).getServiceData().c_str()[14]; - data[n].reedSwitchState = flagsByte & 0x01; // Extract bit 0 (Reed Switch) - data[n].gpioTrgOutput = (flagsByte >> 1) & 0x01; // Extract bit 1 (GPIO_TRG pin output) - data[n].controlParameters = (flagsByte >> 2) & 0x01; // Extract bit 2 (Control parameters) - data[n].tempTriggerEvent = (flagsByte >> 3) & 0x01; // Extract bit 3 (Temperature trigger event) - data[n].humiTriggerEvent = (flagsByte >> 4) & 0x01; // Extract bit 4 (Humidity trigger event) + uint8_t flagsByte = foundDevices.getDevice(i).getServiceData().c_str()[14]; + data[n].reedSwitchState = flagsByte & 0x01; // Extract bit 0 (Reed Switch) + data[n].gpioTrgOutput = (flagsByte >> 1) & 0x01; // Extract bit 1 (GPIO_TRG pin output) + data[n].controlParameters = (flagsByte >> 2) & 0x01; // Extract bit 2 (Control parameters) + data[n].tempTriggerEvent = (flagsByte >> 3) & 0x01; // Extract bit 3 (Temperature trigger event) + data[n].humiTriggerEvent = (flagsByte >> 4) & 0x01; // Extract bit 4 (Humidity trigger event) } else if (len == 13) { From 8b590087cc63b54c9630d185636dc55d310a1811 Mon Sep 17 00:00:00 2001 From: chinswain Date: Wed, 3 Apr 2024 18:35:17 +0100 Subject: [PATCH 8/9] Update ATC_MiThermometer_Client.ino --- examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino b/examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino index 98bc751..a71b07a 100644 --- a/examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino +++ b/examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino @@ -87,7 +87,7 @@ void loop() { Serial.printf("%d%%\n", miThermometer.data[i].batt_level); Serial.printf("%ddBm\n", miThermometer.data[i].rssi); Serial.println(miThermometer.data[i].switch_state); - Serial.printf("Count: %d\n", miThermometer.data[i].count); + Serial.printf("Measurement Count: %d\n", miThermometer.data[i].count); // Print boolean flags Serial.printf("Reed Switch State: %s\n", miThermometer.data[i].reedSwitchState ? "Open" : "Closed"); Serial.printf("GPIO TRG Output: %s\n", miThermometer.data[i].gpioTrgOutput ? "High" : "Low"); From 366d742f5c65f4329605980a886eb30ad4bbfc05 Mon Sep 17 00:00:00 2001 From: chinswain Date: Wed, 3 Apr 2024 18:37:38 +0100 Subject: [PATCH 9/9] Update ATC_MiThermometer_Client.ino --- examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino b/examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino index a71b07a..e626278 100644 --- a/examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino +++ b/examples/ATC_MiThermometer_Client/ATC_MiThermometer_Client.ino @@ -86,7 +86,6 @@ void loop() { Serial.printf("%.3fV\n", miThermometer.data[i].batt_voltage/1000.0); Serial.printf("%d%%\n", miThermometer.data[i].batt_level); Serial.printf("%ddBm\n", miThermometer.data[i].rssi); - Serial.println(miThermometer.data[i].switch_state); Serial.printf("Measurement Count: %d\n", miThermometer.data[i].count); // Print boolean flags Serial.printf("Reed Switch State: %s\n", miThermometer.data[i].reedSwitchState ? "Open" : "Closed");