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. После этого все должно работать.