Система "Бенукс". Компьютерное управление и контроль. http://benuks.flyboard.ru/ |
|
Мастер класс по ПО Опенхаб. http://benuks.flyboard.ru/topic142.html |
Страница 1 из 4 |
Автор: | Markko [ 01-04, 02:34 ] |
Заголовок сообщения: | Мастер класс по ПО Опенхаб. |
Как это работает: Классический интерфейс - http://demo.openhab.org:8080/openhab.app?sitemap=demo Интерфейс ГринТ - http://demo.openhab.org:8080/greent/ Для просмотра рекомендую браузер Хром или Сафари. В этой теме будем обсуждать все что связанно с установкой, запуском и настройкой ПО Опенхаб в связке с ПО Бенукс. Для того что б работало ПО Опенхаб у Вас, вам потребуется установить Java с версией не ниже седьмой. Собственно сам дистрибутив опенхаб с версией не ниже 1.2, набор аддонов для обработки протокола обмена с ПО Бенукс и приложение опенхаб-дизайнер для создания собственного интерфейса. Готовую сборку можно скачать с этого сайта. ПО опенхаб устанавливается уставится на дис С в корневую директорию диска - C:\openhab . Таблица соответствий имеет расширение *.items и располагается в папке C:\openhab\configurations\items Конфигурация интерфейса имеет расширение *.sitemaps и располагается в папке C:\openhab\configurations\sitemaps Запуск сервера опенхаб проводиться запуском батфайла start.bat в папке C:\openhab . |
Автор: | Геннадий [ 01-04, 09:58 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Полный комплект модуля Openhab здесь: http://www.benuks.ru/data/openhab.rar Конфигурация состоит из одного температурного датчика, одного цифрового и одного устройства управления и настроена на подключение к Демо-версии Бенукса. Обмен между опенхабом и бенуксом производится через псевдонимы. Для этой сборки опенхаба в бенуксе для датчиков должны быть назначены следующие псевдонимы: t1 - температурный датчик c1 - цифровой датчик s1 - устройство упраления |
Автор: | BATONS [ 01-04, 15:08 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Жду с нетерпением вечера, чтобы "посмаковать" новое дополнение! Спасибо Markko за Ваш труд! Свои пожелания для развития проекта писать в этой теме? или будет новая? |
Автор: | Markko [ 01-04, 21:00 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Все пожелания наверно лучше в отдельную. А сюда вопросы по самому ПО. Настройка ПО Бенукс для работы с Опенхаб. Для активации протокола обмена необходимо поставить галочку в меню конфигурации системы "Модуль Опенхаб" и затем в дереве управления открыть "Модуль Опенхаб". Там так же поставить галочку в пункте "включит обмен опенхаб" предварительно выбрав необходимый порт. Используемый порт не должен быть занят никакой другой программой - то есть он должен быть свободен. После указанных манипуляций в программе Бенукс ее необходимо перезапустить. Из рекомендаций: создать в ПО Бенукс сценарий на запуск сторонних приложений в меню "конфигурация системы" - при запуске сканирования выполнять сценарий, а так же остановку сервера опенхаб по ручному запуску сценарию от ПО Бенукс. Очень важный пункт: Псевдонимы датчика для работы с ПО Опенхаб задаются в настройках самого сенсора, а псевдонимы "переключателей" задаются в справочнике устройств. ВСЕ ПСЕВДОНИМЫ ТОЛЬКО ЛАТИНИЦЕЙ БЕЗ ПРОБЕЛОВ И КАК МОЖНО КОРОЧЕ ПРИМЕР: t1, t_1, t-1 итп. Каждый псевдоним должен быть уникален в Вашей системе и соответствовать только одному датчику. Последовательность запуска ПО. Первым запускается ПО Бенукс, после того как ПО запустилось можно запускать опенхаб (файл start.bat). |
Автор: | Markko [ 02-04, 11:40 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Перейдем к созданию своего интерфейса. В начале небольшое введение. В ПО Опенхаб есть интересная возможность - различные конфигурации интерфейса для множества пользователей, это означает, что Вы можете создавать индивидуальные интерфейсы для каждого члена семьи, различные для стационарного (максимально расширенное) и мобильного устройства (только "тревожные" сообщения и главные включатели), варианты пультов управления бытовой техникой (при наличии соответствующего исполнительного оборудования)итд. Для реализации этого необходимо создать файлы в папке sitemaps с нужным для вас именем (например server.sitemaps или mobail.sitemaps или remote.sitemaps итд по аналогии в зависимости от потребностей). Сделать это можно через функцию Копировать-Вставить-Переименовать. Итак для того чтоб начать надо запустить файл ОpenHAB-Designer.exe находящейся C:\openhab\openhab-designer-win-1.1.0. При первом запуске дизайнера потребуется указать путь к папке configurations через меню выбора папки конфигураций. В сборке доступной на сайте уже имеются необходимые файлы для демонстрационной работы. В левой части окна будет дерево навигации по папке Configurations имеющее вид как тут http://clip2net.com/s/4QDlZQ. Потребуется раскрыть два пункта Items и Sitemaps и выбрать от туда необходимые проекты (в данном случаи это файлы с названием benuks). Items - это по сути таблица соответствий псевдонимов в ПО Бенукс и ПО Опенхаб. В предложенном варианте имеет вид: Number scenario_1 {benuks="scen:1=scen1;2=scen2"} Number temp_1 {benuks="t1"} String temp_1_all {benuks="t1 all"} Switch switch_1 {benuks="s1"} Contact contact_1 {benuks="c1"} Что здесь что... Рассмотрим строчку - Number temp_1 {benuks="t1"}. Здесь Namber - команда (Namber - для получения данных в цифровом виде, String - для получения и отправления данных в текстовом виде, Switch для управления включателями - ON/OFF, Contact для получения состояний контактов - OPEN/CLOSET) temp_1 - псевдоним опенхаб, {benuks="t1"} указание на то какой псевдоним из Бенукс привязываем к псевдониму опенхаб. Sitemaps - отвечает за визуальное представление полученных данных. В нем формируется структура меню, графическое оформление, короче все то что отвечает за красивость. В предложенной сборки этот файл имеет вид: sitemap my label="Demo SmartHomeBenuks" { Frame { Text item=temp_1 label="Температура [%s °C]" icon="temperature" Text item=temp_1_all label="Температура Сводная [%s °C]" icon="temperature" Text item=contact_1 label="Контакт 1 [%s]" icon="light" Switch item=switch_1 label="Включатель 1" Switch item=scenario_1 mappings=[1="scen1", 2="scen2"] } } А в представлении интерфейса вот так http://clip2net.com/s/4Rj7q0 Рассмотрим строчку - Text item=temp_1 label="Температура [%s °C]" icon="temperature", здесь Text item=temp_1 - это указание по псевдониму опенхаб, label="Температура [%s °C]" - это текст который будет отображаться на визуальной панели с данными, icon="temperature" - имя иконки которая будет отвечать за образ (сами иконки располагаются в папке images (C:\openhab\webapps\images). Вы можете использовать любые иконки с расширением .png Все изменения необходимо сохранять, для этого используйте комбинацию клавиш Ctrl+S все изменения можно тут же посмотреть обновив страничку в браузере http://localhost:8080/openhab.app?sitemap=benuks |
Автор: | Markko [ 03-04, 11:49 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Я описал лишь только начальную часть, Опенхаб позволяет решать очень широкий спектр задач и способен удовлетворить практически любые потребности в плане создания индивидуального интерфейса. Так иконки в айтимах могут меняться в зависимости от состояния переключателя (вкл-выкл), или от поступающих данных - краснеющий или синеющий градусник по данным температуры, облачность по данным датчика освещения, засыхающие или благоухающие растения по влажности почвы итд, причем кол-во градаций ограниченно лишь вашей фантазией, вместо унылых цифр можно отображать текстовые подписи как этом на примере http://clip2net.com/s/4Rj8VS и то же но уже с другими данными http://clip2net.com/s/4RlyZ4 . Можно подключить трансляцию с IP камер, веб страниц. Есть встроенный речевой синтезатор. Вообщем круг решаемых задач очень широк. |
Автор: | Димон [ 04-04, 22:37 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Уважаемый Markko, скоро выходит openHAB Release 1.2, что необходимо для переноса настроек на новую версию? какие каталоги/файлы переносить, что донастраивать?? |
Автор: | Димон [ 04-04, 22:40 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Интересует более подробная информация по настройке интерфейса ОпенХаб, в частности группированное меню, которое разворачивалось бы по клику, например: есть вкладка "коридор", разворачиваем её и видим все датчики и исполнительные механизмы, сворачиваем её и выбираем вкладку "кухня" и т.д. |
Автор: | Markko [ 04-04, 22:43 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Если Вы взяли сборку с этого сайта то у Вас уже версия 1.2. Про группы: Group item=FF label="Коридор" icon="иконка" { Group item=FF label="Комната1" icon="иконка" { Group item=FF label="Шкаф" icon="иконка" { Group item=FF label="Полка" icon="иконка" } } Group item=FF label="Комната2" icon="иконка" Group item=FF label="Комната3" icon="иконка" } |
Автор: | Димон [ 04-04, 22:45 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
в какой ветке будут рассматриваться конкретные примеры настройки интерфейса? Настроил пока все единым списком устройств - не удобно пользоваться.... Но работает шустро, масштабируется хорошо.... Хотелось бы узнать ваш ICQ, почту или Скайп, если можете дать - кидайте в личку... |
Автор: | Markko [ 04-04, 23:01 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
конкретный пример есть на сайте https://code.google.com/p/openhab/downl ... -1.1.0.zip Но всегда будут вопросы. Вопросы сюда, ответы здесь. |
Автор: | Markko [ 09-04, 01:29 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Расчет восхода и заката солнца (можно использовать данные для управления например освещением, шторами итп). in rules: Код: import org.openhab.core.library.types.* import org.openhab.core.persistence.* import org.openhab.model.script.actions.* import org.openhab.model.* import org.openhab.core.library.types.PercentType import org.openhab.core.library.types.OnOffType import org.openhab.core.library.types.UndefType import org.joda.time.DateTime import java.lang.Math import java.util.Date import java.util.Calendar // Change this reflecting your destination var Number lng = XX.XXXXX var Number lat = YY.YYYYY var Calendar sunrise_start = Calendar::getInstance() var Calendar sunset_start = Calendar::getInstance() rule "Sun" when System started or Time is midnight then var J1970 = 2440588 var J2000 = 2451545 var deg2rad = Math::PI / 180 var M0 = 357.5291 * deg2rad var M1 = 0.98560028 * deg2rad var J0 = 0.0009 var J1 = 0.0053 var J2 = -0.0069 var C1 = 1.9148 * deg2rad var C2 = 0.0200 * deg2rad var C3 = 0.0003 * deg2rad var P = 102.9372 * deg2rad var e = 23.45 * deg2rad var th0 = 280.1600 * deg2rad var th1 = 360.9856235 * deg2rad var h0 = -0.83 * deg2rad //sunset angle var d0 = 0.53 * deg2rad //sun diameter var h1 = -6 * deg2rad //nautical twilight angle var h2 = -12 * deg2rad //astronomical twilight angle var h3 = -18 * deg2rad //darkness angle var msInDay = 1000 * 60 * 60 * 24 var lw = -lng * deg2rad var phi = lat * deg2rad var datum = new Date() var J = datum.getTime() / msInDay - 0.5 + J1970 var n = Math::round( (J - J2000 - J0 - lw/(2 * Math::PI)).doubleValue) var Js = (J2000 + J0 + (0 + lw)/(2 * Math::PI) + n) var M = ( M0 + M1 * (Js - J2000)) var C = C1 * Math::sin(M.doubleValue) + C2 * Math::sin((2 * M).doubleValue) + C3 * Math::sin((3 * M).doubleValue) var Lsun = M + P + C + Math::PI var Jtransit = Js + (J1 * Math::sin(M.doubleValue)) + (J2 * Math::sin((2 * Lsun).doubleValue)) var d = Math::asin((Math::sin(Lsun.doubleValue) * Math::sin(e.doubleValue)).doubleValue) var w0 = Math::acos(((Math::sin(h0.doubleValue) - Math::sin(phi.doubleValue) * Math::sin(d.doubleValue)) / (Math::cos(phi.doubleValue) * Math::cos(d.doubleValue))).doubleValue) var w1 = Math::acos(((Math::sin((h0+d0).doubleValue) - Math::sin(phi.doubleValue) * Math::sin(d.doubleValue)) / (Math::cos(phi.doubleValue) * Math::cos(d.doubleValue))).doubleValue) var Jset = J2000 + J0 + (w0 + lw)/(2 * Math::PI) + n + (J1 * Math::sin(M.doubleValue)) + (J2 * Math::sin((2 * Lsun).doubleValue)) var Jsetstart = J2000 + J0 + (w1 + lw)/(2 * Math::PI) + n + (J1 * Math::sin(M.doubleValue)) + (J2 * Math::sin((2 * Lsun).doubleValue)) var Jrise = Jtransit - (Jset - Jtransit) var Jriseend = Jtransit - (Jsetstart - Jtransit) var sunrise_ms_start = ( (Jrise + 0.5 - J1970) * msInDay).longValue var sunrise_ms_end = ( (Jriseend + 0.5 - J1970) * msInDay).longValue var sunset_ms_start = ((Jsetstart + 0.5 - J1970) * msInDay).longValue var sunset_ms_end = ((Jset + 0.5 - J1970) * msInDay).longValue sunrise_start.setTimeInMillis( sunrise_ms_start ) postUpdate(sunrise, new DateTimeType(sunrise_start)) sunset_start.setTimeInMillis( sunset_ms_end ) postUpdate(sunset, new DateTimeType(sunset_start)) end in items Код: DateTime sunrise "Sunrise[%1$tT]" <sun> DateTime sunset "Sunset [%1$tT]" <moon> in sitemaps Код: Text item=sunrise Text item=sunset В итоге получим расчетное время восхода и заката - http://clip2net.com/s/4SPntA. НЕ ЗАБЫВАЕМ ПРО УКАЗАНИЕ СВОЕЙ ШИРОТЫ (YY.YYYYY) И ДОЛГОТЫ (XX.XXXXX). Взять можно тут http://www.suncalc.net |
Автор: | Markko [ 11-04, 23:06 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Анимация иконок. В Опенхаб есть функция менять иконки в зависимости от полученных данных - я уже это упоминал выше. Итак, для реализации поставленной задачи нам потребуется: 1. Набор необходимых иконок в формате .PNG с разрешением до 128х128. Иконки должны иметь одинаковые названия но разные суффиксы. Например temp-1.png, temp-2.png, temp-3.png итд. Именно по суффиксам опенхаб определяет какую иконку нужно подставить в данный момент времени. Сами иконки располагаются C:\openhab\webapps\images . 2. В паке C:\openhab\configurations\transform создаем файл (можно с помощью блокнота, или в дизайнере) с условным именем и расширением .map, например temp.map. Содержимое файла должно выглядеть следующим образом: 1=МИНУС. 2=НОЛЬ. 3=ПЛЮС. Количество записей и их нумерация должна совпадать с количеством иконок и их суффиксов а сам текст должен нести заложенную смысловую нагрузку соответствующей иконки. Теперь в Items создаем запись: Код: Number temp1 {benuks="t1"} Number temp_disp В правилах создаем такое условие: Код: rule "temp1" when Item temp1 received update then var Number tmp = temp1.state as DecimalType var Number disp if (tmp <0) disp = 1 if (tmp =0) disp = 2 if (tmp >0) disp = 3 temp_disp.sendCommand(disp) end В sitemaps: Код: Text item=temp_disp label="Temp [MAP(mytemp.map):%s]" icon="temp" В результате данных действий Вы получите следующее: при данных с датчика t1 меньших ноля будет отображаться иконка temp-1.png, а на месте данных надпись МИНУС. При данных с датчика t1 больше ноля - иконка temp-2.png и подпись ПЛЮС. И дальше по аналогии. Можно в условиях задать и промежуток данных: Код: if (tmp >= X && tmp < X1) Хочу обратить Ваше внимание на то что пока нет возможности одновременно отображать получаемые данные с датчика в формате [%.S] и подставлять иконки по написанным условиям. Что то одно, или статическая иконка и данные [%.S], либо анимация и данные в текстовом виде. Но если Вы условиями и иконками перекроете весь возможный диапазон получаемых данных а в подписях просто укажете числовые значения то таким образом получите и то и то. Удачи в творчестве. |
Автор: | Markko [ 12-04, 10:33 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Высчитываем средние показания по нескольким датчикам, а так же мин и максимум. для того что бы высчитать средний показатель по нескольким датчикам можно воспользоваться штатным механизмом Опенхаб. Для этого нужно объеденить необходимые датчики в группу и в сайтмапе написать следующее - Group: Number: AVG MyAverage "Avg. Room Temperature [%.s °C]", по аналогии можно считать MAX & MIN. |
Автор: | Димон [ 12-04, 13:21 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Спасибо Markko за мастер-класс! Повторил по мануалу.... работает все замечательно! Единственный вопрос, я думал, что MIN&MAX работают как минимальные и максимальные значения температуры группы датчиков, начиная с момента запуска ОПЕНХАБ (как в электронных термометрах, за час, день, неделю). А оказалось что имеется ввиду минимальная и максимальная температура 2-х датчиков, входящих в состав группы в текущий момент времени... Я правильно понимаю? |
Автор: | Димон [ 12-04, 13:24 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Спасибо за мануал по смене картинок.... Прикрутил.... полет нормальный... Хотелось бы еще функционал по одновременному выводу числовых значений температуры и смене картинок одной строкой... но я думаю это вопрос времени... не так ли? |
Автор: | Markko [ 12-04, 14:12 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Димон писал(а): А оказалось что имеется ввиду минимальная и максимальная температура 2-х датчиков, входящих в состав группы в текущий момент времени... Я правильно понимаю? Правильно, но если заставить Опенхаб вести сою базу данных (а он это умеет делать) то значения можно получать за произвольный промежуток времени. Димон писал(а): но я думаю это вопрос времени... не так ли? Верно, не все сразу. |
Автор: | Markko [ 12-04, 14:12 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Димон писал(а): А оказалось что имеется ввиду минимальная и максимальная температура 2-х датчиков, входящих в состав группы в текущий момент времени... Я правильно понимаю? Правильно, но если заставить Опенхаб вести сою базу данных (а он это умеет делать) то значения можно получать за произвольный промежуток времени. Димон писал(а): но я думаю это вопрос времени... не так ли? Верно, не все сразу. |
Автор: | Markko [ 13-04, 21:42 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Добавляем графики. Для отображения графиков из ПО Бенукс нужно: * Запустить встроенный ВЭБ сервер Бенукс. * Произвести необходимые настройки формирования HTML в настройках логгера. * Запустить браузер и открыть страницу логгера. * Скопировать URL картинки графика в буфер обмена. * В Sitemaps Опенхаб создать строку Webview url="http://ХХХ.ХХ.ХХХ.ХХ:ХХХХ/http_ХХХ.jpg" height=6 где http:// - Скопированный URL картинки со страницы логгера, height - высота картинки, подбирается в зависимости от заданных размеров картинки в настройках логгера. Браузер при этом не закрывать, обновление картинки будет происходить автоматом. можно еще попробовать такой вариант: Text label="http://ХХХ.ХХ.ХХХ.ХХ:ХХХХ/http_XXX.jpg" icon="icon" Размер картинки графика оптимально: 200Х600 Так же можно указать любой URL и получить в Опенхаб картинуку с любого сайта, или IP видеокамеры. |
Автор: | Димон [ 14-04, 12:59 ] |
Заголовок сообщения: | Re: Мастер класс по ПО Опенхаб. |
Замечательно... буду пробывать |
Страница 1 из 4 | Часовой пояс: UTC + 4 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |