Ответ: Подборка с Aliexpress для сборки шлюза без пайки:
- Модуль ESP32 16Mb Flash 8Mb SRAM для прошивки по OTA или Модуль ESP32 c 4Mb flash для прошивки без OTA
- Модуль CC2530 без усилителя но с внешней антенной
- Отладчик СС Debugger для прошивки модуля CC2530
- Набор проводов
Ответ: Подборка с Aliexpress для сборки шлюза с минимумом пайки (только проводки):
- Модуль ESP32 16Mb Flash 8Mb SRAM для прошивки по OTA или Модуль ESP32 c 4Mb flash для прошивки без OTA
- Модуль CC2538 с усилителем СС2592
- Программатор J-Link V9
- Набор проводов
Ответ: Модули TI на базе cc2530, cc2531 имеют ограничение по количеству прямых связей (до 10-15 шт, в зависимости от прошивки) и имеют ограниченное количество доступной памяти. SDK, поддеживаемый данными модулям в настоящее время устарел. Эти проблемы решены на новых чипах сс2538 и сс2652r Модули cc2538 могут иметь 100 прямых или 200 непрямых (через роутеры) подключений. Скорость обработки комманд на обновленных чипах существенно увеличена.
Ответ: существенно отличается SDK.
Ответ: В настоящее время распространяются опытные образцы по индивидуальным завявкам. После отладки всего процесса, приобрести готовое оборудование можно будет в интернет магазине.
Ответ: Все зависит от того какой у вас модуль и усилитель. Прошивка должна быть обязательно основана на Z-Stack 3.0.
Для прошивки через CC Debugger:
Прошивка для модуля CC2530 без усилителя
Прошивка для модуля CC2530 с усилителем СС2591
Прошивка для модуля CC2530 с усилителем СС2592
Для прошивки через J-Link: Прошивка для модуля CC2538 с усилителем СС2592
Для первоначальной прошивки:
1. Загрузить архив с прошивальщиком (full)
2. Подключить ESP32 к компьютеру через USB
3. Запустить прошивку через Flash.bat
4. Иногда батник неверно определяет порт, тогда можно дописать в батник --port COM7
Для дальнейшего обновления:
1. Загрузить архив с актуальной версией прошивки
2. Распаковать его в любую папку
3. В веб интерфейсе выбрать на странице Update файл firmware.bin
4. Нажать Start update.
Ответ: Инструкция
Ответ: Инструкция 1 Инструкция 2
Прошивка для модуля CC2538 с усилителем СС2592
Ответ: Есть два способа:
- Включить режим присоединения на странице ZigBee в веб-интерфейсе (кнопка Start Join)
- Можно послать значение true / false в топик ZigBeeGW/bridge/config/permit_join
Ответ: SLS Zigbee BLE шлюз автоматически сопрягается с устройствами Zigbee. После сопряжения оно появляется в списке устройств на вкладке Zigbee. Зеленым цветом помечены устройства, уже имеющие конвертер, и с которыми работа уже протестирована. Красным помечены устройства, для которых конвертер пока отсутсвует. Вы можете помочь с добавлением устройства, предоставив скриншоты страницы устройства и лог сопряжения на страницу ISSUE проекта. Открываете новую тему добавление нового устройства с названием устройства.
Вопрос: Как задавать правила SimpleBind
Ответ: Есть два формата записи:
- DstDeviceId
- Cond, DstDeviceId, DstStateName, DstStateValue (Разделение запятыми, пробелы допускаются) где: • Cond - значение при котором будет выполняться правило • DstDeviceId - Идентификатор устройства которому будем отправлять команду • DstStateName - Имя состояния которое будем отправлять • DstStateValue - Значение которое будем отправлять Перед значением в поле Cond можно использовать знаки сравнения. (>, <, =, !, >=, <=, !=, <>) Можно использовать несколько правил, разделяя их точкой с запятой. Примеры: • single, lamp_1, state, TOGGLE - Для кнопки, при одиночном нажатии переключает режим lamp_1 • ON, 0x00158D00007350D9, state, OFF; OFF, 0xABCD, state, ON - Для выключателя, инвертирует режим для реле • single, door_lock, state, LOCK; double, door_lock, state, UNLOCK - Закрывает замок при клике, открывает при двойном • torsher_lamp - Передает в torsher_lamp текущее состояние • <40, humidifier, state, ON; >60, humidifier, state, OFF - Для датчика влажности, включает увлажнитель если влажность меньше 40% и выключает если больше 60%
Пример: left, PTVO, state_bottom_left, TOGGLE; right, PTVO, state_bottom_right, TOGGLE
Ответ: Необходимо отправить в состояние 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
Ответ: Необходимо отправить в JSON значение в топик ZigBeeGW/led следующего содержания: {"mode":"manual","hex":"#FFFFFF"}
mode - устанавливает режим, допустимы значения off, manual и auto hex - значение цвета в RGB Hex формате.
Ответ: При нажатии кнопки на шлюзе запускается скрипт btn_sw1.lua
В коде скрипта необходимо написать следующий код:
zigbee.join(255, "0x0000")
Ответ:
0 - получен анонс, запускается интервью
1 - получено описание устройства
2 - получено количество активных эндпоинтов
3 - получены кластеры устройства
4- получена модель
Многие устройствя Xiaomi сами репортят модель, поэтому работают без завершения всего цикла интервью.
Ответ: Многие устройства могут быть добавлены удаленно разработчиками проекта SLS ZGW. Вероятность добавления новых устройств увеличивается при наличии конвертера в zigbee2mqtt
Также неоспоримым приемуществом для добавления нового устройства является протокол взаимодействия в z2m. Его можно получить из zigbee2mqtt в режиме дебага zigbee следующей комбинацией:
cd /opt/zigbee2mqtt
DEBUG=zigbee-herdsman:zStack:* npm start
Далее необходимо выполнить нужные действия с устройством и сохранить вывод экрана. Данные сообщения можно добавить в issue или с помощью сервиса pastebin
Ответ: Иногда приходится сталкиваться с перезагрузками, причину которых выявить можно только подключив шлюз через uart. В подключенный последовательно порт прошивка SLS ZGW посылает примерно ту же информацию, что и в журнал web. Но в последнем вы не увидите ошибку, которая вызывала перезагрузку.
В операционной системе Linux драйвер ch340 обычно включен в модуль ядра. Поэтому после подключения шлюза, в системном логе по команда dmesg можно увидеть номер порта шлюза в системе. Обычно это /dev/ttyACM1 или /dev/ttyUSB0.
Для того, чтобы при чтении данных с порта не отправлять полученные с него же данные обратно в порт, необходимо отправить команду
stty -F /dev/ttyUSB0 115200 -cstopb -oddp -opost raw -echo
Далее запускаем команду записи данных порта в файл
cat /dev/ttyUSB0 > slslog.txt
В операционной системе 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:\
бор лога 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
Ответ: скорость 115200.
Ответ: скорость 115200.
Ответ: Необходимо отправить в топик ZigBeeGW/config/permit_join данные следующего содержания: {"duration": 3, "target": "0x00158D00007357B6"}
- Недостаточноый заряд батареи. Батарею мжно заменить на новую, сопряч и вернуть старую. В таком виде устройства иногда работают больше года. Новая батарея нужна только для сопряжения.
- Неправильный сброс устройства. Необходимо обратиться к официальной инструкции на устройство и убедиться, что вы правильно переводите устройство в режим сопряжения.
- Режим сопряжения. Проверить, включен ли режим сопряжения. Это можно сделать в вашем клиенте MQTT, либо в разделе Zigbee на Web странице контроллера.
Ответ:
- Настроить параметры сети WiFi через встроенную точку доступа.
- После перезагрзки найти новое устройство в сети и прописать параметры mqtt и настройки Zigbee модуля: Zigbee UART RX 22, Zigbee UART TX 23, Button Mode 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 ]
Отправка кешированных данных. Например, если датчик температуры и влажности прислал только температуру, при выбранном пункте, в сообщении будет отправлено значение и температуры и кешированное значение влажности. Если пункт не выбран - в сообщении придет только температура. Кэш записывается во флеш память каждые 30минут. По умолчанию включено.
Передавать "пустое" значение состояния click и actions, после отправки. Необходимо для систем, которые могут выполнять обработку только при изменении значения, а не при обновлении. По умолчанию включено.
Ответ: В zigbee2mqtt для преобразования батареек CR2032 используется следующая формула для пересчета:
Из даташита барареек Panasonic:
Сергей Коптяков сгенерил график:
Ответ: Нужно зажать кнопку на 3-5 сек при подаче питания
Данный функционал работает, только если вы заранее прописывали gpio кнопки, как на скрине выше.
С помощью lua можно выполнить программную перезагрузку координатора
gpio.mode(18, gpio.OUTPUT)
gpio.write(18, 0)
os.delay(100)
gpio.write(18, 1)
os.restart()
В некоторых случаях протокол взаимодействия новых устройств совпадает с теми, что уже поддерживаются шлюзом SLS. В таком случае можно при загрузке шлюза подменять идентификаторы. Делается это с помощью скрипта init.lua:
zigbee.SetModel("0xXXXXXXXX", "ptvo.switch")
где 0xXXXXXXXX - IEEE адрес устройства, "ptvo.switch" - zigbeename устройства, которое поддерживается шлюзом.
Данный функционал будет полезен пользователям генератора прошивок ptvo, кто самостоятельно изменит имя устройства на кастомное.