Умный дом: программирование, скрипты, программная платформа

 
+
-
edit
 

Balancer

администратор
★★★★★
Пора начинать связывать компоненты в единое целое.

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

Хочется чего-то простого и универсального.

Пока думаю вообще о простой системе на bash-скриптах :)

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

- Сбор данных с внешних сенсоров и нод и отправка данных в хранилище.

- Собственно, хранилище.

- Исполнительная часть. Компоненты, вызывающие разные действия. Синтез речи, вывод на дисплей и т.п.

- Логический блок, который на основе данных хранилища будет выполнять какие-то команды исполнительного.

Это всё — локально на центральном узле.
 44
RU Balancer #17.06.2017 12:18  @Balancer#17.06.2017 12:16
+
-
edit
 

Balancer

администратор
★★★★★
Balancer> Привязываться к одной платформе — это сразу большое ограничение

Хотя, на самом деле, ничто не мешает делать всю эту обвязку вокруг готовых IoT-платформ, если они достаточно открыты для этого. А если нет — то тем хуже для них :)
 44
+
-
edit
 

Balancer

администратор
★★★★★
Из того, что успели порекомендовать из готовых платформ:

Home Assistant

Open-source home automation platform running on Python 3. Track and control all devices at home and automate control. Installation in less than a minute. //  home-assistant.io
 

Демо:

Home Assistant Demo

Open-source home automation platform running on Python 3 and Polymer. //  home-assistant.io
 

Связка к нему:

nfarina/homebridge

homebridge - HomeKit support for the impatient //  github.com
 

Также:

MajorDoMo Main/MajorDoMo — open source smart home platform

MajorDoMo — free and open-source home automation platform //  majordomohome.com
 

На русском:

MajorDoMo — умный дом и домашняя автоматика своими руками

Веб-сайт MajorDoMo — открытой и бесплатной системе управления Умным Домом //  majordomo.smartliving.ru
 
 44
+
-
edit
 

Balancer

администратор
★★★★★
В общем, сейчас:

- Установил и настроил Home Assistant. Глубоко не копал, чисто как база. То, что у него есть встроенный MQTT-сервер позволило пока забить на выделенный сервер.

- Настроил отправку по MQTT данных с ESP8266 от BME280 с температурой/влажностью/давлением. Их принимает, накапливает и рисует Home Assistant.

- На Orange Pi, куда подцеплены колонки, поставил скрипт, который подписывается на MQTT и синтезирует речь. Т.е. сейчас в доме любое устройство может по MQTT отправить текстовое сообщение, которое будет озвучено. Кстати, перед произнесением речи поставил тихое «блимканье», чтобы внезапный мужской голос никого не пугал :D

Можно также начать гнать на Home Assistent информацию о наличии людей в комнате с уже подключенного PIR-сенсора. Но надо будет поиграть с параметрами определения наличия людей в комнате.

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

Надо писать давнюю свою задумку, генератор вариативных сообщений, чтобы каждая фраза не доставала своей постоянностью :)
 44
RU Balancer #17.06.2017 16:45  @Balancer#17.06.2017 16:42
+
-
edit
 

Balancer

администратор
★★★★★
Интересно, Home Assistant сам обнаружил ТВ Samsung и может им управлять дистанционно. Также начал вести статистику, когда ТВ включен :)
Прикреплённые файлы:
2017-06-17_16-44-33.png (скачать) [1035x709, 48 кБ]
 
 
 44
+
+1
-
edit
 

Balancer

администратор
★★★★★
За прошедшее время сформировалась такая структура.

- Готовые решения, типа HomeAssistant так и не прижились.

- Использую для обмена данными MQTT. В основном Mosquitto MQTT на домашнем сервере. Часть устройств шлёт дополнительно данные и на внешние сервера, но на практике их уже почти перестал использовать. Может быть полезным для доступа снаружи к последним данным при пропаже Интернета, но это мало востребованный случай.

- Сенсоры в основном работают на ESP8266, которые шлют данные на MQTT самостоятельно. Хотя есть один Arduino Nano с парой сенсоров, подцепленный к Orange Pi по USB и посылающий данные по последовательному порту. А уже Oramge Pi закидывает их в MQTT.

