Популярные Статьи
Открытая система управления “умным домом” MajorDoMo - Часть 1
В этой статье я расскажу об одном проекте, которым занимаюсь уже довольно продолжительное время и ко ...»
Открытая система управления “умным домом” MajorDoMo - Часть 2
Часть 1 Недавно вышла новая версия комплекса MajorDoMo, о котором была обзорная статья, и я решил ...»
Умный дом по радиоканалу
Представлем Вам проект открытой системы автоматизации по радиоканалу X13HOME. Доступны исходники, п ...»

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

Представлем Вам проект открытой системы автоматизации по радиоканалу X13HOME.
Доступны исходники, печатные платы, прошивки последней версии.
Модульная структура позволяет строить распределенные отказоустойчивые системы.
Централизованное управление позволяет полностью контролировать все аспекты поведения системы.
Визуальный язык программирования Logram.
Отладка алгоритмов в режиме реального времени.
Использование открытых протоколов MQTT и MQTTS позволяет расширять систему сторонними компонентами.
Иерархическая модель данных облегчает использование взаимосвязанной информации.
Низкая стоимость оборудования. Сохранена совместимость с Arduino.

Ядро системы cостоит из модулей:

MQTT Broker: Осуществляет рассылку переменных подписчикам
MQTT Client: Осуществляет подключение к вышестоящему брокеру
PLC: Реализует логику управления

Модули расширения

Persistent Storage: Сохранение состояния системы при перезапуске MQTTS Aggregated Gateway: Обеспечивает преобразование между протоколами MQTT и MQTTS а так-же коммуникацию с периферийными модулями по UDP и последовательному порту
XBee Gateway: Обеспечивает связь с устройствами на основе XBee
Прочие модули расширения, например KNX и Z-Wave (не входят в open source версию)

Аппаратная часть

Основой для реализации является универсальный радиомодуль, основанный на микроконтроллере ATmega168/328 и трансивера от фирмы Microchip MRF49 или TI СС110x. В зависимости от прошивки, модуль может быть как гейтом (подключаться к компьютеру) так и нодой (периферийный модуль). Также поддерживаются модули сторонних производителей Panstamp, Jeelabs, XBee. Модули работают в диапазоне 433/868/915 MHz.
Возможна длительная работа от батарей или аккумуляторов. (Модули с батарейным питанием работают до 2.4 вольта, с парой дополнительных сенсоров на I2C например BMP085 + HIH6131, в спящем режиме потребляют менее 90 мкА, в активном 10-15 мА.) Доступны модули, работающие по сети Ethernet.


Модули Sigma совместимые с X13Home на базе трансивера CC1101

В модуле доступны:

Цифровые входы/выходы до 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

Пользовательский интерфейс

Управление и диагностика. Позволяет в реальном времени контролировать и изменять переменные и правила обработки данных и событий (logram).
Доступ к данным на основе PHP, node.js или других языков с MQTT клиентами
Собственный клиент

 

Визуальный язык программирования Logram.

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

Автоматически выключает свет по таймауту

Ночное-дежурное освещение в коридоре, плюс плавное включение/выключение


где Av7 - это информация с датчика освещенности - аналоговый вход на другой ноде Ip18,Ip19 - датчики движения, In31 - геркон на входной двери PB30 - Выход PWM на управление LED's

Немного о структуре сети

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

Подписчиками могут быть:

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 нода К->переменная Л->Выход П

HTTP сервер

Реализация Toby Jaffey https://github.com/jobytaffey/mqtt-http-server
Пример находится в ./htdocs/index.html

pubsub.register{} - Регистрация обработчиков
pubsub.subscribe - Подписка на переменные
pubsub.publish - Отправка переменных

Если порт 80 занят другой программой его можно изменить в файле data/engine.xst +:80 -> +:Ваш порт.

<root head="/local/cfg">
<item name="HttpServer">
<item name="_url" value="http://+:8080/" type="System.String" />
<item name="enable" value="true" saved="True" type="System.Boolean" />
</item>
</root>

Управление и получение данных при помощи PHP

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

