Умный дом python. Онлайн конструктор веб-интерфейса для управления Raspberry Pi. Что может Raspberry и как он работает

Здравствуйте друзья

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

Вступление - пару слов о Domoticz

1. Что такое Domoticz ?
Это мультиплатформенное ПО с открытым кодом ориентированное на создание системы управления умным домом. Поддерживает большое количество различных устройств разных вендоров, в том числе работает с устройствами Xiaomi.
2. Какие устройства Xiaomi могут управлятся Domoticz?
Буду говорить только о тех устройствах, которые я проверил лично. На данный момент можно управлять шлюзом Xiaomi Gateway - и всеми устройствами которыми он управляет - кнопки, датчики открытия и движения, розетки ZigBee, выключатели Aqara. Так же поддерживаются осветительные гаджеты Yeelight - RGBW и White лампы, потолочный светильник Celling Light.
Читал про работу с bluetooth сенсорами miflora.
3. Для чего мне Domoticz ?
Система имеет более гибкие возможности по настройке сценариев - например проверку активности устройства, то чего нет в MiHome, или создание переменных - которые позволяют по одному условию - например нажатие клавиши - выполнять различные действия, в зависимости от значения переменной.
Сценарии, созданные в Domoticz не зависят от китайских серверов и наличия интернет.
Domoticz расширяет функциональность устройств - например новые действия «free fall» или «alert» для кубика, или «Long Click Release» для кнопки.
4. Если я буду использовать Domoticz то не смогу работать с MiHome?
Обе системы прекрасно живут паралелльно - функциональность MiHome - полностью сохраняется, просто часть сценариев будет жить в одной системе - часть в другой. В принципе все сценарии могут жить в Domoticz.
5. Зачем мне нужен MiHome если я буду использовать Domoticz?
По крайней мере для добавления новых устройств. Выбор стоит за вами - но мое мнение - на данный момент Domoticz лучше всего использовать как дополнение к MiHome
6. Что нужно для подключения устройств Xiaomi к Domoticz?
Сразу хочу успокоить - паяльников, программаторов и танцев с бубнами не надо. Так же вам не понадобится Linux или виртуальные машины - попробовать все можно прямо на вашей рабочей винде, а если вам понравится - то есть смысл выделить для нее отдельную аппаратную платформу, например герой сегодняшнего обзора.
Буквально после первых удачных экспериментов на своем настольном ПК, я загорелся идеей отдельной аппаратной базы для Domoticz. Выбор свой я остановил, после штудирования пабликов - на Raspberry Pi Model 3 B - компактный но мощный одноплатный компьютер на базе Soc процессора BCM2837 с 4 ядрами Cortex-A53, работающим на частоте 1.2GHz, 1GB ОЗУ и беспроводными модулями Wi-Fi и Bluetoth 4.1.

Комплект

В свой заказ я включил 4 позиции -

Скрин оплаты


Raspberry Pi Model 3 B Motherboard -
Что интересно в магазине имеется две модификации - китайская и английская. На момент покупки китайская стоила на 7 долларов дешевле, ее я и взял. Чего там китайского - честно говоря для меня загадка.
Корпус для Raspberry Pi Model 3 B -
Блок питания HN - 528i AC / DC 5V 2A -
Медные радиаторы для Raspberry Pi -
Еще для полного комплекта вам понадобится microSD карта - не менее 4 GB и HDMI кабель. У меня в загашнике был и кабель и карта на 32 ГБ, потому покупать не стал.

Что в посылке

Через положенный срок - чуть более двух недель, курьер принес посылку с моим заказом.


Рассмотрим подробнее. Блок питания с вилкой Тип С и разъемом micro-USB.


Заявленный максимальный ток - 2А при напряжении 5 В.


Тестовое включение с нагрузкой в 2А - показывает некоторое проседание напряжения, но в пределах допустимого, блок питания - более-менее честный.


Комплект из трех медных радиаторов в пакетике, для пассивного охлаждения.


Все радиаторы имеют квадтарную форму, два радиатора с штырями и длиной стороны около 12 мм и один плоский со стороной около 15 мм.


Корпус из темного пластика с выдавленным изображением ягоды малины на крышке


Размеры корпуса - примерно 90 на 65 мм




Корпус разбирается на 5 частей - держится все защелках, никаких винтов.


С аксессуарами покончено - пора переходить к самому главному
RASPBERRY PI 3 MODEL B
Raspberry Pi 3 Model B является прямым наследником Raspberry Pi 2 Model B. Плата полностью совместима с предшественником, но наделена большей производительностью и новыми средствами коммуникации:
64-х битным четырёхядерным процессором ARM Cortex-A53 с тактовой частотой 1,2 ГГц на однокристальном чипе Broadcom BCM2837; встроенными Wi-Fi 802.11n и Bluetooth 4.1.
Кроме того, процессор имеет архитектуру ARMv53, а значит вы сможете использовать любимую операционную систему: Debian Wheezy, Ubuntu Mate, Fedora Remix и даже MS Windows 10.


Технические характеристики подробнее
CPU - Broadcom BCM2837, ARM Cortex-A53 Quad Core, 1.2 GHz
Количество ядер процессора - 4
GPU - VideoCore IV 3D
RAM - 1 GB
Хранилище - microSD
Сетевые возможности
Ethernet 10/100
WiFi 2.4G 150 mb/s
Видео вывод - HDMI
USB порты - 4
Беспроводные возможности - Bluetooth
Аудио вывод - 3,5 Jack
85,6 х 53,98 х 17мм, 45 грамм


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


На одной из длинных сторон компьютера размещены порты micro USB для питания, полноразмерный порт HDMI, CSI-2 Camera port - для подключения камеры по интерфейсу MIPI, 3,5 мм аудиоразъем. Так же на верхней стороне находится модуль процессора и Ethernet/USB Hub lan9514-jzx


На торцевой стороне скомпонованы 4 USB порта и порт Ethernet


На другой стороне материнской платы находится 40 контактов ввода/вывода общего назначения (GPIO)


На второй торцевой стороны - находится DSI Display Port для подключения штатного дисплея


На нижней стороне платы находится модуль памяти LPDDR2 SDRAM - EDB8132B4PB-8D-F


И micro-SD разъем для карты памяти


Медные радиаторы ставятся на USB/Ethernet Hub и процессор с одной стороны


И на чип памяти с другой. Этот радиатор плоский - не мешает установке платы компьютера в корпус


В корпус все устанавливается отлично, винтовых соединений нет - садится на пластиковые выступы.


Все вырезы на корпусе в точности совпадает с разъемами компьютера




Для запуска нам потребуется внешний монитор (телевизор) с HDMI входом, USB клавиатура, будет удобнее если так же будет и мышка и питания. Монитор, клавиатура и мышка - понадобятся только на момент установки, дальше достаточно будет только блока питания.

Установка операционной системы

