#include #define MY_SERVICE_UUID "be6d058c-9542-4d1f-9711-6eb1c06de216" #define MY_CHARACTERISTIC_UUID "ac7ccd7a-8c67-41d6-a248-ea66199254b0" BLEService myService(MY_SERVICE_UUID); BLEStringCharacteristic myCharacteristic(MY_CHARACTERISTIC_UUID, BLERead | BLEWrite | BLENotify, 8); int myPin = 10; String prevCharacteristicValue = ""; String characteristicValue = ""; String baseName = "Dev1"; String myName() { String myState = ""; if (characteristicValue == "9") { myState = "ON"; } else { myState = "OFF"; } String dum = baseName + "_" + myState; return (dum); } void changeLocalName() { String dum = myName(); BLE.stopAdvertise(); BLE.setLocalName(dum.c_str()); BLE.advertise(); } void setup() { Serial.begin(9600); while (!Serial); pinMode(myPin, INPUT); digitalWrite(myPin, LOW); if (!BLE.begin()) { Serial.println("starting BLE failed!"); while (1); } String dum = myName(); BLE.setLocalName(dum.c_str()); BLE.setAdvertisedService(myService); myService.addCharacteristic(myCharacteristic); BLE.addService(myService); myCharacteristic.writeValue("5"); if (BLE.advertise()) { Serial.println("advertising..."); } } unsigned prevTim = 0; void loop() { BLEDevice central = BLE.central(); unsigned tim = millis(); if (tim - prevTim > 1000) { String dum = myName(); dum = "localName of device is " + dum; Serial.println(dum.c_str()); prevTim = millis(); } if (false & central) { Serial.print("Connected to central: "); Serial.println(central.address()); Serial.print(F("Disconnected from central: ")); Serial.println(central.address()); } characteristicValue = myCharacteristic.value(); if (characteristicValue != prevCharacteristicValue) { prevCharacteristicValue = characteristicValue; if (characteristicValue == "5") { digitalWrite(myPin, LOW); changeLocalName(); Serial.println("myPin is now set to LOW"); } if (characteristicValue == "9") { digitalWrite(myPin, HIGH); changeLocalName(); Serial.println("myPin is now set to HIGH"); } } }