Skip to content

FAQ

Вопрос: Как переключить шлюз в режим точки доступа WiFi?

Ответ 1

  1. Выключить шлюз
  2. Зажать сервисную кнопку
  3. Включить шлюз не отпуская кнопку
  4. Светодиод загорится белым цветом
  5. В течение 8 сек отпустить кнопку
  6. Индикация сменится на перемигивание синим

switch_to_AP

Данный функционал работает, только если вы заранее прописывали gpio сервисной кнопки: меню Settings -> Hardware -> Service Button Pin

hw_set_svc_btn

Ответ 2: Сохранение настроек

При наличии доступа к старой сети необходимо зайти в настройки сети и сохранить пустые значения SSID и пароль. Если SSID и пароль утрачены, забыты, то их можно посмотреть в логе uart при загрузке шлюза. Отлично работает вариант с использованием точки доступа, созданной телефоном.


Вопрос: Как вернуть доступ, если не известен IP адрес шлюза

Случается так, что при настройке шлюза прописали статический IP с ошибкой или прописали давно и шлюзом не пользовались. Для того чтобы вернуть доступ к шлюзу необходимо перевести его в режим точки доступа как показано выше и выполнить API запрос

http
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 для сборки шлюза без пайки:

  1. Модуль ESP32 16Mb Flash 8Mb SRAM для прошивки по OTA или Модуль ESP32 c 4Mb flash для прошивки без OTA
  2. Модуль CC2530 без усилителя но с внешней антенной
  3. Отладчик СС Debugger для прошивки модуля CC2530
  4. Набор проводов

Вопрос: Какое оборудование необходимо для шлюза на 2538?

Ответ: подборка с Aliexpress для сборки шлюза с минимумом пайки (только проводки):

  1. Модуль ESP32 16Mb Flash 8Mb SRAM для прошивки по OTA или Модуль ESP32 c 4Mb flash для прошивки без OTA
  2. Модуль CC2538 с усилителем СС2592
  3. Программатор J-Link V9
  4. Набор проводов

Вопрос: Чем шлюз на базе сс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)

  1. Скачать утилиту ZigStarGW-MT
  2. Скачать прошивку из каталога rom
  3. Сделать резервную копию настроек Actions -> Backup
  4. Проверить номера пинов Setting -> Hardware (Zigbee RST Pin:18, Zigbee BSL Pin:19)
  5. Перевести шлюз в режим bridge Settings -> Services (Zigbee TCP bridge (s1, port: 8881)), поставить, сохранить, нажать ребут
  6. Запустить ZigStarGW-MT указать адрес шлюза вида <адрес_шлюза_в_вашей_сети>:8881
  7. Нажать кнопку Read для сохранения содержимого NVRAM в файл, указать имя файла резервной копии
  8. Включить BSL в SLS Zigbee -> Start BSL
  9. Выбрать скачанный файл прошивки в ZigStarGW-MT select file -> ...
  10. Установить ТОЛЬКО галочки Erase, Write, Verify, остальные - снимаем
  11. Нажать Start
  12. После появления сообщения All is Ok. Restarting zigbee внизу окна, нажать write для восстановления содержимого NVRAM и выбрать файл резервной копии, созданный в п 6.
  13. Выключить режим bridge SLS Settings -> Services (Zigbee TCP bridge (s1, port: 8881)) снять, сохранить, нажать reboot

Вопрос: Как прошить CC2530

Актуальная инструкция


Вопрос: Как прошить CC2538

Актуальная инструкция


Вопрос: Как прошить CC2652

Актуальная инструкция


Вопрос: Как добавлять устройства

Ответ: есть два способа:

  1. Включить режим присоединения на странице ZigBee в веб-интерфейсе (кнопка Start Join)
  2. Можно послать значение true / false в топик ZigBeeGW/bridge/config/permit_join

Вопрос: Как добавлять новые устройства Zigbee

Ответ: SLS Zigbee BLE шлюз автоматически сопрягается с устройствами Zigbee. После сопряжения оно появляется в списке устройств на вкладке Zigbee. Зеленым цветом помечены устройства, уже имеющие конвертер, и с которыми работа уже протестирована. Красным помечены устройства, для которых конвертер пока отсутствует. Вы можете помочь с добавлением устройства, предоставив скриншоты страницы устройства и лог сопряжения на страницу ISSUE проекта. Открываете новую тему добавление нового устройства с названием устройства.