- Визуализация данных осуществляется в основном в Munin. Что-то типа такого:

 

 

 

 


- Анализ данных делается по cron на домашнем сервере. Если что-то требует реакции, информаирует об этом голосом и/или в Телеграм. Вся процедура разбита на много крошечных скриптиков по классам. Одни скрипты возвращают сырое значение сенсоров из MQTT, другие анализируют полученные данные на предмет критичности, третьи делают логику, «если критично — то известить» и уже они дёргаются периодически.

- Голосовой синтез делается через Яндекс. Зависимость от Интернета, но локалхостового качественного синтеза пока нет.

- «Голосовая точка» — Orange Pi с собственными колонками, громкость которых никогда не убирается.

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

- Утром включается подсветка аквариума у черепахи, включается светодиодная гирлянда, включается понемногу нарастающая громкость интернет-радио. Во время подъёма синтезатор речи приветствует, сообщает погоду на улице. В разгар сбора напоминает дочке расписание в школе.

- Вечером сперва раздаются предупреждения за два часа, за час и за 15 минут до сна. Потом идёт пожелание спокойной ночи, отключение аквариума у черепахи. Если через полчаса свет всё ещё включен, робот начинает периодически ругаться, что ему мешают спать :)

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

Датчик присутствия в комнате пока отрублен. Не подключена ругань на душный воздух через концентрацию CO_2. Так и не висит ещё в прихожей LED-матрица со временем, прогнозом погоды и т.п. Подумываю, тем не менее, о приобретении ещё одной такой же матрицы, чтобы в зале отображать на ней рожу робота с комментариями о каких-то проблемах в доме :)
Прикреплённые файлы:
 
 44
+
-
edit
 

Balancer

администратор
★★★★★
Вот так примерно выглядит данными через MQTT:
Прикреплённые файлы:
 
 44
+
-
edit
 

Balancer

администратор
★★★★★
Примерно так сейчас выглядит общение с роботом в Телеграм:
Прикреплённые файлы:
 
 44
+
-
edit
 

Evgeniz

опытный

Balancer> Вот так примерно выглядит данными через MQTT:
А вот это не пробовал:
Mongoose OS - reduce IoT firmware development time up to 90% ?
 62.0.3202.9462.0.3202.94
+
-
edit
 

Balancer

администратор
★★★★★
Evgeniz> А вот это не пробовал

Пробовал, совершенно не понравилось :) Монструозное (на ESP-01 не влезает) и ничего не умеет (библиотеки очень бедные в сравнении с NodeMCU).
 44
RU spam_test #23.11.2017 14:48
+
-
edit
 

spam_test

аксакал

А газоанализаторы какие вообще бывают? В смысле, какие газы?
 44
RU Evgeniz #23.11.2017 15:52  @spam_test#23.11.2017 14:48
+
-
edit
 

Evgeniz

опытный

s.t.> А газоанализаторы какие вообще бывают? В смысле, какие газы?

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

Оцениваем качество воздуха с датчиком CCS811 от ams

