Руководство для начинающих OpenHAB, часть 2: ZWave, MQTT, правила и графики

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

Это руководство доступно для скачивания в формате PDF. Загрузите руководство для начинающих по OpenHAB, часть 2: ZWave, MQTT, правила и графики сейчас. Не стесняйтесь копировать и делиться этим со своими друзьями и семьей.

В первой части руководства я рассказал вам об установке OpenHAB на Raspberry Pi

представил основные концепции OpenHAB и показал, как добавить свои первые элементы в систему. Сегодня мы пойдем дальше:

  • Добавление устройств ZWave
  • Добавление контроллера Harmony Ultimate
  • Представляя правила
  • Представляем MQTT и устанавливаем брокер MQTT на Pi, с датчиками на Arduino
  • Запись данных и их отображение

Введение в Z-Wave

В течение многих лет Z-Wave был доминирующим протоколом домашней автоматизации: он надежен, получил широкое развитие и работает гораздо дольше, чем любые другие продукты для умного дома. Вам доступны сотни датчиков Z-Wave, которые выполняют широкий спектр задач. OpenHAB может работать с Z-Wave, но его сложно настроить, и надежность не гарантируется.

Если вы планируете приобрести дом, полный датчиков Z-Wave специально для использования с OpenHAB, я настоятельно призываю вас пересмотреть. Это может хорошо сработать для вас, или это может быть связано с небольшими, но постоянными проблемами. По крайней мере, не покупайте дом, полный датчиков, пока у вас не будет возможности опробовать несколько. Единственная причина выбрать Z-Wave — это то, что вы не на 100% остановились на OpenHAB и хотели бы оставить свои варианты открытыми в будущем: Z-Wave, например, работает с Samsung SmartThings

концентратор, а также специальные концентраторы Z-Wave, такие как Homeseer, и ряд других программных опций, таких как Domoticz.

Хотя OpenHAB включает в себя привязку Z-Wave, вам все равно нужно сначала настройте сеть Z-Wave, прежде чем OpenHAB сможет начать запрашивать данные. Если у вас есть плата контроллера Rasberry, у вас есть какое-то программное обеспечение для настройки сети, поэтому мы не будем рассказывать об этом здесь. Если вы купили контроллер USB-накопителя Aeotec Z-Stick или аналогичный, у вас, вероятно, нет прилагаемого программного обеспечения, поэтому продолжайте читать.

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

Logitech Harmony Binding

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

чтобы упростить работу домашнего медиацентра, но они часто выступают как отдельная система в «умном доме». Благодаря OpenHAB действия Logitech Harmony и полный контроль над устройствами теперь могут быть частью вашей централизованной системы и даже включены в правила автоматизации.

Начните с установки трех обязательных файлов, которые вы найдете, используя apt-cache для поиска «гармонии»:

openhab apt-cache поиск связывания гармонии

Не забудьте Чаун каталог привязок снова, когда вы закончите:

sudo apt-get install openhab-addon-action-harmonyhub
sudo apt-get install openhab-addon-binding-harmonyhub
sudo apt-get install openhab-addon-io-harmonyhub
sudo chown -hR openhab:openhab /usr/share/openhab

Чтобы настроить привязку, откройте файл openhab.cfg и добавьте новый раздел следующим образом:

########## HARMONY REMOTE CONTROLS ##########
harmonyhub:host=192.168.1.181 or your ip
harmonyhub:username=your-harmony-email-login
harmonyhub:password=your-password

IP-адрес вашего Harmony. Используйте сетевой сканер, чтобы выяснить это. Вам также необходимо ввести данные для входа в систему, те, которые вы вводите при запуске стандартной утилиты конфигурации Harmony. Это оно. После перезапуска Hue ваш журнал отладки должен иметь внезапный всплеск вывода из привязки.

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

форматированный JSON вывод openhab

Наряду со стандартным действием PowerOff, которое используется по умолчанию, вы найдете свои собственные определенные действия, перечисленные здесь по имени. Теперь давайте создадим простой элемент управления одной кнопкой, чтобы начать действия. Сначала добавьте следующую строку в ваш файл товаров. Измените группу и значок, если хотите.

/* Harmony Hub */
String Harmony_Activity "Harmony [%s]"  (Living_Room) {harmonyhub="*[currentActivity]" }

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

Switch item=Harmony_Activity mappings=[PowerOff='Off',Exercise='Exercise',13858434='TV',Karaoke='Karaoke']

