Bluetooth and its LE variant are new areas for me and, but the learning curve is not too steep thanks to Puck.js. Making it do what I want is not easy though since I don’t know what it can do.
The most important documents are:
- https://www.bluetooth.com/specifications/gatt/services for the GATT services which are known
- https://www.bluetooth.com/specifications/gatt/characteristics for the Characteristics of those
- The Espruino Puck.js forum in case you have questions
- The Espruino source code and
- The reference information for Espruino hardware and software (see the Bluetooth and NRF functions and their examples)
Here an example:
// Have a service to show temperature and battery level // This is only visible when you are connecting to the Puck var currentTemperature=E.getTemperature().toFixed(2)*100; console.log("Temp: "+currentTemperature); NRF.setServices({ 0x1809 : { // Health Thermometer 0x2A6E: { // Temperature readable: true, notify: true, value : [ currentTemperature % 256, currentTemperature / 256 ] } }, 0x180f : { // Battery Level 0x2a19 : { // Percentage readable : true, notify: true, value: [ Puck.getBatteryPercentage() ], } } }); // Updating the temperature setInterval(function() { currentTemperature += 1; // For debugging: increase temp by 0.01 degree per update NRF.updateServices({ 0x1809 : { 0x2A6E : { value : [ currentTemperature % 256, currentTemperature / 256 ], notify: true } } }); }, 2000);