Есть несколько способов сделать это.
На Raspberry Pi вы можете написать скрипт, который использует gatttool для чтения температуры и записывает значение в файл, например / tmp / Temperature.Запускает этот скрипт cron, чтобы запускать его каждые x минут, чтобы обновить значение.
Создайте 2-ю программу, которая является веб-сервером для обслуживания этих данных через http.Вы можете использовать любой язык для этого.Вот как я это сделаю с Node.js .
// serve_temp.js
const fs = require('fs');
const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => {
fs.readFile('/tmp/temperature', (err, data) => {
if (err) throw err;
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end(data);
});
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
Чтобы проверить это, запишите некоторые тестовые данные в файл / tmp / Temperature.
echo 70 > /tmp/temperature
Запустите программу
node serve_temp.js
На вашем телефоне откройте Safari и перейдите на http://raspberrypi.local:3000. Вы должны увидеть «70».(Возможно, вам придется использовать IP-адрес вместо имени. Что-то вроде http://192.168.1.123:3000.) Ваше приложение Cordova может выполнить тот же HTTP-вызов для получения данных.
Вы можете объединить две программы в одну.С Node.js вы можете использовать библиотеку noble для использования Bluetooth и получения температуры от термостата.
Другой вариант - написать приложение Cordova, которое напрямую связывается с термостатом через Bluetooth.Вы можете сделать это, используя cordova-plugin-ble-central .