Для установки операционной системы, первым делом необходимо загрузить архив с дистрибутивами - . Пока скачивается почти полутора гигабайтный архив, загружаем утилиту для форматирования SD карты - SD Card Formatter - . Этот дистрибутив гораздо компактнее - всего 6 МБ, поэтому не теряя времени, устанвливаем программу


и, после установки, вставляем карту памяти в картридер (у вас же есть картридер не правда ли) и запускаем SD Card Formatter. В меню Options необходимо установить “FORMAT SIZE ADJUSTMENT” в “ON”


Дождавшись завершения загрузки большого дистрибутива, открываем полученных архив и распаковываем его содержимое на свежеотформатированную флешку.
Следующий шаг - первый запуск Raspberry Pi (флешку с записанным дистрибутивом, конечно устанавливаем в него). Извините за качество нескольких следующих фото - с экрана телевизора:(
При первом запуске стартует меню выбора операционной системы - что ставить, причем в списке имеется даже версия WIndows 10 для Raspberry Pi. На этом этапе можно выбрать язык (внизу экрана) - русский есть и подключится к Wi-Fi сети - кнопка Wi-Fi networks


Нужная мне опарационка - Raspbian базирующаяся на Linux Debian - представлена в двух вариантах, lite И полном, с графическим интерфейсом. Я выбрал полную версию


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


Периодически измеряя температуру во время установки, максимально что я видел - 38 градусов.
После завершения установки и перезагрузки компьютера, загружается рабочий стол Raspbian


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


Для управления Raspberry с настольного ПК, нам понадобится любая программа терминал, я использую старый добрый Putty


Имя пользователя и пароль по умолчанию - pi и raspberry . Для смены пароля воспользуйтесь командой passwd .


Рекомендую сразу установить статический IP адрес для Raspberry. Узнать текущие адреса можно при помощи команды ifconfig , где
eth0 - это Ethernet
lo - это локальный интерфейс 127.0.0.1
wlan0 - это wi-fi интерфейс

А для того что бы отредактировать файл с настройками - вводим команду
sudo nano /etc/dhcpcd.conf
и в открывшемся файле, пролистав в конец добавляем нужные настройки в зависимости от того какой интерфейс мы будем использовать.
Например мы хотим использовать адрес 192.168.0.222, маска 255.255.255.0, адрес шлюза и DNS - 192.168.0.1
Для Ethernet вставляем
interface eth0

static routers=192.168.0.1

Для wi-fi
interface wlan0
static ip_address=192.168.0.222/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1


Для выходя из редактора нажимаем ctrl+x
Для сохранения изменений - нажимаем “Y” и затем enter

Установка Domoticz
Большая часть работы по настройке уже закончена, теперь нам нужно установить систему Domoticz. Делается это одной командой -
sudo curl -L install.domoticz.com | sudo bash
Которая инициализирует процесс загрузки и установки системы


В процессе установки, инсталлятор задаст вопросы по поводу места установки и т.п. - все эти моменты я оставил по умолчанию.


После успешной установки, инсталлятор напишет адреса и порты веб интерфейса системы Domoticz


Но, для работы с шлюзом Xiaomi - нам нужна beta версия системы. Обновление до крайней версии беты производится командами
cd ~/domoticz
sudo ./updatebeta



Теперь система Domoticz доступна по веб интерфейсу:

Теперь самое время приступить к добавлению устройств Xiaomi. Но сначала -

Подготовительные работы

Итак, что нужно для того что бы начать работать с Domoticz?
Резервирование IP адресов
Первым делом необходимо, тем устройствам которыми вы планируете управлять - пока это шлюз и лампы - установить статические IP адреса. Это делается на вашем домашнем роутере, при помощи таблицы клиентов DHCP которая выглядит примерно так -


и информации из вкладок Network info плагинов управления шлюзом и лампами, где указаны MAC адреса устройств


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

Режим разработчика

Необходимо активировать режим разработчика. Для шлюза Xiaomi Gateway необходимо зайти в меню, выбрать опцию about, внизу экрана где написана версия (2.23 у меня) - нажимать на нее до тех пор пока в меню не появится две новые опции, они могут быть на китайском, в моем примере - на английском. Нажимаем на первую из двух - local area network communication protocol, в меню активируем верхний переключатель и записываем пароль шлюза.


Для ламп все проще - нужно установить приложение Yeelight, если вы его еще не поставили, и для каждого светильника - заходим в меню, режим разработчика - включить

Добавление устройств

Для добавления устройств переходим во вкладку Настройки - Оборудование
127.0.0.1:8080/#/Hardware (вместо 127.0.0.1 - адрес вашего Domoticz)
Выбираем тип устройства Xiaomi Gateway, называем его как нибудь, указываем его IP адрес, который мы зарезирвировали на роутере, прописываем пароль полученный в окне режима разработчика. Порт - у меня работает на порту 54321. В вики домотикз описано подключение с указанием порта 9898


Для добавления ламп - просто добавляем устройство YeeLight LED - адреса указывать не надо, лампы подтянутся сами.


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

Устройства

Устройств добавится НАМНОГО больше чем вы ожидаете:) Список их доступен на вкладке Настройки - устройства.
127.0.0.1:8080/#/Devices


Например каждый датчик температуры и влажности - добавится как три устройства, отдельно температура, отдельно влажность, и все вместе. Розетки - отдельно розетка (управляемое устройство) отдельно - как датчик энергопотребления. А вот шлюз - отдельно подстветка, отдельно сирена сигнализации, отдельно будильник, дверной звонок и регулятор звука. Для того чтобы добавить устройство в список используемых - в конце строки нужно нажать зеленую стрелочку. Убрать из используемых - синюю стрелочку. То что нам не нужно - не добавляем.
Добавленные к использованию устройства располагаются по нескольким вкладкам -

Переключатели

На этой вкладке собраны все управляемые устройства
127.0.0.1:8080/#/LightSwitches
Выключатели, кнопки, лампы, и прочее. Здесь мы можем включать, выключать, и делать любые действия с устройствами в ручном режиме.

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

Температура

На этой вкладке группируются климатические датчики - влажности и температуры
127.0.0.1:8080/#/Temperature
Поначалу они все называются одинаково, определить где какой - можно по их показаниям и сверке с приложением Mi Home, после чего их можно соответсвенно переназвать.

Вспомогательное

Здесь сгрупирован датчик освещенности шлюза - хотя его показания весьма странные, и счетчики потребления энергии розеток.
127.0.0.1:8080/#/Utility

Сценарии

Для создания сценариев - необходимо перейти во вкладку - Настройка - Дополнительно - События. Написание сценариев доступно в двух вариантах - блочный и скриптовый на языке lua.

Примеры сценариев

Учится работать с Domoticz лучше начинать с блоков. Тут все разбито на группы и составлять сценарии довольно просто. Пример простого сценария на блоках - включение света по обнаружению движения, и выключения через минуту после того как датчик движения перейдет в статус выключено. После составления сценария нужно назвать его, поставить галочку на опции Event active: - для включения и сохранить его.

Точно такой же сценарий на lua

Примеры использования

