?

Log in

No account? Create an account

Previous 10

Nov. 30th, 2018

Основные функции сервера

Мое решение позволяет работать с контроллером напрямую (через клиента).
Кроме этого есть сервер предоставляющий облачное решение.

Здесь описан функционал именно сервера, много другого функционала будет описано при рассмотрении остальных узлов системы.

1) Сбор статистики с возможностью выгрузки с агрегацией за час, день, неделю и детальной за любой период
2) Передача команд контроллеру, далее конечным устройствам, с гарантией доставки данных и таймаутом. Реализован механизм обратной связи клиента - вы всегда будете знать выполнена ваша команда или нет.
3) Лог истории действий над исполнительным устройством, а также API для его выгрузки.
4) Хранение проекта с поддержкой версионности (частичная реализация), здесь же механизмы оффлайн редактирования проекта с защитой от одновременного редактирования несколькими пользователями и полноценного информирования.
5) Обеспечение связи всех узлов, узлы могут быть в локальной сети(за натом). Никаких статических внешних IP и настроек NAT не требуется. Также гарантируется передача информации между узлами без задержек за исключением действительных проблем с сетью.
6) Кроме механизмов передачи команд контроллеру и показаний клиенту реализован механизм заявок как мгновенных (синхронных) так и без ожидания ответа (асинхронных), в том числе и односторонних.
7) Возможность изменения 'на лету' некоторых данных проекта, не существенных для контроллера, например название исполнительного устройства.
8) Механизмы взаимодействия клиента с сервером не зависят от состояния контроллера. К примеру, настройки проекта активируются даже если контроллер в данный момент недоступен.
9) Возможность привязки к проекту локаций другого проекта.
10) Поддержка неограниченного количества пользоваетелей  с одновременным использованием устройств и функционала.
11) Разграничение доступов как на уровне локаций так и на уровне конечных устройств.
12) Профили пользователей, полный функционал - смена паролей, подтверждение email, ФИО, контактные данные и т.п.
13) Поддержка сценариев как независимого функционала от проекта, пользователь может иметь доступ к сценариям не имея доступа к редактированию проекта, в том числе когда проект кем-то редактируется.
14) Поддержка сторонних сервисов, таких как Алиса, Telegram и SMS(частичная реализация)
15) На базе п.6, возможность организации моста между клиентом и контроллером(далее интерфейсом конечного устройства - к примеру моста TCP/IP c хоста клиента в интерфейс RS232 конечного устройства)
16) Широкие возможности информирования, в клиент, email, Telegram, SMS(частичная реализация)
17) Наблюдение за доступностью узлов - возможность информирования при потери связи с контроллером и т.п.
18) Много языковая поддержка(частичная реализация).
19) Вся служебная информация хранится в виде словарей, которая обновляется налету и не требует обновления контроллера или клиента. Т.е. обновлять эти узлы необходимо только в случае значительных изменений функционала узла, такие изменения, как ввод новых устройств в систему обновления не требуют.

При этом обращаю внимание, что проект постоянно дорабатывается, т.е. функционал постоянно растет по мере необходимости.

Просто картинка клиента v.0.26.0

Зачем использовать мое решение, а не Arduino?

Допустим, Вы создаете стойку с гидропоникой да не простую, с кучей вентилей, датчиков, насосов и т.д. И конечно всем этим нужно управлять.

Конечно изучаем рынок, и вполне вероятно что-то находим, что недорого выполняет все наши пожелания. Но конкретно здесь рассматривается конкретный пример между Arduino и моим проектом.

Итак, на одной стороне весов готовые конечные устройства и вся остальная обвязка в виде контроллера, сервера и различных клиентов. Здесь вроде-бы все понятно, есть универсальное решение - настраивай под свой лад и используй(при этом не нужен ни схемотехник, ни программист).

С другой стороны набор устройств Arduino, для которых можно написать простейший код. Ничего ведь сложного управлять вентилем или снимать показания температуры с DS18B20 - с этим даже ребенок справится. Все элементарно просто!
Я даже скажу больше, какую-то часть автоматизации вообще можно было бы сделать без логики или с минимальной логикой(без микроконтроллера).

