Обзор шлюза GL.inet GL-S10 BLE-MQTT с клиентом MQTT X с открытым исходным кодом


В декабре мы опубликовали обзор шлюза GL.inet GL-S10 BLE to MQTT, распаковав и разобрав предоставленный шлюз ESP32 и маяк BLE. У нас было время опробовать устройство и рекомендованное приложение и программное обеспечение, это заняло больше времени, чем ожидалось, поскольку во время тестирования мы столкнулись с несколькими проблемами, большинство из которых должны быть решены с выходом новой прошивки, и вскоре документация будет обновлена.

Маяк BLE, приложение GL-S10 Tool для Android и шлюз GL-S10

Мы в основном следовали шагам из подробного руководства пользователя для этого обзора. В первый раз мы установили приложение GL-S10 Tool для Android, затем включили шлюз, нажав его кнопку, чтобы войти в режим сопряжения, и вскоре шлюз был обнаружен.

Обратите внимание, что вам не следует сообщать MAC-адреса ваших устройств, так как по умолчанию нет безопасности, и любой сможет получить доступ к информации с помощью инструментов, которые мы будем использовать ниже.

Вы сможете настроить параметры сети, такие как учетные данные DHCP/FIxed IP и WiFi, а также параметры сервера MQTT и часовой пояс. Мы смогли без проблем подключиться к точке доступа Wi-Fi, но только в течение короткого периода времени, пока не получили сообщение «Устройство отключено».

Теперь это будет происходить каждый раз, когда мы входим в режим сопряжения для настройки приложения, и у нас есть менее одной минуты, чтобы что-то сделать до появления ошибки. Мы попытались сбросить шлюз до заводских настроек, удерживая кнопку в течение 10 секунд, и даже очистить данные и удалить приложение на нашем телефоне, чтобы попробовать еще раз, но проблема осталась. Связавшись с компанией и поделившись информацией, они определили, что аппаратное обеспечение может быть неисправно, и отправили другое устройство.

Обратите внимание, что мы использовали точку доступа «4G LTE WiFi Modem» , оснащенную SIM-картой с тарифным планом 10 Мбит/с. Когда мы вернулись домой с широкополосным интернетом, мы попробовали еще раз со «старым» шлюзом GL-S10, и проблема исчезла… Но не обошлось без проблем с подключением к шлюз к нашего роутера.

Это связано с тем, что если ваш WiFi-маршрутизатор настроен на метод шифрования «WPA WPA2-PSK», он будет отображаться серым цветом, поскольку не поддерживается GL-S10. Изменение настроек в WiFi-роутере — единственное решение. Даже последняя прошивка (v2.3.1) демонстрирует такое поведение. Как только это было решено, у нас было стабильное соединение.

Следующим шагом была установка настольного клиента MQTT X MQTT 5.0 с открытым исходным кодом, доступного для операционных систем Windows, Mac OS и Linux.  Мы установили его на наш ноутбук с Ubuntu 20.04 в мгновение ока:

Давайте установим новое соединение с сервером бета-тестирования из GL.inet по адресу «iot-s10-test.gl-inet.cn» через порт 1884.

Тот же тестовый сервер используется и в приложении для Android, но с IP-адресом (134.175.4.252) вместо URL-адреса.

Конфигурация MQTT, описанная выше, также включает в себя строки команд и ответов темы для шлюза, конфигурацию отчетов с устройств BLE с порогом RSSI и правила фильтрации для отправки только релевантных данных. Если фильтр не выбран, информация о других устройствах BLE будет отправлена ​​так же, как мы увидим ниже.

Вернувшись к MQTT X, мы смогли легко подключиться к серверу GL.inet MQTT…

и добавить новую подписку на GL-IoT/rspTopic/<GL-S10 MAC> для получения ответов на команды MQTT, которые мы можем отправить.

При отправке команды с использованием GL-IoT/comTopic/<GL-S10 MAC> с правильно отформатированными данными JSON мы никогда не получали ответа, как если бы шлюз был отключен.

Но IP-адрес тестовой версии изменился:

После изменения настроек в приложении для Android с новым IP-адресом…

Мы по-прежнему не можем получать ответы от команд, но после подписки на GL-IoT/dataTopic/<GL-S10 Mac> мы получали данные от маяка BLE каждую секунду, как и было настроено, хотя раньше это не работало.

