FAQ
Вопрос: Как переключить шлюз в режим точки доступа WiFi?
Ответ 1
- Выключить шлюз
- Зажать сервисную кнопку
- Включить шлюз не отпуская кнопку
- Светодиод загорится белым цветом
- В течение 8 сек отпустить кнопку
- Индикация сменится на перемигивание синим
Данный функционал работает, только если вы заранее прописывали gpio сервисной кнопки: меню Settings -> Hardware -> Service Button Pin
Ответ 2: Сохранение настроек
При наличии доступа к старой сети необходимо зайти в настройки сети и сохранить пустые значения SSID и пароль. Если SSID и пароль утрачены, забыты, то их можно посмотреть в логе uart при загрузке шлюза. Отлично работает вариант с использованием точки доступа, созданной телефоном.
Вопрос: Как вернуть доступ, если не известен IP адрес шлюза
Случается так, что при настройке шлюза прописали статический IP с ошибкой или прописали давно и шлюзом не пользовались. Для того чтобы вернуть доступ к шлюзу необходимо перевести его в режим точки доступа как показано выше и выполнить API запрос
http://192.168.100.1/store?domain_name=zgwXXXX&dhcp=true
http://192.168.100.1/store?domain_name=zgwXXXX&dhcp=true
Здесь domain_name=zgwXXXX - обязательный параметр, задающий сетевое имя шлюза в сети.
После перезагрузки в шлюзе будет включен DHCP клиент и он получить IP адрес с DHCP сервера роутера.
Вопрос: Какое оборудование необходимо для шлюза на 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
1. Загрузить архив с прошивальщиком (full)
2. Подключить ESP32 к компьютеру через USB
3. Запустить прошивку через Flash.bat
4. Иногда батник неверно определяет порт, тогда можно дописать в батник --port COM7
Для дальнейшего обновления:
5. Загрузить архив с актуальной версией прошивки
6. Распаковать его в любую папку
7. В веб интерфейсе выбрать на странице Update файл firmware.bin
8. Нажать Start update.
5. Загрузить архив с актуальной версией прошивки
6. Распаковать его в любую папку
7. В веб интерфейсе выбрать на странице Update файл firmware.bin
8. Нажать Start update.
Вопрос: Какую прошивку выбрать для модуля ZigBee
Ответ: Все зависит от того какой у вас модуль и усилитель.
Если нет поддержки BSL в текущей прошивке, тогда необходим программатор для обновления.
Прошивка должна быть обязательно основана на Z-Stack 3.0.
Ссылки на актуальные прошивки смотрите ниже.
Видео-инструкция обновления прошивки по воздуху
Текстовая инструкция обновления прошивки zigbee-модуля по воздуху (актуально для шлюза, купленного у разработчика SLS)
- Скачать утилиту ZigStarGW-MT
- Скачать прошивку из каталога rom
- Сделать резервную копию настроек
Actions -> Backup
- Проверить номера пинов
Setting -> Hardware (Zigbee RST Pin:18, Zigbee BSL Pin:19)
- Перевести шлюз в режим bridge
Settings -> Services (Zigbee TCP bridge (s1, port: 8881))
, поставить, сохранить, нажать ребут - Запустить
ZigStarGW-MT
указать адрес шлюза вида<адрес_шлюза_в_вашей_сети>:8881
- Нажать кнопку
Read
для сохранения содержимого NVRAM в файл, указать имя файла резервной копии - Включить BSL в SLS
Zigbee -> Start BSL
- Выбрать скачанный файл прошивки в ZigStarGW-MT
select file -> ...
- Установить ТОЛЬКО галочки
Erase
,Write
,Verify
, остальные - снимаем - Нажать
Start
- После появления сообщения
All is Ok. Restarting zigbee
внизу окна, нажатьwrite
для восстановления содержимого NVRAM и выбрать файл резервной копии, созданный в п 6. - Выключить режим bridge SLS
Settings -> Services (Zigbee TCP bridge (s1, port: 8881))
снять, сохранить, нажать reboot
Вопрос: Как прошить CC2530
Вопрос: Как прошить CC2538
Вопрос: Как прошить CC2652
Вопрос: Как добавлять устройства
Ответ: есть два способа:
- Включить режим присоединения на странице 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
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/set следующего содержания:
{ "mode": "manual", "hex": "#FFFFFF" }
{ "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
stty -F /dev/ttyUSB0 115200 -cstopb -oddp -opost raw -echo
Далее запускаем команду записи данных порта в файл
cat /dev/ttyUSB0 > slslog.txt
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
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
nc -ulnk 45678
или для Windows
nc -ulnp 45678
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='')
#!/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" }
{ "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 info
Zigbee PanId: 0x1234
Zigbee Channel: 26
Zigbee DeviceState: 9 [ OK ]
Описание некоторых настроек модуля
Zigbee -> Cache states
Отправка кешированных данных. Например, если датчик температуры и влажности прислал только температуру, при выбранном пункте, в сообщении будет отправлено значение и температуры и кешированное значение влажности. Если пункт не выбран - в сообщении придет только температура. Кэш записывается во флеш память каждые 30минут. По умолчанию включено.
Zigbee -> Clear states
Передавать "пустое" значение состояния click и actions, после отправки. Необходимо для систем, которые могут выполнять обработку только при изменении значения, а не при обновлении. По умолчанию включено.
Вопрос: Существует ли формула пересчета напряжения в проценты?
Ответ: В zigbee2mqtt для преобразования батареек CR2032 используется следующая формула для пересчета:
Из даташита барареек Panasonic:
Сергей Коптяков сгенерил график:
Программная перезагрузка координатора
С помощью lua
os.restart()
os.restart()
С помощью HTTP API
Необходимо выполнить запрос к API
GET /api/reboot
GET /api/reboot
С помощью MQTT
Необходимо в топик System prefix topic/reboot
отправить {}
mosquitto_pub -h localhost -u mqtt -P mqtt -t ZigbeeSLS/reboot -m '{}'
mosquitto_pub -h localhost -u mqtt -P mqtt -t ZigbeeSLS/reboot -m '{}'
Программное переназначение типа устройства
Данный функционал будет полезен пользователям генератора прошивок ptvo, кто самостоятельно изменит имя устройства на кастомное.
В некоторых случаях протокол взаимодействия новых устройств совпадает с теми, что уже поддерживаются шлюзом SLS. В таком случае можно при загрузке шлюза подменять идентификаторы. Делается это с помощью скрипта init.lua:
zigbee.SetModel("0xXXXXXXXX", "ptvo.switch")
-- 0xXXXXXXXX - IEEE адрес устройства
-- ptvo.switch - zigbeename устройства, которое поддерживается шлюзом.
zigbee.SetModel("0xXXXXXXXX", "ptvo.switch")
-- 0xXXXXXXXX - IEEE адрес устройства
-- ptvo.switch - zigbeename устройства, которое поддерживается шлюзом.
Сброс показаний energy в розетках
Не все устройства позволяют сбросить показания. Для сброса выполнить команду:
zigbee.set("0x70B3D52B6003485E", "reset", "")
zigbee.set("0x70B3D52B6003485E", "reset", "")