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