Однако, здесь есть ряд проблем, которые на первых шагах не заметны:
1) Нам нужно найти решение, которое будет хранить нашу статистику и позволять как-то с ней работать, а если захочется реализовать удаленный доступ к управлению?
2) Если Ардуин несколько, как они будут взаимодействовать? Особенно на расстояниях в несколько метров. Используем дополнительные платы расширения а с ними что, разрабатываем протокол? Все еще простая задача? Не забываем, что нужно учесть кучу проблем взаимодействия, что если данные не дошли к примеру?
3) А если все на одной Ардуино? Хорошо, а у вас получится обвязать несколько портов управления с одновременным опросом датчиков и других элементов системы? А организовать интерфейс во внешний мир и корректную выгрузку данных скажем в БД и тому подобное? Кстати этот-же вопрос актуален и для первого пункта.
Вот тут уже большие сомнения в простоте решения таких задач.
4) Ну хорошо, возьмем миникомпьютер, что-то типа RaspberryPi. Дружим его с Ардуино и все замечательно, решаем кучу проблем, пишем на чем угодно, пусть даже на Go или PHP, или вообще BASH скрипты используем. Достаточно простая задача для программиста. Стоп, нам нужны программисты... причем постоянно, в каждом изменении решения нам нужен будет программист, ну и схемотехник вероятно. В общем берем двоих в штат....

Разрешите откланяться...

Nov. 28th, 2018

О проекте (периодически обновляется)

Приветствую.

Похоже мне стоит кратко описать свой проект.

Проект представляет собой конструктор, под этим термином подразумеваются следующие особенности:
1) Широкая поддержка различных производителей и их устройств.
В проект заложены основы позволяющие его дополнять поддержкой сторонних устройств, в том числе сделанных своими руками.
2) Широкие возможности настройки подключения устройств.
Проект поддерживает большой набор различных интерфейсов подлючения. Позволяет подключать конечные устройства через большое количество шлюзов, как простых так и с дополнительно настраиваемой логикой.
3) Контроллер (основной локальный узел управления конечными устройствами) может быть развернут на любом компьютере поддерживаемом Java 7 и выше (это может быть настольный компьютер, сервер, мини компьютер и даже в будущем Android устройство).
Проект позволяет выполнить поддержку всех интерфейсов подобных устройств при этом пользовательский интерфейс описания данных подключений достаточно понятный и не требует специфичных знаний.
4) Возможность как локального подключения клиента к контроллеру, так и облачного, что дает широкие преимущества, как например информирование, сбор статистики и удаленное управление.
5) Финансовая выгода - основные компоненты проекта бесплатны, платными будут дополнительные сервисы, как например разработка доп. функционала под заказ, использование дополнительных веб сервисов или аренда дискового пространства под статистику.
6) Проект не потребует от вас специфичных знаний в электронике или знаний программирования, все достаточно просто и понятно. Однако подразумевается, что Вы имеете некоторое представление в области автоматизации.
7) В рамках проекта также разрабатываются недорогие устройства с существенными особенностями в сравнении с аналогами на рынке.

Еще раз, это конструктор, он Вам не нужен, если Вы купили комплексное решение от, скажем, Xiaomi.
Но если Вы интегратор, или просто увлекаетесь электроникой и решили обвесить свой дом различными недорогими устройствами управления и датчиками, то здесь он в самый раз.
Безусловно, если вы купили, скажем, с десяток RGB WiFi ламп и теперь желаете все это дело объединить, то этот проект Вам также будет очень полезен.
Хотя, Вы в любой момент можете купить ограниченный в функционале готовый контроллер известного производителя  для ограниченного количества и типа устройств заплатив за него значительно больше чем за недорогой мини копьютер.

Проект разрабатывается в различных направлениях, например в нем есть наработки для общения с Алисой, работа с Телеграмом или скажем трекинг контейнеров с рефрижераторами, ну или автоматизация в гидропонике.

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

У проекта есть юр. лицо http://dipex.ru
Кроме этого компания открыла лабораторию в ДВФУ(C305 - центр проектной деятельности, направление интернет вещей) и скоро откроется нечто похожее во ВГУЭиС'е.

Jul. 11th, 2018

Умный дом от RT

Вот, яркий пример умного дома, куда уж мне с ними тягаться то? И ценник, разве может быть дешевле?
Только я думаю, они все-же в валюте ошиблись. Скорее всего это цена в баксах или евро.




https://primorye.rt.ru/smart_house?abheader=1&undefined

Apr. 5th, 2018

Мои устройства. USB->RS485 шлюз.

photo_2018-04-05_00-48-53.jpg


