среда, 23 марта 2016 г.

Прототип для отработки архитектуры системы управления умным домом

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

В качестве объекта управления использовался простой светодиод. Его включением/выключением можно было управлять голосом с телефона, через веб интерфейс умного дома с компьютера, через приложение на Android для управления умным домом. Сам объект управления (светодиод) был подключен к микроконтроллеру, получающему команды по WiFi от сервера умного дома.

Для обмена сообщениями между центральным сервером умного дома и микроконтроллером использовался протокол MQTT (http://mqtt.org/) публикации/подписки сообщений , специально предназначенный для обмена данными между устройствами "интернета вещей", имеющими ограниченную производительност. Данный протокол позволяет различным устройствам подписываться и получать сообщения друг друга. За обмен сообщениями между устройствами отвечает специальный программный сервер с названием MQTT Broker, с которым напрямую взаимодействую все MQTT устройства. MQTT Broker получает опубликованные сообщения от устройств и публикует их для всех подписчиков, подписанных на определенный тип сообщения. Существуют и другие реализации архитектуры публикации/подписки, такие как DDS или механизм в ROS (Robotics Operation System)

Наш прототип был собран на базе сервера умного дома OpenHab (http://www.openhab.org/) и контроллера ESP8266 с подключением по WiFi (http://esp8266.ru/).  Данный микроконтроллер уникален тем, что при достаточно приличной производительность и ресурсах, возможности подключения по WiFi, может быть приобретен за 150 р. на AliExpress или 300 р. в составе платы разработки. При такой стоимости и размере в ноготь боьлшого пальца данный микроконтроллер может быть легко интегрирован в различные умные мобильные устройства в составе умного дома.

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

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

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

В нашем прототипе умного дома использовались следующие аппаратные устройства:
- ноутбук
- домашний роутер с WiFi
- телефон с Android
- контроллер: на базе модуля ESP8266 с возможностью WiFi 
- актуатор: простой светодиод, подключенный к контроллеру

Использовалось следующее программное обеспечение, работающее на перечисленных выше устройствах:
- приложение OpenHab для телефона с Android
- приложение Голосовой ассистент Дуся для телефона с Android
- сервер OpenHab, запущенный на ноутбуке
- браузер на ноутбуке для доступа к веб интерфейсу умного дома
- сервер подписки/публикации сообщений по протоколу MQTT, запущенный на ноутбуке (MQTT Broker. использовался Mosquitto, http://mosquitto.org/)
- программа управления светодиодом на микроконтроллере на базе ESP8266, получающая по WiFi команды по протоколу MQTT
- MQTT клиент Paho для ноутбука (использовался для отладки и настройки)
- MQTT клиент для Android (использовался для отладки и настройки)



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

1. При старте микроконтроллера ESP8266 с загруженной на нем программой управления светодиодом, программа первым делом подключается к домашней сети по WiFi и подписывается на сервере MQTT Broker на сообщения управления светодиодом.

2. Сервер Open Hub при старте подписывается на сервере MQTT Broker на сообщения о состоянии светодиода

3. Программа управления светодиодом при старте выключает светодиод и публикует состояние светодиода на сервер MQTT Broker

4. Сервер MQTT Broker получает сообщение о состоянии светодиода и передает его всем подписчика (в нашем случае серверe OpenHab)

5. Сервер OpenHab отражает состояние светодиода во всех подключенных клиентских приложениях: веб-браузерах, приложениях на телефонах

6. Человек может получает информацию о состоянии светодиода, с использованием
- через приложение OpenHab на Android
- через веб интерфейс OpenHab на ноутбуке (можно и на телефоне, но на телефоне более удобно использовать специализированное приложение)

7. Человек может дать команду управления светодиодом, используя один из доступных способов
- через приложение OpenHab на Android
- через веб интерфейс OpenHab на ноутбуке (можно и на телефоне, но на телефоне более удобно использовать специализированное приложение)
- с помощью голосового ассистента Дуся  (программа на телефоне)

8. Команда от пользовательского приложения поступает на сервер умного дома OpenHab и встает в очередь на обработку

9. Сервер умного дома OpenHab обрабатывае полученные команды в соответствии с настроенными на нем правилами. В нашем случае поступление команды управления светодиодом приводит к публикации сообщения на сервер MQTT Broker сообщения управления светодиодом по протоколу MQTT

10. Сообщение управления светодиодом может быть опубликовано на сервере MQTT Broker и с помощью других клиентских приложений MQTT. В качестве такого приложения может выступать например Paho MQTT Client или приложение MQTT Client на телефоне).

11. MQTT Broker при получении сообщения управления светодиодом  передает данное сообщение для всех подписчиков (в нашем случае это был один микроконтроллер ESP8266).

12. ESP8266 получает по WiFI и протоколу MQTT команду управления светодиодом, анализирует ее и включает, либо выключает светодиод.

13. Светодиод включается и светит, либо выключается

14. По результатам контроллер для подтверждения публикует для MQTT Broker (по WiFi) сообщение об изменении состояния светодиода.

15. MQTT Broker публикует сообщение о состоянии светодиода всем подписчикам данного сообщения (это могут быть OpenHab или любой другой MQTT клиент, такие как Paho или MQTT Client на Android)

16. Сервер OpenHab получает сообщение о состоянии светодиода и отражает изменение его состояния на пользовательских устройствах - в браузере на ноутбуке, в приложении OpenHab на телефоне Android.

17. Человек видит на пользовательском устройстве изменившееся состояние светодиода.

Данный прототип умного дома на базе OpenHab был собран с нуля в течении одного дня. Правда этому предшествовало некоторое время освоения работы с MQTT протоколом на микроконтроллере ESP8266.

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

На самом деле открывающиеся возможности гораздо шире. Теперь нужно понять ЧТО именно нужно делать умному дому, раз уж мы разобрались КАК это делать :)



PDM STEP Suite для управления строительством Гаража с навесом

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

За последний месяц начал активно использовать продукт PDM STEP Suite для описания состава конструкций планируемого нами строения "Гараж с навесом" (см. по ссылке), составления спецификаций деталей, материалов, необходимых инструментов и оборудования, составления смет и технологических инструкций для строительства.

PDM STEP Suite - это российский продукт класса PDM для управления данными об изделиях. Как я понимаю, он в основном используется в авиации, например в Туполеве. Инструмент оказался легок в установке и не потребовал больших ресурсов компьютера. Его освоение конечно заняло некоторое время.

Ниже привожу основные операции, которые я научился выполнять с помощью PDM Suite. Привожу скриншоты с примерами моих реальных данных для гаража с навесом. На скриншотах далеко не всегда все гладко, но думаю они хорошо проиллюстрируют основные возможности, которые предоставляет PDM Suite для управления строительством.

Итак, начну описывать какие операции я делаю с помощью PDM Suite...

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


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


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

На скриншоте ниже приведены две версии структуры гаража с навесом, которые отличаются типом плиты-фундамента: УШП или монолитная плита


4. Сохраняю файлы 3D моделей, генерируемые из них чертежи проекта, а также отчеты PDM Suite в формате Excel, в виде документов в составе элементов декомпозиции строения


Открываю их для просмотра и редактирования прямо из PDM STEP.

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

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

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



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


Могу экспортировать в Excel файл с отчетом и включить его в этом виде в состав соответствующего элемента структуры строения.

7. Получаю отчеты для каждой версии строения Гаража с навесом о суммарной и по составной массе  и стоимости конструкций строения. 


8. На основе отчетов об количестве материалов и стоимости сравниваю различные варианты строительства строения гаража с навесом. 

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


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



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



12. Планирую крупные работы по строительству во времени

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

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

В списке выше перечислены далеко не все возможности PDM Suite. Многие из них я еще не начал использовать. Более подробно о функциональности PDM Suite можно почитать по ссылке http://cals.ru/products/pss

Полнофункциональную версию продукта для совместной работы до 10 пользователей можно скачать по ссылке http://pss.cals.ru/WORK/index.php

Крыльцо и юбка для мини-домика


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

Такой была архитектура мини-домика в начале строительного сезона 2015 года. Он был одноэтажным и совмещен с беседкой. 



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




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


А пока пусть сохнет... и дает нам кров (хоть какой-то) в процессе строительства гаража с навесом. 

Оттаиваю после зимы и отдыха от строительства

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

Почти сразу решили, что мини-домиком в этом сезоне мы занимаемся по минимуму. Если что и будем делать, то по мелочам. Пусть это лето спокойно сохнет и отстаивается. За него возьмемся в следующем (2017) строительном сезоне.

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

Концепция гаража с навесом у нас не изменилась, лишь в процессе проектирования немного корректируются размеры. Данное строение состоит из двух равных частей: гаража и навеса для двух машин. Наружные размеры каждой части 6.8 * 6 метров.

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



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


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