Система домашней автоматизации WebHomePi построена на базе фреймворка WebIOPi, «заточенного» под операционную систему Raspbian Wheezy. К сожалению, поддержка автором WebIOPi прекратилась еще в 2015 году и, следовательно, адаптация под новые операционные системы Raspbian не выполнялась. При установке фреймворка на последние версии Raspbian Jessie проявляются определенные проблемы, например, в плане управления портами GPIO, о чем не раз упоминалось на нашем форуме. Там же участниками предлагались некоторые пути решения этих проблем.
Я уже давно планировал перенести WebHomePi на более современную операционную систему Raspbian Jessie. Но пока собирался это сделать, в августе 2017 года вышел новый релиз Raspbian - Raspbian Stretch. Причем, как полноценный «десктопный» вариант, так и облегченная серверная версия Raspbian Stretch Lite. Именно на этой версии и было принято решение сделать обновленный образ SD-карты для WebHomePi. Сразу отмечу, что применение Raspbian Stretch Lite позволилоболее чем на половину уменьшить размер образа по сравнению с предыдущей версией и теперь его можно развернуть даже на SD-карте с объемом 2 Гб. Но делать это, конечно, не стоит, используйте карты объемом не менее 4 Гб. Тем более, что сейчас найти в продаже SD-карту с таким маленьким объемом практически нереально.
Немного остановлюсь на том, что необходимо сделать в плане адаптации. Во-первых, для новых версий операционных систем фреймворк WebIOPi должен устанавливаться как сервис:
Переход в операционных системах Debian на Systemd привел к тому, что теперь необходимо иначе управлять и фреймворком WebIOPi. Вот несколько основных команд:
sudo systemctl status webiopi - статус (состояние) WebIOPi
Существует определенная проблема и при выводе изображений. Почему-то html-сервер WebIOPi упорно пытается декодировать картинку как текстовый файл, и, естественно, выдает ошибку, что кодировка не utf-8. Для решения указанной проблемы необходимо в файле
отредактировать строку f = codecs.open(path, encoding=encoding)
следующим образом: f = codecs.open(path, 'rb')
Рис.1
По умолчанию шина I2C в Raspberry Pi отключена и ее необходимо активировать в конфигурации девайса.
Открываем конфигурацию: sudo raspi-config
и в разделе Interfacing Option / I2C включаем шину I2C
Рис.2
Изменения затронули и создание в системе пользователя с правами root. Что бы создать пользователя с такими правами, необходимо сделать следующее:
Открыть файл: sudo nano /etc/ssh/sshd_config
Заменить PermitRootLogin prohibit-password на PermitRootLogin yes
Перезапустить SSH: sudo /etc/init.d/ssh restart
Создать пароль root: sudo rasswd root
Рис.3
Для увеличения продолжительности «жизни» SD-карты, крайне полезным будет минимизировать процессы ее чтения-записи. Например, отключив запись различных логов. Сделать это можно в файле /etc/rsyslog.conf, закомментировав следующие строки:
module (load=”imuxsock”)
module (load=”imklog”)
module (load=”immark”)
Рис.4
Еще один совет касательно управления Raspberry Pi через терминал. Режим SSH в дистрибутивах Raspbian обычно выключен и для его активации приходится сначала подключать Raspberry Pi к монитору (телевизору) через HDMI выход, подключать клавиатуру. Что бы избавится от этого процесса, достаточно в загрузочном разделе SD-карты создать пустой файл без расширения с именем ssh. Сделать это можно даже из-под Windows в любом файловом менеджере или проводнике. Благодаря файлу ssh можно сразу подключаться к Raspberry Pi через терминал.
С учетом устранения рассмотренных выше проблем и всех предыдущих обновлений, создан новый образ SD-карты программного обеспечения системы домашней автоматизации WebHomePi. Скачать его вы сможете на странице с описанием системы. Объем архива составляет 700 Мб, распакованного дистрибутива - 2 Гб. Все последующие обновления системы будут выходить под новый образ.