Dienstag, 4. Oktober 2016

FHEM

О FHEM


Итак, в предыдущем посте мы рассмотрели базовой программирование контроллера WAGO.

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

Для этого нам понадобится система. Мой выбор пал на FHEM. Система уже поддерживает множество различных устройств и протоколов. В том числе и ModbusTCP.

FHEM так же позволяет сделать атоматизацию вашего дома. Существует множество различных сценариев. Например вечером автоматически закрывать входную дверь, опускать жалюзи во время солнечных дней (чтобы не перегревать дом), отсылать сообщения на ваш мобильный телефон, включать и отключать отопление и т.д.
.

Инсталляция FHEM

В качестве сервера я использовал для инсталляции Raspberry PI, но, разумеется, лучше взять нормальный компьютер. 

Итак приступаем. Статей о том как правильно сконфигурировать Raspberry PI существует огромное множество, поэтому этот момент мы рассматривать не будем. Если же у Вас возникнут вопросы, то можете смело мне их задавать.


После того как Вы полностью настроили Rspberry Pi необходимо выполнить следующие команды
sudo apt-get -f install && sudo apt-get -y install perl libdevice-serialport-perl libio-socket-ssl-perl libwww-perl libxml-simple-perl
и собственно скачать и установить FHEM:
sudo wget http://fhem.de/fhem-5.7.deb && sudo dpkg -i fhem-5.7.deb
Если существует более новая версия, то необходимо просто поменять 5.7 на номер новой версии. Доступные версии можно посмотреть здесь. Соответсвенно правильно имя пакета будет fhem-x.x.deb.

После установки необходимо дать FHEM права на чтение\запись. Это делает следующим способом:
cd /opt && sudo chmod -R a+w fhem && sudo usermod -a -G tty pi && sudo usermod  -a -G tty fhem
После этого FHEM будет запускаться автоматически при, например, перезагрузки Вашего компьютера.

Интеграция WAGO

Web-Interface от FHEM будет запущен по умолчанию на http://<your-ip-address>:8083.

Перед тем как приступить к интеграции, необходимо установить следующие модули в FHEM:


  • 36_ModbusTCPServer.pm
  • 37_ModbusCoil.pm
  • 37_ModbusRegister.pm

Делается это простым способом. В WEB-Интерфейсе FHEM, необходимо ввести FHEM-Команды

  • update all https://raw.githubusercontent.com/ChrisD70/FHEM-Modules/master/autoupdate/mb/controls_modbus.txt
  • reload 36_ModbusTCPServer.pm 
  • reload 37_ModbusCoil.pm
  • reload 37_ModbusRegister.pm
После этого мы можем приступить к интеграции. Для этого проделываем следующее. Открываем файл fhem.cfg, который находится в /opt/fhem/fhem.cfg и добавляем там строчки


                                   define WAGO ModbusTCPServer <WAGO-IP-Address>
                                   attr WAGO verbose 2

после этого выполняем команды sudo /etc/init.d/fhem stop и sudo /etc/init.d/fhem start. После этого FHEM откроет соединение к нашему WAGO устройству.

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

define Livingroom_Light ModbusCoil 1 521
attr Livingroom_Light IODev WAGO
attr Livingroom_Light room Livingroom
attr Livingroom_Light source Coil
attr Livingroom_Light updateInterval 00:00:01

В этом примере мы создаем переменную Livingroom_Light, которая читает данные из адреса 520 (адресация в WAGO начинается с нуля, а в файле настроек необходимо указывать Modbus-Address + 1).

Тип переменной ModbusCoil.

Устройство (IODev) это наше устройство WAGO, которое мы определили выше

Комната (room) у нас указана Livingroom, это просто логические объединения разных точек. Называть можно как угодно, для удобства рекомендуется называть именно так, где физически находится описываемое устройство нашей переменной.

Source - тип, который будет использоваться модулем ModbusTCP

UpdateInterval - как видно из названия, это как часто будет данная переменная перечитываться драйвером устройства.

Если вдруг вы заметите, что у вас с адресами полная неразбериха, то добавьте аттрибут
attr Livingroom_Light disableRegisterMapping 1  и перезапустите FHEM. После этого все должно работать.

Donnerstag, 21. Januar 2016

Программирование контроллера WAGO

После долгого перерыва, вызванного запуском проекта у клиента, продолжаю свое повествование.

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

Для программирования контроллера понадобится среда программирования CoDeSys. При покупке контроллера среда идет всегда в комплекте с необходимым и, довольно большим, объемом разных библиотек.

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

Итак приступаем. 

Запускаем CoDeSys и выбираем Datei->Neu. CoDeSys спросит модель нашего контроллера. Выбираем WAGO_750-881 (это моя модель, у вас может быть другая).