В квадратной скобке вы увидите каждое действие вместе с ярлыком. Как правило, вы можете напрямую ссылаться на действия, как вы назвали их на пульте дистанционного управления, но я обнаружил, что исключением из них является пробел в названии действия, например «Смотреть телевизор». В этом случае вам нужно будет использовать идентификатор активности. Опять же, вы можете найти идентификатор в выходных данных отладки JSON. Сохраните и обновите ваш интерфейс, вы должны увидеть что-то похожее на это:

openhab гармония в карте сайта

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

Общее введение в правила

Большинство центров умного дома включают создание правил, позволяющих автоматически реагировать на данные датчиков и события в доме. На самом деле, я бы сказал, что по-настоящему умный дом — это не то, что вам нужно, чтобы тратить время на взаимодействие с мобильными приложениями. Это тот, который невидим для конечного пользователя и полностью автоматизирован. С этой целью OpenHAB также включает в себя мощный язык сценариев правил, который вы можете программировать, значительно превосходя сложность большинства умных домашних центров.

или рецепты IFTTT

,

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

rule "Office light on when James present"
when
Item JamesInOffice changed from OFF to ON
then
sendCommand(Office_Hue,ON)
end
rule "Office light off when James leaves"
when
Item JamesInOffice changed from ON to OFF
then
sendCommand(Office_Hue,OFF)
end

Сначала назовем правило — будь наглядным, чтобы ты знал, какое событие запускает. Далее мы определяем наше простое правило, говоря, что когда x истинно, тогда сделайте y. Конец означает закрытие этого конкретного правила. Существует ряд специальных слов, которые вы можете использовать в правилах, но сейчас мы имеем дело с двумя простыми кусочками синтаксиса: Вещь, который позволяет запрашивать состояние чего-либо; а также SendCommand, который делает именно то, что вы думаете, что будет. Я сказал вам, что это было легко.

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

Давайте посмотрим на другой пример для создания запланированного правила.

rule "Exercise every morning"
when
Time cron "0 0 8 1/1 * ? *"
then
harmonyStartActivity("Exercise")
end

Опять же, мы называем правило, укажите условия, когда оно должно срабатывать, и действия, которые необходимо предпринять. Но в этом случае мы определяем модель Времени. Забавный код, который вы видите в кавычках, является выражением CRON для Quartz Scheduler (формат немного отличается от обычного CRONtab). Я использовал cronmaker.com, чтобы помочь создать выражение, но вы также можете прочитать руководство по формату для подробного объяснения и большего количества примеров.

генератор хронCronMaker.com используется для генерации правильно отформатированного выражения Cron

В моих правилах просто сказано: «Каждое утро, 8 часов утра, каждый день недели, говорите моей системе Harmony Ultimate, чтобы она запускала упражнение», которая, в свою очередь, активирует телевизор, Xbox, усилитель и нажимает кнопку A через минуту, чтобы запустить диск в приводе.

К сожалению, OpenHAB пока не может выполнить это упражнение для меня.

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

import org.openhab.core.library.types.*
import org.openhab.model.script.actions.*
import java.lang.String
rule "Humidity Monitor"
when Time cron "0 * * * * ?"
then
var prevHigh = 0
var highHum = ""
Humidity?.members.forEach[hum|
logDebug("humidity.rules", hum.name);
if(hum.state as DecimalType > prevHigh){
prevHigh = hum.state
highHum = hum.name + ": " + hum.state + "%"
}
]
logDebug("humidity.rules", highHum);
postUpdate(Dehumidifier_Needed,highHum);
end

Суть правила заключается в Влажность? .Members.foreach линия. Влажность — это название группы для моих датчиков влажности; .члены захватывает все предметы в этой группе; для каждого перебирает их (с любопытным форматом квадратных скобок, с которым вы, вероятно, не знакомы). Синтаксис правил является производным от Xtend, поэтому вы можете прочитать документацию по Xtend, если не можете найти пример для адаптации.

Вы, вероятно, не будете нуждаться в этом — существуют сотни примеров правил:

  • Подробное объяснение правил на официальной вики
  • Официальные правила образцы вики-страницы
  • Принятие правил на новые высоты
  • Расширенные образцы на IngeniousFool.net

MQTT для OpenHAB и Интернета вещей

MQTT — это легкая система обмена сообщениями для межмашинного общения — своего рода твиттер для ваших Arduinos или Raspberry Pis, чтобы общаться друг с другом (хотя, конечно, он работает не только с этими). Он быстро набирает популярность и становится домом для устройств Internet of Things, которые обычно представляют собой микроконтроллеры с низким уровнем ресурсов, которым требуется надежный способ передачи данных датчиков обратно в концентратор или получения удаленных команд. Это именно то, что мы будем делать с этим.