В одной из предыдущих статей раздела Унитере мы уже рассказывали про датчики качества воздуха iAQ-core от ams. Данная статья будет посвящена еще одному датчику CCS811 от того же производителя. По сравнению с iAQ-core новые сенсоры CCS811 имеют расширенный диапазон измерений ЛОВ и CO2, увеличенный диапазон рабочих температур, более гибкую систему потребления. Рис. 1. Оценка качества воздуха Окружающий нас воздух представляет собой смесь газов и состоит в основном из азота (около 78%) и кислорода (около 21%). Оставшийся процент приходится на долю различных примесей (инертные газы, углекислый газ, угарный газ, органические летучие вещества (ЛОВ) и т. //  Дальше — www.terraelectronica.ru
 
 62.0.3202.9462.0.3202.94
RU Balancer #23.11.2017 16:13  @spam_test#23.11.2017 14:48
+
-
edit
 

Balancer

администратор
★★★★★
s.t.> А газоанализаторы какие вообще бывают? В смысле, какие газы?

Очень разные. Есть примитивные, по классам газов и в результатами в попугаях. С ценниками порядка 100-200 рублей («китайских», в смысле, на АлиЭкспресс). Например:

MQ-2 — углеводородные газы (пропан, метан, н-бутан), дым, спирт (у меня такой как раз на кухне и используется)
MQ-3 — этанол (алкоголь в смысле)
MQ-4 — природный газ, метан
MQ-5 — сжиженный газ, природный газ, угольный газ
MQ-7 — угарный газ
MQ-9 — углеводородные газы (пропан, метан, н-бутан), угарный газ (есть такой, не использовал)
MQ-135 — бензол, спирт, дым. Условно считается как «датчик чистоты воздуха» (тоже есть такой, тоже ещё не использовал)

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

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

MH-Z19 — популярный датчик углекислого газа, у меня таких два сейчас стоит. Выход через последовательный порт.
MICS-6814 — сразу три раздельных выхода для угарного газа, аммиака и оксидов азота. Но выходы, по-моему, аналоговые (вживую не щупал, не разбирался)
CCS811 — угарный газ, цифровой выход I²C.

Есть датчики классом выше, уже по 5-10 тыс. рублей, но к ним даже не присматривался :)
 44
+
-
edit
 

Balancer

администратор
★★★★★
Evgeniz> Оцениваем качество воздуха с датчиком CCS811 от ams

Надо заказать, что ли :)Ценник от 543 рублей за готовый модуль:. Ой, это не тот :)

Вот, от 577руб:

CJMCU 811 CCS811 Carbon Monoxide CO VOCs Air Quality Numerical Gas Sensors-in Integrated Circuits from Electronic Components & Supplies on Aliexpress.com | Alibaba Group

Cheap gas detector sensor, Buy Quality gas level sensor directly from China gas sensor Suppliers: CJMCU-811 CCS811 Carbon Monoxide CO VOCs Air Quality Numerical Gas Sensors //  www.aliexpress.com
 
 44
+
-
edit
 

Balancer

администратор
★★★★★
Подводный камень, требующий устранения. Все данные, что не отдаются мгновенно по запросу, нужно собирать заранее в какое-то быстрое хранилище. Например, запрос параметра у retained-значения MQTT через командную строку занимает около секунды. Вывести десяток параметров — 10 секунд. Уже долго приходится ждать.

Или, того круче. У меня утром робот сообщает прогноз погоды, как я писал выше. Но уже два дня как там что-то отвалилось и скрипт, опрашивающий погоду, ждёт несколько минут, пока отвалится. Из-за этого утренняя побудка стала задерживаться на несколько минут :)
 44
+
+1
-
edit
 

Evgeniz

опытный

Balancer> Подводный камень, требующий устранения.
На компэле разродились статьей по данной тематике:

Простая и эффективная система контроля окружающей среды: создаем с нуля

Сергей Китаин (г. Москва) Как построить систему контроля параметров окружающей среды для бытового использования, применяя бюджетные компоненты? – для этого достаточно прочесть предлагаемую статью и приобрести все необходимое со склада компании КОМПЭЛ. Думаю, каждому из нас знакомо это ощущение – и рад бы сделать что-то полезное, но так душно, что невольно погружаешься в состояние вялости и апатии. Или жарко, нечем дышать. Или, наоборот, холодно, зябнут ноги, и внимание постоянно ускользает. Самочувствие человека и его работоспособность существенно зависят от состояния окружающей среды. //  Дальше — www.compel.ru
 
 62.0.3202.9462.0.3202.94
+
-
edit
 

Balancer

администратор
★★★★★
Evgeniz> На компэле разродились статьей по данной тематике

Ну, там просто перечислили сенсоры. Ничего нового :) И по программной тематике в смысле платформы, как раз ничего не сказали.
 44

в начало страницы | новое
 
Поиск
Поддержка
Поддержи форум!
ЯндексЯндекс. ДеньгиХочу такую же кнопку
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru