Page 1 of 2

Объединить две кнопки в интерфейсе Z-Way

Posted: 01 Sep 2016 12:49
by picachu
Доброго дня, форумчане.

Система дома управляется посредством Raspberry Pi. Программа RaZberry.

Суть в следующем.Свет в квартире управляется посредством встраиваемых реле. Выключателей в квартире 5, поэтому установить в каждый подрозетник реле, не критично в ценовом формате. Но для управления розеток коих более 30 использовать реле для каждой розетки дорого, а использовать для группы розеток не правильно, так как суммарная мощность может превысить допустимую. Поэтому возникла идея управлять группами розеток из щитка, включая и отключая линию.

Для этого на порты GPIO, через развязку, были подключены импульсные реле (импульсные потому что не требуют постоянного питания), в интерфейса созданы виртуальные кнопки (toggleButton) которые выключают и выключают реле. То есть включение и выключение происходит одной кнопкой.

Все работает прекрасно. Но возникает вопрос, а как проконтролировать в каком состоянии линия и есть ли на ней напряжение? Так как состояние порта всегда выключено то команда "system('cat /sys/class/gpio/gpio20/value')[1] == "1" ? "on" : "off"" не пойдет.
Были собраны модули которые смотрят есть ли напряжение и если есть, то выдают сигнал на другие порты GPIO. С них информация выдается в "Code Device" которая показывает в каком состоянии линия.

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

Отсюда вопрос, можно ли создать общий модуль "Code Device" который имеет и кнопку и лампочку либо как то связать два модуля в один.

Re: Объединить две кнопки в интерфейсе Z-Way

Posted: 01 Sep 2016 16:34
by gsaw
Конечно я не разбираюсь сильно, но почему не CodeDevice "switchBinary" использовать? Там же вроде и статус опросить можно и комманду по on/off можно выполнить?

Re: Объединить две кнопки в интерфейсе Z-Way

Posted: 01 Sep 2016 17:52
by picachu
gsaw wrote:Конечно я не разбираюсь сильно, но почему не CodeDevice "switchBinary" использовать? Там же вроде и статус опросить можно и комманду по on/off можно выполнить?
switchBinary имеет два статуса on/off. А импульсное реле управляется кратковременным импульсом. Используется звонковая кнопка.
Для switchBinary необходимо ставить обыкновенный контактор, и он во включенном состоянии
постоянно потребляет электричество.

Re: Объединить две кнопки в интерфейсе Z-Way

Posted: 01 Sep 2016 18:03
by gsaw
picachu wrote:
gsaw wrote:Конечно я не разбираюсь сильно, но почему не CodeDevice "switchBinary" использовать? Там же вроде и статус опросить можно и комманду по on/off можно выполнить?
switchBinary имеет два статуса on/off. А импульсное реле управляется кратковременным импульсом. Используется звонковая кнопка.
Для switchBinary необходимо ставить обыкновенный контактор, и он во включенном состоянии
постоянно потребляет электричество.
Почему бы просто в on и off не прописать одну и ту же команду? Имею ввиду, статус это одно, это опросить пин. А в on/off пишутся команды на включение/выключение. В вашем случае это одна и таже комманда, выставить кротковременно однерку в пине или как это там у вас. Реле переключится, статус на другом пине будет опрошен, соответсвенно загорится или потухнет "лампочка".

А, понял, хочется просто одну нефиксируемую кнопку. Ну тогда наверное надо свой модуль писать.

Re: Объединить две кнопки в интерфейсе Z-Way

Posted: 10 Sep 2016 03:59
by PoltoS
а toggleButton не подойдёт?

Re: Объединить две кнопки в интерфейсе Z-Way

Posted: 13 Sep 2016 19:06
by picachu
PoltoS wrote:а toggleButton не подойдёт?
PoltoS, а я что написал? Я toggleButton и использую.
Вопрос стоял как объединить toggleButton с SensorBinary в одном модуле используя разные поры GPIO.

Re: Объединить две кнопки в интерфейсе Z-Way

Posted: 14 Sep 2016 00:12
by PoltoS
Ничего не понял, но, видимо, вы правы ;)

Re: Объединить две кнопки в интерфейсе Z-Way

Posted: 14 Sep 2016 17:21
by picachu
PoltoS wrote:Ничего не понял, но, видимо, вы правы ;)
Давайте я напишу с картинками, а то вероятно действительно трудно понять.

Собрана схема для управления розетками.
Схема управления
Схема управления
Схема управления розеток.png (114.66 KiB) Viewed 10081 times
В интерфейсе созданы модули управления.

Модуль toggleButton подключен на 24 пин GPIO и содержит код

Code: Select all

system('echo "1" > /sys/class/gpio/gpio24/value');
.
Модуль SensorBinary подключен на 23 пин и содержит код

Code: Select all

(system('/bin/cat /sys/class/gpio/gpio23/value')[1] === '1\n') ? "off":"on"
Кнопки в интерфейсе
Кнопки в интерфейсе
Кнопки.png (19.73 KiB) Viewed 10081 times
При нажатии на кнопку toggleButton импульсное реле включается, модуль проверки напряжения подает на 23 пин высокий уровень, SensorBinary показывает что на линии появилось напряжение. При повторном нажатии реле выключается, SensorBinary показывает что напряжения нет.


Таким образом мы имеем один модуль кнопки и один модель индикации. А так как линий несколько, то модулей в два раза больше. И сразу понять какой SensorBinary к какому toggleButton относится сложно.

Поэтому возникло желание как нибудь объединить оба модуля в один. Примерно как на рисунке (нарисовано руками)
Кнопка-хотелка
Кнопка-хотелка
кнопка.png (7.99 KiB) Viewed 10081 times
Что бы модуль мог работать одновременно с двумя пинами GPIO/

Я пробовал поправить код модуля. Но вероятно моих познаний в джаваскрипте недостаточно и у меня ничего не получилось

Re: Объединить две кнопки в интерфейсе Z-Way

Posted: 17 Sep 2016 01:41
by PoltoS
Такой вьюхи в интерфейсе нет.

Можно, конечно, самому сделать. Несного копипасты, и готово

Re: Объединить две кнопки в интерфейсе Z-Way

Posted: 19 Sep 2016 13:22
by picachu
PoltoS wrote:Такой вьюхи в интерфейсе нет.

Можно, конечно, самому сделать. Несного копипасты, и готово
Хм, то что такого нет, это я и сам понял.
Но как бы надеялся на более конкретный ответ, что и где копипастить то и куда ;)

Мои познания в JS как бы не позволяют сделать оное методом тыка.