From 321f51062bbe20b306653fb2f6be62fbda38aebf Mon Sep 17 00:00:00 2001
From: Marie Bureau <mariee.bureau@gmail.com>
Date: Thu, 2 Nov 2023 17:26:11 +0100
Subject: [PATCH] ThermoPro get temp/humidity

---
 tests/BLE_ThermoPro/BLE_ThermoPro.ino | 96 +++++++++++++++++++++++++++
 1 file changed, 96 insertions(+)
 create mode 100644 tests/BLE_ThermoPro/BLE_ThermoPro.ino

diff --git a/tests/BLE_ThermoPro/BLE_ThermoPro.ino b/tests/BLE_ThermoPro/BLE_ThermoPro.ino
new file mode 100644
index 00000000..07ff6e49
--- /dev/null
+++ b/tests/BLE_ThermoPro/BLE_ThermoPro.ino
@@ -0,0 +1,96 @@
+/*******************************/
+/*********** INCLUDES***********/
+/*******************************/
+#include <Arduino.h>
+#include <BLEDevice.h>
+#include <BLEUtils.h>
+#include <BLEScan.h>
+#include <BLEAdvertisedDevice.h>
+
+/*******************************/
+/********* DEFINITIONS *********/
+/*******************************/
+
+#define SCAN_TIME 5                   // scan period in second
+bool BLEScanActivated = false;
+
+/*****************************/
+/********* FONCTIONS *********/
+/*****************************/
+
+// ***** set up Serial Port *****
+void setupSerial() {
+#ifdef SERIAL_BAUDRATE
+  delay(3000);                    // time for USB serial link to come up anew
+  Serial.begin(SERIAL_BAUDRATE);  // Start serial for output
+  Serial.setDebugOutput(true);
+#endif
+}
+
+class Advertised : public BLEAdvertisedDeviceCallbacks {
+  public:
+  void onResult(BLEAdvertisedDevice device) {
+    printBLE(device);
+    return;
+    }
+  
+  private:
+    // ***** print BLE device info *****
+    void printBLE(BLEAdvertisedDevice device) {
+      if(device.getName() =="TP358 (5551)"){
+        Serial.printf("Device:%s \n",device.toString().c_str() );
+        Serial.printf("Température:%f°C , Humidité:%d \n",getTemperature(device), getHumidity(device));
+      }
+    }
+      
+    // ***** getTemperature *****
+    float getTemperature(BLEAdvertisedDevice device) {
+      uint8_t *pTemp = (uint8_t *)&device.getManufacturerData().c_str()[1];
+      return ((float)*pTemp) /10;
+    }
+
+        // ***** getHumidity *****
+    uint8_t getHumidity(BLEAdvertisedDevice device) {
+      const uint8_t *pHum = (const uint8_t *)&device.getManufacturerData()
+                                      .c_str()[3];
+      return *pHum;
+    }
+   };
+    
+void setup() {
+  //init serial port
+  setupSerial();
+
+  //init BLE
+  BLEDevice::init("");
+  Serial.printf("Starting \n");
+
+}
+
+// ***** start BLE scan  *****
+void startScanBLE() {
+  BLEScan* pBLEScan = BLEDevice::getScan(); // start scanning
+  pBLEScan->setAdvertisedDeviceCallbacks(new Advertised(), true);
+  pBLEScan->setActiveScan(true);
+  pBLEScan->start(SCAN_TIME, scanCompleteCB);
+  BLEScanActivated = true;
+}
+
+// ***** scan Complete Call Back  *****
+static void scanCompleteCB(BLEScanResults scanResults) { // Callback invoked when scanning has completed
+  BLEScanActivated = false;
+}
+
+// ***** manage BLE scan  *****
+void manageBLEscan() {
+  if (!BLEScanActivated)
+  startScanBLE(); // start scanning
+}
+
+
+
+void loop() {
+
+  manageBLEscan();
+  delay(1000);
+}
-- 
GitLab