Умный дом по радиоканалу

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

Модератор: immortal

Panchez
Сообщения: 99
Зарегистрирован: Вс апр 29, 2012 7:31 pm
Благодарил (а): 0
Поблагодарили: 0

Умный дом по радиоканалу

Сообщение Panchez » Сб май 18, 2013 11:20 pm

Хочу представить вам проект открытой системы автоматизации по радиоканалу x13home.
Система централизованная с резервированием.
Проект разработан нашими соратниками и выложен для повторения. Доступны исходники, печатные платы, прошивки последней версии.
Мной были изготовлены прототипы модулей на базе контроллера ATmega328 и трансивера CC1101 фирмы TI, этот трансивер не смотря на миниатюрный корпус, был выбран не случайно, т.к. по отзывам авторов с ним получены лучшие результаты качества связи. Размеры модуля будут сокращены до 20х45 мм. Также возможно применить трансивер MRF49 от Microchip или использовать готовые модули сторонних производителей Panstamp, Jeelabs, XBee. Модули работают в диапазоне 433/868/915 MHz, я выбрал 868 Mhz. Модули уверенно работают на расстоянии 15 метров через 4 железобетонные стены. По прямой видимости еще не опробованы.
Огромным преимуществом является работа модулей от батарей. Удобно использовать для контроля метеоусловий и использовать солнечные батареи для зарядки аккумуляторов. Модули с батарейным питанием работают до 2,4 вольта, с парой дополнительных сенсоров на I2C например BMP085 + HIH6131, в спящем режиме потребляют менее 90 мкА, в активном 10-20 мА.
Аккумуляторов на 2700 с запасом хватает на 2 недели, когда выходит солнце через 3-4 часа батарея снова полностью заряжена. Все модули идентичные, в зависимости от прошивки могут быть гейтом GW для подключения к компьютеру или нодой ND периферийный модуль.
Доступны модули, работающие по сети Ethernet, прошивка подходит к контроллеру – Мегадевайс MegaD-328.
GW_ND-2.jpg
GW_ND-2.jpg (111.94 КБ) 19062 просмотра
В модуле доступны:
Цифровые входы/выходы до 14 линий (3.3V)
До 6 аналоговых входов с размахом до 1.1/3.3 Вольт
Аппаратный 8-бит ШИМ
Последовательный порт
TWI/I2C устройства

По шине I2C возможно подключение следующих датчиков:
BMP085 (BMP180) – Датчик малых давлений и температуры Bosch
HIH613x – Датчик влажности и температуры фирмы Honeywell (HIH6130/HIH6131/HIH6120/HIH6121)
LM75 – Термометр NXP/NS/STmicro
Si7005 – Датчик влажности Silicon Image

Ядро системы cостоит из модулей
MQTT Broker: Осуществляет рассылку переменных подписчикам
MQTT Client: Осуществляет подключение к вышестоящему брокеру
PLC: Реализует логику управления
Overview.jpg
Overview.jpg (42.96 КБ) 19062 просмотра
Модули расширения
Persistent Storage: Сохранение состояния системы при перезапуске
MQTTS Aggregated Gateway: Обеспечивает преобразование между протоколами MQTT и MQTTS
а так-же коммуникацию с периферийными модулями по UDP и последовательному порту
XBee Gateway: Обеспечивает связь с устройствами на основе XBee
Прочие модули расширения, например KNX и Z-Wave (не входят в open source версию)

Визуальный язык программирования Logram
Настройка алгоритмов производится стандартными логическими элементами, визуальный язык программирования Logram.
Автоматически выключает свет по таймауту
auto_shutdown.jpg
auto_shutdown.jpg (9.93 КБ) 19062 просмотра
Управление и получение данных при помощи PHP
Огромным плюсом данной системы является управление и получение данных при помощи PHP, т.е. есть возможность интегрировать данную систему в любые проекты и получать данные датчиков, управлять устройствами.

Получаем данные для визуализаторов с брокера при помощи PHP скрипта

Код: Выделить всё

<?php
require("phpMQTT.php"); /*https://github.com/bluerhinos/phpMQTT */

/*открываем соединение с брокером*/
$mqtt = new phpMQTT("localhost", 1883, "PHP MQTT Client"); 
/*$mqtt->debug = true;*/

if(!$mqtt->connect(true, NULL, "MQuser", "MQpassword"))  /*Clean, Will, User, Password*/
{
    exit(1);
}

/*Заявляем какие переменные нам нужны, и подписываемся на них */
/*В данном случае получаем системные переменные, как то - время и дату*/
$topics["/system/now/#"] = array("qos"=>0, "function"=>"procmsg");
$mqtt->subscribe($topics,0);

/* цикл крутится пока есть соединение к серверу */
while($mqtt->proc()){}

$mqtt->close();

