Дорогі покупці, магазин працює, склад та ціни актуальні. Всі замовлення обробляються та надсилаються протягом 1-3 днів.
Популярні Статті
Умный дом Xiaomi ZigBee на Raspberry Pi + Home Assistant
В этой статье пойдет речь о датчиках, розетках, выключателях Xiaomi Aqara/Mijia. Я расскажу к ...»
Home Assistant + база SQL MariaDB оптимизация
Все чаще у многих пользователей Home Assistant возникает вопрос о выросшем файле базы данных. П ...»
Открытая система управления “умным домом” MajorDoMo - Часть 1
В этой статье я расскажу об одном проекте, которым занимаюсь уже довольно продолжительное время и ко ...»

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

Представлем Вам проект открытой системы автоматизации по радиоканалу 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 не підтримується! Використовуйте звичайний текст.

Оцінка: Погано           Добре

Введіть код, вказаний на зображенні:



Останні статті
Відстеження людей з mmWave сенсором LD2450
Датчик Hi-Link LD-2450 дозволяє відстежувати присутність, швидкість руху та координати до трьох ос ...»
27.11.2023 в 12:41    Переглядів: 1253
Голосовий асистент з Home Assistant та ESPHome
Відео версія статті: Голосовий асистент з Home Assistant та ESPHome Як ви можете знати 2023 ...»
24.10.2023 в 15:54    Переглядів: 1846
Таблиця перекладу ємностей та позначень конденсаторів
​​  μF микрофарады nF нанофарады pF пикофарады Co ...»
03.10.2023 в 17:09    Переглядів: 603
Останні відгуки
Голосовий асистент з Home Assistant та ESPHome
Добрий день. Дуже гарна iдея) Колись я скопiюю увесь проэкт, але на данний момент менi потрiбно тiльки iнформування i2s_audio: - i2s_lrclk_pin: 13 i2s_bclk_pin: 14 id: audio_bus me ...»
15.12.2023 в 00:20    Переглядів: 1846
Антон
Замок по отпечатку пальца Wi-Fi для Home Assistant
Благодарю за очень полезный материал, даже не знал что ESPHome уже со сканерами работает. Спасибо, удачи в проектах, пишите еще!!! ...»
16.06.2021 в 13:13    Переглядів: 4557
Анатолий
Умный дом Xiaomi ZigBee на Raspberry Pi + Home Assistant
Отличная статья но есть ошибки, а именно отсутствует в основном конфиге sensor: - platform: mqtt name: Bridge state state_topic: "zigbee2mqtt/bridge/state" icon: mdi:rout ...»
10.02.2020 в 20:25    Переглядів: 24277
Kolyk