Оборудование        01.08.2019   

Строим недорогую систему умный дом своими руками на основе Raspberry Pi. Собираем умный дом на Raspberry Pi собственноручно

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

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

Каков принцип работы умного дома? Какие характеристики и возможности актуальны? Что учесть при настройке и подготовке к работе? Как собрать систему умный дом на базе Raspberry Pi 3? Эти и другие вопросы рассмотрим ниже.

Принцип работы

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

Первоначально компания продавала две комплектации прибора - модели А и В. Первая отличалась объем памяти размером в 256 МБ, а вторая в два раза большим ее размером.

Модель А какое-то время была в продаже, благодаря наличию доступа к глобальной сети, но после обновления до версии «В» в первом варианте отпала необходимость. Новая версия отличалась компактностью и наличием четырех портов USB.

Построение умного дома на основе Raspberry Pi 3 зависит от предпочтений владельца. Вне зависимости от этого, принцип работы остается неизменным:


При желании система умный дом может быть собрана на платформе «открытого» типа, к примеру, Fhem, openHAB, SHC. Не менее востребованный вариант - применение платформы wiBulter.

Где применяется Raspberry Pi 3 Model B

Сфера применения умного дома на базе Raspberry Pi ограничивается только познаниями установщика и пожеланиями владельца дома. Здесь возможны следующие варианты:


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

Особенности и характеристики Raspberry Pi 3 Model B

Устройство представляет собой компактный компьютер, имеющий размеры пластиковой карты банка. На чипе установлено необходимое оборудование для работы - CPU, «оперативка», HDMI-разъем, USB и композитный выход. Также имеется Ethernet-разъем, беспроводная связь и блютуз.

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

Базовая ОС для умного дома на Raspberry Pi 3 - Linux. Операционная система инсталлируется на карту памяти типа microSD, которая устанавливаемся в специальном разъеме платы.

Многие ранее работали только с Windows и бояться Linux. В этой ОС нет ничего необычного. Она проста в пользовании и отличается высоким уровнем безопасности. Если при установке допущены ошибки в настройке, их легко исправить путем восстановления образа.

Версия Raspberry Pi 3 Model - более продвинутый вариант второй модели. Новая плата отличается полной совместимостью с прошлой версией, но отличается большей производительностью и дополнительными средствами для подключения:

  1. Появилась беспроводная связь Wi-Fi серии 802.11n и блютуз 4.1.
  2. Предусмотрен процессор с четырьмя ядрами (тип - ARM Cortex-A53). Частота работы составляет 1,2 гигагерца. В основе лежит однокристальный чип типа Broadcom BCM

В CPU предусмотрена архитектура ARM v53. Это позволяет использовать любую операционную систему, к примеру, Ubuntu или Windows 10.

Применение 4-ядервного чипа гарантирует рост мощности изделия на 50-60 процентов (если сравнивать со второй модель) и на 1000 процентов в сравнении с первым Raspberry Pi.

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

Новая модель Raspberry Pi 3 наделена «оперативкой» на 1 ГБ. Часть этой памяти применяется графической подсистемой. Что касается графической части, здесь установлен 2-ядерный CPU VideoCore IV.

Система поддерживает разные стандарты типа OpenGL ES 2.0, VC-1, OpenVG, MPEG-2. Дополнительные возможности - способность кодировать, раскодировать и выводить полноэкранное видео формата HD на экран. Параметры видео - 1080p, 60 FPS, H.264.

Периферия

Неизменный плюс системы заключается в возможности подключения ТВ или дисплея с помощью HDMI-выхода. Разрешение можно менять в диапазоне от 640*350 до 1920*1200. Выход композитного типа имеет два режима работы - NTSC и PAL. Для коммутации колонок и наушников предусмотрено 3,5-миллиметровое гнездо.

Дополнительные плюсы умного дома на базе Raspberry Pi 3 - порты USB, соединенные внутренним хабом. При необходимости можно подключить мышь и клавиатуру.

На устройстве предусмотрена возможность экономии ресурсов ЦП. Для этого на Raspberry Pi 3 модели имеются 15-пнинковые разъемы. Среди них - CSI-2, используемый для подключения камеры, и DSI для коммутации экрана.

Имеется ряд интерфейсов низкого уровня, а именно питающие пины (3 и 5 Вольт, а также «земля), 40 портов для общего ввода и вывода, SPI с возможностью выбора, серийный UART и I 2 C/TWI.

Для подключения к умному дому на базе Raspberry Pi 3 модели B предусмотрен блютуз 4.1, Wi-Fi 802.1 n и Ethernet (10/100 Мбит). В последнем случае выход обустроен на обычном разъеме типа RJ-45.

Питающая часть и размеры

На изделие подается напряжение 5 В, поступающее от специального адаптера через питающие пины или microUSB-разъем. Для надежности лучше применять источник, имеющий I от 2-х ампер и более. В этом случае появляется возможность для подключения к портам USB более мощных изделий.

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

Размеры платы всего 8,5*5,4 см. В ней помещаются необходимые порты, часть из которых слегка выступает за общие габариты (на несколько миллиметров).

ПО

В умном доме на базе Raspberry Pi 3 Model B отсутствует привычный жесткий диск, поэтому «операционка» устанавливается на выносном носителе (карте памяти). Ее необходимо заранее подготовить и поставить.