Далее появляется диалог для выбора какой язык будет использоваться для программирования контроллера. Я выбираю всегда ST, это язык немного напоминает то ли Basic, то ли Pascal.
Можно выбрать FUP, тогда будете рисовать блок-схемы, но мне это не очень привычно.

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

Выбираем закладку Resourcen и кликаем двойным нажатием мышки на элементе Steuerkonfiguration.



Поле этого появится диалог создания конфигурации.



Нажимаем правой клавишей на K-Bus[FIX] элементе и выбираем в меню Unterelement anhängen и затем добавляем элементы (входы и выходы).

Далее на необходима подключить библиотеку Gebaeude_Allgemein.lib (Building_common.lib), в которой есть необходимые нам готовые объекты для управления светом.

Для этого двойным нажатием клавиши мышки открываем элемент Bibliothekverwalter, затем нажимаем клавишу 'Insert' на клавиатуре, находим и добавляем искомую библиотеку. Обычно она находится в папке Building.

Затем находим элемент в библиотеке FbConstantLightControl и добавляем в нашу программу.

Далее необходимо подать на входы xCentralOn и xCentralOff сигналы от входных клемм, к которым подключены выключатели, а выход xSwitching "подключить" к выходной клемме необходимой лампы. 

Затем загружаем программу в контроллер (Alt + F8) и запускаем. После этого можно тестировать нашу программу. При нажатии на клавишу выключаетлся, лампочка должна загореться.

В дополнение, к сожалению на немецком, если найду на английском - добавлю
CoDeSys Первые шаги (pdf)



Dienstag, 8. Dezember 2015

Управление светом. ч. 1

Рассмотрим же теперь как можно управлять светом в нашем будущем умном доме с помощью WAGO.

Для начала необходимо понять принцип подключения наших осветительных ламп. Стандартное подключение выглядит так: 

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

В нашем случае все будет выглядеть немного иначе. Я использовал выключатели от производителя Gira 2003100. Выглядит он вот так:



Есть и другие варианты от Gira, а так же от других производителей. Но я своим выбором вполне доволен. Мой выбор основывался на опросах клиентов и коллег, в 90% был выбран именно такой вариант.


Возвращаемся к схеме подключения. Выше названный выключатель работает с напряжением 24 В. Т.е. в этом случае придется тянуть 2 кабеля. Один на выключатель, другой с 220 В на лампочку. На лампочку пойдет обычный стандартный кабель NYM-J 3x1,5 mm². На выключатель же, понадобится минимум 8ми жильный кабель (6 жил для кнопок, 1 жила "+" и 1 жила "-"). Если же есть желание подствечивать диоды на выключателях, чтобы ваш дом светился как новогодняя елка, то к каждому диоду необходимо свою жилу, т.е. понадобится минимум 14 жильный кабель, но такого в природе нет, есть только 16ти жильный. Я остановился на 8ми жильном с сечением 0,25 mm. Приницип лучше один раз увидеть еще никто не отменял, поэтому ниже картинка как физически должно выглядеть подключение.


Оранжевым цветом отмечены линии напряжения 24 В, черным - 220 В. Контроллер WAGO разумеется подключается через блок питания, так как у него входное напряжение 24 В. На схеме отсутсвуют входные и выходные клеммы, о них расскажу позже, когда займемся программированием контроллера.


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



Sonntag, 6. Dezember 2015

Начало

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

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

В общем не долго думая за основу была взята "железка" от фирмы WAGO.
Вообще он предусмотрен для разных промышленных предприятий, так как у него высокая надежность и если правильно написать для него программу, то он работает без всяких лишних вопросов. Понимает протокол ModBus(TCP)

Контроллер: 750-881
Входные клеммы:  750-1405
Выходные клеммы: 750-1504


Так как выходные клеммы дают напряжение 24 В, которых явно недостаточно для включения лампочки или для запуска мотора на жалюзи, то к выходной клемме сначала подключается релешка, которая срабатывает на 24 В и замыкает цепь на 220 В.

Примерно все это "выглядит" так:

Выключатели Gira 2003100 при нажатии на одну из кнопочек посылают на соответсвенный вход клеммы 750-1405 напряжение 24 В. Контроллер запрограммирован так, что, например, если на вход 1 приходит напряжение 24 В, то надо включить выход 5. Соответсенно срабатывает релешка, подключенная к 5ому выходу и вуаля, у нас в комнате загорается лампочка.

Эта маленькая заметочка только лишь для затравки. Далее, наверное, интересно рассказать про то, как этот контроллер программировать, нарисовать схему подключения выключателей и различных актеров к контроллеру. Так же могу рассказать про мои исследования про подключения системы отопления Buderus, конвертора KostalPiko (конвентирует постоянный ток в переменный)

В отзывах можете указать, что кому интересно, а то мне сложно так решить :)