Итак, для проекта я пытаюсь установить двухстороннюю связь между Adafruit Feather 32u4 и Raspberry PI 3 через Bluetooth Low energy. Мне удалось установить связь для работы через службу UART, но я хотел бы создать специальную службу с некоторыми характеристиками, которые можно устанавливать и считывать с обоих устройств. Я запускаю Node с noble на Raspberry Pi, и именно так я планирую устанавливать и читать значения, поступающие из Feather.
У кого-нибудь есть примеры кода для меня, чтобы заставить это работать? Кажется, у меня возникают проблемы с поиском большого количества информации о пользовательских услугах через стандарт BLE.
Вот как я создаю свой сервис:
Serial.println(F("Adding the definition (UUID = 0x8000): "));
success = ble.sendCommandWithIntReply( F("AT+GATTADDSERVICE=UUID=0x8000"), &serviceId);
if (! success) {
error(F("Could not add service"));
}
Serial.println(F("Adding the status characteristic (UUID = 0x8001): "));
success = ble.sendCommandWithIntReply( F("AT+GATTADDCHAR=UUID=0x8001, PROPERTIES=0x08, MIN_LEN=2, DATATYPE=INTEGER, VALUE=0, DESCRIPTION=Outlet 1 Status"), &StatusCharId);
if (! success) {
error(F("Could not add characteristic"));
}
И вот как я пытаюсь читать / писать с благородным (узел)
device.discoverServices(['8000'], function(error, services) {
if(error) {console.log(error);}
var customService = services[0];
console.log(customService);
if(customService) {
customService.discoverCharacteristics(null, function(error, chars) {
for(var i in chars) {
console.log(' ' + i + ' uuid: ' + chars[i].uuid);
if(chars[i].uuid == '8001'){
setInterval(() => {
const convert = (from, to) => str => Buffer.from(str, from).toString(to)
const utf8ToHex = convert('utf8', 'hex')
const hexToUtf8 = convert('hex', 'utf8')
var random = getRandomInt(2);
chars[i].write(new Buffer(random), true, function (error) {
if (error) {
console.log(error);
}
}.bind(this));
chars[i].read(function(error, data) {
// data is a buffer
var val = data.toString('hex');
console.log(data.toString('hex'));
});
}, 2500);
}
Не похоже, что мой код узла правильно устанавливает значение. И я с нетерпением жду изменений на Перо