При наличии нескольких карт памяти можно использовать разные образы для системы умного дома. Стоит учесть, что карта памяти в комплектацию не идет, поэтому ее придется докупать самостоятельно. Желательно брать microSD с емкостью от 4 ГБ и более.

Базовые параметры:

  • CPU: 64 бита 4 ядра. Тип - ARM Cortex-A53. Частота - 1,2 ГГц. Чип однокристаллический BCM2837;
  • Оперативка - один гигабайт LPDDR2 SDRAM;
  • цифровой HDMI-выход на видео;
  • аудио-выход на 3,5 мм (4 pin);
  • порты USB типа 2.0×4;
  • сетевое обеспечение - Wi-Fi11n, 10/100 мегабайт RJ45 Ethernet;
  • для подключения дисплея - Display Serial Interface (DSI);
  • блютуз - Bluetooth 4.1, Low Energy;
  • для подключения видеокамеры - MIPI Camera Serial Interface (CSI-2);
  • слот для MicroUSD;
  • 40 портов ввода-вывода;
  • размеры - 8,6*5,6*1,7 см.

Преимущества Raspberry Pi 3 Model B

Умный дом на базе Raspberry Pi 3 Model B имеет ряд неоспоримых плюсов:

  1. Наличие большого выбора интерфейсов, позволяющих максимально расширить возможности системы. Здесь предусмотрен блютуз, имеется Wi-Fi, порты HDMI и USB.
  2. Возможность подключения модема GSM для выхода на связь с оператором, предоставляющим услуги глобальной сети.
  3. Наличие мощного процессора с четырьмя ядрами на 1,2 ГГц, способного решать серьезные задачи.
  4. Полная совместимость новой и предыдущей версии.
  5. Компактность. Устройство имеет небольшие размеры, а весит всего 45 грамм.
  6. Доступность разгона. При желании доступно увеличение производительности системы.
  7. Легкость применения. Программирование Raspberry Pi 3 Model B можно осуществлять на разных языках.

Также стоит выделить ряд преимуществ умного дома, построенного на базе Raspberry Pi 3 Model B:

  1. Возможность обезопасить здание путем защиты от потопа, установки видеонаблюдения, создания противопожарной и охранной систем.
  2. Установка систем, повышающих комфорт. Речь идет об электрических приборах, а также специальных устройствах, управляющих шторками.
  3. Возможность инсталляции системы, обеспечивающей дополнительную экономию. Применяются сенсорные смесители, датчики движения, а также датчики, фиксирующие перемещение человека или животных.
  4. Доступность инсталляции развлекательных специальных систем. К примеру, к умному дому на Raspberry Pi 3 Model B можно подключить мультирум или домашний кинотеатр.

Для полноты картины стоит учитывать и ряд минусов, характерных для умного дома на Raspberry Pi 3 Model B:

  1. Монтаж таких устройств подойдет для крупных особняков, расположенных вне черты города и имеющих большую площадь.
  2. Для установки нужно знать особенности и правила применения каждого из элементов. В крайнем случае, под рукой желательно иметь квалифицированного специалиста, готового в любой момент помочь в интересующем вопросе.
  3. Со временем умный дом, построенный на Raspberry Pi 3 Model B, устареет. По этой причине возможны трудности с поиском необходимых компонентов (в случае поломки).

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

Модули, которые можно использовать

Для расширения функциональности умного дома на Raspberry Pi 3 Model B можно использовать дополнительные модули. Их применение расширяет число доступных опций и позволяет создать уникальную систему, обеспечивающую максимальное удобство:

  1. ВИДЕОКАМЕРА . Подключение этого модуля позволяет дополнить умный дом системой видеонаблюдения. Камера совмещается с операционной системой небольшого ПК Raspberry Pi 3 Model B. После установки устройства можно фиксировать видео в разрешении Full HD и делать фотографии с разрешением в 5 МП.
  2. ДАТЧИКИ ДЫМА И ВОДЫ . Установка этих модулей позволяет защитить имущество от пожара и протечки соответственно. Для владельцев больших домов это полезная опция, позволяющая избежать неприятностей. В случае задымления или потопа система оперативно информирует владельца о наличии проблем.
  3. ИЗМЕРИТЕЛЬ ТЕМПЕРАТУРЫ И ВЛАЖНОСТИ ВОЗДУХА . С помощью таких модулей можно превратить умный дом на базе Raspberry Pi 3 Model B в метеостанцию с подробными сведениями о ситуации за окном и внутри помещения.
  4. ДАТЧИК ДВИЖЕНИЯ . Подключение устройства позволяет автоматически включать и отключать свет в помещениях. Датчик движения полезен на улице, в гараже, в коридоре и других нежилых помещениях.
  5. МОДУЛЬ БЕСПРОВОДНОЙ СВЯЗИ . Для объединения внешних устройств и контроллера можно использовать приемник и передатчик, работающие на частоте 433 Гц. При наличии средств можно купить более прогрессивный вариант устройства - Z-Wave Fibaro Home Center

Применение указанных датчиков расширяет возможности умного дома и повышает уровень его защиты.

Первые настройки и подготовка к работе

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

После снятия верхней крышки можно получить доступ к плате. Единственная трудность заключается в подключении бокового разъема. Для удобства рекомендуется покупать угловой шлейф.

Дополнительно покупается два радиатора, предназначенные для охлаждения контроллера Ethernet и основного чипа.

Есть и другие решения.