На первый взгляд обычный китайский USB-RS485 свисток, но с микроконтроллером, зачем?
Затем, чтобы ПО могло его идентифицировать, потому как просто номер серийного порта говорит только о порядке подключенных устройств, особенно если микросхемы USB одинаковые.

К тому же у этого устройства выведены не только A и B шины RS485, но и земля в том числе, а это достаточно важно и часто снимает ряд проблем с шиной.

Ну и в том числе здесь можно реализовать дополнительную логику, которую проблематично сделать в не реалтайм ОС, к примеру мою фичу 'extra scanning', которая позволяет системе быстро реагировать на события устройств подключенных по обычному modbus.

Также в процессе удлиненный вариант устройства с DC-DC преобразователем на 12В для питания шины.
Очень полезно, когда необходимо настроить новое устройство или для полноценной работы небольшого количества устройств.
Но об этом через несколько месяцев, после заказа новых плат и их транспортировки с Китая во Владивосток через жопу мира - Маскву.


P.S. Оказывается, ЖЖ в метках ругается на знак '->'.

Mar. 14th, 2018

Заметка по программированию - Установка и настройка Geany + AVRA + AVRDude

Ставить будем под Ubuntu 16.04.4 LTS

Ставим пакеты:
sudo apt-get install geany avra avrdude
У меня они уже установлены:
Уже установлен пакет avra самой новой версии (1.3.0-2).
Уже установлен пакет avrdude самой новой версии (6.2-5).
Уже установлен пакет geany самой новой версии (1.27-1).

Скачиваем шаблон синтаксиса avr_asm для его скудной, но все же подсветки:
wget http://wiki.geany.org/_export/code/config/avr_asm -O ~/.config/geany/filedefs/filetypes.asm
*если получили ошибку "Нет такого файла или каталога" то вероятнее всего ранее Geany не запускался, и следовательно не создал свои рабочие каталоги, запускаем и повторяем процедуру.

Библиотеки микроконтроллеров для avra находятся в /usr/share/avra/, но там не все, недостающие
я обычно беру с установленной Atmell Studio под Windows, их можно взять у меня
wget http://p5277.ru/distr/other/avra.zip -O ~/avra.zip
Распаковываем (необходим пароль суперпользователя):
sudo unzip -o ~/avra.zip -d /usr/share/avra/
Удаляем скачанный архив:
rm ~/avra.zip

Теперь запускаем Geany и выполняем настройку для компиляции и прошивки мк:
Смотрим Меню->Сборка->Установить команды сборки


В первой строке прописываем Build и avra --includepath /usr/share/avra/ "%f"
Во второй с конца прописываем Flash и команду для прошивки микроконтроллера, здесь все зависит от типа прошивальщика и
от типа микроконтроллера.

Рассмотрим пример с USB AVR JTAGICE XPII для ATmega328P

avrdude -p m328p -c jtag2isp -U flash:w:%e.hex


С программатором USB AVR ISP mkII

avrdude -p m328p -c avrispmkII -U flash:w:%e.hex


Типы поддерживаемых программаторов можно посмотреть так:
avrdude -с ?
Типы поддерживаемых МК так:
avrdude -p ?

Вот что у меня получилось:

*в процессе написания был убран ключ -v (verbose) как не нужный.

Для проверки можно создать файл test.asm следующего содержания (просто выставляем высокий уровень на PD0):
.INCLUDE "m328pdef.inc"
   .CSEG
   .ORG 0x00

   CLI

   SBI DDRD,PD0
   SBI PORTD,PD0
LOOP:
   RJMP LOOP


Сохраняем, жмем Menu->Сборка->Build (или клавишу F8)
Получаем вывод avra:
avra --includepath /usr/share/avra/ "test.asm" (в каталоге: /home/kostas)
/usr/share/avra/m328pdef.inc(44) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(48) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(53) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(926) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(927) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(928) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(929) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(44) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(48) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(53) : PRAGMA directives currently ignored
AVRA: advanced AVR macro assembler Version 1.3.0 Build 1 (8 May 2010)
Copyright (C) 1998-2010. Check out README file for more info
   AVRA is an open source assembler for Atmel AVR microcontroller family
   It can be used as a replacement of 'AVRASM32.EXE' the original assembler
   shipped with AVR Studio. We do not guarantee full compatibility for avra.
   AVRA comes with NO WARRANTY, to the extent permitted by law.
   You may redistribute copies of avra under the terms
   of the GNU General Public License.
   For more information about these matters, see the files named COPYING.
Pass 1...
Pass 2...
done
Used memory blocks:
   Code      :  Start = 0x0000, End = 0x0003, Length = 0x0004