<?php<br>require("phpMQTT.php"); /*https://github.com/bluerhinos/phpMQTT */<br><br>/*открываем соединение с брокером*/<br>$mqtt = new phpMQTT("localhost", 1883, "PHP MQTT Client"); <br>/*$mqtt->debug = true;*/<br><br>if(!$mqtt->connect(true, NULL, "MQuser", "MQpassword")) /*Clean, Will, User, Password*/<br>{<br> exit(1);<br>}<br><br>/*Заявляем какие переменные нам нужны, и подписываемся на них */<br>/*В данном случае получаем системные переменные, как то - время и дату*/<br>$topics["/system/now/#"] = array("qos"=>0, "function"=>"procmsg");<br>$mqtt->subscribe($topics,0);<br><br>/* цикл крутится пока есть соединение к серверу */<br>while($mqtt->proc()){}<br><br>$mqtt->close();<br><br>/*данная функция вызывается каждый раз, когда у нас есть обновление переменных*/<br>function procmsg($topic,$msg)<br>{<br> /* отрезаем тип переменной, так как в большинстве случаев он нам известен заранее */<br> $msgout = substr($msg,strpos($msg, ',', 1) + 1);<br><br> /*здесь мы обрабатываем переменные и решаем что с ними делать*/<br> echo "{$topic}&#92;t$msgout&#92;n";<br>}<br>?>

результат выглядит следующим образом

/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<br>require("phpMQTT.php"); /*https://github.com/bluerhinos/phpMQTT */<br><br>$mqtt = new phpMQTT("serverN", 1883, "PHP Sync");<br>$mqtt->debug = true;<br><br>if(!$mqtt->connect(true, NULL,"user","pass")) /*Clean, Will, User, Password*/<br>{<br> exit(1);<br>}<br><br>$mqtt->publish("/Public/var13",128); /*$topic, $content, $qos = 0, $retain = 0*/<br>$mqtt->publish("/Public/var25",'"Hello World!"'); /*$topic, $content, $qos = 0, $retain = 0*/<br><br>$mqtt->close();<br>?>

var13 System.Int64
var25 System.String

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

Экспорт данных

Универсальный шилд

Шилд SBB-1 для модулей Gamma и Sigma с  батарейным или внешним питанием.
Предусмотрена установка различных датчиков: температуры, давления, влажности работающих по шине I2C и аналоговых датчиков. Для батарейного питания применен высокоэффективный преобразователь с низким собственным энергопотреблением. При батарейном питании рекомендуется применять модули с карцевым резонатором 32.768 KHz (для калибровки внутреннего генератора) и использовать внутренний генератор процессора. В такой конфигурации, в режиме Sleep, потребление модуля составит несколько микроапер.

 

Приобрести модули и шилды в магазине.

Ссылки:

Сайт проекта X13Home
MQTT.ORG
Realtime data with MQTT, Node.js, MQTTClient.js and Socket.IO
Open source PHP implementation of MQTT - phpMQTT
Simple Asynchronous Messaging (SAM) – includes support for MQTT
Ветка форума на:  www.ab-log.ru

  Отзывов: 0
Ваше Имя:


Ваш отзыв: Внимание: HTML не поддерживается! Используйте обычный текст.

Оценка: Плохо           Хорошо

Введите код, указанный на картинке:



Последние Статьи
Замена оптики в камере Mobius
За несколько лет производства камеры Mobius завоевали популярность прежде всего из за своей низкой ц ...»
03.08.2015 в 16:37    Просмотров: 1815
Установка WiFi TP-Link TL-WN725N на Raspberry Pi
Установка драйвера: Вводим поочередно wget https://dl.dropboxusercontent.com/u/80256631/ ...»
08.02.2015 в 14:16    Просмотров: 769
Умный дом по радиоканалу
Представлем Вам проект открытой системы автоматизации по радиоканалу X13HOME. Доступны исходники, п ...»
08.02.2015 в 13:40    Просмотров: 2439
Последние отзывы
Установка WiFi TP-Link TL-WN725N на Raspberry Pi
Премного благодарен! Удалось очень быстро настроить адаптер. ...»
05.06.2015 в 10:14    Просмотров: 769
Антон
Открытая система управления “умным домом” MajorDoMo - Часть 2
Пользуюсь этой системой уже несколько лет, пока ничего лучше не нашел. Php потихоньку осваиваю интересно, главное могу все настроить идеально, как мне нужно. ...»
02.06.2015 в 16:14    Просмотров: 2830
Mixa