ЧЕШСКИЙ УНИВЕРСИТЕТ ТЕХНИЧЕСКОГО ОБРАЗОВАНИЯ В ПРАГЕ, МАШИНОСТРОИТЕЛЬНЫЙ ФАКУЛЬТЕТ
1 ЧЕШСКИЙ УНИВЕРСИТЕТ ТЕХНИЧЕСКОГО ОБРАЗОВАНИЯ В ПРАГЕ ФАКУЛЬТЕТ МЕХАНИЧЕСКОЙ БЫТОВОЙ АВТОМАТИЗАЦИИ С RASPBERRY PI 2017 MAREK MACH
3 Благодарности Я хотел бы поблагодарить моего руководителя, Ing. Сирилу Освальду, который охотно консультировал меня в выполнении поставленных задач и внес идеи дальнейших возможных разработок, которые привели бы к успешному выполнению задачи. Я также благодарю Павла и Йитку за корректуру работы и Ондржея за ценные комментарии.
4 Декларация Заявляю, что разработал данную бакалаврскую диссертацию самостоятельно, с пониманием того, что ее результаты могут быть использованы в дальнейшем по усмотрению руководителя бакалаврской диссертации как ее соавтора. Я также даю согласие на возможную публикацию результатов бакалаврской диссертации или ее существенной части, если я указан в качестве ее соавтора. В Праге на. Подпись
5 Аннотационный лист Название работы: Домашняя автоматизация с Raspberry Pi Ключевые слова: Актуаторы; Автоматизация; Умный дом; Облако; Интернет вещей; питон; Raspberry Pi; датчики; сервер; Умный дом Аннотация: Целью данной работы является представление возможностей средств, с помощью которых может быть создана система домашней автоматизации, и предложение конкретного решения по реализации. В первой части бакалаврской работы содержится исследование на тему возможностей средств для создания автоматического домашнего хозяйства, особенно в области сообщения об условиях, обнаруженных с помощью датчиков, и возможного уведомления о необычных или опасных условиях. Вторая часть работы содержит описание реализации домашнего отчетного устройства с использованием Raspberry Pi, собственного облачного сервера и простого сайта для считывания данных с датчиков. Аннотация: Цель этой диссертации — представить возможности создания системы домашней автоматизации и предложить конкретное решение для реализации. Эта бакалаврская работа в первомчасть содержит исследование возможностей средств для создания автоматизированного домашнего хозяйства, особенно в области сообщения о состояниях, обнаруженных датчиками, и возможного предупреждения о необычных или опасных ситуациях. Во второй части дипломной работы есть описание реализации отечественного отчетного устройства с использованием Raspberry Pi, частного облачного сервера и простой веб-страницы для считывания данных датчиков.
6 Содержание 1. Введение Предисловие Выбор темы Цель работы Теоретическая часть Аппаратура Модули управления Датчики Приводы Программное обеспечение Операционная система Сервер Язык программирования Практическая часть Аппаратура Блок управления Датчики Аксессуары Комплектация датчиков Программное обеспечение Операционная система Язык вещей Сервер Язык программирования Программирование система управления Реализована процедура подготовки операционной системы Подготовка программного обеспечения для связи с датчиками Запуск собственного сервера Программирование полезных расширений Заключение практической части Заключение Литература I. Приложения I.I. Перезапуск программы I.II. Отправка смс I.III. Чтение датчиков с записью в базу данных
7 Список изображений Рисунок 1 Arduino [10]. 7 Рис. 2. Raspberry Pi [16]. 8 Рис. 3 Intel Edison [17]. 9 Рис. 4 Периферийный модуль Tecomat Foxtrot [20] Рис. 5 Беспроводной ПЛК-приемник [25] Рис. 6 Реле управления [27] Рис. 7 Физический переключатель беспроводной связи [30] Рис. 8 Активный зуммер [32] Рис. 9 Развертывание головки беспроводного клапана [35] Рис. 10 Умный заголовок [36] Рисунок 11 Сравнение моделей Raspberry [43] Рисунок 12 Радиомодуль [60] Рисунок 13 Датчик температуры PrivateEyePi [61] Рисунок 14 Датчик Wireless Things [62] Рисунок 15 Принцип работы магнитного датчика [49] Рисунок 16 Магнитный датчик [ 50] Рисунок 17 Датчик затопления [51] Рисунок 18 Фрагмент батарейного отсека [52] Рисунок 19 Деталь датчика в сборе [53] Рисунок 20 СхемаLanguage of Things [54] Рисунок 21 Пакеты данных Рисунок 22 Пользовательская сборка системы Рисунок 23 Установленный магнитный датчик Рисунок 24 Установленный датчик затопления Рисунок 25 Установленный датчик температуры Список таблиц Таблица 1 Сравнение модулей управления Таблица 2 Образцы пакетов
8 Список сокращений IoT Интернет вещей NB-IoT NarrowBand IoT SD Secure Digital RAM Оперативная память Wi-Fi Wireless Fidelity GPS Система глобального позиционирования HDMI Мультимедийный интерфейс высокой четкости USB Универсальная последовательная шина ПЛК Программируемый автомат CIB Common Установочная шина ПК Персональный компьютер GPIO Ввод/вывод общего назначения LTE Long Term Evolution UART Универсальный синхронный/асинхронный приемник и передатчик AES Расширенное шифрование Стандарт SQL Язык структурированных запросов Жесткий диск Жесткий диск OTP Одноразовая программируемая SoC Система на кристалле API Интерфейс прикладного программирования 3
9 1. Введение 1.1. ПРЕДИСЛОВИЕ Эпоха Интернета вещей медленно, но верно наступает [1]. Интернет вещей (IoT) — это термин для подключения устройств, которым не требуется подключение к сети для их работы, к Интернету. Обычный холодильник тогда после подключения датчиков и подключения к вышестоящему блоку, подключенному к интернет-сети, становится автономно функционирующим устройством, которое распознает, какие продукты заканчиваются, и способно заказать их даже с доставкой до двери. Таким образом, Интернет вещей стал тенденцией, о которой говорят уже давно, а производители до сих пор обещают полностью автономные дома (одна из первых попыток построить такой дом — Push Button Manor 50-х годов [2]). Однако, судя по развитию этой тенденции, кажется, что изменения не произойдут внезапно с доступными технологиями, а постепенно проникнут в наши дома по мере того, как эти технологии станут более доступными и широко распространенными. [3] В основномумные дома — это датчики, подключенные к устройству оценки, и исполнительные устройства, выполняющие определенные действия по команде управляющего устройства. Системы «умный дом» делятся, например, на требовательные, изготавливаемые по индивидуальному заказу системы и, как правило, на модульные системы. Индивидуальные системы предназначены для комплексного решения проблемы обнаружения и управления всем домом. Недостатком этой системы является, конечно, относительно высокая цена, но и то, что это будет, скорее всего, сильно закрытая система, а не открытый и расширяемый продукт, который продолжал бы расширяться в будущем продуктами и модулями от другие производители. Продукты Kit построены на беспроводных датчиках и актуаторах, способных превратить даже обычную квартиру или дом в умную версию. Они не обладают сложностью вышеперечисленных систем и обычно не допускают установки оборудования непосредственно в дом, а размещаются на внутреннем оборудовании или внутри него. Преимуществом является относительно быстрая реализация без вмешательства в проводку или строительные элементы. ВЫБОР ТЕМЫ На выбор темы большое влияние оказала собственная потребность в тех или иных элементах умного дома, которую невозможно было удовлетворить доступной на рынке продукцией . Большинство из них довольно дорогие, а возможность индивидуального расширения равна нулю. В то же время возможности и преимущества, вытекающие из такого домохозяйства, значительны и ограничиваются практически только собственным представлением о том, как их использовать. Кто бы не хотел иметь возможность отключить подачу воды в тот момент, когда датчик затопления сообщает об утечке воды? Возможность вызвать пожарных при выходе из дома и обнаружении дыма? Разбудить спящих людей утечкой газа? Сообщить об открытой двери гаража? Закрыть кран отопления при открытых окнах? Этого и многого другого можно добиться с помощью простых датчиков, оценочного компьютера и подключения к Интернету. Но рука об руку с идеями о том, что можно решить таким образом, пришла экономическая идея.вопрос: Если это нужно мне, то, наверное, и кому-то еще. Так родился проект, который мог бы помочь людям построить такую систему самостоятельно. Конечно, это осознавал не только я, но и другие люди и компании. С 2016 года NB-IoT 1 тестируется в Чехии, поэтому даже корпоративный оператор готовится создать мобильную сеть для IoT [4]. 1 Подробнее в главе Датчики мобильной сети 4
10 Не только корпоративные игроки, но и множество мелких производителей и бизнесов пытаются пробиться на этот свежий рынок, с которым, с моей точки зрения, прослеживается явная аналогия с молодым интернет-рынком девяностых годов. Я бы сказал, что сейчас идеальное время, когда на рынке еще не доминируют доминирующие игроки, ни у кого нет явного технологического преимущества, время благоприятствует открытому решению и появляются сервисы, которые можно подключить к IoT (например, доставка еды на дом и т.д.) ЦЕЛЬ РАБОТЫ Основная цель данной работы – дать представление о возможностях технологий IoT, особенно в области датчиков и их оценки. Диссертация призвана предоставить читателю всесторонний обзор наиболее важных решений в данной области с описанием преимуществ и недостатков отдельных продуктов. Работа в основном касается решений, которые могут быть реализованы пользователем, и не касается сложных сложных систем. Частичной целью является разработка собственного решения с использованием выбранных продуктов из области Интернета вещей, в частности ввод в эксплуатацию датчиков и их подключение к блоку управления. Запуск сервера и базы данных на блоке управления и, таким образом, возможность чтения данных с помощью веб-страницы. 5
11 2. Теоретическая часть 2.1. АППАРАТНОЕ ОБЕСПЕЧЕНИЕ Модули управления Процессорный блок является мозгом всей автоматизированной домашней системы. Обрабатывает данные с помощью заранее подготовленной программы, оценивает данные, полученные от датчиков через приемник, а также может через различные периферийные устройства, на основе программыили команда, чтобы выполнить действие. Блок обработки также после подключения соответствующих периферийных устройств, таких как клавиатура, экран и т. д., служит в качестве пользовательского входа в систему. Для некоторых типов процессоров возможно другое использование, и тогда устройство может служить персональным компьютером или мультимедийным центром. Одноплатные компьютеры Одноплатные компьютеры — это компьютеры на одной, обычно относительно небольшой печатной плате. На этой плате расположены все необходимые компоненты от процессора, оперативной и флэш-памяти до нескольких интерфейсов ввода и вывода. Одноплатные компьютеры обычно не имеют интерфейса для жесткого диска и в качестве памяти используют SD-карту. Преимущество этого решения в области памяти заключается в компактных размерах, но возникают проблемы, связанные с работой с SD-картой. SD-карты имеют ограниченное время записи, и эту проблему потом нужно решать (например, программно, используя часть оперативной памяти, или аппаратно, подключая жесткий диск). Более подробно я разберу эту проблему во второй части диссертации. Эти компьютеры в основном работают под управлением операционной системы Linux, что является значительным преимуществом для индивидуального решения для умного дома, тем более что это открытая и бесплатная система со значительной поддержкой сообщества. Еще одним преимуществом является относительно низкое энергопотребление и выгодная цена. Среди недостатков — меньшая вычислительная мощность, чувствительность к перегреву (не содержат активного охлаждения) и непригодность в качестве средства разработки. Эффективнее создавать программы, например, на более мощных стационарных компьютерах, а просто заливать код на одноплатный компьютер. На рынке есть много одноплатных компьютеров, и я представлю три самых важных: Arduino, Raspberry Pi и Intel Edison. Примерная цена одноплатных компьютеров составляет сотни крон. Цена комплексного решения составляет несколько десятков тысяч. [5] [6] Arduino Arduino — это не компьютерв прямом смысле этого слова, но это микроконтроллер. Таким образом, он больше подходит для более простых задач. Он идеально подходит для более простых задач управления и регулирования. Если бы целью было только считывание данных с датчиков и их запись куда-то, это, вероятно, был бы лучшим кандидатом. Об этом говорит удивительная простота и надежность, поддержка большого сообщества. К Arduino также можно подключить большое количество периферийных устройств (так называемых шилдов), таких как Ethernet, Wi-Fi, GPS или интерфейс управления двигателем. Как уже упоминалось, это микроконтроллер, а не полноценный компьютер. Код разрабатывается на другом устройстве и загружается только в память Arduino (чаще всего в виде бесконечного цикла). Поэтому его нельзя использовать вместо таблицы 6
.
12 компьютеров или как домашний мультимедийный центр. Более сложные приложения также могут достичь пределов возможностей этого устройства. Программы для Arduino пишутся на языке Arduino, основанном на языке Wiring, основанном на C/C++. Arduino разработан с нуля как учебное пособие, поэтому он имеет простую и чистую среду программирования, которая является мультиплатформенной, поэтому можно разрабатывать не только в Windows, но и в Linux или Mackintosh OSX. [7] [8] [9] Рисунок 1 Arduino [10] Raspberry Pi Raspberry уже является полноценным компьютером. Поэтому на него можно устанавливать различные операционные системы, но чаще всего он работает под управлением Raspbian, производной от Linux. [11] Еще одним преимуществом является возможность выбора подходящего устройства из всего ассортимента, от самого маленького и дешевого варианта Zero до самого мощного и дорогого варианта 3. Производительность этого одноплатного компьютера уже, особенно в варианте 3, близка к более слабым настольным компьютерам, и, таким образом, его можно использовать как полноценную замену настольному компьютеру или как мультимедийный центр. Это то, для чего это тожеRaspberry оснащен выходом HDMI и в варианте 3 модулем Wi-Fi. Преимуществом этого решения является наилучшая поддержка сообщества, выгодная цена и возможность обработки практически любого ожидаемого приложения. В Интернете есть огромное количество программ, написанных для Raspberry Pi, и значительное их количество доступно бесплатно. Существует бесчисленное множество готовых решений, которые можно интегрировать в существующую систему. Недостатком может быть, например, то, что в случае использования в качестве сервера диск памяти должен быть подключен с помощью довольно медленного USB 2.0, и обмен файлами, таким образом, скорее всего, будет ограничен пропускной способностью USB-моста. В случае более требовательного использования также возможна проблема с перегревом, т.к. у компьютера нет кулера. Охладитель 7
13 конечно можно добавить, но мы потеряем компактные размеры и увеличится энергопотребление, если использовать активный кулер. Поскольку это полноценный компьютер, для написания программ можно использовать практически любой язык, но наиболее широко используемый сообществом, а также неявно поддерживаемый, — это язык Python (в случае наиболее широко используемого Raspbian). . [12] [13] [14] [15] Рисунок 2 Raspberry Pi [16] Intel Edison Уникальность этого решения заключается в его размере, который примерно соответствует SD-карте и, таким образом, предназначен для портативных устройств. Его можно легко преобразовать, например, в планшет, и иметь портативный элемент контроля и управления всей системой. Недостаток в том, что из-за минимализма у него не так много выходных интерфейсов, и такую систему придется дополнять еще одним элементом. Здесь предлагается идеальное сотрудничество между простым микроконтроллером Arduino, который позаботится о получении сообщений от периферийных устройств и их сохранением на сервере, и Edison, который будет подключен к системе по беспроводной связи благодаря соединению Wi-Fi и будет руководить всеми строительными работами. Однако необходимоимейте в виду, что производительности этой мелочи достаточно для управления умным домом, но, к сожалению, недостаточно для мультимедийного центра. 8
14 Рис. 3 Intel Edison [17] Программируемые автоматы Программируемые автоматы (ПЛК) — это относительно небольшие компьютеры, предназначенные для промышленного использования и в основном используемые для автоматизации процессов в режиме реального времени. К достоинствам, безусловно, можно отнести значительную надежность и готовность периферийных устройств к подключению к другим элементам. ПЛК в основном предварительно подготовлены для цифровой связи с использованием входов и выходов, и имеется большое количество периферийных устройств, готовых практически для всех потребностей автоматизации. Система на основе ПЛК, как правило, должна быть очень надежной и надежной с длительным сроком службы. Приблизительная цена машины составляет порядка чешских крон, а цена всего решения составляет от десятков до сотен тысяч крон. Системы ПЛК от разных производителей предлагают разные функциональные возможности на разных ценовых уровнях, но в целом они не сильно отличаются, и одного примера будет достаточно, чтобы дать представление о возможностях системы на базе ПЛК: Tecomat Foxtrot Это относительно небольшое модульное управление и система регулирования от Teco a.s. ориентирована именно на интеллектуальные электрические установки и интеллектуальные здания. Благодаря своей цене и промышленным возможностям, эта система предназначена для очень сложных и комплексных установок, которые она способна надежно покрыть. Благодаря CIB (Common Installation Bus) систему можно расширить с помощью любого элемента электроустановки CFox. Дуплексная беспроводная система Fox добавляет универсальности, позволяя подключать беспроводные элементы. Программирование происходит в среде Mosaic, соответствующей стандарту IEC, поэтому можно использовать до 4 типов языков. Однако программирование ПЛК и особенно более сложных систем требует большего опыта и не предлагает такой интуитивно понятной среды, как раньше.введены технологические единицы. Большим преимуществом является весь спектр готовой периферии, позволяющей превратить здание в по-настоящему интеллектуальное. [18] [19] 9
15 Рисунок 4 Периферия Tecomat Foxtrot [20] Промышленное происхождение и сущность этой системы является как преимуществом, так и недостатком. Система готова и способна управлять различными элементами от освещения до кондиционирования воздуха. Его относительно легко можно подключить к элементам безопасности зданий и даже использовать для визуализации и картографирования процессов, происходящих в здании. Однако цена за эти варианты, за надежность и расширяемость, — цена, которая в разы выше, чем за другие варианты. Это также очень специфический продукт, так что это не 10
16, таким образом, можно использовать в целом. Тогда было бы необходимо найти другое решение для собственного облака, мультимедийного центра и замены ПК. Персональный компьютер В отличие от специализированного ПЛК, персональный компьютер является наиболее универсальным решением. Он способен на все, на что способны одноплатные компьютеры, и в некоторой степени он способен на большинство операций ПЛК. Плата за универсальность состоит в том, что она ни в чем не превосходит. Энергопотребление будет выше, его необходимо расширить с помощью дополнительных модулей и программного обеспечения, чтобы иметь возможность взаимодействовать с другими периферийными устройствами, и, поскольку он не предназначен специально, он не предлагает почти такой большой базы сообщества с точки зрения IoT. со многими разработчиками и готовыми IoT-проектами в виде одноплатных компьютеров. С другой стороны, он вполне может служить и домашним сервером, и облачным, и мультимедийным центром, и, конечно же, будет играть роль домашнего компьютера. Приблизительная цена компьютера составляет единицы тысяч крон, а цена решения в целом порядка десятков тысяч крон. Готовые модульные системы Готовые модульные системы позволяют максимально быстро реализовать домашнюю автоматизацию. ВБаза обычно содержит центральный блок, несколько магнитных и температурных датчиков, операторское оборудование, датчики движения и тому подобное. Они также содержат программное обеспечение, подготовленное для таких приложений. Однако их программное обеспечение и типы периферийных устройств приведены и обычно нет возможности их каким-либо образом расширить или модифицировать. Ориентировочная цена блока управления модульной системы превышает тысячи крон, а цена решения в целом составляет порядка десятков тысяч. Сегодня подобные системы предлагает уже большое количество производителей, и они сильно различаются как по цене, так и по возможностям. Я представлю продукт Fibaro для всех. Fibaro Мозгом этой системы является центральный блок, обеспечивающий связь с периферией и даже выполняющий роль мультимедийного центра. После подключения к сети позволяет управлять через компьютер или телефон. Затем к центральному блоку по беспроводной связи подключаются другие элементы, такие как датчик дыма, затопления или света, беспроводная розетка, беспроводной отопительный клапан, датчик движения или магнитный датчик. Fibaro общается с помощью открытого беспроводного протокола Z-Wave, разработанного специально для домашней автоматизации. Z-Wave создает топологию сети Mesh 2, поэтому каждое звено имеет возможность отслеживать и контролировать работу других модулей, что, естественно, означает, что все модули должны быть передатчиками и приемниками одновременно. Благодаря открытости этого стандарта любое сертифицированное устройство должно быть подключено и, таким образом, система может быть расширена. [21]
17 Таблица 1 Сравнение модулей управления Модуль управления Ориентировочная цена 3 Мультимедиа Собственные программы Можно использовать как сервер Arduino 700 Нет Ограничено Нет Raspberry 1200 Да Да Да Intel Edison 1250 Ограничено Да Нет Tecomat Нет Внутри ПЛК Ограничено Foxtrot PC Да Да Да Fibaro Да Ограничено Нет Датчики Согласно [22] датчик — это элемент измерительного устройства, на который непосредственно воздействует измеряемая величина. В более узком смысле этого словаозначает технический компонент, который измеряет величину и преобразует ее в электрический сигнал. Затем электрический сигнал подходит для передачи на другие устройства. Датчики являются ключевым элементом системы домашней автоматизации. Они предоставляют процессору информацию о текущем состоянии системы и, таким образом, обеспечивают алгоритм управления информацией, необходимой для работы программы. Датчики могут быть проводными или беспроводными, беспроводные датчики гораздо больше подходят для системы домашней автоматизации. Беспроводные датчики могут быть установлены без необходимости вмешательства в электроустановку дома. Недостатком этих датчиков является более высокая цена, обусловленная увеличением передатчика, а также работа от батарейки, которую необходимо заменить. Monnit Компания Monnit специализируется на производстве решений для беспроводного мониторинга по выгодной цене. Датчики Monnit построены вокруг беспроводного шлюза, который образует сетевой узел для сбора информации с беспроводных датчиков и отправки ее в программное обеспечение блока обработки. Доступно большое количество датчиков, начиная от измерения температуры и влажности и заканчивая обнаружением открытых дверей и окон, утечкой газа или обнаружением занятого места. Цена этих датчиков находится в среднем классе, а обработка вместе с техподдержкой на хорошем уровне. Тем не менее, это относительно закрытая система, и поэтому необходимо приобрести достаточно много вспомогательных продуктов. Особенно уже упомянутые ворота, а затем и программное обеспечение, цена которого варьируется в зависимости от использования, а также его можно разблокировать за определенную плату и отправить измеренные значения в другие программы. Целевой группой этих датчиков легко могут стать учреждения, которые ценят надежность и надежность системы и используют современное программное обеспечение. [23] Privateeyepi Компания Privateeyepi ориентирована на очень дешевые устройства, предназначенные для одноплатных компьютеров и домашнего использования. Благодаря тому, чтокомпания, ориентированная на одноплатные компьютеры, предлагает большое количество инструкций по работе с датчиками и даже управляет собственной системой онлайн-мониторинга и безопасности дома. К сожалению, система закрытая и довольно ограниченная, однако способна полностью обезопасить простые приложения. По сравнению с фирмой Monnit на 3 нет датчиков. Много зависит от используемой модели 12
18 профессиональный уровень (необходимо собрать и спаять перед запуском) и внешний вид у них тоже довольно аскетичный. Тем не менее, цена составляет около половины. Ассортимент товаров тоже не велик. Доступны датчики температуры, влажности, движения и магнитные детекторы. Датчики подключаются по беспроводной сети к одноплатному компьютеру с помощью радиомодуля, который подключается к контактам GPIO. Программное обеспечение, лежащее в основе операции, является бесплатным и открытым, поэтому оно подходит для индивидуального применения, где его можно расширить с помощью собственных идей и кода. Используемый язык — Python. [24] Датчики для ПЛК ПЛК способны работать практически с любым проводным промышленным датчиком, а для работы с беспроводными устройствами используются так называемые модули ввода и вывода. К этим модулям подключаются любые датчики, сигнал которых затем передается по радиосигналу на ПЛК, который позаботится об оценке в соответствии с программой. Рис. 5 Беспроводной приемник ПЛК [25] С одной стороны, это решение выгодно тем, что имеется огромное количество проводных датчиков в различных вариантах, ценовых категориях и возможностях, что дает системе, построенной на ПЛК, огромную вариативность, что также ожидается от промышленного решения. Недостаток в том, что изначально это незавершенный электрический компонент и желательно поместить его в коробку и решить размещение в нужном месте. Датчики мобильной сети Эти датчики — музыка ближайшего будущего. Как сказано во вступлении, он уже готовится в Чехии.запуск сети NB-IoT, подходящей для этих датчиков. Сеть NB-IoT — это тип мобильной сети, адаптированный для подключения датчиков IoT. Основное его преимущество в том, что он создается путем модификации программного обеспечения сети LTE (зарезервирована часть полосы). Причина такой корректировки в основном связана с потреблением энергии. Устройства в классической сети часто сообщают, даже если им ничего не нужно. Кроме того, каждой передаче данных предшествует сообщение об открытии канала, и аналогичным образом канал закрывается. В случае простого IoT-сенсора отправляется гораздо больше данных, чем необходимо, а это означает более высокие требования как к сети, так и особенно к потреблению электроэнергии в аккумуляторе датчика. Преимущество этой технологии в том, что она не привязана к дальности радиосигнала, а датчики отправляют информацию напрямую в мобильную сеть. Затем эта информация поступает в блок обработки через интернет-соединение. Недостатком является то, что каждый датчик имеет собственное подключение к сети, что удорожает систему из-за регулярных комиссий оператора. 13
19 Однако эти датчики еще не были официально представлены, поэтому предоставить более подробную информацию невозможно. Поэтому перед ними стоит задача выполнить определенное действие по указанию блока управления, чтобы изменить текущее состояние. Это может быть, например, изменение температуры, расхода жидкости, а может быть датчик переключения. В этом разделе я перечислю некоторые из наиболее интересных приводов, подходящих для IoT. Переключатель Один из элементов основного действия позволяет включать и выключать электрическое устройство, замыкая или размыкая электрическую цепь. Он особенно подходит для дистанционного включения и выключения света, но его также можно использовать, например, для дистанционного запуска кондиционера и т.п. Здесь я хотел бы предупредить всех читателей, что, если они не имеют необходимой электрической квалификации, они должны предпочесть вождениенизковольтные цепи из соображений собственной безопасности. Рис. 6 Реле управления [27] На приведенной выше схеме показано, что реле подключается непосредственно к контактам GPIO процессорного блока. Однако это решение не очень эффективно, так как требует протягивания проводки к каждой управляемой цепи. Есть несколько вариантов решения этой проблемы. В том случае, если необходимо создать какую-то другую сопутствующую систему, например опускание жалюзи и тому подобное, рекомендую использовать микроконтроллер типа Arduino. Тогда в каждой комнате может быть одна Arduino, к которой будут подключаться электрические цепи света, жалюзи и тому подобное. Все это будет беспроводным образом подключено как система к какому-то более мощному вычислительному ядру, которое позаботится об управлении всей системой. Если целью является только управление световыми цепями, можно использовать заранее подготовленное беспроводное устройство, которое позаботится об обмене данными, например, Wi-Fi Remote Switch Controller. 14
20 Еще один интересный вариант — это реальный физический переключатель дистанционного управления. На самом деле это устройство с дистанционным управлением, способное физически нажимать большинство переключателей. Таким образом, можно дистанционно переключать обычные устройства, для которых преобразование было бы невозможным или неэффективным. Таким образом, он подходит для запуска ПК, кофемашины или, возможно, вентилятора. [28] [29] Рис. 7 Физический переключатель беспроводной сети [30] Сирена Другим полезным компонентом является сирена. Сирены могут служить сигналом тревоги для системы безопасности и таким образом предупреждать окружающих, например, соседей, об опасности. Однако такая система выходит за рамки этой работы, поэтому я скорее представлю более подходящий и очень маленький компонент: активный зуммер. Эта небольшая сирена может издавать довольно громкий звук, который, однако, никак не потревожит соседей, и поэтому ее можно использовать как предупреждение о нестандартной ситуации, например,открытая входная дверь, дверь гаража, утечка газа и т. д. [31] 15
21 Рисунок 8 Активный зуммер [32] Управление жалюзи Управление электрическими жалюзи очень похоже на беспроводной переключатель, но несколько сложнее. База аналогична, но необходимо удлинить ее концевыми датчиками и обеспечить надежную работу, чтобы не повредить двигатель заслонки. Некоторые из этих модулей могут, например, наклонять жалюзи, когда они используются, или измерять потребление энергии и тому подобное. [33] Управление клапаном отопления Автоматическое управление системой отопления позволяет постоянно экономить потребление энергии благодаря Интернету вещей. Беспроводная головка просто устанавливается на клапан отопления и подключается к блоку управления. После этого головкой можно управлять как дистанционно, так и автоматически по программе. Благодаря этому можно автоматизировать отопление так, чтобы вечером в спальне температура начинала снижаться, а в ванной повышалась. Ночью температура опускалась до оптимальной для сна температуры, утром первой начала нагреваться ванная и, исходя из плана, и в остальных комнатах, например, в будний день, когда все уходят на работу, только Ванная комната и кухня утром отапливаются. Другие комнаты будут автоматически включаться везде после полудня и в выходные дни. Точно так же это могло бы работать и при выезде в отпуск в дом, только поддерживалась бы низкая температура, а отопление включалось бы только непосредственно перед приездом. Благодаря термодатчикам также можно измерить тепловую динамику дома и, исходя из температуры наружного воздуха, рассчитать время, необходимое для нагрева до нужной температуры. Головки большинства производителей отображают текущую температуру и могут закрываться при обнаружении открытого окна. Еще одной возможностью является защита от замерзания или регулярное вращение клапана для защиты от замерзания. [34] 16
22 Рис. 9 Развертывание головки беспроводного клапана [35]Рис. 10 Смарт-голова [36] 17
23 2.2. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ Программное обеспечение, или компьютерное оборудование, делится на системное и прикладное программное обеспечение. Прикладное программное обеспечение — это программа, с которой пользователь работает или обеспечивает управление какой-либо машиной или внешним процессом. В контексте данной дипломной работы в основном речь пойдет о собственной системе, изложенной во второй части данной дипломной работы, а здесь я опишу некоторые языки программирования, на которых эти программы могут быть написаны. Системное программное обеспечение – это программа, обеспечивающая работу компьютера и его связь с окружающей средой. В основном это касается операционной системы и программного обеспечения сервера Операционная система Операционная система является основным программным обеспечением каждого технологического блока. Это очень сложное программное обеспечение, которое отвечает за обеспечение полноценной работы с технологической установкой. В основном это касается выделения системных ресурсов, предоставления интерфейса управления и/или обеспечения разработки приложений. Для некоторых технологических установок операционная система предназначена непосредственно для данного продукта (Arduino, модульные системы, ПЛК). Для других, таких как Intel Edison или, конечно же, ПК, можно выбрать операционную систему. Выбор в основном между Windows 4 или различными вариантами Linux. При этом выбор должен основываться главным образом на возможностях периферийных устройств и их совместимости с данной операционной системой. Общее сравнение Linux и Windows выходит за рамки данной работы, но обе подходят для описываемой здесь системы IoT Сервер Два основных пути ведут к собственному домашнему серверу, который можно даже использовать параллельно. Первый из них — использовать готовый софт от разработчика и внедрить его в свою систему. Это подходящее решение, например, для персонального облака, которое позволяет удаленно управлять документами и редактировать их, сохраняя при этом хорошую безопасность. Этимпрограммы обычно имеют доступное приложение для разных операционных систем и таким образом обеспечивается легкий доступ с других устройств (компьютер, мобильный, планшет).Таким ПО является, например, owncloud, и несмотря на то, что это программа с открытым исходным кодом, его функциональность находится на высоком уровне, и его функциональность очень похожа на широко используемый Dropbox. Он также позволяет работать с документами, как мы знаем, например, из Google Диска. Затем приложение доступно для Windows, MacOS, Linux, Android и iOS. Другой вариант — Synthing или Seafile, возможности этих систем довольно схожи, и я рекомендую пользователям попробовать их все и выбрать более удобную программу. [37] [38] [39] Второй вариант — спроектировать и построить свой собственный сервер, что является более длинным путем, но более гибким и может быть запрограммировано точно по мере необходимости. Это решение подходит, например, для вашего собственного веб-сайта с текущим состоянием управляемой системы. Здесь вам нужно выбрать программный сервер, обычно это будет HTTP-сервер Apache, на котором работает большинство веб-сайтов по всему миру. Однако, конечно, можно использовать и другие. Решение в основном должно быть за разработчиком, в зависимости от того, что ему больше всего подходит. Однако Windows 4 на одноплатных компьютерах — это не полноценная десктопная версия, а Windows 10 IoT. Эта операционная система подходит для домашней автоматизации, но ее нельзя использовать в качестве замены настольному ПК. 18
24 Второй шаг – выбрать переводчика. Наиболее распространенным выбором будет PHP, который специализируется на веб-сайтах и имеет встроенную поддержку для систем баз данных, хостинговых услуг и т. д. PHP стал в значительной степени стандартом. Еще одним существенным преимуществом является огромное количество доступных проектов и кодов, которые можно использовать. Мелкие минусы вижу в иногда запутанном программировании, например в несогласованности именования групп ифункции, неравномерный порядок параметров и тому подобное. В качестве альтернативы, конечно, вы можете писать на других языках, таких как Python или Ruby, которые в последнее время атакуют позицию PHP [40]. Язык программирования Язык программирования как средство написания алгоритмов, управляющих всей системой, является очень важной частью система. Это применимо только при использовании модульных систем, где все запрограммировано и нет необходимости и, как правило, даже невозможно вмешиваться в программу. Аналогичная ситуация с ПЛК, где автомат поддерживает разные интерфейсы программирования. Программа обычно компилируется на ПК и только загружается в ПЛК. Некоторые технологические блоки, особенно микроконтроллеры, имеют свои собственные языки программирования, в основном основанные на более известных языках. Например, Arduino и его проводка. С персональным компьютером или Raspberry возможностей больше, и разработчик может выбрать язык программирования по своему выбору. На мой взгляд, Python больше всего подходит для работы с IoT из-за большого количества доступных и пригодных для использования кодов и проектов. Также производители различной периферии для IoT выпускают инструкции в основном на Python (например, Python тоже очень прост и делает упор на продуктивность программиста. Из собственного опыта следует, что быстрее всего программы можно разрабатывать на Python. Другой вариант, конечно, JAVA , который принадлежит к наиболее используемым языкам [41], и из этого следует сильная поддержка сообщества.Многоплатформенная переносимость также является преимуществом.JAVA тогда будет очень выгодна, например, для программирования другого мобильного приложения, а также может работать на веб-сайте Наконец, я представлю C++, который является наиболее сложным из перечисленных программ и дает возможность создавать большие и надежные программы.Однако, учитывая предполагаемую простоту системы, эта сложность довольно вредна и приведет к замедлению разработки. вообще можно сказать что всеязыки программирования могут справиться с тем, что нужно и это зависит скорее от программиста, какой язык ему ближе. Также нужно подумать о том, какие периферийные устройства будут использоваться и посмотреть, рекомендует ли производитель язык программирования для общения или уже есть готовые программы для управления данным устройством. [15] 19
25 3. Практическая часть В этой части работы описываются аппаратные и программные ресурсы, используемые для создания реализованного умного дома с помощью Raspberry Pi. Далее набросок программного решения. К основным функциям системы относятся: Контроль открытых гаражных ворот и их световая или звуковая сигнализация. Удаленный доступ к собственному серверу и хранилищу. Обнаружение различных бытовых параметров (температура, открытые окна или двери, обнаружение затопления) 3.1. АППАРАТНОЕ ОБЕСПЕЧЕНИЕ Блок управления Raspberry Pi В качестве базового оборудования я выбрал Raspberry Pi из-за его простой расширяемости с помощью других внешних элементов и полноценного Linux. Согласно [42], операционная система, в отличие от Arduino, которая представляет собой всего лишь микроконтроллер, позволяет разрабатывать более сложные программы. В то же время Raspberry намного быстрее и поддерживает прямое подключение экрана, мыши, клавиатуры и других периферийных устройств. Для проекта я выбрал старшую модель Raspberry Pi 3, в основном из-за встроенных Wi-Fi и Bluetooth. Как сообщает [42], Raspberry Pi 3 также намного быстрее, чем предыдущие версии. Учитывая планируемое использование еще и для просмотра веб-страниц и домашнего мультимедийного центра, такое ускорение очень полезно. Рис. 11 Сравнение моделей Raspberry [43] 20
26 Датчики Радиоприемник В качестве радиоприемника я выбрал Slice of Radio [44] от Ciseco, что позволяет подключать к Raspberry большое количество датчиков разных производителей и даже есть возможность собрать датчик самостоятельно,например, согласно Privateeyepi [45]. Благодаря радиоприемнику можно будет создать беспроводную домашнюю сеть датчиков, без необходимости подключения кабелей. Этот радиоприемник обменивается данными через последовательный порт (9600 бит/с) и не требует никаких драйверов. Благодаря низкому профилю его можно поместить даже с Raspberry Pi в коробку. При недостаточном сигнале, когда необходимо охватить большую площадь, можно просто припаять антенну. Передача поддерживает 128-битное шифрование, что делает ее устойчивой к отслеживанию. Рисунок 12 Радиомодуль [60] 21
27 Датчик температуры Беспроводной датчик температуры окружающей среды SB-CA-White и беспроводной датчик температуры используются в качестве датчика температуры. Оба термометра используют термометр сопротивления и радиопередачу простого зашифрованного текстового сообщения. [46] [47] Рис. 13 Датчик температуры PrivateEyePi [61] Рис. 14 Датчик Wireless Things [62] Оба этих датчика основаны на радиопередатчике, который позволяет выполнять сопряжение с радиоприемником, расположенным на Raspberry Pi, и простым термометром сопротивления NTCLE100E3103JB0 . [48] Датчик положения Датчик положения относится к той же серии, что и датчик температуры. Благодаря простому магнитному считыванию он обеспечивает надежную работу. Датчик работает по принципу классического герконового датчика. Следовательно, это механический переключатель, управляемый магнитным полем. Рисунок 15 Принцип работы магнитного датчика [49] 22
28 Рисунок 16 Магнитный датчик [50] Датчик затопления Датчик влажности для обнаружения утечек жидкостей, особенно из стиральной и посудомоечной машин, или из ванной комнаты и кухни в целом. Детектор работает по принципу изменения проводимости между двумя электродами. Рис. 17 Датчик затопления [51] Аксессуары Системные аксессуары для удобства эксплуатации и улучшения внешнего вида. Коробка для Raspberry Wireless клавиатура и мышь SD-карта Полный комплект датчиков Датчики поставляются в виде комплектаи должны быть введены в эксплуатацию перед использованием. К радиопередатчику необходимо припаять пару резисторов и один конденсатор по рекомендации производителя, который упакован вместе с передатчиком или по фото ниже. 23
29 Рис. 18 Фрагмент места для батареи [52] Затем к трансмиттеру можно подключить термометр сопротивления и другой датчик (магнитный, проводимости). Место, отмеченное кружком, используется для батареи, поэтому необходимо припаять держатель батареи CR2032 на отмеченные места. Наконец, все нужно закрыть в корпусе и разместить датчик в нужном месте. Аккумулятора должно хватить примерно на два года работы, а сам датчик способен сообщать о напряжении в аккумуляторе и, таким образом, предупреждать о падении ниже допустимого предела. Рис. 19 Деталь датчика в сборе [53] 24
30 3.2. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ Операционная система В качестве операционной системы будет использоваться операционная система Raspbian с некоторыми изменениями. Эти модификации позволят получить доступ к последовательному порту, через который датчики общаются. Язык вещей Язык вещей, соединяющий датчики и Raspberry, очень прост и целеустремлен. Рисунок 20 Диаграмма языка вещей [54] Сенсоры большую часть времени проводят в тихом режиме, где они ничего не измеряют, а только экономят заряд батареи. В заданные промежутки времени они просыпаются, измеряют необходимую величину (температуру, влажность и т. д.) и передают информацию приемнику. Передача зашифрована с помощью 128-битного AES, поэтому ее трудно подслушать, и поэтому она достаточно безопасна. 25
31 Пакеты данных Рисунок 21 Пакеты данных Из примера видно, что язык передачи очень прост и интуитивно понятен, его в принципе можно расшифровать даже без инструкций. Итак, Abbtemp—— означает начало пакета, BB ID датчика. Датчик может иметь идентификаторы AA-ZZ, что позволяет одновременно подключать несколько датчиков. Команда TEMP, в данном случае запрос на чтение температуры, остальные символы заполняются тире, пакет данных всегда имеет 12 символов. Таблица 2 Образецпакетов Пример сообщения Описание axxtemp axxtemp29.5- Датчик сообщает о температуре. axxawake axxawake—- Датчик сообщает о готовности. axxbatt axxbatt2.95 — Датчик сообщает о текущем состоянии батареи. axxsleeping axxsleeping — Датчик сообщает, что он перешел в спящий режим. axxstarted axxstarted — Устройство было включено или перезапущено. axxbattlow axxbattlow — Батарея разряжена. 26
32 Сервер Raspberry Pi в роли сервера приносит несколько проблем, но с другой стороны значительно расширяет возможности использования, особенно при удаленном доступе. Как указано в [55], фундаментальная проблема заключается в том, что SD-карта не подготовлена для постоянной записи и перезаписи данных. В таких случаях обычно упоминается возможность покрытия части оперативной памяти диском, но это приведет к уменьшению емкости хранилища. Я определился с внешним жестким диском, на котором будет работать сервер. В то же время это создаст относительно большое пространство для собственного сервера, в том числе для хранения различного контента, который затем будет доступен удаленно. Программное обеспечение для сервера Веб-сервер будет реализован с использованием сервера Apache, так как предполагаемый простой сервер содержит все необходимые функции, а также является наиболее широко используемым в мире [56]. Так что у него самая доступная техническая поддержка в виде миллионов пользователей. В качестве интерпретатора я выбрал PHP по той же причине, что и Apache: для простых целей он гарантированно имеет все необходимые функции и является наиболее широко используемым в мире [57]. И, наконец, в качестве сервера базы данных я выбрал MySQL, запросы в этой мультиплатформенной базе данных реализованы с использованием самого распространенного языка баз данных SQL. MySQL тогда разрабатывался с упором на скорость за счет некоторых упрощений, что, впрочем, не является проблемой, учитывая простоту самого приложения. Затем я внедряю свое собственное облако с помощью программного обеспечения owncloud, которое позволяетудаленная работа с документами Язык программирования Для программирования приложения умный дом я решил использовать язык программирования Python. Python является мультипарадигмальным, поэтому позволяет использовать при написании программ не только объектно-ориентированную парадигму, но и процедурную, и в ограниченной степени функциональную. Затем он будет использовать тот, который подходит ему лучше всего в данный момент. Благодаря этому Python обладает превосходными выразительными возможностями. Программный код имеет тенденцию быть коротким и легко читаемым по сравнению с другими языками. [58] PHP будет использоваться для программирования веб-сервера, как указано выше. 27
33 3.3. ПРОГРАММИРОВАНИЕ СИСТЕМЫ УПРАВЛЕНИЯ Реализованная процедура подготовки операционной системы Процедура, которую я использовал при реализации, выглядит следующим образом: Сначала нужно скачать выбранную операционную систему на ПК (я использовал чистый и последний Raspbian) и записать образ на SD-диск с помощью соответствующего программного обеспечения (с помощью программы Etcher). Затем поместите SD-диск в Raspberry, подключите мышь, клавиатуру, монитор и, наконец, кабель питания USB. Затем Raspbian выполнит первоначальную установку с настройками, и Raspberry будет готова к использованию. 5 Теперь нужно подготовиться к загрузке с HDD. Включить режим загрузки с USB необходимо установить в конфигурации загрузки. Это установит бит в OTP (программируется один раз) и разрешит загрузку с USB. 6 Следующим шагом будет подготовка каталога /boot и текущих загрузочных файлов с помощью команды: $ sudo apt-get update && sudo apt-get upgrade и запустить режим загрузки с USB с помощью команды echo program_usb_boot_mode=1 sudo tee -a /boot/config.txt наконец перезагрузиться с помощью команды: sudo reboot Теперь вам нужно установить последовательный порт. Во-первых, необходимо запустить инструмент настройки с помощью команды: raspi-config В пункте Interfacing Options, за которым следует P6 Serial, вам нужно установить No на вопрос «Хотите ли вы, чтобы оболочка входа была доступна черезсерийный номер?» и ДА на вопрос «Хотите ли вы, чтобы аппаратное обеспечение последовательного порта было включено?» Затем выйдите и перезагрузите компьютер. Поскольку используется Raspberry Pi 3, для работы последовательного порта необходимо отключить Bluetooth. Итак: Отредактируйте файл boot. txt sudo nano /boot/cmdline.txt и добавьте в самый низ следующий параметр: dtoverlay=pi3-disable-bt Затем снова перезагрузитесь Система загрузилась нормально и загрузилась с жесткого диска Система работает даже без SD-карты и отображает правильное увеличение памяти.В моем случае почти 1ТБ.5 Учетные данные для входа по умолчанию pi и пароль raspberry, в целях безопасности настоятельно рекомендую изменить эти учетные данные на что-то более безопасное.6 Из-за использования OTP в SoC, это постоянная настройка, которую нельзя изменить.28
34 Подготовка программного обеспечения для связи с датчиками В качестве первого шага необходимо загрузить и установить программное обеспечение производителя, предназначенное для связи, с помощью команды: cd /home sudo wget -N sudo sh install.sh Затем установить библиотеки Python с помощью команда: apt-get install python-series Несколько программ для считывания датчиков на малину, а так же возможность считывания состояния датчиков в сети. Это очень простые параметры и многое другое. В MySQL я создам базу данных значений с идентификатором столбца и значением, и мы выберем идентификатор в качестве первичного ключа. Для чтения подключенных датчиков важна следующая последовательность: def main(): port = ‘/dev/ttyama0’ # Объявление переменных. baud = 9600 # Откройте последовательный порт в соответствии с указанными выше переменными. ser = serial.serial(port=port, baudrate=baud) sleep(0.2) print «Подождите не более 5 минут для отправки данных от передатчиков» while True: while ser.inwaiting(): # Чтение символа char = ser.read () # Проверяет, что это начало сообщения LLAP if char == ‘a’: # начинаем чтение пакета llapmsg = ‘a’ # Читаем следующие 11 символов # Читаем весь пакет llapmsg += ser.read(11 ) # Разбивает сообщение на данные и идентификатор devid =llapmsg[1:3] data = llapmsg[3:] print «Device ID:» + devid print «Data:» + data # Загружает текущие значения в базу данных cursor.execute(«update values SET Value= % WHERE (данные, раздел )) sleep(0.2) 29
35 Запустив собственный облачный сервер, я буду использовать службу owncloud в качестве собственного облака для файлов, которыми можно управлять и редактировать удаленно. Затем данными можно поделиться с другими или синхронизировать, например, с ноутбуком. Первый шаг — загрузить ключ Release и добавить его в список доверенных: cd /tmp wget apt-key add — > /etc/apt/sources.list.d/owncloud.list apt-get update apt-get install owncloud Во время установки owncloud также устанавливается MySQL, поэтому необходимо создать пароль администратора. Затем войдите в MySQL и создайте базу данных: mysql defaults-file=/etc/mysql/debian.cnf CREATE DATABASE owncloud; СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ, ИДЕНТИФИЦИРОВАННОГО BY ‘moje_slo_do_mysql_serveru’; ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА owncloud.* ЧТОБЫ сбросить привилегии; quit По умолчанию owncloud использует папку /var/www/owncloud/data. Если местоположение нужно изменить, это делается с помощью команд: mkdir /var/owndata chown www-data:www-data /var/owndata chmod 750 /var/owndata Облако уже запущено и можно войти как , что в браузере вводим IP-адрес/owncloud, например: При первом запуске должно быть задано расположение папки с данными и используемая база данных. Наконец, включаем доступ через SSL: a2enmod ssl a2ensite default-ssl service apache2 restart 30
36 Ваш собственный веб-сайт Веб-сайт может быть написан в различных редакционных системах. Я выбрал WordPress, опять же из-за его массового распространения. Я создал базу данных в MySQL под названием WordPress и перешел в каталог /var/www. В нем я создал веб-подпапку. Затем созданная страница может быть доступна по IP/веб-адресу. Далее я скачал WordPress с помощью команды: $ sudowget $sudo tar -zxvf wordpress-4.1-cs_cz.tar.gz После этого в браузере происходит установка, задаются необходимые данные и после ввода адреса появляется сайт и тестовый пост. Веб-сайт можно изменить по желанию с помощью WordPress. Здесь я просто приведу самый важный код для извлечения из базы данных, где хранятся данные с датчиков: $values = Db::queryAll(‘SELECT * FROM values’); эхо(‘
значения
‘. htmlspecialchars($u[‘id’])); echo(‘ | ‘. htmlspecialchars($u[‘value’])); эхо(‘ |
‘); # Этот код PHP загружает базу данных и выводит определенные столбцы (в данном случае идентификатор и значение) Программирование полезных расширений Отправка SMS Отправка SMS в случае определенных входных данных является полезной возможностью системы. Таким образом, при обнаружении опасной ситуации можно отправить предупреждающее SMS. Например, можно предупредить о забытой открытой двери или калитке, отправить предупреждение об утечке воды из стиральной машины и тому подобное. Эту функцию можно реализовать, например, через SMS-шлюз. Я выбрал сервис sms.sluzba.cz, где также доступен скрипт для отправки. [59] Вам необходимо зарегистрироваться на сайте и пополнить баланс. Стоимость отправки сообщения составляет 0,58 крон. Во-первых, необходимо установить службу API: $ pip install smssluzbacz-api # скачать службу API Затем можно отправить СМС командой: from smssluzbacz_api.lite import SmsGateApi # import the gateway api = SmsGateApi(‘login ‘, ‘password’, timeout=2 , use_ssl=true) # вход в систему api.send(‘ ‘, ‘message’, use_post=true) # определяет отправляемое сообщение 31
37 Перезапуск чтения программы при перезапуске Raspberry Pi Для бесперебойной работы целесообразно настроить задание cron таким образом, чтобы основная программа перезапускалась при перезапуске малины. Мы достигаем этого, запустив следующую программу как cron.process_name= «sensor.py» # имя перезапущенного процесса tmp2 = os.popen(«ps -Af»).read(), если имя_процесса не в tmp2[:] и globals.auto_rfsensor: newprocess=»nohup python %s/% с &» % (globals.install_directory, process_name) os.system(newprocess) # если процесс не запущен, запустить его 32
38 3.4. ЗАКЛЮЧЕНИЕ ПРАКТИЧЕСКОЙ ЧАСТИ Магнитный датчик Датчики температуры USB HUB Датчик затопления Raspberry Harddisk Рисунок 22 Самостоятельная сборка системы Рисунок 23 Установленный магнитный датчик 33
39 Рисунок 24 Установленный датчик затопления Рисунок 25 Установленный датчик температуры Система успешно запущена и готова к применению в реальном доме. Все датчики вернули правильные значения при тестировании (эталонные значения были определены с помощью домашнего термометра, а значения бинарных датчиков — методом физического тестирования). Магнитный датчик возвращает индикацию об изменении практически сразу, в то время как датчик затопления показал задержку в секундах при первом погружении и около 34