В декабре мы опубликовали обзор шлюза GL.inet GL-S10 BLE to MQTT, распаковав и разобрав предоставленный шлюз ESP32 и маяк BLE. У нас было время опробовать устройство и рекомендованное приложение и программное обеспечение, это заняло больше времени, чем ожидалось, поскольку во время тестирования мы столкнулись с несколькими проблемами, большинство из которых должны быть решены с выходом новой прошивки, и вскоре документация будет обновлена.
Мы в основном следовали шагам из подробного руководства пользователя для этого обзора. В первый раз мы установили приложение 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 в мгновение ока:
1 2 |
sudo snap install mqttx |
Давайте установим новое соединение с сервером бета-тестирования из 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-адрес тестовой версии изменился:
1 2 3 |
ping iot-s10-test.gl-inet.cn PING iot-s10-test.gl-inet.cn (167.172.193.67) 56(84) bytes of data. 64 bytes from 167.172.193.67 (167.172.193.67): icmp_seq=1 ttl=47 time=362 ms |
После изменения настроек в приложении для 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 следующим образом:
1 2 3 4 5 6 7 8 9 10 |
{ "jsonrpc": "2.0", "method": "SET_WIFI_CONFIG", "params": { "type":0, "ssid": "LPT Maker", "pwd": "password" }, "id": 1 } |
Когда type равен 0, можно установить SSID, PASSWORD, когда равен 1, можно установить SSID, USERNAME, USERPASSWORD. ssid — это имя точки доступа p до 32 символов, pwd — пароль до 64 символов, а id — это номер команды (0x01) для SET_WIFI_CONFIG.
Если все работает, в ответ мы должны получить следующие данные в формате JSON:
1 2 3 4 5 |
{ "jsonrpc": "2.0", "result": 0, "id": 1 } |
0x00 представляет собой успешное выполнение, а 0x01 представляет собой сбой выполнения в поле результата.
который должен был вручную ввести в приложение, прежде чем приступить к обновлению.
Мы можем отправить команду GET_WIFI_CONFIG для перепроверки:
Все хорошо. Как уже упоминалось, вы также можете настроить/проверить другие параметры шлюза с помощью API, такие как DHCP/фиксированный IP-адрес, сервер MQTT, темы, интервалы таймера, фильтры Bluetooth и так далее.
Давайте включим маяк BLE, поставляемый с GL-S10, добавим новую подписку на GL-IoT/dataTopic/<MAC GL-S10> и будем получать данные каждую секунду или любой другой временной интервал, настроенный в приложении или через клиент MQTT.
Данные выглядят следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "dev_wifi_sta_mac": "E8DB841D7388", "dev_ble_mac": "E8DB841D738A", "dev_sn": "32d1e73977ae85e2", "dev_id": "E8d7388", "dev_version": "2.3.1", "dev_list": [ { "mac": "D896E08B7E29", "rssi": -43, "ad": "0201061AFF4C0002151732050807568877293527446341505900014B07C51816C0DE0200014B070400000000000000000000000022F70C", "ts": 18446744072867391000 }, { "mac": "D896E08B7E29", "rssi": -45, "ad": "0201061AFF4C0002151732050807568877293527446341505900014B07C51816C0DE0200014B070400000000000000000000000022F70C", "ts": 18446744072867394000 } ], "dev_list_len": 2, "publish_ts": 18446744072867394000 } |
В верхней части находится некоторая информация о шлюзе, а dev_list сообщает информацию о маяке BLE, включая MAC, RSSI, объявление (Broadcast data advData) и отметку времени. Если маяк BLE включает имя, также будет поле «n» с данными.
Здесь у нас есть «два» устройства, но это явно наш маяк BLE, отправляющий два сообщения. RSSI составляет от -43 до -45 дБм с маяком примерно в пяти сантиметрах от шлюза. Давайте посмотрим, что произойдет, если мы передвинем маяк BLE примерно на 9 метров от шлюза (в пределах прямой видимости):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "dev_wifi_sta_mac": "E8DB841D7388", "dev_ble_mac": "E8DB841D738A", "dev_sn": "32d1e73977ae85e2", "dev_id": "E8d7388", "dev_version": "2.3.1", "dev_list": [ { "mac": "D896E08B7E29", "rssi": -65, "ad": "0201061AFF4C0002151732050807568877293527446341505900014B07C51816C0DE0200014B070400000000000000000000000022F70C", "ts": 18446744072867475000 }, { "mac": "D896E08B7E29", "rssi": -65, "ad": "0201061AFF4C0002151732050807568877293527446341505900014B07C51816C0DE0200014B070400000000000000000000000022F70C", "ts": 18446744072867478000 } ], "dev_list_len": 2, "publish_ts": 18446744072867478000 } |
Уровень сигнала значительно снизился до -65 дБм, и этот тип данных может помочь нам оценить расстояние от шлюза в помещении, как и в случае с несколькими маяками, даже в помещении. Мы сделали это с фильтрацией MAC-адресов, чтобы отображались только данные с маяка. Удалим фильтрацию MAC:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "dev_wifi_sta_mac": "E8DB841D7388", "dev_ble_mac": "E8DB841D738A", "dev_sn": "32d1e73977ae85e2", "dev_id": "E8d7388", "dev_version": "2.3.1", "dev_list": [ { "mac": "697E44B45AE0", "rssi": -68, "ad": "0201021107FC9DD0B3CB84E0840642F3F7E2E0BFCB", "ts": 18446744072868538000 }, { "mac": "D896E08B7E29", "rssi": -72, "ad": "0201061AFF4C0002151732050807568877293527446341505900014B07C51816C0DE0200014B070400000000000000000000000022F70C", "ts": 18446744072868538000 } ], "dev_list_len": 2, "publish_ts": 18446744072868538000 } |
Появилось новое устройство с MAC-адресом Bluetooth «697E44B45AE0». Нам не удалось найти марку с помощью поиска, но вчера мы заметили другое устройство с MAC A4E22988ED6F, которое похоже принадлежит китайской компании «Qingdao Haier Technology Co., Ltd». Хм… есть ли у нас в доме устройства фирмы Haier? О да, на этой неделе мы установили кондиционер в спальне, и, конечно же, есть открытая точка доступа Wi-Fi для кондиционера. Итак, наш кондиционер транслирует сообщения BLE…
Шлюз можно использовать как устройство слежения (к примеру – дома ли ваша девушка?)… поскольку он может отслеживать ее часы Amazfit Bip Watch:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
{ "dev_wifi_sta_mac": "E8DB841D7388", "dev_ble_mac": "E8DB841D738A", "dev_sn": "32d1e73977ae85e2", "dev_id": "E8d7388", "dev_version": "2.3.1", "dev_list": [ { "mac": "EB5B4CBA55EE", "rssi": -81, "n": "Amazfit Bip Watch", "ad": "0201061BFF5701006E74DCD42A214DE1A8988A3FFA043C9E03EB5B4CBA55EE1209416D617A666974204269702057617463680302E0FE", "ts": 18446744072869593000 }, { "mac": "D896E08B7E29", "rssi": -70, "ad": "0201061AFF4C0002151732050807568877293527446341505900014B07C51816C0DE0200014B070400000000000000000000000022F70C", "ts": 18446744072869593000 } ], "dev_list_len": 2, "publish_ts": 18446744072869595000 } |
Можно было бы еще протестировать заметно улучшенную безопасность с именем пользователя, паролем и соединением SSL/TLS, но у нас не хватило на это времени.
Нам хотелось бы поблагодарить GL.inet за отправку шлюза GL-S10 BLE to MQTTT для проверки. Вы можете приобрести его вместе с маяком за 29,90$ в магазине GL.Inet .
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.