blob: 77b443f656b73c152e197751fbc5b88a9a5242d0 (
plain)
- /*
- EddystoneTLM beacon by BeeGee based on https://github.com/pcbreflux/espressif/blob/master/esp32/arduino/sketchbook/ESP32_Eddystone_TLM_deepsleep/ESP32_Eddystone_TLM_deepsleep.ino
- EddystoneTLM frame specification https://github.com/google/eddystone/blob/master/eddystone-tlm/tlm-plain.md
- */
- #include "BLEDevice.h"
- #include "BLEBeacon.h"
- #include "BLEAdvertising.h"
- #include "BLEEddystoneTLM.h"
- #include <Mussel.h>
- #define BEACON_POWER ESP_PWR_LVL_N12
- // See the following for generating UUIDs:
- // https://www.uuidgenerator.net/
- BLEAdvertising *pAdvertising;
- #define BEACON_UUID "8ec76ea3-6668-48da-9866-75be8bc86f4d" // UUID 1 128-Bit (may use linux tool uuidgen or random numbers via https://www.uuidgenerator.net/)
- Mussel mussel(2);
- // Check
- // https://github.com/google/eddystone/blob/master/eddystone-tlm/tlm-plain.md
- // and http://www.hugi.scene.org/online/coding/hugi%2015%20-%20cmtadfix.htm
- // for the temperature value. It is a 8.8 fixed-point notation
- void setBeacon() {
- BLEEddystoneTLM EddystoneTLM;
- EddystoneTLM.setTemp(mussel.read()); // 3000 = 30.00 ˚C
- Serial.printf("Temperature is %.2f°C\n", EddystoneTLM.getTemp());
- BLEAdvertisementData oAdvertisementData = BLEAdvertisementData();
- BLEAdvertisementData oScanResponseData = BLEAdvertisementData();
- oScanResponseData.setServiceData(BLEUUID((uint16_t)0xFEAA), String(EddystoneTLM.getData().c_str(), EddystoneTLM.getData().length()));
- oAdvertisementData.setName("ESP32 TLM Beacon");
- pAdvertising->setAdvertisementData(oAdvertisementData);
- pAdvertising->setScanResponseData(oScanResponseData);
- }
- void setup() {
- Serial.begin(115200);
- mussel.begin();
- BLEDevice::init("TLMBeacon");
- BLEDevice::setPower(BEACON_POWER);
- pAdvertising = BLEDevice::getAdvertising();
- setBeacon();
- pAdvertising->start();
- }
- void loop() {
- setBeacon();
- delay(500);
- }
|