Assembly complete with no errors.
Segment usage:
   Code      :         4 words (8 bytes)
   Data      :         0 bytes
   EEPROM    :         0 bytes
/usr/share/avra/m328pdef.inc(926) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(927) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(928) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(929) : PRAGMA directives currently ignored
Сборка прошла успешно.



Компиляция прошла успешно, пробуем прошить, для этого жмем Menu->Сборка->Выполнить (или клавишу F5, иногда дважды)
Получаем вывод:

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "test.hex"
avrdude: input file test.hex auto detected as Intel Hex
avrdude: writing flash (8 bytes):

Writing | ################################################## | 100% 0.82s

avrdude: 8 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex auto detected as Intel Hex
avrdude: input file main.hex contains 8 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.85s

avrdude: verifying ...
avrdude: 8 bytes of flash verified

avrdude: safemode: Fuses OK (E:FF, H:99, L:CE)

avrdude done.  Thank you.



------------------
(program exited with code: 0)
Press return to continue


Для работы с фьюзами я воспользовался онлайн калькулятором http://www.engbedded.com/fusecalc/
Вродебы добротный, умеет генерировать сразу параметры для AVRDude

Насчет стандарта кодирования, я использую табуляцию с размером в 3 символа и отсутп для комментариев с 58 символа - это главное, также пишу весь текст в верхнем регистре,  кроме комментариев, максимальную длину строки делаю в 160 символов.

В общем пока все, в дальнейшем планирую дополнить пост примерами прошивки другими программаторами, и навреное поработаем со фьюзами.

Mar. 11th, 2018

Тестовая прошивка для реле на 16 Ампер

Как-то давно я описывал свое устройство - реле на 220В 16А (4кВт)
Сегодня я закончил основные работы по этому устройству, и вот что у меня получилось:

Это прототип с небольшой ошибкой на PCB, которая уже исправлена и скоро будет заказ новых плат.
(прошу прощения за качество фото, просто нет времени делать хорошо да и условий нет, выложил как есть)

photo_2018-03-11_05-51-34.jpg
photo_2018-03-11_05-45-35.jpg



Характеристики:
1) Шина rs485, 9600/8n1, с протоколом схожим с modbus
2) С гальванической развязкой от силовой части, но без гальванической развязки по шине
3) Диапазон напряжения питания 9-24В
4) 250В, 16А (4кВт мощности)
5) Без корпуса, можно использовать термо трубку
6) 30мА потребление на шине
7) Датчик тока
8) Внешний датчик температуры
9) Габариты 45х25х17мм

Управление:
1) К устройству можно подключить либо кнопку(без фиксации), либо выключатель(с фиксацией), либо сенсор касания (просто провод или металлическая площадка)
При этом будет выполняться команда инвертирования(т.е. вкл->выкл и выкл->вкл)
*Есть возможность настройки чувствительности сенсора.
2) Удаленное управление через шину, поддерживаются такие команды как вкл, выкл, инвертировать
3) Таймер - также через шину можно задать таймер на отложенное выполнение команды. Таймер отсчитывает два периода - для выполнения основной команды и для выполнения обратной основной команде, к примеру: включить реле через 15мс и выключить ее через час. *Любая команда на реле отменяет действия таймера.
4) Триггеры - оказывают влияние на состояние реле на основе данных температуры внешнего датчика или тока, протекающего через реле. Имеют максимальный приоритет, и при срабатывании блокируют остальные методы управления.
*Также, на случай отключения электропитания, устройству можно указать режим старта - вкл, выкл, последнее состояние.

Съем показаний:
Можно получить логическое состояние реле, наличие напряжения на выходе реле, температуру внешнего датчика и ток потребления в мА.
*Также есть возможность корректировки коэффициента, участвующего в расчетах силы тока при анализе амплитуды синусоиды, корректировки значения температуры внешнего датчика.

По поводу датчика тока, дискретизация в 114мА (со стандартным коэффициентом в 57, можно менять), ну и такая же ошибка, т.е. где-то точность измерения составляет грубо 30Вт.
Здесь не будет точных значений, по нескольким причинам:
- используется не самый лучший встроенный в МК АЦП(10бит);
- используется датчик тока на эффекте Холла, который легко подвержен электромагнитным наводкам (не забываем, у нас электромагнитное реле);
- нет вычислительной мощности для расчета тока умными и корректными формулами, здесь магия.

Низкое энергопотребление:
Катушка реле питается от силовой части, поэтому максимальный ток потребления на шине составляет всего около 30мА.

Индикация:
Два светодиода. Первый - логическое состояние реле. Правый - мигает при опросе по шине. Devices tool позволяет изменить их режим работы, детальней будет описано ниже.

Ведение истории:
Данный функционал выполняет сразу две задачи - дает возможность вне периодического опроса контроллером устройства и позволяет считать с устройства события, которые произошли между опросами. Иными словами, благодаря этому функционалу можно задать любой период опроса устройства не переживая о потере информации о действиях над устройством.

Время:
Ведется отсчет времени для истории. При этом я не ставил задачи подсчета близкого к точному времени, так как в этом нет необходимости, ошибка не большая, а для отсчета таймера и ведения истории достаточно просто дельты времени.

Вопросы надежности и безопасности:
При подаче питания, устройство приступает к работе спустя 1-5 секунд(время выбирается случайно при каждом старте), это сделано из-за особенностей запуска МК и для снижения пиковых нагрузок на сеть (если у Вас, к примеру, используется большое количество таких устройств с подключенными потребителями большой мощности, при этом устройства настроены на автоматическое включение при подаче питания).

Триггеры:
В устройстве реализовано два типа триггера, на базе показаний температуры от внешнего датчика температуры и на базе показаний датчика тока.
  Первый реализует механизм работы как обогрева так и охлаждения, т.е. можно выставить пороги температуры, при которых реле будет постоянно включено или выключено. Также есть реакция на сбой/потерю датчика температуры.
  Второй следит за уровнем тока, можно выставить порог, при котором реле будет автоматически выключено.
Но, не стоит полагаться на этот механизм как на защиту от замыкания и тому подобное, ток анализируется каждые 4 секунды, не так уж часто, чтобы использовать как защиту. Тем не менее это может быть полезно для предупреждения больших нагрузок на силовую линию.

Devices tool:
Снимок.PNG

Левый блок (блок показаний), думаю такие вещи как версия прошивки описывать не имеет смысла, здесь и так все понятно, перейду к менее интуитивно понятным:
Наличие фазы на выходе - вкл, если на выходе реле действительно есть напряжение. Причины могут быть разные, например отсутствие напряжения на входе, или к примеру, контакты реле прикипели.
Сила тока - значение переменного тока в миллиамперах, значение может немного 'дрожать' на 114мА, корректируется значением с правого блока.
Температура внешняя - показание температуры с внешнего датчика, корректируется значением с правого блока

Правый блок (блок настроек), также опускаю интуитивно понятные и ранее описанные поля.
Коэф. силы тока - условное значение(конечно рассчитанное по формулам и как не странно совпадает с тестами), позволяет корректировать показание тока.
Контроль внеш. темп. - рассмотрим подробнее:
  первый элемент - режим работы - охлаждение или обогрев, можно выставить как два порога (мин, макс) так и какой-то один, логика проста, при выходе за максимальное значение в случае обогрева реле будет отключено, а при охлаждении наоборот включено и ровным счетом все наоборот для минимального значения.
  второй элемент - минимальное значение
  третий элемент - максимальное значение
  четвертый элемент - разрешение реакции на потерю датчика - реле будет выключено.

Контроль тока - если включено, при каждом съеме показания по току будет выполнятся сравнение с указанным значением, и если показание выйдет за указанное максимальное значение, то реле будет выключено.

Заключение:
На текущий момент, это мое самое богатое функционалом устройство.
Здесь есть датчик тока, датчик температуры, датчик наличия напряжения.
Реализованы триггеры по основным показаниям, таймер реле, ведение истории, сенсорное управление и конечно шина на RS485.
Это первая моя прошивка размером в 4КБ, (любителям Си покажется это незначительным, учитывая особенности процесса компилирования, но я то пишу на чистом ассемблере...)
Стоит также учитывать довольно малые размеры устройства для 4кВт и не малый набор датчиков и функционала.
Здесь я вижу широкие возможности для использования, ведь кроме встроенных триггеров есть еще большие возможности контроллера с сценариями, которые можно легко настроить через клиента.
Лично для себя я вижу большой плюс в размерах (в некоторых случаях устройство помещается в настенный стакан для розетки), также для меня очень полезен датчик тока, и датчик наличия напряжения.
В общем, я считаю, что это компактное и полнофункциональное устройство для управления розетками, обогревателями и холодильными установками (как дополнительное устройство управления и контроля)

