aboutsummaryrefslogtreecommitdiff
path: root/Mussel/examples/read_to_EddystoneTLM/read_to_EddystoneTLM.ino
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2025-04-08 23:05:02 +0200
committerJonas Smedegaard <dr@jones.dk>2025-04-08 23:05:02 +0200
commit818dce2a0adeaf94c3e5b5f2b18c15107c78d35a (patch)
tree9f02848aad5a11e9422e60756cd160dfbfee5f6a /Mussel/examples/read_to_EddystoneTLM/read_to_EddystoneTLM.ino
parent8a1e160ba0dc6f8153f6ee4aa8566c2622cbe331 (diff)
add Bluetooth examples
Diffstat (limited to 'Mussel/examples/read_to_EddystoneTLM/read_to_EddystoneTLM.ino')
-rw-r--r--Mussel/examples/read_to_EddystoneTLM/read_to_EddystoneTLM.ino54
1 files changed, 54 insertions, 0 deletions
diff --git a/Mussel/examples/read_to_EddystoneTLM/read_to_EddystoneTLM.ino b/Mussel/examples/read_to_EddystoneTLM/read_to_EddystoneTLM.ino
new file mode 100644
index 0000000..73e0966
--- /dev/null
+++ b/Mussel/examples/read_to_EddystoneTLM/read_to_EddystoneTLM.ino
@@ -0,0 +1,54 @@
+/*
+ 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 <Mussel.h>
+
+#include "BLEDevice.h"
+#include "BLEBeacon.h"
+#include "BLEAdvertising.h"
+#include "BLEEddystoneTLM.h"
+
+Mussel mussel(2);
+
+#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/)
+
+// 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);
+}