/*данная функция вызывается каждый раз, когда у нас есть обновление переменных*/
function procmsg($topic,$msg)
{
    /* отрезаем тип переменной, так как в большинстве случаев он нам известен заранее */
    $msgout = substr($msg,strpos($msg, ',', 1) + 1);

    /*здесь мы обрабатываем переменные и решаем что с ними делать*/
    echo "{$topic}\t$msgout\n";
}
?>
результат выглядит следующим образом

/system/now/day 24
/system/now/hour 11
/system/now/minute 43
/system/now/month 10
/system/now/second 57
/system/now/wDay 3
/system/now/year 2012
/system/now/second 58

Пример php скрипта, который не только читает, но и пишет

Код: Выделить всё

<?php
require("phpMQTT.php"); /*https://github.com/bluerhinos/phpMQTT */

$mqtt = new phpMQTT("serverN", 1883, "PHP Sync");
$mqtt->debug = true;

if(!$mqtt->connect(true, NULL,"user","pass"))  /*Clean, Will, User, Password*/
{
    exit(1);
}

$mqtt->publish("/Public/var13",128); /*$topic, $content, $qos = 0, $retain = 0*/
$mqtt->publish("/Public/var25",'"Hello World!"'); /*$topic, $content, $qos = 0, $retain = 0*/

$mqtt->close();
?>
var13 System.Int64
var25 System.String

user, pass - реальный пользователь, занесенный в "security.dat"

HTTP сервер
В последней версии подключен http сервер:
Реализация Toby Jaffey (https://github.com/jobytaffey/mqtt-http-server)
Пример находится в ./htdocs/index.html

Код: Выделить всё

<html>
<head>
  <title>X13</title>
</head>
<body>

  <p>Hello</p>
  <input id="iMin" type="number" value="99" />
  <input id="chSel" type="checkbox" />
  <script type="text/javascript" src="jquery-1.9.1.min.js"></script>
  <script type="text/javascript" src="pubsub.js"></script>
  <script type="text/javascript">
    var timer;

    function reconnect() {
      clearTimeout(timer);
      timer = setTimeout(function () { startStreaming(); }, 1000);
    }

    function dispatchFunc(topic, val) {
      $("#iMin").attr('value', val);
    }

    function startStreaming() {
      pubsub.register({ data: dispatchFunc, error: reconnect });
      pubsub.subscribe("/var/long", { success: pubsub.read });
    }

    $(window).load(function () {
      startStreaming();
      $("#chSel").click(function () { pubsub.publish("/var/bool", $("#chSel").prop("checked")); });
    });
  </script>
</body>
</html>
pubsub.register{} - Регистрация обработчиков
pubsub.subscribe - Подписка на переменные
pubsub.publish - Отправка переменных

Экспорт данных
https://cosm.com/feeds/82625
feed.JPG
feed.JPG (54.84 КБ) 19062 просмотра
Видео урок
http://www.youtube.com/watch?v=6IH9ngpr ... e=youtu.be

Сайт проекта: X13Home
Оригинал статьи: Умный дом по радиоканалу
Ветка форума: на www.ab-log.ru
С уважением
Александр.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Умный дом по радиоканалу

Сообщение Alex » Вс май 19, 2013 7:09 pm

Что нужно?

Нужен набор стандартных беспроводных модулей (контакты, PIR, температура, датчики протечки и т. д.) с питанием от литиевых батареек и с простым программированием. С временем жизни около года. Миниатюрные и с приличным внешним видом.

Для чего?

Если отделка помещений уже завершена, то с прокладкой проводов возникают очевидные проблемы. А так можно спокойно автоматизировать всё по радиоканалу.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Умный дом по радиоканалу

Сообщение sergejey » Пн май 20, 2013 10:28 am

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

Ещё вопрос -- сейчас брокер реализован только под windows?

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Panchez
Сообщения: 99
Зарегистрирован: Вс апр 29, 2012 7:31 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Умный дом по радиоканалу

Сообщение Panchez » Пн май 20, 2013 11:19 am

Да, сердцем системы является брокер сообщений, он принимает входящие сообщения и рассылает их подписчикам.

Подписчиками могут быть:
PLC
Гейт между протоколами MQTT и MQTT-S
Другой брокер
Визуализатор на основе PHP Java и т.д.
Другие устройства по протоколу MQTT
Внешние модули для подключения других устройств и систем

Рассмотрим типичный случай - кнопка управления светом.
Когда вы нажимаете кнопку, нода обнаруживает что состояние входа изменилось и отправляет сообщение через гейт на брокер
кнопка->переменная С->нода И->радиоканал->гейт->COM порт->гейт MQTT-S to MQTT -> брокер -> переменная брокера С
брокер рассылает изменившуюся переменную подписчикам, например PLC и визуализатор
PLC обрабатывает событие, изменяет другую переменную и отсылает её в брокер.
далее брокер снова рассылает изменившуюся переменную подписчикам, для выходной переменной подписчики это визуализатор и переменная Л на ноде К путь может выглядеть следующим образом
Переменная Л ->NET->брокер 2->гейт mqtt to mqtt-s->COM->gate to RF->радиоканал->нода К->переменная Л->Выход П или Переменная Л ->NET->NET нода К->переменная Л->Выход П

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

Файлы Engine.exe и MQTTS.dll совместимы с Mono v.2.
Автор запускал клиент сервер на Raspberry PI(ArchLinux).
использовались модули: MQTT Client, MQTT-S Gateway, PLC
Основной сервер с базой данных запущен на "нормальном" компьютере.
Занимает до 25 МБ в памяти, средняя нагрузка на процессор 0,6-4%
Вложения
IMG_0584L.JPG
IMG_0584L.JPG (105.56 КБ) 19011 просмотров
X13SRV_PI.PNG
X13SRV_PI.PNG (91.63 КБ) 19011 просмотров
С уважением
Александр.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Умный дом по радиоканалу

Сообщение sergejey » Пн май 20, 2013 11:51 am

Интересно... Я, признаться, не слышал раньше про MQTT-протокол как таковой, но большой проблемы с интеграцией в систему не вижу. Можно сделать аналогично поддержке 1-wire или SNMP. Если сделаете доступ по публичному IP к MQTT-брокеру, то я смогу попробовать удалённо сделать интеграцию.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Panchez
Сообщения: 99
Зарегистрирован: Вс апр 29, 2012 7:31 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Умный дом по радиоканалу

Сообщение Panchez » Пн май 20, 2013 9:14 pm

Думаю попробовать. Идеальным вариантом было бы отправить модули :) Написал в ЛС.
С уважением
Александр.
comparator
Сообщения: 7
Зарегистрирован: Пн ноя 26, 2012 5:38 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Умный дом по радиоканалу