Больше внимания конкретным сценарям я буду уделять в других обзорах, тут в качестве примера приведу сценарий, который НЕВОЗМОЖНО реализовать в Mi Home, а именно - двухкнопочный выключатель Aqara c размыканием проводов - левая кнопка будет работать по назначению - разрывать и соединять фазу, а правая - не подключенная к линии (для питания выключателя достаточно подключения только одной из кнопок) - будет включать и выключать Yeelight лампу, которая физического соединеня с выключателем не имеет.
В данном сценарии будет проверятся состояние лампы Yeelight, значение самого выключателя On или Off - значения иметь не будет. Если состояние лампа отлично от Off - значит она работает, и будет выключена, а если выключена - то будет включена.

На этом, вводную часть по Domoticz буду завершать, если тема будет интересна - то продолжу, интересного еще очень много.

Видеоверсия обзора (2 части) -



Спасибо за внимание.

Всем доброго времени суток!

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

Поскольку речь здесь пойдет о конкретной системе домашней автоматизации, то рассказывать как и из чего я выбирал, я не буду. Моя система будет базироваться на платформе MajorDoMo (это такое программное обеспечение). Почитать, что она из себя представляет, вы можете на официальном сайте данной платформы. В качестве сервера, на который будет установлена платформа MajorDoMo я буду использовать одноплатный компьютер Raspberry pi 3 model B+ с установленной на него операционной системой Raspbian.

Итак, начнем!

У меня есть новый одноплатный компьютер Raspberry pi 3 model B+ , и мне в первую очередь нужно установить на него операционную систему .

Вообще для этого компьютера существует множество Linux-based операционных систем, но я выбрал Raspbian - официальную операционную систему для Raspberry pi. Если у вас есть такой же одноплатник, то вы можете не напрягаться и сразу поставить на него операционную систему вместе с MajorDoMo, скачав базовый образ с официального сайта MajorDoMo . Я же пойду немного более трудоемким путем, и сначала установлю себе Raspbian (так как хочу немного поближе познакомиться с Linux), а потом платформу умного дома MajorDoMo.

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

Для установки операционной системы Raspbian в одноплатный компьютер, нам понадобится:

  • MicroSD карта объемом не менее 8 Гб
  • Обычный персональный компьютер (ноутбук) на Windows
  • программа (скачать ее можно с официально сайта).
  • образ операционной системы Raspbian (я выбрал Raspbian Stretch Lite без графической оболочки, так как работать с raspberry буду только по удаленке, скачать этот образ можно так же с официального сайта)

Сам процесс установки довольно прост:

  • В обычный компьютер (ноутбук) вставляем MicroSD карту.
  • Запускаем программу Etcher.

  • Нажимаем первую кнопку Select image , после чего откроется проводник, при помощи которого мы выберем скачанный ранее образ Raspbian.
  • Далее, при помощи второй кнопки Select drive нужно будет выбрать нашу MicroSD карту, в которую будет записан образ системы. Если в компьютер воткнута только одна карта, то она будет выбрана автоматически.

  • Ну и последнее, нажимаем кнопку Flash! , после чего происходит запись образа Raspbian на карту памяти.

Все! Теперь можно достать карту памяти из компьютера и воткнуть ее в специальный слот на нижней стороне Raspberry pi.

Наш одноплатник готов к работе. Чтобы убедиться в этом, нам понадобится телевизор или монитор с HDMI входом, и HDMI кабель. Подключиться удаленно к raspberry на данном этапе не получится, так как SSH в raspbian по умолчанию отключен (с этим мы разберемся в следующей статье).

Давайте подключим HDMI кабель к HDMI выходу микрокомпьютера и HDMI входу телевизора (монитора).

Теперь включаем телевизор и подаем питание на микрокомпьютер от обычного зарядного устройства для смартфонов с Микро USB разъемом. (Желательно, чтобы это зарядное устройство было не менее чем на 2 А, на случай дальнейшего расширения одноплатника).

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

Логин по умолчанию - pi , а пароль - raspberry .

На этом на сегодня мы закончим.

В следующей статье мы рассмотрим необходимую настройку Raspbian, включим SSH и зайдем на наш одноплатный компьютер по удаленке.

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

Еще статьи:

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

  • На звук;
  • На движение;
  • На тепловую энергию.

Простые сенсоры представлены даже в ТРЦ, где они следят за автоматическим открытием дверей и выполняют другие задачи. В то, что умный дом может стать неотъемлемым элементом жизни человека может и сложно поверить, но это действительно так. Чтобы снизить свои трудозатраты и обучить приборы выполнять простые функции самостоятельно, потребуется лишь реализовать проект умный дом, способствующий всему этому.

Принцип работы умного дома

Для автоматизированной техники используется ПО, позволяющее выполнять различные задачи с ее помощью. Программы применяются и в умном доме, расширяя функционал его возможностей. Чтобы запрограммировать работу прибора, следует обладать определенными навыками. Поэтому для начинающих владельцев лучшим выбором станет использование приложений, уже адаптированных под требования обычных пользователей.

Разрабатывая умный дом, можно выбрать один из нескольких вариантов. В первом случае будет использоваться готовое решение, которое останется установить на объекте. Такой вариант требует минимум усилий, но его стоимость значительная. Позволить реализовать такой проект может не каждый. Другим решением остается понимание самой концепции, что позволит в дальнейшем создать и собрать умный дом собственноручно.

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

Процесс автоматизации умного дома

Заставить приборы, используемыми повседневно, работать по заданному сценарию легко, если использовать для этого соответствующий блок управления. Компанией Raspberry Pi был разработан миникомпьютер, который подходит для решения поставленной задачи. Устройство отличается компактностью и производительностью, а также делает автоматизацию проекта простым и понятным делом. Raspberry отличается невысокой стоимостью, особенно при сравнении с другими производителями, представившими свою продукцию на рынке. Но это не помешало компании предложить действительно качественное оснащение, ставшее популярным. Первоначально компанией разрабатывалось две вариации миникомпьютера:

  • модель А;
  • модель В.

Визуальное оформление и комплектация

Данные устройства находятся под управлением чипсета ARM11 с производительностью в 700 МГц. Различия между вариациями заключаются в объеме памяти на борту. Так изделие B оснащается планкой ОЗУ на 512 Мб, что двукратно превосходит показатели модели А с 256 Мб. В итоге компания пришла к решению выпускать обе вариации одновременно, тем более, что миникомпьютер А имел дополнительные достоинства. Он оснащался портом Ethernet, позволяющим подключиться к сети. Компания продолжила работу над модернизацией своих продуктов, переосмыслив вторую версию компьютера. Это привело к появлению улучшенного варианта В, ставшего еще более компактным, а также получившего стильный дизайн. Из конструктивных наработок стоит отметить наличие 4 разъемов USB, что в 2 раза превышает число портов данного типа для предыдущей версии.

Читайте также: Датчик протечки воды своими руками

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

