Использование MegaD в openHAB

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

Re: Использование MegaD в openHAB

Сообщение Petros » 27 окт 2016, 20:40

Empenoso, ну дай бог! Igor78, исправлю!

YTNICORP
Сообщения: 25
Зарегистрирован: 26 авг 2016, 10:19

Re: Использование MegaD в openHAB

Сообщение YTNICORP » 27 окт 2016, 23:08

Всем привет, вопрос знатокам методов.
Не могу разобраться с HSB типом. Задача - есть объект с HSB-типом, связанный с состоянием итема Color. Как получать от него значения RGB понятно (гуглится именно миллион таких примеров), а вот обратную операцию как ему передать состояние - нет. Т.е. есть 3 int'а цветов RGB, нужно передать их объекту Color. Подскажите, плз.

Igor78
Сообщения: 143
Зарегистрирован: 26 янв 2015, 14:44
Откуда: Москва

Re: Использование MegaD в openHAB

Сообщение Igor78 » 28 окт 2016, 01:45

YTNICORP писал(а):Всем привет, вопрос знатокам методов.
Не могу разобраться с HSB типом. Задача - есть объект с HSB-типом, связанный с состоянием итема Color. Как получать от него значения RGB понятно (гуглится именно миллион таких примеров), а вот обратную операцию как ему передать состояние - нет. Т.е. есть 3 int'а цветов RGB, нужно передать их объекту Color. Подскажите, плз.
import java.awt.Color

...
var HSBType test = new HSBType(new Color(255, 0, 0)) //Red
var HSBType test = new HSBType(new Color(0, 255, 0)) //Green
...
С уважением, Игорь

empenoso
Сообщения: 1039
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Использование MegaD в openHAB

Сообщение empenoso » 28 окт 2016, 08:45

Перешел на третью малину - вроде все хорошо только в логах не могу понять что строчка означает
[INFO ] [b.m.internal.MegaDeviceBinding] - action at address ->> 192.168.88.72 On_OFF: ON
или:
[INFO ] [b.m.internal.MegaDeviceBinding] - action at address ->> 192.168.88.72 On_OFF: OFF
[INFO ] [b.m.internal.MegaDeviceBinding] - itemName: class org.openhab.core.library.items.SwitchItem

А что именно переключилось в этот момент :?

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