Для первого пуска потребуется карта памяти, с установленной на нее операционной системой. Минимальный размер флешки должен быть от 4 Гб и более. Образ ОС доступен в Интернете (ссылка на скачивание ниже). Также потребуется программа Win32 Disc Imager.

После скачивания образа на ноутбук его необходимо распаковать из архива, после чего вставить карту памяти в кардридер. Далее запускается уже установленная программа Win32 Disc Imager.

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

Сборка системы умный дом

Во избежание проблем приведем подробную инструкцию по сборке системы и подготовки ее к работе. Алгоритм действий имеет следующий вид:

  1. Вход на официальный сайт устройства Raspberry Pi 3 Model B и скачивание требуемой версии ОС.
  2. Покупка и форматирование карты памяти Micro SD. Загрузка на ее образа ОС.
  3. Установка карты в разъем материнской платы для установки ОС.

На этом настройка Raspberry Pi 3 Model B завершена.

  1. Инсталляция Node JS. Прохождение этого этапа потребуется для полноценной работы NodeMCU ESP-12E.
  2. Установка Homebridge и настройка автоматического пуска с Root-правами (устройство должно запускаться после включения Raspberry Pi 3 Model B).
  3. Подключение внешних модулей по специальной схеме.

После завершения указанных работ необходимо зайти в мобильный телефон и открыть приложение Home. После этого стоит добавить платформу Raspberry Pi.

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

Это лишь часть возможностей умного дома на Raspberry Pi 3 Model B, которые получает владелец.

Перейдя посылке можно ознакомиться с полной .

Что может получиться смотрите на видео.

Итоги

Умный дом на базе Raspberry Pi 3 Model B - удобная альтернатива уже существующих и более дорогостоящих устройств. Особенность платформы заключается в компактности, возможности расширения функционала и небольшой цене. К ней можно подключить разные внешние модули, не переживая о проблемах с совместимостью.

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

Введение

Данный проект берет свое начало в 2014 году, когда передо мной встала задача обеспечить удаленное управления обогревательными приборами в своем загородном доме. Дело в том, что практически каждые выходные мы с семьей проводим на даче. И если летом мы, задержавшись по тем или иным причинам в городе, приехав в дом могли сразу лечь спать, то зимой, когда температура опускается до -30 градусов, мне приходилось тратить по 3-4 часа на протопку дома. Я видел следующие пути решения данной проблемы:

    "Неумное решение" - можно оставлять включенными обогреватели со встроенными термостатами на минимальной температуре поддержания тепла. Собственно ничего "умного" в этом решении нет, но 24/7 работающие обогревательные приборы в деревянном загородном доме не внушают доверия. Хотелось хотя бы минимального контроля над их состоянием, автоматизации и какой-нибудь обратной связи;

    GSM-розетки - данным решением пользуются мои соседи по дачному участку. Если кто-то не знаком с ними, то это просто управляемый посредством SMS команд переходник, который включается в розетку, а сам обогреватель включается в него. Не самое бюджетное решение, если нужно обеспечить обогрев целого дома - ссылка на маркет . Я вижу его как самое простое и менее трудозатратное в реализации, но имеющее минусы в процессе эксплуатации, такие как: целый ворох сим карт и работы по поддержанию их положительного баланса, так как для каждой комнаты нужен минимум один обогреватель, ограниченность и неудобства их контроля по средствам SMS;

  1. "Умный дом" - собственно решения, построенные на реализации "умного дома".

Как наиболее перспективное решение мною был выбран третий вариант и следующим вопросом на повестке дня стал - "Какую платформу для реализации выбрать?".


Уже не помню сколько я потратил время на поиски подходящих вариантов, но в итоге из бюджетных и доступных в магазинах решений я нашел системы: NooLite и CoCo (сейчас уже переименовали в Trust). При их сравнении решающую роль для меня сыграло то, что у NooLite есть открытое и задокументированное API для управления любыми его блоками. На тот момент необходимости в нем не было, но я сразу отметил, какую гибкость в дальнейшем это может дать. Да и цена у NooLite была существенно ниже. В итоге я остановил свой выбор именно на NooLite.

Реализация 1 - автоматизация NooLite

Система NooLite состоит из силовых модулей (под разные типы нагрузок), датчиков (температура, влажность, движение) и управляющего ими оборудования: радио пульты, настенные выключателей, USB-адаптеров для компьютера или Ethernet-шлюза PR1132. Все это можно использовать в различных комбинациях, соединять их между собой напрямую или управлять через usb-адаптеры или шлюз, подробнее об этом можете почитать на официальном сайте производителя.


Для моей задачи центральным элементом умного дома я выбрал Ethernet-шлюза PR1132, который будет управлять силовыми блоками и получать информацию с датчиков. Для работы Ethernet-шлюза необходимо подключить его к сети кабелем, поддержки Wi-Fi в нем нет. На тот момент у меня в доме уже была организована сеть, состоящая из WiFi-маршрутизатора Asus rt-n16 и USB--модема для доступа к интернету. Поэтому весь монтаж NooLite для меня заключался лишь в том, чтобы подключить шлюз кабелем к маршрутизатору, расположить в доме радиодатчики температуры и смонтировать силовые блоки в центральном электрощитке.


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




Схема подключения



Ethernet-шлюза PR1132 и маршрутизатор Asus rt-n16



Беспроводной датчик температуры и влажности PT111



Электрощиток и силовой блок для наружного монтажа SR211 - в дальнейшем вместо этого блока я использовал блок для внутреннего монтажа и поместил его прямо в электрощитке