Raspberry способен контролировать устройства Z-Wave, облегчающие управление домашней техникой. Установка платы RaZberry в миниПК делает блок управления производительным и надежным. Z-Wave представляет современный стандарт для умного дома, выполненного с помощью беспроводного технологического процесса. В результате владелец имеет возможность отказаться от использования дополнительных элементов и расходных материалов, снижая общие затраты. Управлять Z-Wave легко. Поэтому реализовать умный дом способен человек, не имеющий практического опыта в работе над подобными проектами.

Дополнительным преимуществом является возможность модернизировать существующую плату. Так если наблюдается снижение производительности, которой уже недостаточно для работы модулей, то Z-Wave можно модернизировать, используя вспомогательные элементы, как в случае с улучшением стандартного ПК. Выполнение апгрейда исключает необходимость полностью менять устройство.

Контроллер от компании Z-Wave

Если у пользователя недостаточно опыта или свободного времени для выполнения монтажа, то в Z-Wave могут предложить услуги по настройке или установке оборудования в любом регионе РФ. Любые вопросы можно решить с помощью обширной базы данных, находящейся в свободном доступе, либо используя техническую поддержку. Raspberry зарекомендовала себя с лучшей стороны и в сфере видеонаблюдения. Используя плату и стандартную веб-камеру пользователь получает систему, которая способна транслировать изображение в сеть, вне зависимости от расположения устройства слежения. Следить за объектом становится еще проще, так как нет нужды постоянно мониторить ситуацию. Достаточно отследить основные события в конце работы, чтобы узнать о любых происшествий, зафиксированных видеокамерой.

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

Разработать такой дом не сложно, особенно при тщательном подходе. В итоге владелец становится получателем огромной пользы благодаря своим нововведениям. Определившись в особенностях автоматизации, можно значительно сократить расход времени, а также экономить энергоресурсы и увеличить безопасность для жителей дома. Удобство определяется выбранными компонентами, на которых базируется проект, поэтому Raspberry станет надежным помощником в деле создания умного дома.

Умный дом на Raspberry Pi

Как известно, многие функции, выполняемые бытовой техникой, можно без больших усилий автоматизировать, а управлять работой оборудования в удаленном режиме становится еще проще. Далее читатель может ознакомиться с тем, как именно разработать свой проект, отталкиваясь от возможностей миникомпьютера Raspberry. Главным вопросом будет разработка контроллера, способного продуктивно отслеживать освещение в каждом отдельном помещении, а также корректировать текущие температурные показатели и другие параметры жизнеобеспечения в доме. Под управлением Raspberry Pi будет находиться и мультимедийное оборудование, а также элементы безопасности дома.

Состав блока управления

Чтобы собрать свой умный дом, для начала потребуется приобрести все компоненты, входящие в минимальную конфигурацию:

  • NodeMCU ESP-12E;
  • Объемный сенсор;
  • Сенсоры температуры;
  • Сенсоры влажности
  • модуль реле;
  • карта памяти;
  • RaspberryPi 3.

Сам процессор, а в данной конфигурации это третья модель, выбирается произвольно, поэтому другая версия будет не менее работоспособной и подойдет для умного дома. Выбор в пользу Raspberry Pi 3 вызван тем, что агрегат комплектуется модулями беспроводной связи. Заменить NodeMCU можно Arduino Nano, либо использовать вспомогательный модуль для вай-фай.

Читайте также: В скором времени Siri сможет адаптировать свои ответы к человеку

Компоненты, составляющие блок управления, следует соединить и отрегулировать. Чтобы сократить расход времени и усилий будет выгодно приобрести именно готовое решение, вроде NodeMCU. Силовое элементы выбираются в количестве, задействованном в проекте. Для представленной конфигурации потребуется 3 элемента. Конфигурация сенсоров определяется индивидуально. При желании можно отказаться от объемного сенсора, если его применение не будет иметь логической потребности.

Установка Raspbian

Чтобы справиться с установкой ОС, потребуется посетить официальную страницу компании, где можно всегда найти и загрузить самую свежую версию. Далее выполняется форматирования карты в FAT. По указанным предписаниям выполняем сборку образа под используемую ОС. Остается подключить карту к миникомпьютеру, а также присоединить клавиатуру и экран, в роли которого может выступать ТВ. Процесс загрузки обычно занимает немного времени, после чего можно приступать к настройкам.

Так можно задать собственный пароль и другие параметры. Не стоит менять текущую настройку загрузочного экрана, так как во время работы умного дома графическая часть использоваться не будет. Переходим к изменению хоста, расположенного в пункте Hostname, а также задаем SSH, что позволит с большим комфортом управлять устройством в будущем. Когда все настройки будут применены, останется только перезагрузить устройство, нажав Finish.

Корректировка WIFI

Когда устройство будет перезапущено, следует перейти к интерфейсам, где порядок действий следующий:

  • Прописываем команду sudo nano /etc/network/interfaces;
  • Находим часть iface wlan0 inet manual и заменяем эту строку на iface wlan0 inet static,
  • Не забываем указать собственный статичный айпи-адрес.

Пример проделанной работы выглядит следующим образом:

auto wlan0 allow-hotplug wlan0 iface wlan0 inet static address 192.168.1.150 netmask 255.255.255.0

gateway 192.168.1.1 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf address, netmask, gateway —

но в вашем случае настройка должна проходить под собственный роутер.

Следующим шагом будет переход к супликанту, где следует указать такую команду

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Открывшееся окно позволяет ввести все необходимые настройки для беспроводной сети.

Пример настроек:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

update_config=1

network={ ssid=» ваш SSID » psk=»ваш пароль» }

sudo ifdown wlan0

Процесс будет выполнен, после чего остается указать

sudo ifup wlan0

ожидаем завершения перезагрузки, вызванной командой

sudo reboot

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

Обновление миникомпьютера

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

  • вводим sudo apt-get update sudo apt-get upgrade;
  • проверяем текущую версию командой g++-4.9 –v и сверяемся с актуальной;
  • если используемая версия устарела, то вводим sudo apt-get install g++.

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

  • curl -sL https://deb.nodesource.com/setup_6.x;
  • sudo -E bash — sudo apt-get install -y nodejs;
  • для проверки текущей версии вводим nodejs –v.

Устанавливаем HOMEBRIDGE

Первым шагом будет установка Avahi и другие компоненты, которые потребуются для работы MDNS. Переходим в командную строку и начинаем вводить такую последовательность

  • sudo apt-get install avahi-daemon avahi-discover libnss-mdns libavahi-compat-libdnssd-dev;
  • sudo npm install -g —unsafe-perm homebridge hap-nodejs node-gyp;
  • cd /usr/lib/node_modules/homebridge/;
  • sudo npm install —unsafe-perm bignum;
  • cd /usr/lib/node_modules/hap-nodejs/node_modules/mdns;
  • sudo node-gyp BUILDENGINE=Release rebuild.

В целях проверки выполняем пробный запуск командой homebridge, а в ответ следует ожидать примерно такую последовательность:

config.json (/home/pi/.homebridge/config.json) not found.

Scan this code with your HomeKit App on your iOS device to pair with Homebridge:

│ 031-45-154 │

Homebridge is running on port 44278

Если нечто похожее удалось получить, предыдущие команды были выполнены и применены верно. Как можно видеть из примера, программе не удалось обнаружить config.json, что значит, что его созданием придется заниматься самостоятельно:

  • sudo -i;
  • mkdir /root/.homebridge;
  • touch /root/.homebridge/config.json.

Система очень простая, она позволяет управлять по сети (внешней или локальной) пинами GPIO настроенными на выход и получать их статус (то есть видеть, что включено-выключено) . Отправлять какие-либо команды, которые можно обрабатывать внутри Raspberry. Получать состояние пинов GPIO (в виде 0 или 1) настроенных на вход. Конструктор сам настроет нужные вам пины GPIO на вход или на выход.

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

Пользователю нужно только лишь собрать интерфейс в конструкторе, скачать архив с файлами и рапаковать его на своём RaspberryPi 2 .
В архиве будут лежать готовые файлы относящихся к веб-части (html, css, js) , sh-скрипт для инициализации пинов и сервер для обмена данными Home stD Rp . Установка каких-либо дополнительных программ не требуется.

Несмотря на, может быть, покажущуюся сложность, все очень просто и займёт минут 10-15.

Внешний вид

Ознакомительная часть.

Как уже говорилось в предыдущей , идея web-интерфейса достаточно проста и в чём-то даже аскетична. Связано это с тем, что мне разонравились нарисованные комнаты с лампочками и прочие полумеры, поэтому выбран стиль «пульта от телевизора».

Работает на любом устройстве - компьютере, ноутбуке, планшете, мобильнике.


Главный экран интерфейса. Помещений может быть до пяти.

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

Откроем прихожую:

Здесь могут располагаться: несколько кнопок настроенных на выход (BCM0 , BCM1 и т.д.) для включения чего-либо с возвратом статуса. То есть, если это что-то (например верхний свет) включено, то надпись подсветится.

Несколько кнопок (SENTSIG1 и т.д) для отправки любой команды в RaspberryPi.

И несколько полей (IN_BCM2 и т.д) для получения состояние пинов GPIO (в виде 0 или 1) настроенных на вход. 0 - пин подтянут к «земле», 1 - на пине есть напряжение.

В дальнейшем можно изменять названия кнопок и менять их местами.

рестик справа-сверху - закрытие панели.

Под кнопкой Info скрывается панель с информацией о статусе системы.

Надпись Connect! говорит о том, что всё хорошо, а Count update: - это просто счётчик запросов (браузер с интервалом в ~700мс запрашивает у ардуины данные) . Интервал можно менять.

Если произойдёт какая-то неполадка, тогда на экране появится сообщение ERROR , а в Info будет описана причина ошибки.

Весь алгоритм работы системы описан в конце статьи.

Конец ознакомительной части.

Конструктор

Коротенькое видео по работе с конструктором, можно посмотреть вот по этой ссылке .

«Умный дом» будет работать на любом устройстве, а вот конструировать надо на обычном компе или ноуте.

В браузере должны быть включены cookie. Впрочем они и так почти у всех включены.

Конструктор предельно прост и интуитивно понятен . Открыв в соседней вкладке вот , вы окажитесь на первой странице (всего их четыре) :

Чтоб понять и потренироваться, проделайте всё как написано ниже.

Здесь нужно выбрать количество помещений (максимум 5) . Предположим, что у нас будет два помещения (прихожая и кухня) , тогда выберите 2 и нажмите «Далее».

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

В дальнейшем Вы можете это исправить в файле index.html.

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

В поля Адрес сервера и Порт сервера ничего писать не нужно (сделано на будущее) .

Названия помещений у нас уже придуманы (прихожая и кухня) , вписываем их и нажимаем кнопку «Далее»…

Здесь Вы увидите главный экран своего будущего интерфейса:

Нажмите на кнопку «Прихожая»…

Выберите две кнопки для включения чего-либо с возвратом статуса (Количество кнопок вкл/откл) .
Одну кнопку для отправки команды (Количество кнопок отправки сигнала) .
И одно поле для приёма статуса с каких-либо пинов (Количество полей для приёма информации) .

Максимум можно выбрать по пять кнопок.

Теперь закройте панель кнопкой , проделайте то же самое с «Кухней» и нажмите кнопку «Далее»…

Появится главный экран с кнопкой «Скачать архив»:

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

Внимание! У Raspbery Pi 2 всего 28 GPIO (BCM0 - BCM27). Если Вы в конструкторе сделаете больше 27 кнопок/полей приёма, то всем лишним BCM будет присваиваться номер 28 , а у лишних полей приёма IN_BCM значение будет просто увеличиваться. Функционировать они не будут.

Подключение
Соберём простенькую схему для испытания системы:

Подключите светодиод к пину BCM 1 , через резистор 500-1000 Ом. При нажатии в интерфейсе кнопки BCM1, светик будет загораться/гаснуть, а надпись менять цвет.

Так же подключите проводок через резистор 500-1000 Ом к BCM 3 , этим проводочком можно будет тыкать на +3.3 или Ground , и в поле IN_BCM3 нолик на единичку. Таким образом можно отслеживать какие-то события.

BCM 2 используйте только на выход . Если сделали как вход (IN_BCM2) , то не пользуйтесь им или переделайте как выход (BCM2) .

Применение кнопок SENTSIG описано ниже.

HomestDRp
Распаковав архив, у Вас появится папка - mydomrpXXXXXXXXXX , переименуйте её так, чтоб получилось mydomrp и перейдите в неё.

Переименуйте файлы indexXXXXXXXXX.html в index.html и initXXXXXXXXX.sh в init.sh .

В папке mydomrp получатся файлы index.html , init.sh , jquery.js и style.css и программа homestdrp .

Откройте файл index.html и в двенадцатой строчке - var flagobnov = 0 , переправьте нолик на единичку - var flagobnov = 1 (отключено в конструкторе). Сохраните файл.

Дополнительные пояснения к файлам, даны в конце статьи.

Теперь к программе homestdrp…

homestdrp - это web-сервер, который принимает запросы от клиента, передаёт команды RaspberryPi, считывает состояние пинов GPIO и отправляет обратно информацию/статус web-клиенту. Иными словами, его назначение - это обмен данными между web-клиентом (браузер) и RaspberryPi. Работает по протоколу ТСР, а в перспективе и по UDP.

Исходник

#include #include #include #include #include #include #include #include #include #include #include #include #include char response = "HTTP/1.1 200 OK\r\n" "Content-Type: text/html; charset=UTF-8\r\n\r\n"; char response_css = "HTTP/1.1 200 OK\r\n" "Content-Type: text/css; charset=UTF-8\r\n\r\n"; char response_js = "HTTP/1.1 200 OK\r\n" "Content-Type: text/js; charset=UTF-8\r\n\r\n"; char response_text = "HTTP/1.1 200 OK\r\n" "Content-Type: text/text; charset=UTF-8\r\n\r\n"; char response_403 = "HTTP/1.1 200 OK\r\n" "Content-Type: text/html; charset=UTF-8\r\n\r\n" "403" "" "

