BLE Gateway

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

ialtuhov
Сообщения: 69
Зарегистрирован: Чт фев 14, 2019 9:50 am
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Re: BLE Gateway

Сообщение ialtuhov » Чт апр 25, 2019 8:01 pm

Друзья, снова прошу помощи, сам не могу разобраться.
Есть скетч, который мне посоветовал многоуважаемый Aven, снятия данных с Сяомишных датчиков с использованием ESP
https://github.com/save2love/mi-ble-mqtt
Помогите, пожалуйста, как сделать так, что добавить в этот скетч, чтобы сканировались не все датчики, а конкретный один или несколько (по MAC адресу)???
Аватара пользователя
Dark_FeniX
Сообщения: 12
Зарегистрирован: Сб янв 13, 2018 12:25 pm
Откуда: Запорожье
Благодарил (а): 6 раз
Поблагодарили: 0

Re: BLE Gateway

Сообщение Dark_FeniX » Чт апр 25, 2019 9:40 pm

Доброго времени суток! Попробовал сделать шлюз на базе скетча save2love. Не могу понять: показания с датчика считываются - и на этом всё. Хотя и пишется в мониторе, что подключение к mqtt-брокеру было, ничего не передаётся. Есть стойкое подозрение, что это из-за пароля на брокере. В скетче я не нашел, куда его внести. Может, кто подскажет, что делать?
UPD. Оказывается, ничего сложного. Можно, особо не заморачиваясь, внести логин и пароль от брокера прямо в код

Код: Выделить всё

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");

    if (client.connect(MQTT_GW_NAME, "логин", "пароль")) {
      Serial.println("connected");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      blinkLed(10, 500);
ialtuhov
Сообщения: 69
Зарегистрирован: Чт фев 14, 2019 9:50 am
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Re: BLE Gateway

Сообщение ialtuhov » Пт апр 26, 2019 6:32 am

Dark_FeniX писал(а):
Чт апр 25, 2019 9:40 pm
Доброго времени суток! Попробовал сделать шлюз на базе скетча save2love. Не могу понять: показания с датчика считываются - и на этом всё. Хотя и пишется в мониторе, что подключение к mqtt-брокеру было, ничего не передаётся. Есть стойкое подозрение, что это из-за пароля на брокере. В скетче я не нашел, куда его внести. Может, кто подскажет, что делать?
UPD. Оказывается, ничего сложного. Можно, особо не заморачиваясь, внести логин и пароль от брокера прямо в код

Код: Выделить всё

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");

    if (client.connect(MQTT_GW_NAME, "логин", "пароль")) {
      Serial.println("connected");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      blinkLed(10, 500);
Приветствую.
Вы случаем не знаете, что изменить/добавить в коде, чтобы BLE сканирование было по определенным MAC адресам?
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: BLE Gateway

Сообщение Divan » Ср сен 11, 2019 12:49 am

ialtuhov писал(а):
Пн апр 15, 2019 9:53 am
Aven писал(а):
Пт апр 12, 2019 7:14 pm
Ну оно работает, но не долго, несколько часов, потом зависает или в лучшем случает перезагружается :(
Разобрался, оттестил. Все работает стабильно.
ESP пашет без отказов уже двое суток и продолжает. :D
Если вам не сложно, то сделайте пошаговую инструкцию со скриншотами. Как у вас сейчас работает на данный момент? Не глючит?
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
mrdenis
Сообщения: 31
Зарегистрирован: Чт мар 19, 2015 7:55 am
Благодарил (а): 6 раз
Поблагодарили: 1 раз

Re: BLE Gateway

Сообщение mrdenis » Вс мар 15, 2020 7:15 pm

Долго занимался реализацией УД на Arduino+NRF24 (MySensors).
Вполне нормальный вариант получился, но в решении есть моменты, которые меня не очень устраивают :)
1. Отсутствие шифрования (нужно припаивать доп.модуль или подливать библиотеку, которая займет место основного скетча).
2. Отсутствие надежности у сетевого уровня (контроль доставки и тд.. хоть и не критично, но периодически выскакивают данные(например включился конвектор, а статус при передаче не долетел до шлюза)).
3. Для ОТА, насколько я понял, так же необходима дополнительная память (ну либо я не дочитал гдет чегот:)

BLE, я так понял, убивает одним махом всех этих зайцев.. все есть на борту NRF5...(mesh начинается с 52832) НО из того, что я начитался, у меня складывается пока не полная картина. Появились некоторые соображения, которые хотелось бы подтвердить или опровергнуть, например такие:

1. Чистка NRF5... и прошивка туда скетча с Mysensors нахрен убивает все прелести BLE, так как по сути сносит программный стек протоколов обмена и начинает работать по протоколу зашитому в MySensors, что означает перевод навороченного девайса в разряд простейшего NRF24.
2. NRF5... ESP... NRF24 это все устройства одного диапазона, но с разной реализацией сетевого взаимодействия, а по сему для видимости друг друга их как раз и можно перешивать (главное знать как:).

Я достаточно хорошо понял, что и как с Arduino+NRF24 (первый все делает, второй передает) и к этому всему идет Mysensors Шлюз, который с одной стороны все ловит и передает из/в сеть nRF24, а с другой стороны организует что-то типа MQTT(своего), которым могут пользоваться все кому надо по TCP/IP для получения информации или передачи в сеть NRF24.
C nRF5.. у меня каша в голове.
Общее представление никак не могу сформировать: допустим есть ноды на NRF52832 на которые навешаны реле, кнопки, датчики...
Как эти устройства организуются в сенсоры на ноде и как их состояния передаются в сторону Шлюза, что выполняет функцию шлюза (это BLE USB тычка ?) и как оно это делает, какой софт шлюзует из одной сети в другую? Есть какие-то программные библиотеки реализующие логику сенсоров подобно MySensors или надо это все реализовывать самому ?
Или выше я был не прав и MYsensors все это делает используя сетевое взаимодействие BLE контроллеров ?

В общем вопросов куча.. и если кто-то немного пояснит схему всего это взаимодействия, буду благодарен :)
Ответить