Ethernet-шлюз PR1132 имеет web-интерфейс через которой осуществляется привязка/отвязка силовых блоков, датчиков и управление ими. Сам интерфейс выполнен в довольно "топорном" минималистическом стиле, но этого вполне достаточно для доступа ко всему необходимому функционалу системы:




Настройки




Управление




Страница одной группы выключателей


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


На тот момент я мог:

  • управлять обогревателями, находясь в локальной сети загородного дома, что было не очень-то и полезно, исходя из первоначальной задачи;
  • создавать таймеры включения/отключения по времени и дню недели.

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

Реализация 2 - удаленный доступ к умному дому

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


Как я упомянул в предыдущем разделе - дачная сеть имеет доступ к интернету через usb модем одного из мобильных операторов. По умолчанию мобильные модемы имеют серый ip адрес и без дополнительных ежемесячных трат белого фиксированного ip не получить. При таком сером IP не помогут и различные no-ip сервисы.


Единственный вариант, который мне удалось на тот момент придумать - VPN. На городском маршрутизаторе у меня был настроен VPN-сервер, которым я время от времени пользовался. Мне было необходимо настроить на дачном роутере VPN-клиент и прописать статические маршруты до дачной сети.




Схема подключения


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


На этом этапе я мог:

  • получить доступ к умному дому из любого места;

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

Реализация 3 - Telegram bot

С появлением ботов в Telegram я взял на заметку, что это смогло бы стать довольно удобным интерфейсом для управления умным домом и, как только у меня появилось достаточно свободного времени, я приступил к разработке на Python 3.


Бот должен был где-то находится и, как самое энергоэффективное решение, я выбрал Raspberry Pi. Хоть это и был мой первый опыт работы с ним, особых сложностей в его настройке не возникло. Образ на карту памяти, ethernet кабель в порт и по ssh - полноценный Linux.


Как я уже говорил - у NooLite есть задокументированное API, которое и пригодилось мне на данном этапе. Для начала я написал простенькую обертку для более удобного взаимодействия с API:


noolite_api.py

""" NooLite API wrapper """ import requests from requests.auth import HTTPBasicAuth from requests.exceptions import ConnectTimeout, ConnectionError import xml.etree.ElementTree as ET class NooLiteSens: """Класс хранения и обработки информации, полученной с датчиков Пока как таковой обработки нет """ def __init__(self, temperature, humidity, state): self.temperature = float(temperature.replace(",", ".")) if temperature != "-" else None self.humidity = int(humidity) if humidity != "-" else None self.state = state class NooLiteApi: """Базовый враппер для общения с NooLite""" def __init__(self, login, password, base_api_url, request_timeout=10): self.login = login self.password = password self.base_api_url = base_api_url self.request_timeout = request_timeout def get_sens_data(self): """Получение и прасинг xml данных с датчиков:return: список NooLiteSens объектов для каждого датчика:rtype: list """ response = self._send_request("{}/sens.xml".format(self.base_api_url)) sens_states = { 0: "Датчик привязан, ожидается обновление информации", 1: "Датчик не привязан", 2: "Нет сигнала с датчика", 3: "Необходимо заменить элемент питания в датчике" } response_xml_root = ET.fromstring(response.text) sens_list = for sens_number in range(4): sens_list.append(NooLiteSens(response_xml_root.find("snst{}".format(sens_number)).text, response_xml_root.find("snsh{}".format(sens_number)).text, sens_states.get(int(response_xml_root.find("snt{}".format(sens_number)).text)))) return sens_list def send_command_to_channel(self, data): """Отправка запроса к NooLite Отправляем запрос к NooLite с url параметрами из data:param data: url параметры:type data: dict:return: response """ return self._send_request("{}/api.htm".format(self.base_api_url), params=data) def _send_request(self, url, **kwargs): """Отправка запроса к NooLite и обработка возвращаемого ответа Отправка запроса к url с параметрами из kwargs:param url: url для запроса:type url: str:return: response от NooLite или исключение """ try: response = requests.get(url, auth=HTTPBasicAuth(self.login, self.password), timeout=self.request_timeout, **kwargs) except ConnectTimeout as e: print(e) raise NooLiteConnectionTimeout("Connection timeout: {}".format(self.request_timeout)) except ConnectionError as e: print(e) raise NooLiteConnectionError("Connection timeout: {}".format(self.request_timeout)) if response.status_code != 200: raise NooLiteBadResponse("Bad response: {}".format(response)) else: return response # Кастомные исключения NooLiteConnectionTimeout = type("NooLiteConnectionTimeout", (Exception,), {}) NooLiteConnectionError = type("NooLiteConnectionError", (Exception,), {}) NooLiteBadResponse = type("NooLiteBadResponse", (Exception,), {}) NooLiteBadRequestMethod = type("NooLiteBadRequestMethod", (Exception,), {})



telegram_bot.py