Но зачем изобретать велосипед?

MQ Telemetry Transport была изобретена еще в 1999 году для соединения нефтепроводов через медленные спутниковые соединения, специально разработанные для минимизации использования батареи и пропускной способности, при этом обеспечивая надежную доставку данных. За прошедшие годы принципы разработки остались прежними, но сценарий использования сместился со специализированных встроенных систем на обычные устройства Интернета вещей. В 2010 году протокол был выпущен без лицензионных платежей, открытый для любого использования и реализации. Нам нравится бесплатно.

Вы можете быть удивлены, почему мы даже беспокоимся о еще одном протоколе — у нас уже есть HTTP-протокол — который можно использовать для отправки быстрых сообщений между всеми видами систем, подключенных к сети (такими как OpenHAB и IFTTT, особенно с новым каналом производителя)

). И ты был бы прав. Однако затраты на обработку HTTP-сервера довольно велики — настолько, что вы не можете легко запустить его на встроенном микроконтроллере, таком как Arduino (по крайней мере, вы можете, но у вас не останется много памяти для чего-либо еще). ). С другой стороны, MQTT легок, поэтому отправка сообщений по вашей сети не приведет к засорению каналов и может легко вписаться в наше маленькое пространство памяти Arduino.

Как работает MQTT?

MQTT требует как сервера (называемого «брокером»), так и одного или нескольких клиентов. Сервер выступает в роли посредника, получая сообщения и ретранслируя их любым заинтересованным клиентам.

Давайте продолжим аналогию с Twitter для машин. Так же, как пользователи Twitter могут твитнуть свои бессмысленные 140 символов, так и пользователи могут «подписаться» на других пользователей, чтобы увидеть курируемый поток сообщений, клиенты MQTT могут подписаться на определенный канал, чтобы получать оттуда все сообщения, а также публиковать собственные сообщения. на этот канал. Этот шаблон публикации и подписки называется Паб / суб, в отличие от традиции клиент / сервер модель HTTP.

HTTP требует, чтобы вы установили связь с компьютером, с которым общаетесь, скажем, Hello, а затем постоянно возвращались друг к другу, пока вы получаете или помещаете данные. При использовании pub / sub клиенту, выполняющему публикацию, не нужно знать, какие клиенты подписаны: он просто выкачивает сообщения, а брокер перераспределяет их всем подписанным клиентам. Любой клиент может как публиковать темы, так и подписываться на них, как пользователь Twitter.

В отличие от Twitter, MQTT не ограничен 140 символами. Он не зависит от данных, поэтому вы можете отправлять небольшие числа или большие текстовые блоки, дейтаграммы в формате JSON или даже изображения и двоичные файлы.

Это не значит, что MQTT лучше, чем HTTP для всего — но это более удобно, если у нас будет много датчиков по всему дому, которые постоянно сообщают об этом.

Также важно знать, что OpenHAB не будет выступать в качестве вашего MQTT-брокера — об этом мы поговорим чуть позже. Однако OpenHAB будет действовать как клиент: он может публиковать ваш журнал активности OpenHAB, а также привязывать определенные каналы к устройствам, так что вы можете, например, иметь переключатель, который управляется сообщениями MQTT на определенном канале. Это идеально подходит для создания дома, полного датчиков.

Установите Mosquitto на свой пи

Хотя OpenHAB включает в себя клиент MQTT, так что вы можете подписаться на тему, а также публиковать сообщения, он не будет выступать в роли сервера. Для этого вам нужно либо использовать веб-брокер MQTT (платный или бесплатный), либо установить бесплатное программное обеспечение на свой Pi. Я бы хотел оставить все как есть, поэтому я установил Mosquitto на Pi.

К сожалению, версия, доступная через обычный apt-get, полностью устарела. Вместо этого давайте добавим последние источники.

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list
sudo apt-get install mosquitto

Это все, что нам нужно сделать, чтобы MQTT-сервер работал и работал в локальной сети. Ваш брокер по умолчанию работает на порту 1883.

Убедитесь, что ваш сервер MQTT работает с использованием бесплатного MQTT.fx, который является кроссплатформенным. Нажмите на значок настроек, чтобы создать новый профиль, и введите IP-адрес или имя вашего Raspberry Pi. Сохраните и нажмите «Подключиться». Если маленький светофор в правом верхнем углу загорается зеленым светом, вам пора.