Mar. 4th, 2018

Прошивка релиз кандидат для датчика температуры (на базе DS18B20)

Решение выполнено на стандартном универсальном модуле, к которому подключен датчик температуры DS18B20.


Ничего особенного здесь нет, по сути просто датчик температуры с шиной RS-485.

Характеристики:
1) Шина rs485, 9600/8n1, с протоколом схожим с modbus
2) Диапазон напряжения питания 9-24В
3) Без корпуса, можно использовать термо трубку

Съем показаний:
С устройства можно получить текущую температуру в градусах Цельсия и время работы.
Модуль опрашивает датчик каждые 3 секунды.

Индикация:
Стандартно для универсального модуля. Два светодиода. Левый - опрос датчика, при опросе мигает и горит, если опросить датчик не удалось. Правый - мигает при опросе по шине. Devices tool позволяет изменить их режим работы, ранее было описано.

Время:
Ведется отсчет времени, но применяется только для внутренних задач.

Особенности:
Есть возможность корректировать показание датчика (с точностью до сотых).


Я уже как-то описывал данное устройство, но тогда оно было на старой версии универсального модуля и на тот момент я не нашел ему применение.
Теперь есть, это устройство следит за температурой в морозильном ларе, который стоит в доступности у маленького ребенка, любящего чего-нибудь покрутить.

Feb. 18th, 2018

Тестовая прошивка для диммера ламп накаливания.

Вид димера (эти три платы, ручной пайки, ушли профессиональным тестировщикам):


Характеристики:
1) Шина rs485, 9600/8n1, с протоколом схожим с modbus
2) С гальванической развязкой от силовой части, но без гальванической развязки по шине
3) Диапазон напряжения питания 9-24В
4) До 300 Вт мощности - ограничение по тепловыделению
5) Без корпуса, можно использовать термо трубку

Управление:
1) К устройству можно подключить либо одну кнопку(без фиксации), либо две кнопки (без фиксации), либо выключатель(с фиксацией).

В режиме одной и двумя кнопками можно управлять как включением и выключением, так и задавать мощность.
В режиме выключателя можно только включить и выключить, задать мощность в этом случае можно только через шину (клиенты, мессенджеры, другие устройства, как например ИК приемник и т.д.)
Управление в режиме двух кнопок - 1-я при коротком нажатии включает диммер, при длинном увеличивает мощность на 5%, вторая действует аналогично, выключает и уменьшает на 5%.
Управление в режиме одной кнопкой - короткое нажатие инвертирует (т.е. вкл->выкл, выкл->вкл), длинное увеличивает мощность на 5%, и короткое нажатие + длинное уменьшает мощность на 5%.

2) Удаленное управление через шину, поддерживаются такие команды как вкл, выкл, инвертировать, задать мощность.
*Также, на случай отключения электропитания, устройству можно указать режим старта - вкл, выкл, последнее состояние.

Съем показаний:
С устройства можно получить заданный уровень мощности и время работы.

Индикация:
На устройстве только один индикатор - диммер включен, включенное состояние означает, что задана не нулевая мощность.

Время:
Ведется отсчет времени, но применяется только для внутренних задач.

Особенности:
Есть возможность задавать уровень мощности, на который выходит диммер получив команду на включение.
Очень удобно. У меня установлены лампы на 200Вт и задана мощность в 50% на включение. Т.е. лампа при стандартном включении горит как обычная лампа на 100Вт. Но если мне нужно больше света, то я просто задаю большую мощность.
Замедленный выход на указанную мощность, видно как диммер наращивает или снижает мощность при ее изменении.
Питание от шины - нет необходимости прокладывать еще одну жилу до выключателя, диммер подключается ровно на те же провода, что и выключатель ранее.

Devices tool:


Здесь вполне стандартные поля, версия прошивки, время работы, уровень мощности (0-100%), адрес, режим инициализации, режим управления (чуть изменен, вместо сенсора здесь две кнопки), уровень мощности для включения (задает уровень, на который будет выходить диммер получив команду включить или переключить при текущей мощности не в 0%)

Заключение:
Диммер состоит из минимального набора компонент, при этом вдет себя вполне надежно, есть небольшие артефакты при работе как например: при существенных изменениях синусоиды может наблюдаться кратковременное изменение мощности свечения.
Я использую пока только три таких диммера у себя, и в принципе очень даже доволен, осталось исправить пару недочетов.

Previous 10