#include BLEService myService("19b10000-e8f2-537e-4f6c-d104768a1214"); BLECharacteristic myStringChar("19b10000-e8f2-537e-4f6c-d104768a1214", BLERead | BLEWrite | BLENotify, 32); // up to 32-byte string void setup() { Serial.begin(115200); // while (!Serial); delay(15000); Serial.println("waited 15 seconds"); if (!BLE.begin()) { Serial.println("BLE failed to start"); while (1); } BLE.setLocalName("PortentaStringBLE"); BLE.setAdvertisedService(myService); myService.addCharacteristic(myStringChar); BLE.addService(myService); myStringChar.writeValue("ready"); BLE.advertise(); Serial.println("BLE String Service Started"); } void loop() { BLEDevice central = BLE.central(); if (central) { Serial.print("Connected to: "); Serial.println(central.address()); while (central.connected()) { if (myStringChar.written()) { // Receive incoming string int len = myStringChar.valueLength(); uint8_t buffer[33] = {0}; // +1 for null terminator myStringChar.readValue(buffer, len); buffer[len] = '\0'; // Ensure null termination String incoming = (char*)buffer; Serial.print("Web says: "); Serial.println(incoming); // Respond if (incoming == "start") { myStringChar.writeValue("working"); // This triggers notify if started on client Serial.println("Sent: working"); } else if (incoming == "stop") { myStringChar.writeValue("done"); Serial.println("Sent: done"); } else { myStringChar.writeValue("unknown"); Serial.println("Sent: unknown"); } } } Serial.println("Disconnected."); } }