import os import logging import functools import yaml import requests import telnetlib from requests.exceptions import ConnectionError from telegram import ReplyKeyboardMarkup, ParseMode from telegram.ext import Updater, CommandHandler, Filters, MessageHandler, Job from noolite_api import NooLiteApi, NooLiteConnectionTimeout,\ NooLiteConnectionError, NooLiteBadResponse # Получаем конфигурационные данные из файла config = yaml.load(open("conf.yaml")) # Базовые настройка логирования logger = logging.getLogger() logger.setLevel(logging.INFO) formatter = logging.Formatter("%(asctime)s - %(filename)s:%(lineno)s - %(levelname)s - %(message)s") stream_handler = logging.StreamHandler() stream_handler.setFormatter(formatter) logger.addHandler(stream_handler) # Подключаемся к боту и NooLite updater = Updater(config["telegtam"]["token"]) noolite_api = NooLiteApi(config["noolite"]["login"], config["noolite"]["password"], config["noolite"]["api_url"]) job_queue = updater.job_queue def auth_required(func): """Декоратор аутентификации""" @functools.wraps(func) def wrapped(bot, update): if update.message.chat_id not in config["telegtam"]["authenticated_users"]: bot.sendMessage(chat_id=update.message.chat_id, text="Вы неавторизованы.\nДля авторизации отправьте /auth password.") else: return func(bot, update) return wrapped def log(func): """Декоратор логирования""" @functools.wraps(func) def wrapped(bot, update): logger.info("Received message: {}".format(update.message.text if update.message else update.callback_query.data)) func(bot, update) logger.info("Response was sent") return wrapped def start(bot, update): """Команда начала взаимодействия с ботом""" bot.sendMessage(chat_id=update.message.chat_id, text="Для начала работы нужно авторизоваться.\n" "Для авторизации отправьте /auth password.") def auth(bot, update): """Аутентификация Если пароль указан верно, то в ответ приходит клавиатура управления умным домом """ if config["telegtam"]["password"] in update.message.text: if update.message.chat_id not in config["telegtam"]["authenticated_users"]: config["telegtam"]["authenticated_users"].append(update.message.chat_id) custom_keyboard = [ ["/Включить_обогреватели", "/Выключить_обогреватели"], ["/Включить_прожектор", "/Выключить_прожектор"], ["/Температура"] ] reply_markup = ReplyKeyboardMarkup(custom_keyboard) bot.sendMessage(chat_id=update.message.chat_id, text="Вы авторизованы.", reply_markup=reply_markup) else: bot.sendMessage(chat_id=update.message.chat_id, text="Неправильный пароль.") def send_command_to_noolite(command): """Обработка запросов в NooLite. Отправляем запрос. Если возращается ошибка, то посылаем пользователю ответ об этом. """ try: logger.info("Send command to noolite: {}".format(command)) response = noolite_api.send_command_to_channel(command) except NooLiteConnectionTimeout as e: logger.info(e) return None, "*Дача недоступна!*\n`{}`".format(e) except NooLiteConnectionError as e: logger.info(e) return None, "*Ошибка!*\n`{}`".format(e) except NooLiteBadResponse as e: logger.info(e) return None, "*Не удалось сделать запрос!*\n`{}`".format(e) return response.text, None # ========================== Commands ================================ @log @auth_required def outdoor_light_on(bot, update): """Включения уличного прожектора""" response, error = send_command_to_noolite({"ch": 2, "cmd": 2}) logger.info("Send message: {}".format(response or error)) bot.sendMessage(chat_id=update.message.chat_id, text="{}".format(response or error)) @log @auth_required def outdoor_light_off(bot, update): """Выключения уличного прожектора""" response, error = send_command_to_noolite({"ch": 2, "cmd": 0}) logger.info("Send message: {}".format(response or error)) bot.sendMessage(chat_id=update.message.chat_id, text="{}".format(response or error)) @log @auth_required def heaters_on(bot, update): """Включения обогревателей""" response, error = send_command_to_noolite({"ch": 0, "cmd": 2}) logger.info("Send message: {}".format(response or error)) bot.sendMessage(chat_id=update.message.chat_id, text="{}".format(response or error)) @log @auth_required def heaters_off(bot, update): """Выключения обогревателей""" response, error = send_command_to_noolite({"ch": 0, "cmd": 0}) logger.info("Send message: {}".format(response or error)) bot.sendMessage(chat_id=update.message.chat_id, text="{}".format(response or error)) @log @auth_required def send_temperature(bot, update): """Получаем информацию с датчиков""" try: sens_list = noolite_api.get_sens_data() except NooLiteConnectionTimeout as e: logger.info(e) bot.sendMessage(chat_id=update.message.chat_id, text="*Дача недоступна!*\n`{}`".format(e), parse_mode=ParseMode.MARKDOWN) return except NooLiteBadResponse as e: logger.info(e) bot.sendMessage(chat_id=update.message.chat_id, text="*Не удалось получить данные!*\n`{}`".format(e), parse_mode=ParseMode.MARKDOWN) return except NooLiteConnectionError as e: logger.info(e) bot.sendMessage(chat_id=update.message.chat_id, text="*Ошибка подключения к noolite!*\n`{}`".format(e), parse_mode=ParseMode.MARKDOWN) return if sens_list.temperature and sens_list.humidity: message = "Температура: *{}C*\nВлажность: *{}%*".format(sens_list.temperature, sens_list.humidity) else: message = "Не удалось получить данные: {}".format(sens_list.state) logger.info("Send message: {}".format(message)) bot.sendMessage(chat_id=update.message.chat_id, text=message, parse_mode=ParseMode.MARKDOWN) @log @auth_required def send_log(bot, update): """Получение лога для отладки""" bot.sendDocument(chat_id=update.message.chat_id, document=open("/var/log/telegram_bot/err.log", "rb")) @log def unknown(bot, update): """Неизвестная команда""" bot.sendMessage(chat_id=update.message.chat_id, text="Я не знаю такой команды") def power_restore(bot, job): """Выполняется один раз при запуске бота""" for user_chat in config["telegtam"]["authenticated_users"]: bot.sendMessage(user_chat, "Включение после перезагрузки") def check_temperature(bot, job): """Периодическая проверка температуры с датчиков Eсли температура ниже, чем установленный минимум - посылаем уведомление зарегистрированным пользователям """ try: sens_list = noolite_api.get_sens_data() except NooLiteConnectionTimeout as e: print(e) return except NooLiteConnectionError as e: print(e) return except NooLiteBadResponse as e: print(e) return if sens_list.temperature and \ sens_list.temperature < config["noolite"]["temperature_alert"]: for user_chat in config["telegtam"]["authenticated_users"]: bot.sendMessage(chat_id=user_chat, parse_mode=ParseMode.MARKDOWN, text="*Температура ниже {} градусов: {}!*".format(config["noolite"]["temperature_alert"], sens_list.temperature)) def check_internet_connection(bot, job): """Периодическая проверка доступа в интернет Если доступа в интрнет нет и попытки его проверки исчерпаны - то посылаем по telnet команду роутеру для его перезапуска. Если доступ в интернет после этого не появился - перезагружаем Raspberry Pi """ try: requests.get("http://ya.ru") config["noolite"]["internet_connection_counter"] = 0 except ConnectionError: if config["noolite"]["internet_connection_counter"] == 2: tn = telnetlib.Telnet(config["router"]["ip"]) tn.read_until(b"login: ") tn.write(config["router"]["login"].encode("ascii") + b"\n") tn.read_until(b"Password: ") tn.write(config["router"]["password"].encode("ascii") + b"\n") tn.write(b"reboot\n") elif config["noolite"]["internet_connection_counter"] == 4: os.system("sudo reboot") else: config["noolite"]["internet_connection_counter"] += 1 dispatcher = updater.dispatcher dispatcher.add_handler(CommandHandler("start", start)) dispatcher.add_handler(CommandHandler("auth", auth)) dispatcher.add_handler(CommandHandler("Температура", send_temperature)) dispatcher.add_handler(CommandHandler("Включить_обогреватели", heaters_on)) dispatcher.add_handler(CommandHandler("Выключить_обогреватели", heaters_off)) dispatcher.add_handler(CommandHandler("Включить_прожектор", outdoor_light_on)) dispatcher.add_handler(CommandHandler("Выключить_прожектор", outdoor_light_off)) dispatcher.add_handler(CommandHandler("log", send_log)) dispatcher.add_handler(MessageHandler(, unknown)) job_queue.put(Job(check_internet_connection, 60*5), next_t=60*5) job_queue.put(Job(check_temperature, 60*30), next_t=60*6) job_queue.put(Job(power_restore, 60, repeat=False)) updater.start_polling(bootstrap_retries=-1)


