FAQ
Вопрос: Как переключить шлюз в режим точки доступа WiFi?
Ответ 1:
- Выключить шлюз
- Зажать сервисную кнопку
- Включить шлюз не отпуская кнопку
- Светодиод загорится белым цветом
- В течение 8 сек отпустить кнопку
- Индикация сменится на перемигивание синим
Данный функционал работает, только если вы заранее прописывали gpio сервисной кнопки: меню Settings -> Hardware -> Service Button Pin
Ответ 2: Сохранение настроек
При наличии доступа к старой сети необходимо зайти в настройки сети и сохранить пустые значения SSID и пароль. Если SSID и пароль утрачены, забыты, то их можно посмотреть в логе uart при загрузке шлюза. Отлично работает вариант с использованием точки доступа, созданной телефоном.
Вопрос: Какое оборудование необходимо для шлюза на CC2530 (не рекомендуется, используйте CC2538 или CC2652)
Ответ: подборка с Aliexpress для сборки шлюза без пайки:
- Модуль ESP32 16Mb Flash 8Mb SRAM для прошивки по OTA или Модуль ESP32 c 4Mb flash для прошивки без OTA
- Модуль CC2530 без усилителя но с внешней антенной
- Отладчик СС Debugger для прошивки модуля CC2530
- Набор проводов
Вопрос: Какое оборудование необходимо для шлюза на 2538?
Ответ: подборка с Aliexpress для сборки шлюза с минимумом пайки (только проводки):
- Модуль ESP32 16Mb Flash 8Mb SRAM для прошивки по OTA или Модуль ESP32 c 4Mb flash для прошивки без OTA
- Модуль CC2538 с усилителем СС2592
- Программатор J-Link V9
- Набор проводов
Вопрос: Чем шлюз на базе сс2538 лучше сс2530?
Ответ: модули TI на базе cc2530, cc2531 имеют ограничение по количеству прямых связей (до 10-15 шт, в зависимости от прошивки) и имеют ограниченное количество доступной памяти. SDK, поддерживаемый данными модулям в настоящее время устарел. Эти проблемы решены на новых чипах сс2538 и сс2652r
Модули cc2538 могут иметь 100 прямых или 200 непрямых (через роутеры) подключений. Скорость обработки команд на обновленных чипах существенно увеличена.
Вопрос: Есть ли отличия в работе шлюза на чипов от TI и NXP?
Ответ: существенно отличается SDK.
Вопрос: Можно ли приобрести готовое оборудование?
Ответ: можно купить у разработчиков тут
Вопрос: Как прошить ESP32
Для первоначальной прошивки:
1. Загрузить архив с прошивальщиком (full)
2. Подключить ESP32 к компьютеру через USB
3. Запустить прошивку через Flash.bat
4. Иногда батник неверно определяет порт, тогда можно дописать в батник --port COM7
Для дальнейшего обновления:
5. Загрузить архив с актуальной версией прошивки
6. Распаковать его в любую папку
7. В веб интерфейсе выбрать на странице Update файл firmware.bin
8. Нажать Start update.
Вопрос: Какую прошивку выбрать для модуля ZigBee
Ответ: Все зависит от того какой у вас модуль и усилитель.
Если нет поддержки BSL в текущей прошивке, тогда необходим программатор для обновления.
Прошивка должна быть обязательно основана на Z-Stack 3.0.
Ссылки на актуальные прошивки смотрите ниже.
Видео-инструкция обновления прошивки по воздуху
Вопрос: Как прошить CC2530
Ответ:
Для прошивки через CC Debugger:
Прошивка для модуля CC2530 без усилителя
Прошивка для модуля CC2530 с усилителем СС2591
Прошивка для модуля CC2530 с усилителем СС2592
Вопрос: Как прошить CC2538
Ответ:
BSL Прошивка для модуля CC2538 с усилителем СС2592
Вопрос: Как прошить CC2652
BSL Прошивка для модуля Rf-Star CC2652P (20220219 стабильная)
BSL Прошивка для модуля Rf-Star CC2652P (20221226 тестовая)
Вопрос: Как добавлять устройства.
Ответ: есть два способа:
- Включить режим присоединения на странице ZigBee в веб-интерфейсе (кнопка Start Join)
- Можно послать значение true / false в топик ZigBeeGW/bridge/config/permit_join
Вопрос: Как добавлять новые устройства Zigbee.
Ответ: SLS Zigbee BLE шлюз автоматически сопрягается с устройствами Zigbee. После сопряжения оно появляется в списке устройств на вкладке Zigbee. Зеленым цветом помечены устройства, уже имеющие конвертер, и с которыми работа уже протестирована. Красным помечены устройства, для которых конвертер пока отсутсвует. Вы можете помочь с добавлением устройства, предоставив скриншоты страницы устройства и лог сопряжения на страницу ISSUE проекта. Открываете новую тему добавление нового устройства с названием устройства.
Вопрос: Как добавить новое неподдерживаемое устройство Zigbee?
Ответ: Многие устройства могут быть добавлены удаленно разработчиками проекта SLS ZGW. Вероятность добавления новых устройств увеличивается при наличии конвертера в zigbee2mqtt
Также неоспоримым преимуществом для добавления нового устройства является протокол взаимодействия в z2m. Его можно получить из zigbee2mqtt в режиме дебага zigbee следующей комбинацией:
cd /opt/zigbee2mqtt
DEBUG=zigbee-herdsman:adapter:zStack:znp*,zigbee-herdsman:controller* npm start
Далее необходимо выполнить нужные действия с устройством и сохранить вывод экрана. Данные сообщения можно добавить в issue или с помощью сервиса pastebin
Вопрос: Как задавать правила SimpleBind
Подробно в документации SimpleBind
Вопрос: Как задать цвет лампочке или RGB контроллеру
Ответ:
Необходимо отправить в состояние color json объект содержащий один из вариантов задания цвета:
- В родном формате CIE 1931: {“x”: 0.8, “y”: 0.04}
- В формате RGB: {“r”: 0, “g”: 255, “b”: 0}
- В формате RGB HEX: {“hex”: “#RRGGBB”}
- Тон, насыщенность: {“hue”: 23525, “saturation”: 80}
- Тон: {“hue”: 1665}
- Насыщенность: {“saturation”: 220}
Пример:
Отправка в топик ZigBeeGW/0x00158D00011D8CB1/set значения: {“color”:{“r”:0,”g”:255,”b”:0}}
Вопрос: Как задать цветовую температуру лампочке
Ответ:
Необходимо отправить в состояние color_temp значение в Майред единицах измерения.
Формула для преобразования: M = 1000000 / K где K - температура в Кельвинах.
Пример:
Цветовая температура 4000К, задаем в ZigBeeGW/lamp_1/set/color_temp значение 250
Вопрос: Как управлять аппаратными светодиодами?
MQTT:
Необходимо отправить в JSON значение в топик ZigBeeGW/led следующего содержания:
{"mode":"manual","hex":"#FFFFFF"}
- mode - устанавливает режим, допустимы значения off, manual и auto
- hex - значение цвета в RGB Hex формате.
Через LUA или HTTP API
Вопрос: Как включить режим сопряжения боковой кнопкой шлюза?
Ответ: Обработка нажатий аппаратной кнопки шлюза
Вопрос: Что означают цифры в этапах сопряжения
Ответ:
- 0 - получен анонс, запускается интервью
- 1 - получено описание устройства
- 2 - получено количество активных эндпоинтов
- 3 - получены кластеры устройства
- 4 - получена модель
Многие устройства Xiaomi сами репортят модель, поэтому работают без завершения всего цикла интервью.
Вопрос: Как получить журнал работы через UART.
Ответ: Иногда приходится сталкиваться с перезагрузками, причину которых выявить можно только подключив шлюз через UART.
В последовательный порт прошивка SLS ZGW посылает примерно ту же информацию, что и в журнал web. Но в последнем вы не увидите ошибку, которая вызывала перезагрузку.
Ubuntu linux
В операционной системе Linux драйвер ch340 обычно включен в модуль ядра. Поэтому после подключения шлюза, в системном логе по команда dmesg можно увидеть номер порта шлюза в системе. Обычно это /dev/ttyACM1 или /dev/ttyUSB0.
Для того, чтобы при чтении данных с порта не отправлять полученные с него же данные обратно в порт, необходимо отправить команду
stty -F /dev/ttyUSB0 115200 -cstopb -oddp -opost raw -echo
Далее запускаем команду записи данных порта в файл
cat /dev/ttyUSB0 > slslog.txt
Windows
В операционной системе Windows, подключенный с распаенным ch340 шлюз при наличии установленного драйвера будет виден как последовательный COM порт. Подключившись к нему через putty, можно наблюдать за журналом работы шлюза.
Используйте скорость подключения 115200.
Возможно ваш понадобится драйвер.
Для того, чтобы журнал можно было сохранить в файл, необходимо:
- Выбираем Session ->Logging ставим чекпоинты как показано на рисунке (выбираем All session output):
- В поле «Log file name » указываем путь в папку где будут хранится файлы и название файла пишем &H-&Y&M&D-&T.log:
&H-&Y&M&D-&T.log — Это :
&H – Имя хоста (IP Address )
&Y&M&D – Год,Месяц, День созданного файла
&T – Время подключения к устройству.
Название файла будет выглядеть вот так : 192.168.1.1-20151116-135505.log
Соответственно файл сохранится по пути : D:\
Windows, альтернативный вариант
Сбор лога sls под widows без putty. Проверено под windows 10
sls.bat
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
mode com4 115200,n,8,1
type com4: >> "d:\sls\log\%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%".log"
pause
Включение UDP LOG
В lua необходимо выполнить команду os.udplogenable(true)
На любой машине должна быть запушена утилита netcat
nc -ulnk 45678
или для Windows
nc -ulnp 45678
Или скриптом на python sls_udp_log.py:
#!/usr/bin/env python3
import socket
UDP_IP = "0.0.0.0"
UDP_PORT = 45678
sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
sock.bind( (UDP_IP, UDP_PORT) )
print("SLS Log Viewer v1.0 started!")
while True:
data, addr = sock.recvfrom(1024)
print(data.decode(), end='')
Вопрос: на какой скорости ESP32 общается с СС2538
Ответ: скорость 115200.
Вопрос: на какой скорости ESP32 общается с UART
Ответ: скорость 115200.
Вопрос: Каким образом можно включить режим сопряжения на отдельном узле (роутере)
Ответ: необходимо отправить в топик ZigBeeGW/config/permit_join данные следующего содержания:
{"duration": 3, "target": "0x00158D00007357B6"}
Вопрос: Какие могут быть проблемы сопряжения устройств
- Недостаточный заряд батареи. Батарею можно заменить на новую, выполнить сопряжение и вернуть старую. В таком виде устройства иногда работают больше года. Новая батарея нужна только для сопряжения.
- Неправильный сброс устройства. Необходимо обратиться к официальной инструкции на устройство и убедиться в правильной последовательности перевода устройства в режим сопряжения.
- Не включен режим сопряжения. Проверить, включен ли режим сопряжения. Это можно сделать в вашем клиенте MQTT, либо в разделе
Zigbee -> Join
на Web странице контроллера.
Вопрос: Какие настройки необходимо выполнить после первого включеия?
Ответ:
- Настроить параметры сети WiFi через встроенную точку доступа.
- После перезагрузки найти новое устройство в сети, прописать параметры mqtt и настройки Zigbee модуля:
- zigbee UART RX 22
- zigbee UART TX 23
- Service Button Pin 33 + PullUp
- Led Red 4
- Led Green 5
- Led Blue 21
- В меню выбрать Zigbee reset. После перезагрузки на главной странице можно будет увидеть
Zigbee info
Zigbee PanId: 0x1234
Zigbee Channel: 26
Zigbee DeviceState: 9 [ OK ]
Описание некоторых настроек модуля
Zigbee -> Cache states
Отправка кешированных данных. Например, если датчик температуры и влажности прислал только температуру, при выбранном пункте, в сообщении будет отправлено значение и температуры и кешированное значение влажности. Если пункт не выбран - в сообщении придет только температура. Кэш записывается во флеш память каждые 30минут. По умолчанию включено.
Zigbee -> Clear states
Передавать “пустое” значение состояния click и actions, после отправки. Необходимо для систем, которые могут выполнять обработку только при изменении значения, а не при обновлении. По умолчанию включено.
Вопрос: Существует ли формула пересчета напряжения в проценты?
Ответ: В zigbee2mqtt для преобразования батареек CR2032 используется следующая формула для пересчета:
Из даташита барареек Panasonic:
Сергей Коптяков сгенерил график:
Программная перезагрузка координатора
С помощью lua можно выполнить программную перезагрузку координатора
gpio.mode(18, gpio.OUTPUT)
gpio.write(18, 0)
os.delay(100)
gpio.write(18, 1)
os.restart()
Программное переназначение типа устройства
Данный функционал будет полезен пользователям генератора прошивок ptvo, кто самостоятельно изменит имя устройства на кастомное.
В некоторых случаях протокол взаимодействия новых устройств совпадает с теми, что уже поддерживаются шлюзом SLS. В таком случае можно при загрузке шлюза подменять идентификаторы. Делается это с помощью скрипта init.lua:
zigbee.SetModel("0xXXXXXXXX", "ptvo.switch")
-- 0xXXXXXXXX - IEEE адрес устройства
-- ptvo.switch - zigbeename устройства, которое поддерживается шлюзом.