Вопрос: Как добавить новое неподдерживаемое устройство Zigbee?

Ответ: Многие устройства могут быть добавлены удаленно разработчиками проекта SLS ZGW. Вероятность добавления новых устройств увеличивается при наличии конвертера в zigbee2mqtt

Также неоспоримым преимуществом для добавления нового устройства является протокол взаимодействия в z2m. Его можно получить из zigbee2mqtt в режиме дебага zigbee следующей комбинацией:

batch
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 объект содержащий один из вариантов задания цвета:

  1. В родном формате CIE 1931: {"x": 0.8, "y": 0.04}
  2. В формате RGB: {"r": 0, "g": 255, "b": 0}
  3. В формате RGB HEX: {"hex": "#RRGGBB"}
  4. Тон, насыщенность: {"hue": 23525, "saturation": 80}
  5. Тон: {"hue": 1665}
  6. Насыщенность: {"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 следующего содержания:

json
{ "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.

Для того, чтобы при чтении данных с порта не отправлять полученные с него же данные обратно в порт, необходимо отправить команду

bash
stty -F /dev/ttyUSB0 115200 -cstopb -oddp -opost raw -echo
stty -F /dev/ttyUSB0 115200 -cstopb -oddp -opost raw -echo

Далее запускаем команду записи данных порта в файл

bash
cat /dev/ttyUSB0 > slslog.txt
cat /dev/ttyUSB0 > slslog.txt

Windows

В операционной системе Windows, подключенный с распаянным ch340 шлюз при наличии установленного драйвера будет виден как последовательный COM порт. Подключившись к нему через putty, можно наблюдать за журналом работы шлюза.

Используйте скорость подключения 115200.

Возможно ваш понадобится драйвер.

Для того, чтобы журнал можно было сохранить в файл, необходимо:

  1. Выбираем Session ->Logging ставим чекпоинты как показано на рисунке (выбираем All session output):

2-putty

  1. В поле «Log file name » указываем путь в папку где будут хранится файлы и название файла пишем &H-&Y&M&D-&T.log:

3-putty

&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

batch
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

bash
nc -ulnk 45678
nc -ulnk 45678

или для Windows

bash
nc -ulnp 45678
nc -ulnp 45678

Или скриптом на python sls_udp_log.py:

python
#!/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 данные следующего содержания:

json
{ "duration": 3, "target": "0x00158D00007357B6" }
{ "duration": 3, "target": "0x00158D00007357B6" }

Вопрос: Какие могут быть проблемы сопряжения устройств

  1. Недостаточный заряд батареи. Батарею можно заменить на новую, выполнить сопряжение и вернуть старую. В таком виде устройства иногда работают больше года. Новая батарея нужна только для сопряжения.
  2. Неправильный сброс устройства. Необходимо обратиться к официальной инструкции на устройство и убедиться в правильной последовательности перевода устройства в режим сопряжения.
  3. Не включен режим сопряжения. Проверить, включен ли режим сопряжения. Это можно сделать в вашем клиенте 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

lua
os.restart()
os.restart()

С помощью HTTP API

Необходимо выполнить запрос к API

http
GET /api/reboot
GET /api/reboot

С помощью MQTT

Необходимо в топик System prefix topic/reboot отправить {}

bash
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:

lua
zigbee.SetModel("0xXXXXXXXX", "ptvo.switch")
-- 0xXXXXXXXX - IEEE адрес устройства
-- ptvo.switch - zigbeename устройства, которое поддерживается шлюзом.
zigbee.SetModel("0xXXXXXXXX", "ptvo.switch")
-- 0xXXXXXXXX - IEEE адрес устройства
-- ptvo.switch - zigbeename устройства, которое поддерживается шлюзом.

Сброс показаний energy в розетках

Не все устройства позволяют сбросить показания. Для сброса выполнить команду:

lua
zigbee.set("0x70B3D52B6003485E", "reset", "")
zigbee.set("0x70B3D52B6003485E", "reset", "")