Данный бот запускается на Raspberry Pi под Supervisor, который контролирует его состояние и запускает его при перезагрузке.




Схема работы бота


При запуске бот:

  • посылает зарегистрированным пользователям сообщение о том, что он включился и готов к работе;
  • мониторит подключение к интернету. В условии работы через мобильный интернет были случаи, когда он пропадал. Поэтому была добавлена периодическая проверка доступности подключения. Если заданное количество проверок заканчивается неудачей, то сначала скрипт перезагружает через telnet маршрутизатор, а потом, если это не помогло, и сам Raspberry Pi;
  • мониторит температуру внутри помещения и отправляет пользователю уведомление, если она опустилась ниже заданного порога;
  • выполняет команды от зарегистрированных пользователей.

Команды жестко прописаны в коде и включают в себя:

  • включение/выключение обогревателей;
  • включение/выключение уличного прожектора;
  • получение температуры с датчиков;
  • получение файла логов для дебага.

Пример общения с ботом:



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


В итоге я могу:

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

Данная реализация на все 100% решила первоначальную задачу, была удобной и интуитивно понятной в использовании.

Заключение

Бюджет (по текущим ценам):

  • NooLite Ethernet-шлюз - 6.000 рублей
  • NooLite силовой датчик для управления нагрузкой - 1.500 рублей
  • NooLite датчик температуры и влажности - 3.000 рублей (без влажности дешевле)
  • Raspberry Pi - 4.000 рублей

На выходе у меня получилось довольно гибкая бюджетная система, которую можно легко расширять по мере необходимости (NooLite шлюз поддерживает до 32 каналов). Я и члены семьи могут с легкостью пользоваться ей без необходимости выполнять какие-то дополнительные действия: зашел в телеграмм - проверил температуру - включил обогреватели.


На самом деле данная реализация не последняя. Буквально неделю назад я подключил всю эту систему к Apple HomeKit, что позволило добавить управление через приложение для iOS "Дом" и соответствующую интеграцию с Siri для голосового управления. Но процесс реализации тянет на отдельную статью. Если сообществу будет интересна данная тема, то готов в ближайшее время подготовить еще одну статью.



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

После того, как я испытал возможности системы управления умным домом Domoticz на своем настольном компьютере и убедился в том, что она отлично дополняет, а где и заменяет Mi Home - штатную систему Xiaomi - я решил приобрести для нее отдельный одноплатный компьютер - Raspberry Pi. И в этом обзоре я расскажу про свой опыт.

Вступление