Сообщение comparator » Чт июн 13, 2013 8:33 am

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

От себя добавлю что сейчас доступен демо интерфейс по адресу http://x13home.net/
Добавлена интеграция с системой видеонаблюдения на основе Netcam Studio

Основной сайт На гитхабе или короткая ссылка X13home.org

Panchez
Спасибо за проделанную работу, у нас сделать внятно читабельное описание не получается.
извините, а на какой ЛС отсылалось сообщение ? Так как на эту тему меня навел человек вопросом, почему я не отвечаю на сообщения в данной теме. На сайте предоставлен e-mail для контакта.

sergejey

Наш сервер совместим со стандартом MQTT, просто поиграться можно с любым из доступных, например m2m.eclipse.org.
Или если нет аллергии на Windows, можно скачать и попробовать наш сервер.
С версией под Linux пока идет борьба с переменным успехом.

Я так-же могу предоставить доступ к тестовой системе. Если интересует пожалуйста в ПМ.

Меня уже много раз спрашивали как скрестить нашу систему с вашей, но так как среди нас нет PHP программиста вопрос пока остается открытым.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Умный дом по радиоканалу

Сообщение sergejey » Чт июн 13, 2013 10:47 am

comparator, добро пожаловать! :)

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

То, что под Linux сервера MQTT пока это не очень хорошо, но, думаю, что со временем доделаете -- я лично под Windows сижу, но многие на Linux, так что спрос есть.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
comparator
Сообщения: 7
Зарегистрирован: Пн ноя 26, 2012 5:38 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Умный дом по радиоканалу

Сообщение comparator » Чт июн 13, 2013 8:26 pm

sergejey

Спасибо за разъяснение, а то я с просонья не совсем вникнул в смысл предыдущих сообщений.

Panchez

А вы производство модулей поставили на промышленную основу ?
Если будут спрашивать где купить, можно отправлять к вам ?
Panchez
Сообщения: 99
Зарегистрирован: Вс апр 29, 2012 7:31 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Умный дом по радиоканалу

Сообщение Panchez » Чт июн 13, 2013 9:27 pm

comparator писал(а): Panchez
А вы производство модулей поставили на промышленную основу ?
Где то через месяц полтора будут уже полностью готовые модули 23x45мм. На MRF49 и 1101.
Учтены (на мой взгляд) недостатки существующих предложений.
Так же будут 2 варианта шилдов, с возможностью батарейного питания 1хАА и установки разнообразных датчиков (
совместимость с другими проектами). Планирую использовать альтернативные источники энергии : солнечные батареи, возможно пельтье, но это немного позже.
comparator писал(а): Если будут спрашивать где купить, можно отправлять к вам ?
Да, конечно, но модули пока будут продаваться только на Украине, есть трудности отправки электроники в другие страны, может со временем изменится к лучшему.
Вложения
Node_CC1101_V3.JPG
Node_CC1101_V3.JPG (42.1 КБ) 18787 просмотров
С уважением
Александр.
Ответить