403

\r\n"; #define BUFSIZE 1024 #define ARRAY_SIZE 90000 #define BSIZ 512 char send1_array = {0,}; char send2_array = {0,}; char patch_to_dir = {0,}; char fpfile = {0,}; char buffer = {0,}; int count_simvol = 0; unsigned int PORTW = 0; int len_dat = 0; int count_warning_log =0; void error_log(char *my_error) { char file_error_log = {0,}; snprintf(file_error_log, 26, "%s", "/var/log/ErrorhomeRp.log"); time_t t; time(&t); FILE *f; f = fopen(file_error_log, "a"); if(f == NULL) { printf("Error open /var/log/ErrorhomeRp.log.\n"); exit(0); } fprintf(f, "%s", ctime(&t)); fprintf(f, "Error %s\n\n", my_error); printf("Error %s Write to /var/log/ErrorhomestdRp.log.\n", my_error); fclose(f); exit(0); } void warning_access_log(char *war_ac) { count_warning_log++; char file_Warning_Access_log = {0,}; snprintf(file_Warning_Access_log, 31, "%s", "/var/log/Warning_AccessRp.log"); if(count_warning_log > 100) { system("gzip -f /var/log/Warning_AccessRp.log"); count_warning_log =0; time_t t; time(&t); FILE *f; f = fopen(file_Warning_Access_log, "w"); fprintf(f, "%s", ctime(&t)); fprintf(f, "%s\n\n", war_ac); printf("Write to /var/log/Warning_AccessRp.log:\n%s\n", war_ac); fclose(f); } else { time_t t; time(&t); FILE *f; f = fopen(file_Warning_Access_log, "a"); fprintf(f, "%s", ctime(&t)); fprintf(f, "%s\n\n", war_ac); printf("Write to /var/log/Warning_AccessRp.log:\n%s\n", war_ac); fclose(f); } } void read_in_file(char *name_file) { count_simvol = 0; memset(send1_array, 0, ARRAY_SIZE * sizeof(char)); memset(fpfile, 0, 64 * sizeof(char)); snprintf(fpfile, (int)strlen(patch_to_dir) + (int)strlen(name_file) + 1, "%s%s", patch_to_dir, name_file); FILE *file; file = fopen(fpfile,"r"); if(file == NULL) error_log("open file."); int ch; while(ch = getc(file), ch != EOF) { send1_array = (char) ch; count_simvol++; if(count_simvol == ARRAY_SIZE - 2) break; } fclose(file); } int main(int argc, char *argv) { if(argc != 4) error_log("not argumets."); PORTW = strtoul(argv, NULL, 0); // порт для web-сервера 80 strncpy(patch_to_dir, argv, 63); // путь к папке len_dat = atoi(argv); // кол-во символов warning_access_log("START"); ////////////////////////////////////////////// WEB /////////////////////////////////////// int one = 1, client_fd; struct sockaddr_in svr_addr, cli_addr; socklen_t sin_len = sizeof(cli_addr); int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock < 0) error_log("not socket."); setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(int)); svr_addr.sin_family = AF_INET; svr_addr.sin_addr.s_addr = INADDR_ANY; svr_addr.sin_port = htons(PORTW); if(bind(sock, (struct sockaddr *) &svr_addr, sizeof(svr_addr)) == -1) { close(sock); error_log("bind."); } if(listen(sock, 10) == -1) { close(sock); error_log("listen."); } ////////////////////////////////////////// work file ////////////////////////////////////////////////// char flin_fldb = {0,}; snprintf(flin_fldb, (int)strlen(patch_to_dir) + (int)strlen("init.sh 1 "), "%s%s", patch_to_dir, "init.sh 1"); system(flin_fldb); char bufRec = {0,}; char To_GPIO = {0,}; FILE *mf; char in_data = {0,}; char gp_file = {0,}; printf("Receive data from RPi\n\n"); for(;;) { client_fd = accept(sock, (struct sockaddr *) &cli_addr, &sin_len); if(client_fd == -1) continue; memset(buffer, 0, BUFSIZE * sizeof(char)); read(client_fd, buffer, BUFSIZE - 1); if((strstr(buffer, "file.db")) != NULL) { memset(in_data, 0, 256 * sizeof(char)); memset(bufRec, 0, BSIZ * sizeof(char)); int i = 0; int ip = 0; for(i = 0; i < len_dat; i++) { memset(gp_file, 0, 32 * sizeof(char)); snprintf(gp_file, 29, "%s%d%s", "/sys/class/gpio/gpio", i, "/value"); if(ip > 54) { in_data = "0"; ip++; in_data = " "; ip++; } else { mf = fopen (gp_file, "r"); if(mf == NULL) error_log("gpio, fail last argument."); in_data = getc(mf); ip++; in_data = " "; ip++; fclose (mf); } } printf("Data:%s\n", in_data); int len_ara = (int)strlen(in_data) + 59; snprintf(bufRec, len_ara, "%s%s", response_text, in_data); write(client_fd, bufRec, len_ara - 1); close(client_fd); } else if((strstr(buffer, "comanda")) != NULL) /////////// comand { memset(To_GPIO, 0, 64); snprintf(To_GPIO, (int)strlen(patch_to_dir) + (int)strlen("init.sh 0 ") + 4, "%sinit.sh 0 %c%c%c", patch_to_dir, buffer, buffer, buffer); system(To_GPIO); close(client_fd); warning_access_log(buffer); printf("To Gpio:%s\n", To_GPIO); } else if((strstr(buffer, "GET / ")) != NULL) { read_in_file("index.html"); int len_ara = count_simvol + (int)strlen(response) + 1; memset(send2_array, 0, len_ara * sizeof(char)); snprintf(send2_array, len_ara, "%s%s", response, send1_array); write(client_fd, send2_array, count_simvol + 59); close(client_fd); warning_access_log(buffer); printf("Trans index.html.\n\n"); } else if((strstr(buffer, "style.css")) != NULL) { read_in_file("style.css"); int len_ara = count_simvol + (int)strlen(response_css) + 1; memset(send2_array, 0, len_ara * sizeof(char)); snprintf(send2_array, len_ara, "%s%s", response_css, send1_array); write(client_fd, send2_array, count_simvol + 58); close(client_fd); warning_access_log(buffer); printf("Trans style.css.\n\n"); } else if((strstr(buffer, "jquery.js")) != NULL) { read_in_file("jquery.js"); int len_ara = count_simvol + (int)strlen(response_js) + 1; memset(send2_array, 0, len_ara * sizeof(char)); snprintf(send2_array, len_ara, "%s%s", response_js, send1_array); write(client_fd, send2_array, count_simvol + 57); close(client_fd); warning_access_log(buffer); printf("Trans jquery.js.\n\n"); } else { write(client_fd, response_403, sizeof(response_403) - 1); close(client_fd); warning_access_log(buffer); } } } //END main //gcc -Wall -Wextra -Werror homestdrp.c -o homestdrp

