Страница 1 из 1

Шлюз Bluetooth Low Energy (BLE) - MQTT

Добавлено: 10.04.2023{, 12:11}
tol123
Итак что нужно.
Сначала вам нужно будет установить Espressif IoT Development Framework в Visual Studio Code согласно описанию по установке непосредственного кода по ссылке (https://github.com/shmuelzon/esp32-ble2mqtt) который будем устанавливать.
Качаем и открываем проект, редактируем файл config.json в папке data так, как вам надо и прошиваем ESP 32.
Скину свой вариант, по нему можно сделать под свои нужды.
Только я не мог закачать с расширение config.json. Так что переименуйте config.txt на config.json.
Опишу в настройках файла:
hostname":"ble_mqtt" - это как будет называться устройство.
ssid","password понятно логин и пароль wifi. "eap" Данные по защите сети. server - данные по mqtt "host":"ай пи адрес с сервером mqtt , "port":"1883", "username" - логин "password" - пароль для входа в mqtt, "client_id" - имя устройства esp32 в mqtt.
whitelist":[ "ff:b9:75:11:b3:87" - это мак адрес устройства блютуз(в моем случае это пульсометр). если его не указать , то будут приходить широковещательные данные со всех устройств в области досегания esp 32. Его (мак адрес) и другие данные для настройки можно посмотреть в приложении в телефоне типа nRF Connect Mobile или nRF toolbox (если ваш телефон поддерживает подключение к такому устройству).
Что значат остальные настройки:
services":{
"definitions":{
"0000180d-0000-1000-8000-00805f9b34fb":{ - тот сервис UUID который вы можете увидеть подключившись к блютус устройству через телефон.
"name":"Heart Rate service", - то как у вас будет называться топик
characteristics":{
"definitions":{
"00002a37-0000-1000-8000-00805f9b34fb":{ - это подраздел сервиса UUID
"name":"Heart Rate Measurement", - как он называется и в топике будет приходить это.
"whitelist":[
"00002a37-0000-1000-8000-00805f9b34fb" - это прописываем "белый лист" то , что будем пропускать , а остальное игнорировать то, какие характеристики нужны.
Дальше можно их использовать в Node-red (на телефоне или на компьютере).
У меня данные приходят с пульсометра который я описал в (viewtopic.php?f=242&t=8372&p=119923#p119923) в виде строки "22,67,88,3" иногда "22,67,87,3,87,3" . 22 это настройки (приходит когда датчик передает данные, 6 - 0110 а потом 4 - 0100 приходят вместо 22 если датчик убрали от тела и данные не передаются ) можно посмотреть https://github.com/oesmith/gatt-xml найдя описание как и что значат число 22 это 00 01 0110 в двоичтой системе, 00 бит формата UINT8 или UIN16, 01 - Биты состояния контакта датчика, 01 Бит состояния израсходованной энергии, 10 Бит интервала RR (иногда, когда пульс учащается то появляется строка "22,67,87,3,87,3" и 87,3 эти два числа сообщают о интервале RR, но их нужно получить). (В первых числах я разобрался в третьем 88,3 не совсем). Затем, чтобы получить RR интервал из чисел нужно 87,3 нужно перевести 3 и 87 в двоичную систему и записать вместе типа это число должно состоять из двух UINT8, а именно UINT8 числа 87 - 01010111 и UINT8 числа 3 - 00000011 и причем записать надо сначала 3, а потом 87 -0000001101010111 и получим 855 и надо поделить его на 1024 получим 0,834 секунды -длительность RR интервала.
В Node-red мне только удалось спарсить количество ударов в минуту, а хотелось бы и rr интервал получить. Хоть мне помог chart gpt в telegram, но там ограниченное число запросов и получить rr интервал пока не удалось. Если кто сможет получить или подскажет код или ноды для получения rr интервала скажу спасибо. Простите что некототко. Код для Node-red тоже в txt формате, что-о сайт не грузит json.
Если кто сможет допилить viewtopic.php?f=242&t=8372&p=119923#p119923 и приделать MQTT к в среде Flprog для esp 32 будет здорово, и не нужны будут эти сложности.
Все данные с устройства esp 32 можно получить по топику #
ff:b9:75:11:b3:87/Heart Rate service/Heart Rate Measurement - это топик (Heart Rate service и Heart Rate Measurement это в настройках указывали). А если отправить MQTT с приставкой /Get приставлять вконец ff:b9:75:11:b3:87/Heart Rate service/Heart Rate Measurement/Get, то можно получать характеристику ( я пронимаю это для тех данных, которые непостоянно не приходят и которые нужно будет запрашивать типа расстояния, но это надо проверить). А /Set - для установки чего-либо, если устройство может принимать данные на определенном сервисе.
Ну и для чего все это. Можно прикрутить аудио файл к Node-redи при превышении определенного уровня сердцебиения сообщать об этом и снижать нагрузку на сердце. По rr интервалу в спокойном положении "не напряжном" можно судить как тело реагирует на после нагрузочное состояние. И делать выводы...
К тому еще можно расстояние до устройства можно получать и тоже как-то использовать в домашней автоматизации.

Шлюз Bluetooth Low Energy (BLE) - MQTT

Добавлено: 10.04.2023{, 16:11}
Rovki
А где тут ФЛПРОГ ?

Шлюз Bluetooth Low Energy (BLE) - MQTT

Добавлено: 11.04.2023{, 07:11}
tol123
Rovki писал(а):
10.04.2023{, 16:11}
А где тут ФЛПРОГ ?
Нету его, не получилось приделать MQTT к BLE здесь viewtopic.php?f=242&t=8372&p=119923#p119923.
Здесь, как альтернатива, так как не получилось в FLprog.

Шлюз Bluetooth Low Energy (BLE) - MQTT

Добавлено: 12.04.2023{, 15:34}
tol123
Получилось вывести, Число ударов в минуту, rr1, rr2 и все га графики. Пример для node-red в файле txt