Для тех кто не читал мой первый обзор про Domoticz - . Буквально после первых удачных экспериментов, я загорелся идеей отдельной аппаратной базы для нее, в качестве рабочей платформы настольный ПК не подходит. Выбор свой я остановил, после штудирования пабликов - на Raspberry Pi Model 3 B - компактный но мощный одноплатный компьютер на базе Soc процессора BCM2837 с 4 ядрами Cortex-A53, работающим на частоте 1.2GHz, 1GB ОЗУ и беспроводными модулями Wi-Fi и Bluetoth 4.1.

Комплект

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

Что интересно в магазине имеется две модификации - китайская и английская. На момент покупки китайская стоила на 7 долларов дешевле, ее я и взял. Чего там китайского - честно говоря для меня загадка.

Медные радиаторы для 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 .


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 вставляем

static ip_address=192.168.0.222/24
static routers=192.168.0.1

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 - про это я уже рассказывал в своем предыдущем обзоре про нее.


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

Видеоверсия обзора:

Все мои обзоры устройств Xiaomi в хронологическом порядке - Список

Надеюсь обзор был полезен и интересен, спасибо за внимание.

Умный дом на Raspberry Pi своими руками

1.4 (28.89%) 9 votes

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

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

Если вы хотите минимизировать прилагаемые усилия при выполнении бытовых занятий, таких как стирка, готовка или уборка, проект «Умный дом» просто создан для вас.

Проект «Умный дом»

Концепция работы «Умного дома»

Конечно, для каждого автоматизированного и автоматического оборудования должна быть программа. Именно от неё будет зависеть успешность вашего «Умного дома». Такие программы адаптации оборудования требуют некоторых знаний и опыта в сферах программирования и электроники. Однако если вы новичок в этом, малознакомы с программированием и не обладаете необходимым опытом работы с электроникой, мы рекомендуем вам использовать программы, максимально адаптированные для начинающих пользователей.

Создание «Умного дома» без собственных усилий подразумевает собой крупные вложения средств, которые на данный момент может позволить себе далеко не каждый. Но если понять концепцию работы устройств, можно с лёгкостью собрать такой своими руками.

Raspberry Pi или автоматизация «Умного дома»

Raspberry Pi - компания, создавшая миникомпьютер Raspberry. Это устройство максимально упрощает автоматизацию «Умного дома» и обладает крайне привлекательной ценой по сравнению с конкурентами, имеющими менее качественное оборудование.

Изначально было придумано 2 комплектации мини-компьютера Raspberry Pi:

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

Внешний вид Raspberry Pi model B (с установленной flash-картой)

Обе версии работают на основе процессора ARM11 с тактовой частотой 700 МГц, но имеют различную память. Как правило, модель B обладает количеством оперативной памяти, в 2 раза превышающей модель А. Следовательно, А - 256 Мб, а В - 512 Мб. Поэтому модель А не была снята с международного производства, так как обладала ещё одним весомым преимуществом. В ней присутствовала поддержка порта Ethernet, позволяющая выход в интернет. Также компания Raspberry Pi не остановилась на достигнутом и позже выпустила обновлённую версию модели В. Улучшенный вариант обладал более компактным дизайном, а также включал в себя 4 USB-порта, что в 2 раза превышает их количество в предшествующей модели.

Данный девайс прекрасно найдёт себя в вашей разработке проекта «Умный дом». За относительно невысокую стоимость этот компьютер Raspberry Pi может выполнять самые разнообразные задачи, связанные с автоматизацией проекта «Умный дом».

Мини-компьютер Raspberry может управлять , которое облегчит автоматизацию вашего дома или квартиры. С помощью платы RaZberry от фирмы Z-Wave ваш мини-компьютер воистину станет мозгом для всей вашей системы. Z-Wave являет собой стандарт беспроводной автоматизации. Он не требует проведения дополнительных проводов или ремонтных работ, что в лучшую сторону сказывается на экономике вашего проекта. Также Wave невероятно прост в установке. Это позволяет самостоятельно справиться с задачей даже новичку в сфере электроники. Появилась нехватка производительности? Не беспокойтесь, производительность Z-Wave можно наращивать благодаря установке дополнительных устройств, как и в обычном компьютере. Смена комплектующих или их апгрейд послужит улучшению работы устройства. Также Wave регулярно проводит доступные тренинги и обучения для опытных монтажников по темам установки и адаптации под определённые системы Z-Wave.

Контроллер Z-Wave Fibaro Home Center 2

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

Также с помощью системы Raspberry Pi вы можете соорудить из обычной веб-камеры и одноплатного компьютера собственную настоящую систему видеонаблюдения и наблюдать за любым объектом через интернет, где бы ни находилась ваша камера.

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

С помощью системы Raspberry Pi и веб-камеры можно вести видеонаблюдение

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

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

Сделать свой дом максимально удобным, приспособить его под свой образ жизни теперь стало возможным с помощью «Умных домов» и мини-компьютеров Raspberry Pi.

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

Система программируется и настраивается владельцем жилища под свои нужды и в соответствии с его представлением о функциональности.

Система «Умный дом» на базе Raspberry Pi 3 хороша тем, что стоимость ее невелика, а функциональность можно наращивать постепенно.

Платформа Raspberry Pi 3 – главные особенности

В феврале 2016 компания Raspberry Pi выпустила в широкую продажу новую версию микрокомпьютера Raspberry Pi 3, модель «В».

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

Структурная схема системы «Умный Дом» на базе Raspberry Pi 3