В конце концов нам сказали, что у нас может быть не последняя прошивка, и попросили обновиться до http://iot-s10-test.gl-inet.cn/s10/ota/gl_s10_v2.3.1.bin, которую необходимо вручную ввести в приложение, прежде чем приступить к обновлению.

Компания считает, что функция онлайн-обновления не самая удобная для пользователя, но его цель заключается в том, чтобы позволить пользователям обновлять свою собственную прошивку (поскольку они могут создавать свои собственные ), и они планируют упростить шаги обновления в будущих версиях. Хотя потребовалось некоторое время, чтобы заставить его работать, GL.inet оказался очень полезным и отвечал на наши запросы даже во время китайских новогодних праздников.

Итак, теперь, когда все работает, давайте покажем, как это работает. GL-S10 Config API предоставляет список команд, которые позволяют пользователю в основном делать все, что он/она может делать в мобильном приложении, через клиент MQTT с командами в формате JSON. Давайте перейдем к командам для настройки WiFi и получения учетных данных WiFi, поскольку это первые две команды.

После создания новой подписки с GL-IoT/rspTopic/<MAC GL-S10> давайте создадим команду (см. нижний правый раздел) с GL-IoT/comTopic/<MAC GL-S10> и данными JSON следующим образом:

Когда type равен 0, можно установить SSID, PASSWORD, когда равен 1, можно установить SSID, USERNAME, USERPASSWORD. ssid — это имя точки доступа p до 32 символов, pwd — пароль до 64 символов, а id — это номер команды (0x01) для SET_WIFI_CONFIG.

Если все работает, в ответ мы должны получить следующие данные в формате JSON:

0x00 представляет собой успешное выполнение, а 0x01 представляет собой сбой выполнения в поле результата.

который должен был вручную ввести в приложение, прежде чем приступить к обновлению.

Мы можем отправить команду GET_WIFI_CONFIG для перепроверки:

Все хорошо. Как уже упоминалось, вы также можете настроить/проверить другие параметры шлюза с помощью API, такие как DHCP/фиксированный IP-адрес, сервер MQTT, темы, интервалы таймера, фильтры Bluetooth и так далее.

Давайте включим маяк BLE, поставляемый с GL-S10, добавим новую подписку на GL-IoT/dataTopic/<MAC GL-S10> и будем получать данные каждую секунду или любой другой временной интервал, настроенный в приложении или через клиент MQTT.

Данные выглядят следующим образом:

В верхней части находится некоторая информация о шлюзе, а dev_list сообщает информацию о маяке BLE, включая MAC, RSSI, объявление (Broadcast data advData) и отметку времени. Если маяк BLE включает имя, также будет поле «n» с данными.

Здесь у нас есть «два» устройства, но это явно наш маяк BLE, отправляющий два сообщения. RSSI составляет от -43 до -45 дБм с маяком примерно в пяти сантиметрах от шлюза. Давайте посмотрим, что произойдет, если мы передвинем маяк BLE примерно на 9 метров от шлюза (в пределах прямой видимости):

Уровень сигнала значительно снизился до -65 дБм, и этот тип данных может помочь нам оценить расстояние от шлюза в помещении, как и в случае с несколькими маяками, даже в помещении. Мы сделали это с фильтрацией MAC-адресов, чтобы отображались только данные с маяка. Удалим фильтрацию MAC:

Появилось новое устройство с MAC-адресом Bluetooth «697E44B45AE0». Нам не удалось найти марку с помощью поиска, но вчера мы заметили другое устройство с MAC A4E22988ED6F, которое похоже принадлежит китайской компании «Qingdao Haier Technology Co., Ltd». Хм… есть ли у нас в доме устройства фирмы Haier? О да, на этой неделе мы установили кондиционер в спальне, и, конечно же, есть открытая точка доступа Wi-Fi для кондиционера. Итак, наш кондиционер транслирует сообщения BLE…

Шлюз можно использовать как устройство слежения (к примеру — дома ли ваша девушка?)… поскольку он может отслеживать ее часы Amazfit Bip Watch:

Можно было бы еще протестировать заметно улучшенную безопасность с именем пользователя, паролем и соединением SSL/TLS, но у нас не хватило на это времени.

Нам хотелось бы поблагодарить GL.inet за отправку шлюза GL-S10 BLE to MQTTT для проверки. Вы можете приобрести его вместе с маяком за 29,90$ в магазине GL.Inet .

Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

5 1 vote
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Inline Feedbacks
View all comments