Пример профиля mqttfx

Для быстрого теста, нажмите на вкладку «подписаться» и введите inTopic / в текстовое поле, затем нажмите Подписывайся кнопка. Теперь вы подписаны на получение сообщения по теме inTopic, хотя на нем будет 0 сообщений. Вернитесь на вкладку публикации, введите inTopic в маленькое поле и короткое сообщение в большое текстовое поле ниже. Удар Публиковать несколько раз и посмотрите на вкладку подписки. Вы должны увидеть несколько сообщений, появившихся в этой теме.

тест inTopic MQTT

Прежде чем мы добавим некоторые реальные датчики в нашу сеть, нам нужно узнать об уровнях тем, которые позволяют нам структурировать и фильтровать сеть MQTT. Имена тем чувствительны к регистру, не должны начинаться с символа $ или содержать пробел или символы, не входящие в ASCII — на самом деле стандартные методы программирования имен переменных.

Разделитель / указывает уровень темы, который является иерархическим, например, ниже приведены допустимые уровни темы.

inTopic/smallSubdivision/evenSmallerSubdivision
myHome/livingRoom/temperature
myHome/livingRoom/humidity
myHome/kitchen/temperature
myHome/kitchen/humidity

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

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

Знак + заменяет любой уровень темы. Например:

myHome/+/temperature

подписал бы клиента на оба

myHome/livingRoom/temperature
myHome/kitchen/temperature

… но не уровень влажности.

# Является многоуровневым подстановочным знаком, поэтому вы можете получить что угодно из массива датчика livingRoom с помощью:

myHome/livingRoom/#

Технически, вы также можете подписаться на корневой уровень #, который дает вам абсолютно все, проходящее через брокера, но это может быть похоже на засовывание в лицо пожарного рукава: немного ошеломляюще. Попробуйте подключиться к общедоступному MQTT-брокеру из HiveMQ и подписаться на #. Я получил около 300 сообщений за несколько секунд до того, как мой клиент просто сломался.

MQTT Совет для начинающих: «/мой дом/» это другая тема, чтобы «мой дом/» — включение косой черты в начале создает пустой уровень темы, который, хотя технически допустим, не рекомендуется, потому что это может сбить с толку.

Теперь, когда мы знаем теорию, давайте попробуем использовать Arduino, Ethernet Shield и датчик температуры и влажности DHT11 — возможно, у вас есть один в вашем стартовом наборе, но если нет, просто поменяйте датчик окружающей среды для движения датчик (или даже кнопка).

Публикация MQTT из Arduino с Ethernet-соединением

Если у вас есть гибридное Arduino-совместимое устройство со встроенным Wi-Fi или Ethernet, это также должно работать. В конце концов нам понадобится лучший / более дешевый способ общения, при котором необходимо использовать сетевое подключение в каждой комнате, но это помогает изучить основы.

Начните с загрузки библиотеки pubsubclient с Github. Если вы использовали кнопку «Скачать как ZIP», структура немного неправильная. Распакуйте, переименуйте папку, чтобы просто pubsubclient, затем возьмите два файла из ЦСИ папку и переместить их вверх на один уровень в корень загруженной папки. Затем переместите всю папку на свой Arduino / библиотеки каталог.

Вот мой пример кода, который вы можете адаптировать: выход сигнала DHT11 находится на выводе 7. Измените IP-адрес сервера для вашего Pi в следующей строке:

client.setServer("192.168.1.99", 1883);

К сожалению, мы не можем использовать его понятное имя (в моем случае OpenHAB.local), так как стек TCP / IP на Arduino очень упрощен, и добавление кода для именования Bonjour заняло бы много памяти, которую мы не хотим тратить впустую. , Чтобы изменить темы, по которым передаются данные датчиков, прокрутите вниз до следующих строк:

char buffer[10];
dtostrf(t,0, 0, buffer);
client.publish("openhab/himitsu/temperature",buffer);
dtostrf(h,0, 0, buffer);
client.publish("openhab/himitsu/humidity",buffer);

Код также включает в себя подписку на командный канал. Найдите и настройте следующую строку:

client.subscribe("openhab/himitsu/command");

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

Загрузите свой код, подключите Arduino к сети и, используя MQTT.fx, подпишитесь либо на #, либо на openhab / himitsu / # (или на то, на что вы изменили название комнаты, но не забудьте добавить # в конце). Довольно скоро вы должны увидеть сообщения; и если вы отправите ON или OFF в командную тему, вы также увидите подтверждения.

mqtt arduino сообщения возвращаются

MQTT Binding для OpenHAB

Последний шаг в уравнении — подключить это к OpenHAB. Для этого, конечно, нам нужна привязка.

sudo apt-get install openhab-addon-binding-mqtt
sudo chown -hR openhab:openhab /usr/share/openhab

И отредактируйте файл конфигурации, чтобы включить привязку.

mqtt:broker.url=tcp://localhost:1883
mqtt:broker.clientId=openhab

Перезапустите OpenHAB

sudo service openhab restart

Тогда давайте добавим элемент или два:

/* MQTT Sensors */
Number Himitsu_Temp "Himitsu Temperature [%.1f °C]"  (Himitsu,Temperature) {mqtt="<[broker:openhab/himitsu/temperature:state:default]"}
Number Himitsu_Humidity "Himitsu Humidity [%.1f %%]"  (Himitsu,Humidity) {mqtt="<[broker:openhab/himitsu/humidity:state:default]"}

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

Поздравляем, теперь у вас есть база дешевого сенсорного массива на базе Arduino. Мы вернемся к этому в будущем и разместим Arduino в их собственной совершенно отдельной сети RF. Я также создал идентичную версию для плат Wizwiki 7500, если у вас есть одна из них.

Постоянство и графические данные

К настоящему времени вы, вероятно, настроили несколько датчиков, будь то из Z-Wave или пользовательских Arduinos, на которых запущен MQTT - так что вы можете в любое время просматривать текущее состояние этих датчиков, и вы также должны реагировать на их значения в правилах. Но интересная вещь о значениях датчиков, как правило, заключается в том, что они меняются со временем: вот где появляется постоянство и отображение. Упорство в OpenHAB означает сохранение данных с течением времени. Давайте продолжим и настроим RRD4J (Round Robin Database для Java), так называемый, потому что данные сохраняются в циклическом порядке - более старые данные отбрасываются, чтобы сжать размер базы данных.

Установите пакеты rrd4j с помощью следующих команд.

sudo apt-get install openhab-addon-persistence-rrd4j
sudo chown -hR openhab:openhab /usr/share/openhab

Затем создайте новый файл с именем rrd4j.persist в Конфигурации / сохранение папка. Вставьте в следующее:

Strategies {
everyMinute : "0 * * * * ?"
everyHour 	: "0 0 * * * ?"
everyDay	: "0 0 0 * * ?"
default = everyChange
}
Items {
// persist everything when the value is updated, just a default, and restore them from database on startup
* : strategy = everyChange, restoreOnStartup
// next we define specific strategies of everyHour for anything in the Temperature group, and and every minute for Humidity
Temperature* : strategy = everyHour
Humidity* : strategy = everyMinute
// alternatively you can add specific items here, such as
//Bedroom_Humidity,JamesInOffice : strategy = everyMinute
}

В первой части этого файла мы определяем стратегии, которые просто означают присвоение имени выражению CRON. Это то же самое, что мы уже делали с My.OpenHAB, но на этот раз мы создаем несколько новых стратегий, которые мы можем использовать для EveryDay, EveryHour и EveryMinute. Я еще не использовал их все, но я могу быть в будущем.

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

Примечание: если вы тоже хотите отобразить данные, вы ДОЛЖНЫ хранить их как минимум раз в минуту. Не имеет значения, даже если данные вашего датчика обновляются так быстро, вы просто должны указать rr4dj хранить их раз в минуту.

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

rrd4j хранит данные

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

Chart item=Bedroom_Humidity period=h

Это буквально все, что вам нужно. Допустимые значения для периода: ч, 4 ч, 8 ч, 12 ч, D, 3D, Вт, 2 Вт, М, 2М, 4М, Y; должно быть очевидно, что это значит. По умолчанию используется D для полного дня данных, если не указано иное.

Чтобы создать график с несколькими элементами, просто нарисуйте название группы вместо этого:

Chart item=Humidity period=h

диаграмма

Вам также может быть интересно узнать, что вы можете использовать этот график в другом месте; он генерирует изображение, используя следующий URL: http: // YOUROPENHABURL: 8080 / chart? groups = Humidityperiod = h

Как поживает ваша система OpenHAB?

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

К счастью, OpenHAB может хорошо масштабироваться от нескольких устройств до сотен, от простых правил и сложности до домашней автоматизации - так как продвигается ваша система? Какие устройства вы выбрали? Какой следующий большой проект вы собираетесь решить?

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

Ссылка на основную публикацию