Построенный на базе Raspberry Pi 3 «Умный дом» позволяет не только взять под контроль и управление практически все коммуникации жилища, но и произвольно наращивать функциональность в процессе эксплуатации.

Основные характеристики Raspberry Pi 3

Новый микрокомпьютер получил:

  1. процессор ARM Cortex-A53;
  2. оперативную память в один гигабайт;
  3. встроенные WiFi и Bluetooth 4.1;
  4. полную совместимость с предыдущими моделями.

Процессор имеет четыре ядра, разрядность 64 бита, частоту 1.2 ГГц, что в 10 раз превышает производительность первой модели.

WiFi стандарта 802.11b/g/n с возможностью передачи данных со скоростью до 600 Мб/сек на частоте 5.0 ГГц.

По заказу «Raspberry Pi» компания «Broadcom» разработала и выпустила новый монокристалл BCM2837 с архитектурой, аналогичной кристаллам BCM2835 и BCM2836, что обеспечило совместимость с предыдущими моделями.

Одноплатные компьютеры Raspberry Pi 3 и Arduino – главные отличия

Сравнение этих платформ не совсем корректно. Прежде всего потому, что Raspberry Pi 3 по своему наполнению является компьютером с полным набором функций, а Arduino отнести к классу компьютеров достаточно проблематично.

Raspberry Pi 3 оснащен мощным четырёхъядерным процессором, частота которого в 40 раз выше тактовой частоты Arduino. Оперативная память Raspberry Pi 3 имеет емкость, в 128000 раз превышающую емкость оперативной памяти Arduino.

Но эти показатели говорят не о том, что Raspberry Pi 3 превосходит Arduino, а о том, что эти устройства предназначены для решения разных задач.

Задачи, решаемые Raspberry Pi 3 с помощью ПО, не под силу решать простому Arduino. Но он превосходно справляется с задачами сугубо аппаратных проектов, со считыванием и обработкой аналоговых сигналов.

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

Реализация проекта «Умный дом» на базе Raspberry Pi 3

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

Периферийные устройства «умного дома»

Для реализации проекта Raspberry Pi 3 «Умный дом» понадобятся такие модули:

  • модуль ;
  • модуль поддержки беспроводной связи;
  • датчик измерения влажности и ;

Кроме этого, для системы Raspberry Pi 3 «Умный дом» потребуются карта памяти MicroSD емкостью 32 ГГб, блок питания, пятивольтовое реле.

Одним из важнейших дополнительных устройств для реализации проекта Raspberry «Умный дом» является модуль NodeMCU ESP-12E с радиоинтерфейсом Wi-Fi и интегрированной в плату модуля микрополосковой антенной.

Операционные системы

Как и любой компьютер, Raspberry Pi 3 без программного обеспечения представляет собой просто бесполезный набор электронных элементов.

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

Этот процесс выполняется в несколько этапов. Вначале необходимо выбрать и загрузить для Raspberry Pi 3 «Умный дом» iOS – мобильную операционную систему.

В качестве носителя для ОС и размещения на нем программ в Raspberry Pi 3 используется микрокарта памяти SD. Для установки ОС можно выбрать один из трех способов:

  1. купить SD-карту, на которую уже была предварительно установлена ОС;
  2. загрузить на карту памяти NOOBS (New Out Of the Box Software) – установщик ОС, и затем устанавливать ОС прямо с карты;
  3. монтировать образ ОС прямо на карту SD.

Для системы Raspberry «Умный дом» разработано более 40 различных ОС. Чаще всего используются ОС Raspbian OS, Ubuntu Mate, Windows 10 IoT, RICS OS.

Наиболее адаптированной под аппаратные средства Raspberry Pi 3 явл

яется операционная система Raspbian OS, устанавливаемая с загруженного на SD-карту установщика NOOBS.

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

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

Для самого первого запуска понадобятся:

  • микрокарта SD, емкостью не менее четырех гигабайт (предпочтительно 32 гигабайта);
  • блок питания на пять вольт;
  • кабель с разъемами HDMI;
  • монитор с HDMI-подключением;
  • клавиатура и мышь с USB-подключением;
  • компьютер с разъемом для SD-карты;
  • подключение к интернету – Ethernet.

Следующие действия таковы:

  1. форматирование SD-карты;
  2. скачивание архива установщика NOOBS и распаковка его в корневую директорию SD-карты;
  3. карта вставляется в слот микрокомпьютера, подключаются все устройства, включается блок питания;
  4. при первом запуске из списка выбирается нужная ОС и запускается ее установка;
  5. по завершении установки установить и настроить программы Raspberry Pi 3 «Умный дом».

Установка сервера Homebridge и настройка модулей

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

Сервер Homebridge выполняет роль своеобразного мостика между всеми устройствами дома и Home Kit. Этот сервер эмулирует Home Kit API.

Серверу доступны сотни самых различных плагинов, благодаря которым стало возможным осуществлять управление всеми домашними устройствами, которые даже конструктивно не предназначены для работы с Home Kit. Главное преимущество Homebridge то, что он может работать на любом компьютере, в том числе и на Raspberry Pi 3.

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

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

Заключение

Система «Умный дом» на базе Raspberry Pi 3, созданная своими руками, обойдется в разы дешевле аналогичной готовой системы, а функциональность ее можно наращивать практически неограниченно.

Видео: Raspberry Pi Model 3 B — устанавливаем систему управления умным домом Domoticz