окт 28 09:40:01 raspberrypi start.sh[692]: 2016-10-28 09:40:01.844 [INFO ] [runtime.busevents             ] - dateTime state updated to пятница, 28.10.2016, 09:40
окт 28 09:40:12 raspberrypi start.sh[692]: 2016-10-28 09:40:12.180 [INFO ] [runtime.busevents             ] - MercuryIncotex201KWh_Kalends state updated to 96.24528333333336
окт 28 09:40:18 raspberrypi start.sh[692]: 2016-10-28 09:40:18.049 [INFO ] [runtime.busevents             ] - MercuryIncotex201KWh_Consumption state updated to 48.434716666666645
окт 28 09:40:22 raspberrypi start.sh[692]: 2016-10-28 09:40:22.951 [INFO ] [runtime.busevents             ] - MercuryIncotex201KWh_Consumption_Price state updated to 175.33367433333325
окт 28 09:40:23 raspberrypi start.sh[692]: 2016-10-28 09:40:23.174 [INFO ] [b.m.internal.MegaDeviceBinding] - action at address ->> 192.168.88.72 On_OFF: ON
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.410 [INFO ] [b.m.internal.MegaDeviceBinding] - http://192.168.88.72/sec/?pt=7&cmd=get
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.431 [INFO ] [b.m.internal.MegaDeviceBinding] - input string->19.12
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.438 [INFO ] [b.m.internal.MegaDeviceBinding] - http://192.168.88.72/sec/?tget=1
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.477 [INFO ] [b.m.internal.MegaDeviceBinding] - input string->30
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.482 [INFO ] [runtime.busevents             ] - P7_DS18B20_WC_cold state updated to 19.12
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.484 [INFO ] [b.m.internal.MegaDeviceBinding] - http://192.168.88.72/sec/?pt=5&cmd=get
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.494 [INFO ] [runtime.busevents             ] - MegaDeviceTemp state updated to 30
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.504 [INFO ] [b.m.internal.MegaDeviceBinding] - input string->24.50
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.510 [INFO ] [b.m.internal.MegaDeviceBinding] - http://192.168.88.72/sec/?pt=4&cmd=get
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.518 [INFO ] [runtime.busevents             ] - P5_DS18B20_MQ2 state updated to 24.50
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.529 [INFO ] [b.m.internal.MegaDeviceBinding] - input string->349
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.540 [INFO ] [b.m.internal.MegaDeviceBinding] - http://192.168.88.72/sec/?pt=13&cmd=get
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.544 [INFO ] [runtime.busevents             ] - P4_MQ2 state updated to 349
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.560 [INFO ] [b.m.internal.MegaDeviceBinding] - input string->38.31
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.567 [INFO ] [b.m.internal.MegaDeviceBinding] - http://192.168.88.72/sec/?pt=3&cmd=get
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.587 [INFO ] [b.m.internal.MegaDeviceBinding] - input string->1021
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.595 [INFO ] [b.m.internal.MegaDeviceBinding] - http://192.168.88.72/sec/?pt=6&cmd=get
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.613 [INFO ] [runtime.busevents             ] - P13_DS18B20_bedroom state updated to 38.31
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.615 [INFO ] [b.m.internal.MegaDeviceBinding] - input string->OFF/51
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.623 [INFO ] [b.m.internal.MegaDeviceBinding] - http://192.168.88.72/sec/?pt=8&cmd=get
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.643 [INFO ] [runtime.busevents             ] - P3_TEMT6000 state updated to 1021
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.658 [INFO ] [b.m.internal.MegaDeviceBinding] - input string->41.00
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.694 [INFO ] [runtime.busevents             ] - P6_CountElecImp state updated to 51
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.742 [INFO ] [runtime.busevents             ] - P8_DS18B20_WC_hot state updated to 41.00
окт 28 09:40:28 raspberrypi start.sh[692]: 2016-10-28 09:40:28.774 [INFO ] [runtime.busevents             ] - P3_TEMT6000_percent state updated to 99.80449658
окт 28 09:40:44 raspberrypi start.sh[692]: 2016-10-28 09:40:44.846 [INFO ] [b.m.internal.MegaDeviceBinding] - action at address ->> 192.168.88.72 On_OFF: ON
окт 28 09:41:00 raspberrypi start.sh[692]: 2016-10-28 09:41:00.204 [INFO ] [runtime.busevents             ] - dateTime state updated to пятница, 28.10.2016, 09:41
окт 28 09:41:01 raspberrypi start.sh[692]: 2016-10-28 09:41:01.304 [INFO ] [b.m.internal.MegaDeviceBinding] - action at address ->> 192.168.88.72 On_OFF: ON
окт 28 09:41:13 raspberrypi start.sh[692]: 2016-10-28 09:41:13.086 [INFO ] [b.m.internal.MegaDeviceBinding] - action at address ->> 192.168.88.72 On_OFF: ON
окт 28 09:41:21 raspberrypi start.sh[692]: 2016-10-28 09:41:21.511 [INFO ] [b.m.internal.MegaDeviceBinding] - action at address ->> 192.168.88.72 On_OFF: ON
окт 28 09:41:21 raspberrypi start.sh[692]: 2016-10-28 09:41:21.517 [INFO ] [b.m.internal.MegaDeviceBinding] -  itemName: class org.openhab.core.library.items.SwitchItem
окт 28 09:41:21 raspberrypi start.sh[692]: 2016-10-28 09:41:21.588 [INFO ] [runtime.busevents             ] - P10_WaterPulse_cold state updated to ON
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.759 [INFO ] [b.m.internal.MegaDeviceBinding] - http://192.168.88.72/sec/?pt=7&cmd=get
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.779 [INFO ] [b.m.internal.MegaDeviceBinding] - input string->19.00
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.785 [INFO ] [b.m.internal.MegaDeviceBinding] - http://192.168.88.72/sec/?tget=1
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.826 [INFO ] [b.m.internal.MegaDeviceBinding] - input string->30
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.830 [INFO ] [runtime.busevents             ] - P7_DS18B20_WC_cold state updated to 19.00
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.834 [INFO ] [b.m.internal.MegaDeviceBinding] - http://192.168.88.72/sec/?pt=5&cmd=get
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.854 [INFO ] [b.m.internal.MegaDeviceBinding] - input string->24.50
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.861 [INFO ] [b.m.internal.MegaDeviceBinding] - http://192.168.88.72/sec/?pt=4&cmd=get
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.879 [INFO ] [runtime.busevents             ] - CountWaterM3Cold state updated to 10.1779
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.882 [INFO ] [b.m.internal.MegaDeviceBinding] - input string->349
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.889 [INFO ] [b.m.internal.MegaDeviceBinding] - http://192.168.88.72/sec/?pt=13&cmd=get
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.891 [INFO ] [runtime.busevents             ] - MegaDeviceTemp state updated to 30
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.903 [INFO ] [runtime.busevents             ] - P5_DS18B20_MQ2 state updated to 24.50
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.909 [INFO ] [b.m.internal.MegaDeviceBinding] - input string->38.31
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.915 [INFO ] [runtime.busevents             ] - P4_MQ2 state updated to 349
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.917 [INFO ] [b.m.internal.MegaDeviceBinding] - http://192.168.88.72/sec/?pt=6&cmd=get
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.933 [INFO ] [runtime.busevents             ] - P13_DS18B20_bedroom state updated to 38.31
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.938 [INFO ] [b.m.internal.MegaDeviceBinding] - input string->OFF/54
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.946 [INFO ] [b.m.internal.MegaDeviceBinding] - http://192.168.88.72/sec/?pt=8&cmd=get
окт 28 09:41:28 raspberrypi start.sh[692]: 2016-10-28 09:41:28.966 [INFO ] [b.m.internal.MegaDeviceBinding] - input string->40.56
окт 28 09:41:29 raspberrypi start.sh[692]: 2016-10-28 09:41:28.999 [INFO ] [runtime.busevents             ] - P6_CountElecImp state updated to 54
окт 28 09:41:29 raspberrypi start.sh[692]: 2016-10-28 09:41:29.050 [INFO ] [runtime.busevents             ] - P8_DS18B20_WC_hot state updated to 40.56
окт 28 09:41:30 raspberrypi start.sh[692]: 2016-10-28 09:41:30.774 [INFO ] [b.m.internal.MegaDeviceBinding] - action at address ->> 192.168.88.72 On_OFF: ON