Теперь копируем папку mydomrp в любое удобное место на RaspberryPi, например в корень, - /mydomrp , делаем файлы homestdrp и init.sh исполняемым…

Sudo chmod +x /mydomrp/homestdrp sudo chmod +x /mydomrp/init.sh

И заспускаем программу с тремя параметрами:

Sudo /mydomrp/homestdrp 80 /mydomrp/ 6

Позже, для автоматизации запуска, добавите эту команду в файл rc.local

Nano /etc/rc.local

Вписать надо до строчки exit 0 , вот так:

... (/mydomrp/homestdrp 80 /mydomrp/ 6)& exit 0

О параметрах:

Первый параметр - TCP порт. Порт можно указать любой, однако если у Вас больше нет никаких серверов занимающих стандартный (80) порт, то укажите его, ну в ежели занят, то напишите что-нибудь другое, например 82 (заходить в «умный дом» будете так - адрес:82 ) .

Второй параметр - путь к папке /mydomrp/ (с обязательным слешом / в конце) .

Четвёртый параметр - количество данных посылаемых клиену (вдаваться в подробности этого пункта не стоит, по крайней мере сейчас) , подсмотреть эту цифру нужно в файле index.html в строке if(vars.length == 6) . В коде она находится вот здесь:

Show(); setInterval(show,680); function show(){ if(flagobnov == 1) { $.ajax({ type: "POST", url: "file.db", timeout:560, cache: false, success: function(data){ var vars = data.split(" "); if(vars.length == 6) ЭТА ЦИфРА { count_obnov++; ...

После успешного старта, homestdrp первым делом запускает скрипт init.sh (Start init.sh) , который вначале удаляет все ссылки на все GPIO, а потом создаёт нужные (Export selected pin) и задаёт им режимы (in/out) (Initialization selected pin) .


На ошибки - sh: echo: I/O error не обращайте внимания, так и должно быть. Ведь скрипт очищает GPIO которых и так нет.

Теперь открыв страничку в браузере, вы увидите в терминале различные сообщения и отправку считанных данных GPIO:

Все действия homestdrp , сопровождаются записью в файл /var/log/Warning_AccessRp.log , и туда же пишутся предупреждения.

В случае критической ошибки (например не дописать аргумент) , она будет записана в файл /var/log/ErrorhomestdRp.log и программа остановится.

Теперь, если остановить homestdrp (Ctrl + c), то интерфейс сообщит об ошибке:

Пояснения

Как пользоваться кнопкой SENTSIG x?

Открыв файл init.sh (из папки /mydomrp) , среди прочего, вы найдёте вот такие строки:

104) # reaction to the button SENTSIG1 ;; 109) # reaction to the button SENTSIG2 ;; ...

Вот сюда то (вместо # reaction to the button SENTSIG1) и нужно вписывать свои команды.
То есть, если вместо "# reaction to the button SENTSIG1" написать reboot (без #) , сохранить файл и нажать в интерфейсе кнопку SENTSIG1 , то малинка перезагрузится, или если вместо "# reaction to the button SENTSIG2" написать apt-get update && apt-get upgrade , то обновится.

В общем можно делать всё, что душе угодно.

Пояснения к файлу index.html

Для наглядности откройте файл сформированный конструктором.

SetInterval(show,680); ...

… получает ответ в текстовом виде (данные разделены пробелами) и раскладывает их по переменным.

... /* приём */ if(vars == 1) { $(".d2otkl").show(); $(".d2vkl").hide(); } else if(vars == 0) { $(".d2otkl").hide(); $(".d2vkl").show(); } $("#indata3").html("INDATA3" + " " + vars); if(vars == 1) { $(".d3otkl").show(); $(".d3vkl").hide(); } else if(vars == 0) { $(".d3otkl").hide(); $(".d3vkl").show(); } ...

Если Вы устанавливаете систему там, где качество связи оставляет желать лучшего (например на даче) , то есть пинги туда очень большие, то будут появлятся ошибки «timeout». Во избежание этого, нужно увеличить таймаут запроса:

Show(); setInterval(show,680); function show(){ if(flagobnov == 1) { $.ajax({ type: "POST", url: "file.db", timeout:560, /* эта цифра (в миллисекундах)*/ cache: false, ...

По умолчанию стоит 560мс, увеличивайте её с шагом в 100 мс и пробуйте. Соответственно нужно увеличивать и setInterval(show,680) , так же на 100 мс.

Изменять названия кнопок (D2, D3, SENTSIG1 и т.д.) можно здесь:

...

D2
D2
SENTSIG1
...

Изменять названия полей для приёма данных (IN_BCM3, IN_BCM5 и т.д.) можно здесь:

... $("#indata3").html("IN_BCM3" + " " + vars); ...

Браузер постоянно запрашивает данные и тем самым создаёт трафик. Чтобы этого избежать, можно либо закрыть страницу, либо раскомментировать этот блок:

/*slmode++; if(slmode > 70) { $(".pansl").show(300); flagobnov = 0; slmode = 0; }*/

Тогда через ~минуту, страница будет закрываться полупрозрачной панелью и обновления остановятся. Клик на панель, уберёт её и обновления возобновяться.

После внесения изменений в index.html обязательно обновите страничку в браузере .

Все вопросы и пожелания пишите в комментах!

На этом пока всё, в

Контроллеры заготовлены, датчики развешаны, провода затянуты. Дело за малым - выбрать «мозг» умного дома. Устройство, которое сможет решать ряд задач по управлению всеми умными функциями. Конечно, есть Arduino Tian или . Но есть и монстры микрокомпьютерного мира вроде чрезвычайно популярного Raspberry Pi, который способен на все, что требуется от современного интеллектуального жилища.

В чем отличия Raspberry Pi от Arduino

Прежде всего, стоит оговориться, что Arduino - это не компьютер, а Raspberry Pi - не микроконтроллер. С этими двумя терминами постоянно возникает путаница.

Это плата с электрической «обвязкой» и контроллером ATmega. Она позволяет работать с цифровыми и аналоговыми входами/выходами на очень низком уровне, не имеет операционной системы как таковой и выполняет загруженный в нее код непрерывно. Arduino потребляет смешное количество электроэнергии и может месяцами работать от блока пальчиковых батареек при условии отсутствия значительной нагрузки. Но реальной вычислительной мощности у Arduino крайне мало, а реализовывать многие функции и протоколы приходится с нуля.

Raspberry Pi - это уже целый компьютер на одной плате, имеющий на борту вместо микроконтроллера SoC (Систему на кристалле) на базе архитектуры ARM, прямо как в современных мобильных устройствах. «Малина» может работать под управлением различных дистрибутивов ОС Linux или Windows 10 IoT. Она имеет множество распаянных пинов GPIO (ввода/вывода), обращаться к которым можно при помощи готовых библиотек. И, в отличие от Arduino, программы здесь запускаются внутри ОС и работают с пинами уже через программную прослойку. В большинстве случаев это абсолютно не мешает создавать простые схемы, но иногда может оказаться критичным. Важно отметить, что у Raspberry Pi нет аналоговых пинов, зато цифровых - хоть отбавляй.

Новая облачная «Малина»
Старая «Малина»

Что умеет Raspberry Pi

Существует несколько версий компьютера: первого, второго и третьего поколения, а также мини-версия Zero. К нам на обзор попала старшая модель Raspberry Pi 3 Model B в составе набора «Малина» от наших друзей из «Амперки».

Технические характеристики модели третьего поколения:

  • 4-ядерный 64-битный процессор Broadcom BCM2837 1,2 ГГц;
  • 1ГБ ОЗУ;
  • Wi-Fi и BT LE модуль BCM43438;
  • 4 USB порта стандарта 2.0.

Это позволяет не только установить на одноплатный компьютер полноценную ОС с графическим интерфейсом, но и подключить его к FullHD монитору и использовать в качестве рабочего ПК, а также запускать на нем, например, Quake III.

Набор «Малина» от «Амперки»

Для успешной работы Raspberry Pi потребуются несколько комплектующих:

  • сама плата;
  • блок питания 5В micro-USB;
  • HDMI-кабель для подключения монитора;
  • microSD карта памяти, на которую будет установлена ОС.

Наборы от « » уже содержат все необходимое, и не только. Более старые имели индексы Y, Z в зависимости от комплектации, а в коробке можно было найти макетку, пучок кабелей, кнопки, светодиоды, резисторы и т. д. Новый набор « », который и оказался у нас на обзоре, вместо электронных компонентов включает готовую плату с множеством распаянных элементов. В отличие от предшественника, уклон здесь сделан не на работу с элементарными деталями, а в сторону интернета вещей с множеством интересных примеров.

В комплекте имеется красочное 88-страничное руководство, дающее базовое представление о самом компьютере, штатной ОС Raspbian, основах работы с командной строкой и файловой системой Linux, а также написании кода на Python. Python - относительно простой объектно-ориентированный язык программирования, который снискал немалую популярность на платформе Raspberry Pi. Руководство из набора научит основам синтаксиса и работе в IDE Thonny.

Плата с расширением для экспериментов

« » - это прокачанная версия набора « ». Если в «Матрешке» с Arduino было много очень простых экспериментов с базовыми электрическими элементами вроде конденсаторов и светодиодов, то в «Малине» главенство отдано интеграции с интернет-сервисами. Предлагаемые «Амперкой» эксперименты помогут поднять свой веб-сервер и написать небольшой сайт для управления пинами платы. Комплектная текстолитовая плата в форме облачка с кнопками и светодиодами в этом обязательно поможет.

А дальше начинается самое интересное. Вторая половина книжки подскажет, как создать бота в «ВКонтакте» и подключить его к Raspberry Pi, чтобы плате можно было отдавать команды прямо из соц. сети. А затем предлагается настроить на Raspberry торрент-качалку и написать к ней веб-интерфейс для управления, например, с телефона, подключенного к домашнему Wi-Fi.

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

Raspberry Pi для умного дома

Умельцы уже приспособили Raspberry Pi для множества задач помимо использования в качестве рабочей машины. Из него можно сделать Wi-Fi роутер или даже собственную цифровую АТС. Правда, и в том, и в другом он будет уступать специализированным аналогам, но сильная сторона «Малины» - в возможности создавать что-то свое. И нам интересно прежде всего, как его можно использовать для создания умного дома.

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

Как обычно, руководства у «Амперки» на высоте

В первом случае вся работа ложится на собственные пины Raspberry Pi. Отсутствие аналоговых пинов компенсируется наличием недорогих цифровых датчиков вроде ds18b20 или использованием специальных ADC плат расширения. Среди стандартных пинов (см. схему ниже) можно найти контакты с ШИМ, I²C, SPI и UART. Таким образом, к плате можно подключить большинство современных датчиков, а также управлять цепями через силовые ключи или блоки реле. Создавать решения для умного дома на Raspberry Pi довольно просто, тем более что в плату уже встроено множество полезных инструментов, например WiFi модуль.

Работать с сетью Интернет на Arduino куда сложнее, а вычислительные возможности микроконтроллера и вовсе скудны. Но вот парадокс: в большинстве простых задач, вроде управления светом или обогревом, применение Raspberry Pi зачастую сродни забиванию гвоздей если не микроскопом, то уж вольтметром точно. Плата Arduino потребляет меньше электроэнергии, код в ней выполняется постоянно на самом низком уровне с прямым доступом к пинам, да и стоит она в несколько раз дешевле. А сообщество энтузиастов и разработчиков ничуть не меньше.

Другое дело - сложные решения. Например, если у вас большой дом, где требуется развесить сразу ворох датчиков, а управлять хочется с планшета (или планшетов) и обогревом, и освещением, и теплыми полами, и воротами в гараже, да еще и чтобы задвижки на трубах с водой в подвале перекрывались сами, когда вы уезжаете всей семьей на выходные. Ну мало ли что. Здесь уже речь пойдет о нескольких платах, которые требуется объединить в сеть с мозговым центром. Вот тут-то Raspberry Pi и покажет себя во всей красе. Микрокомпьютер может выступать в качестве головного устройства, аккумулируя информацию с различных датчиков по всему дому и управляя всеми устройствами. Собирать и отображать информацию можно при помощи веб-сервера, а данные - хранить на SD-карте.

В таком проекте возникает вопрос синхронизации устройств. И здесь может пригодиться протокол RS-485, позволяющий по двум проводам (в идеале, с «землей») передавать сигнал на длинные расстояния, или обычная локальная сеть, благо Arduino умеет работать с простыми http-запросами, чего вполне достаточно для реализации домашней сети умного дома.

Заключение

Не стоит забывать, что Raspberry Pi - устройство для энтузиастов. И именно в этом его сильная сторона. Задавшись целью разобраться, с помощью этого микрокомпьютера можно собрать множество интересных решений, и не только для умного дома. А встроенные сетевой интерфейс и WiFi модуль позволяют легко подключить плату к локальной сети или Интернету. Удобно, что наборы вроде « » от «Амперки» уже включают все необходимое, в том числе грамотное руководство, позволяющее легко познакомиться с основами работы с Raspberry Pi.

В сложных схемах на помощь могут прийти платы-аналоги Arduino, например семейства ESP: 8266 или 32. Компактные, быстрые, со встроенным WiFi. О них мы обязательно расскажем в одном из следующих материалов.

А вы уже начали делать свой умный дом? Или только собираетесь? Поделитесь своими проектами в комментариях.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter .

Похожие статьи

© 2024 my-kross.ru. Кошки и собаки. Маленькие животные. Здоровье. Лекарство.