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)