YTNICORP
Сообщения: 25
Зарегистрирован: 26 авг 2016, 10:19

Re: Использование MegaD в openHAB

Сообщение YTNICORP » 28 окт 2016, 08:51

Igor78 писал(а):...
var HSBType test = new HSBType(new Color(255, 0, 0)) //Red
var HSBType test = new HSBType(new Color(0, 255, 0)) //Green
...
Игорь, спасибо, то что нужно!

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

Re: Использование MegaD в openHAB

Сообщение Petros » 28 окт 2016, 08:54

Empenoso, запустите дебаг версию биндинга, там будет подробнее вывод
Там достаточно удалить старую и записать новую прямо без остановки сервера

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

Re: Использование MegaD в openHAB

Сообщение Petros » 29 окт 2016, 17:02

Igor78 писал(а):Заметил непонятность в байндинге: если читать порт 1w (ds18b20) без датчика, то Мега возвращает NA.
Исправил. Плюс внес правки для empenoso в основной релиз. Возможно еще повлияло то, что версии собраны на 1.7 java

empenoso
Сообщения: 1039
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Использование MegaD в openHAB

Сообщение empenoso » 29 окт 2016, 18:12

Полностью перешел на третью малину с джава 1.8 :) . После начала обмена MegaD с опенхаб нагрузка совсем незначительно выросла (с 27 числа):
chart (8).png
chart (8).png (66.53 КБ) 4120 просмотров
Когда ничего не знал о MegaD - выбор в его пользу был сделан еще и потому, что было известно что есть такой биндинг для опенхаб, так что хочется поблагодарить Petros за его работу!

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

Re: Использование MegaD в openHAB

Сообщение Petros » 29 окт 2016, 18:14

Спасибо! :) А откуда известно было если не секрет? :)

empenoso
Сообщения: 1039
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Использование MegaD в openHAB

Сообщение empenoso » 29 окт 2016, 18:52

Когда смотрел варианты - читал и форум тоже, а здесь ведь эта тема уже с год.

empenoso
Сообщения: 1039
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Использование MegaD в openHAB

Сообщение empenoso » 06 ноя 2016, 13:09

Не совсем в тему биндинга, но в тему openhab. На двери стоит геркон - в openhab хочу видеть время последнего открытия двери и сколько часов прошло с этого момента. Поискал в интернете и написал правила.
Причем время последнего использования через "new DateTimeType()" он нормально отображает сразу после события, но проходит несколько часов и вместо значения одни прочерки появляются.
А сколько прошло после последнего использования - больше чем 0,02 часа он не может сосчитать.
0 и 1 в P9_Door_number считаю чтобы график строить - по on и off график нельзя построить.

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

rule "P9 Door closed" //ON=закрыта
when
    Item P9_Door changed to ON
then
	postUpdate(P9_Door_number, 1)	
end

rule "P9 Door open" //OFF=открыта
when
    Item P9_Door changed to OFF
then
	postUpdate(P9_last_use, new DateTimeType() )
	postUpdate(P9_Door_number, 0)	
end

rule "P9_last_use_ago" 
when
    Time cron "0 0/5 * * * ?" //каждые 5 мин
then
 	if ( (P9_Door_number.state as DecimalType) == 1) {
	var DateTime m =  new DateTime(P9_Door.lastUpdate )
	var Number diff = (now.millis - m.millis) 
	diff = diff / 3600000 //миллисекунды в часы
	postUpdate(P9_last_use_ago, diff.doubleValue)
	}
end
а в итемах:

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

Switch		P9_Door				"Дверь (P9) [MAP(door.map):%s]"								{megadevice="sec:192.168.88.72:9"}
Number		P9_Door_number		"Дверь (P9) [%s]"
DateTime	P9_last_use			"P9 last use [%1$td.%1$tm, %1$tR]"
Number		P9_last_use_ago		"P9 last use hours ago [%.2f]"
примеры смотрел здесь: https://community.openhab.org/t/oh-1-7- ... ime/1983/4
https://community.openhab.org/t/show-da ... te/2114/10

Буду благодарен за подсказку :roll: .

empenoso
Сообщения: 1039
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Использование MegaD в openHAB

Сообщение empenoso » 13 ноя 2016, 19:48

Нашел что-то похожее на то что нужно: https://community.openhab.org/t/measuri ... ate/2542/5

empenoso
Сообщения: 1039
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Использование MegaD в openHAB

Сообщение empenoso » 19 ноя 2016, 06:50

Заработало как хотел - считает часы от последнего использования:
chart.png
chart.png (11.93 КБ) 3900 просмотров

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

Re: Использование MegaD в openHAB

Сообщение Petros » 19 ноя 2016, 10:51

Расскажите - как?

empenoso
Сообщения: 1039
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Использование MegaD в openHAB

Сообщение empenoso » 19 ноя 2016, 11:48

Когда происходит интересующее меня событие ставлю отметку времени

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

RunStart = now.millis
и каждые пять минут считаю сколько прошло времени с этой отметки:

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

RunEnd = now.millis
DoorTime = (RunEnd - RunStart) / 3600000 //миллисекунды в часы

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

Re: Использование MegaD в openHAB

Сообщение Petros » 19 ноя 2016, 12:11

Гениально и просто! Спасибо!

empenoso
Сообщения: 1039
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Использование MegaD в openHAB

Сообщение empenoso » 20 ноя 2016, 07:27

На третью малину вообще незначительная нагрузка от опенхаб и работает быстро. Нет пиков при просмотре сайта системы до 90% как на второй малине viewtopic.php?f=1&t=1004&start=380#p23752:
chart (3).png
chart (3).png (39.65 КБ) 3822 просмотра

empenoso
Сообщения: 1039
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Использование MegaD в openHAB

Сообщение empenoso » 21 ноя 2016, 20:08

Что подумал - можно ли сделать при помощи биндинга, чтобы когда связь с датчиком (или мегой) теряется - писалось бы не последнее значение, а ноль показаниях:
chart.png
chart.png (134.34 КБ) 3627 просмотров
Это было бы более правдиво.

Petros
Сообщения: 900
Зарегистрирован: 21 авг 2012, 22:09
Откуда: Москва

Re: Использование MegaD в openHAB

Сообщение Petros » 21 ноя 2016, 20:20

Но ведь ноль - это тоже полезное значение. Тогда уж 85, как one wire

empenoso
Сообщения: 1039
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Использование MegaD в openHAB

Сообщение empenoso » 22 ноя 2016, 07:09

Для простого потребителя может быть число отличное от 0, когда нет связи скорее вызовет недоумение. А 0 сразу понятно что сигнала нет.

Ответить