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

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Dafr
Сообщения: 23
Зарегистрирован: 23 июл 2015, 12:02

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

Сообщение Dafr » 27 май 2018, 12:56

Итак прошло пару дней и результат отличный: за все это время таймаут был только один раз (раз в 10мин у меня идет опрос датчика температуры) и то после сообщения о таймауте сервер повторно тут же запросил еще раз и получил ответ о текущей температуре. ПРичем запрос был без моих костылей, сервер сам это сделал. Саму сеть больше не пробовал менять, все так же и стоит на дешевых свитчах, только сервер подключен через вай-фай к роутеру, поэтому проблема была: или в самом сервере, что-то не так с сетевым интерфейсом, или порт, на котором был подключен сервер, барахлит.

Petros
Сообщения: 358
Зарегистрирован: 21 авг 2012, 22:09

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

Сообщение Petros » 10 июл 2018, 15:24

приветствую всех!!

Обновление!

Версия 2.0.4

Что нового:

обработка входящих смс
как работает:

items:

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

String MegaDBindingThing_sms_number " " { channel = "megad:device:megadeviceincoming:test:sms_phone" }
String MegaDBindingThing_sms_txt " " { channel = "megad:device:megadeviceincoming:test:sms_text" }

в thing должен быть указан любой порт.

т.е. если у вас в thing уже есть порт меги

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

Bridge megad:bridge:megadeviceincoming [port=8989]
{
Thing device test [hostname="localhost", port="3", password="sec", refresh="0"]
}
с кнопкой на выход items:

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

Switch MegaDBindingThing_Out " " { channel = "megad:device:megadeviceincoming:test:out" }
то нужно просто добавить ниже

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

String MegaDBindingThing_sms_number " " { channel = "megad:device:megadeviceincoming:test :sms_phone" }
String MegaDBindingThing_sms_txt " " { channel = "megad:device:megadeviceincoming:test:sms_text" }

winniepooh
Сообщения: 9
Зарегистрирован: 22 янв 2018, 22:11

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

Сообщение winniepooh » 13 июл 2018, 18:26

Обновился, но пока ничего не получилось :)

Thing:
Thing device mega1_p0 [hostname="192.168.20.210", password="sec", port="0", refresh=30]

ITEM:
String mega2561_1_sms_in_number " " <water> { channel = "megad:device:dev1:mega1_p0:sms_phone" }
String mega2561_1_sms_in_txt " " <water> { channel = "megad:device:dev1:mega1_p0:sms_text" }

Sitemap:
Text item=mega2561_1_sms_in_number label="[%s]" icon="siren"
Text item=mega2561_1_sms_in_txt label="[%s]" icon="siren"

логи:
если на английском
2018-07-11 16:23:10.931 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - incoming from Megad: 192.168.20.210 GET /openhab?sms_phone=+79200000000&sms_text=Testsms HTTP/1.1
2018-07-11 16:23:10.936 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - 0 value openhab
2018-07-11 16:23:10.941 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - 1 value sms_phone
2018-07-11 16:23:10.945 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - 2 value +79200000000
2018-07-11 16:23:10.950 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - 3 value sms_text
2018-07-11 16:23:10.955 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - 4 value Testsms
2018-07-11 16:23:10.959 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - 16

если на русском:
2018-07-11 16:44:30.039 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - incoming from Megad: 192.168.20.210 GET /openhab?sms_phone=+79200000000&sms_text=04220435044104420438044004430435043C00200441043C0441 HTTP/1.1
2018-07-11 16:44:30.047 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - 0 value openhab
2018-07-11 16:44:30.052 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - 1 value sms_phone
2018-07-11 16:44:30.057 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - 2 value +79200000000
2018-07-11 16:44:30.063 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - 3 value sms_text
2018-07-11 16:44:30.068 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - 4 value 04220435044104420438044004430435043C00200441043C0441
2018-07-11 16:44:30.073 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - 16

обе переменные пустые после входящего СМС

Еще что заметил:
есть у меня
Number mega2561_1_start "Mega перезагрузка" <network> { channel = "megad:device:dev1:mega1_start:st" } // Mega перезагрузка

так вот при входящем смс получаю номер телефона в переменной: mega2561_1_start

Petros
Сообщения: 358
Зарегистрирован: 21 авг 2012, 22:09

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

Сообщение Petros » 13 июл 2018, 21:12

при копировании из предыдущего поста у меня всё срабатывает....

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

2018-07-13 20:03:55.345 [DEBUG] [b.m.handler.MegaDBridgeHandler:211  ] - incoming from Megad: 0:0:0:0:0:0:0:1 GET /openhab?sms_phone=+79200000000&sms_text=Testsms HTTP/1.1
2018-07-13 20:03:55.346 [DEBUG] [b.m.handler.MegaDBridgeHandler:217  ] - 0 value openhab
2018-07-13 20:03:55.346 [DEBUG] [b.m.handler.MegaDBridgeHandler:217  ] - 1 value sms_phone
2018-07-13 20:03:55.346 [DEBUG] [b.m.handler.MegaDBridgeHandler:217  ] - 2 value +79200000000
2018-07-13 20:03:55.346 [DEBUG] [b.m.handler.MegaDBridgeHandler:217  ] - 3 value sms_text
2018-07-13 20:03:55.346 [DEBUG] [b.m.handler.MegaDBridgeHandler:217  ] - 4 value Testsms
2018-07-13 20:03:55.346 [DEBUG] [b.m.handler.MegaDBridgeHandler:307  ] - 1
2018-07-13 20:03:55.348 [DEBUG] [o.b.megad.handler.MegaDHandler:141  ] - getActiveChannelListAsString -> smsphone,smstext
2018-07-13 20:03:55.371 [DEBUG] [.core.common.ThreadPoolManager:160  ] - Created thread pool 'items' with size 5
2018-07-13 20:03:55.381 [INFO ] [smarthome.event.ItemStateEvent:53   ] - MegaDBindingThing_sms_number updated to +79200000000
2018-07-13 20:03:55.391 [INFO ] [smarthome.event.ItemStateEvent:53   ] - MegaDBindingThing_sms_txt updated to Testsms
2018-07-13 20:03:55.393 [INFO ] [s.event.ItemStateChangedEvent :53   ] - MegaDBindingThing_sms_number changed from NULL to +79200000000
2018-07-13 20:03:55.393 [INFO ] [s.event.ItemStateChangedEvent :53   ] - MegaDBindingThing_sms_txt changed from NULL to Testsms

одно отличие - это отсутствие нижнего подчеркивания в названии каналов в этой версии

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

String MegaDBindingThing_sms_number " " { channel = "megad:device:megadeviceincoming:onewire:smsphone" }
String MegaDBindingThing_sms_txt " " { channel = "megad:device:megadeviceincoming:onewire:smstext" }

Bonefolder
Сообщения: 245
Зарегистрирован: 30 мар 2017, 11:15
Откуда: г.Севастополь

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

Сообщение Bonefolder » 14 июл 2018, 18:51

Petros, добрый день! Подскажите пожалуйста, как реализовать поддержку MCP-23017 через Ваш Мега байндинг?
Возможно, по порту прерывания Int-A/Int-B, слать запрос на порт SDA вида

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

http://192.168.1.114/sec/?pt=34&cmd=get
получать ответ

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

ON;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;ON
и парсить ?

Petros
Сообщения: 358
Зарегистрирован: 21 авг 2012, 22:09

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

Сообщение Petros » 15 июл 2018, 14:22

Bonefolder писал(а):
14 июл 2018, 18:51
Petros, добрый день! Подскажите пожалуйста, как реализовать поддержку MCP-23017 через Ваш Мега байндинг?
Возможно, по порту прерывания Int-A/Int-B, слать запрос на порт SDA вида

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

http://192.168.1.114/sec/?pt=34&cmd=get
получать ответ

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

ON;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;ON
и парсить ?

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

String MegaDBindingThing_sms_i2c " " { channel = "megad:device:megadeviceincoming:onewire:i2c" } 
ответ нужно парсить в правилах. Исходящий запрос на мегу и парсинг через http биндинг

Bonefolder
Сообщения: 245
Зарегистрирован: 30 мар 2017, 11:15
Откуда: г.Севастополь

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

Сообщение Bonefolder » 15 июл 2018, 14:42

Petros писал(а):
15 июл 2018, 14:22

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

String MegaDBindingThing_sms_i2c " " { channel = "megad:device:megadeviceincoming:onewire:i2c" } 

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

onewire:i2c
это, вроде, 2 разных параметра?
Petros писал(а):
15 июл 2018, 14:22
через http биндинг
Это то понятно... Но хотелось более изящного решения
Андрей (в соседней ветке) пишет, что надо считывать параметр приходящий с порта прерывания.... Типа, опрос Меги, в случае когда она сама извещает о изменении состояния портов, неверный идеологический подход))
Я вчера попробовал сделать подобие СМС. Так как это единственное, что ваш баиндинг должен отдавать в виде строки (string)
Thing:

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

Bridge megad:bridge:megad_2
{
Thing device mcp23017_2 [hostname="192.168.1.114", port="34", password="sec", refresh="30"]
}
Item:

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

String MCP_23017_2		 { channel="megad:device:megad_2:mcp23017_2:smstext" }
но в результате получил "ничего"(((

Petros
Сообщения: 358
Зарегистрирован: 21 авг 2012, 22:09

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

Сообщение Petros » 15 июл 2018, 14:49

Bonefolder писал(а):
15 июл 2018, 14:42
это, вроде, 2 разных параметра?
Это название айтема, путает, согласен.
Bonefolder писал(а):
15 июл 2018, 14:42
Thing:

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

Bridge megad:bridge:megad_2
{
Thing device mcp23017_2 [hostname="192.168.1.114", port="34", password="sec", refresh="30"]
}
Item:

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

String MCP_23017_2		 { channel="megad:device:megad_2:mcp23017_2:smstext" }
но в результате получил "ничего"(((
в бридже нужно указывать номер порта!

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

[port=8989]

Bonefolder
Сообщения: 245
Зарегистрирован: 30 мар 2017, 11:15
Откуда: г.Севастополь

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

Сообщение Bonefolder » 15 июл 2018, 15:51

Petros писал(а):
15 июл 2018, 14:49

Это название айтема, путает, согласен.
Я взял кусок кода не из названия айтема, а из "channel". Очень путает. Согласен))
Petros писал(а):
15 июл 2018, 14:49
в бридже нужно указывать номер порта!

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

[port=8989]
Раньше, вроде, был 8585? Думаю, это непринципиально
Слетел OH((. Возможно, дети поигрались с "синей коробочкой", в мое отсутсвие. Теперь восстанавливаю. Перечитываю.
Кстати, на страничке гитхаба, в инструкции по ручному написанию Things отсутствует порт:

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

Bridge megad:bridge:megadeviceincoming
{
 Thing device onewire [hostname="localhost", port="3", password="sec", refresh="10"]
 Thing device kitchenout [hostname="localhost", port="1", refresh="0"]
 Thing device bedroomcontact [hostname="localhost", port="2", refresh="0"]
}
Потому и упустил. Добавил. Перенрузил ОН... и опять ничего. Видимо, не вариант через СМС((

Petros
Сообщения: 358
Зарегистрирован: 21 авг 2012, 22:09

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

Сообщение Petros » 15 июл 2018, 16:16

Надо заняться документацией, конечно, согласен.... А покажите пожалуйста что дебаг пишет на входящие смс?

у меня просто в логе всё четко, изменил только айпишник на свой

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

2018-07-15 13:54:42.732 [DEBUG] [b.m.handler.MegaDBridgeHandler:211  ] - incoming from Megad: 0:0:0:0:0:0:0:1 GET /openhab?sms_phone=+79200000000&sms_text=Testsms HTTP/1.1
2018-07-15 13:54:42.732 [DEBUG] [b.m.handler.MegaDBridgeHandler:217  ] - 0 value openhab
2018-07-15 13:54:42.732 [DEBUG] [b.m.handler.MegaDBridgeHandler:217  ] - 1 value sms_phone
2018-07-15 13:54:42.732 [DEBUG] [b.m.handler.MegaDBridgeHandler:217  ] - 2 value +79200000000
2018-07-15 13:54:42.732 [DEBUG] [b.m.handler.MegaDBridgeHandler:217  ] - 3 value sms_text
2018-07-15 13:54:42.732 [DEBUG] [b.m.handler.MegaDBridgeHandler:217  ] - 4 value Testsms
2018-07-15 13:54:42.733 [DEBUG] [b.m.handler.MegaDBridgeHandler:307  ] - 1
2018-07-15 13:54:42.752 [INFO ] [smarthome.event.ItemStateEvent:53   ] - MCP_23017_2 updated to Testsms
2018-07-15 13:54:42.755 [DEBUG] [.core.common.ThreadPoolManager:160  ] - Created thread pool 'items' with size 5
2018-07-15 13:54:42.759 [INFO ] [s.event.ItemStateChangedEvent :53   ] - MCP_23017_2 changed from NULL to Testsms

bridge

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

Bridge megad:bridge:megad_2 [port=8989]
{
Thing device mcp23017_2 [hostname="localhost", port="34", password="sec", refresh="30"]
}

items

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

String MCP_23017_2       { channel="megad:device:megad_2:mcp23017_2:smstext" }

Bonefolder
Сообщения: 245
Зарегистрирован: 30 мар 2017, 11:15
Откуда: г.Севастополь

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

Сообщение Bonefolder » 15 июл 2018, 16:33

Поступил немного по другому. Заменил тип в канале с SMS на I2C

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

Bridge megad:bridge:megad_2 [port=8989]
{
Thing device mcp23017_2 [hostname="192.168.1.114", password="sec", port="34", scl="35", r="30"]

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

String MCP_23017_2	     { channel="megad:device:megad_2:mcp23017_2:i2c" }
Получил долгожданную строку:

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

[vent.ItemStateChangedEvent] - MCP_23017_2 changed from OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF to ON;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;ON
Теперь надо подумать, как это все собрать в кучу, чтобы получать Обновление по сработке порта прерывания IntA/B, а не интервалом запроса меги. Андрей пишет, что порт прерывания отдает серверу Pt... но как это затянуть в OH моих знаний, к сожалению, не хватает

Bonefolder
Сообщения: 245
Зарегистрирован: 30 мар 2017, 11:15
Откуда: г.Севастополь

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

Сообщение Bonefolder » 16 июл 2018, 00:26

Подумал)) разбираю строку таким правилом:

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

rule "MCP23017_2"
when
       Item MCP23017_2 changed
    then
	val parse = MCP23017_2.state.toString.split(";")
          	postUpdate(Sw_1,parse.get(0))
		postUpdate(Sw_2,parse.get(1))
		postUpdate(Sw_3,parse.get(2))
		postUpdate(Sw_15,parse.get(3))
		postUpdate(Sw_16,parse.get(15))
end
Возможно правило и не совсем корректно. Но данные приходят. Правда, наблюдается некая задержка "обновления" данных в интерфейсе мобильной версии OH.
Дальше интереснее(

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

rule "windows at start"
when
	System started
then
	postUpdate(Window_Office, 2)
end
/* Окно в кабинете */
rule "Office Window" 
when
       Item Sw_1 changed or
       Item Sw_16 changed
    then
    	if (Sw_1.state == ON && Sw_16.state == OFF) //условие 1
    		postUpdate(Window_Office, 2)
    	if (Sw_1.state == ON && Sw_16.state == ON)  // условие 2
			postUpdate(Window_Office, 1)
		else
			postUpdate(Window_Office, 0)  	// условие 3
end
условие 2 и 3 выполняются правильно. А условие 1 выполняется своеобразно

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

2018-07-15 22:42:10.725 [vent.ItemStateChangedEvent] - Sw_1 changed from OFF to ON
2018-07-15 22:42:10.792 [vent.ItemStateChangedEvent] - Window_Office changed from 0 to 2
2018-07-15 22:42:10.809 [vent.ItemStateChangedEvent] - Window_Office changed from 2 to 0
То есть, как бы срабатывает, но тут же переходит в вариант "else".
Прошу помощи знатоков, где я ошибся?

Petros
Сообщения: 358
Зарегистрирован: 21 авг 2012, 22:09

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

Сообщение Petros » 16 июл 2018, 01:13

Bonefolder писал(а):
16 июл 2018, 00:26
Подумал)) разбираю строку таким правилом:

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

rule "MCP23017_2"
when
       Item MCP23017_2 changed
    then
	val parse = MCP23017_2.state.toString.split(";")
          	postUpdate(Sw_1,parse.get(0))
		postUpdate(Sw_2,parse.get(1))
		postUpdate(Sw_3,parse.get(2))
		postUpdate(Sw_15,parse.get(3))
		postUpdate(Sw_16,parse.get(15))
end
Возможно правило и не совсем корректно. Но данные приходят. Правда, наблюдается некая задержка "обновления" данных в интерфейсе мобильной версии OH.
Дальше интереснее(

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

rule "windows at start"
when
	System started
then
	postUpdate(Window_Office, 2)
end
/* Окно в кабинете */
rule "Office Window" 
when
       Item Sw_1 changed or
       Item Sw_16 changed
    then
    	if (Sw_1.state == ON && Sw_16.state == OFF) //условие 1
    		postUpdate(Window_Office, 2)
    	if (Sw_1.state == ON && Sw_16.state == ON)  // условие 2
			postUpdate(Window_Office, 1)
		else
			postUpdate(Window_Office, 0)  	// условие 3
end
условие 2 и 3 выполняются правильно. А условие 1 выполняется своеобразно

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

2018-07-15 22:42:10.725 [vent.ItemStateChangedEvent] - Sw_1 changed from OFF to ON
2018-07-15 22:42:10.792 [vent.ItemStateChangedEvent] - Window_Office changed from 0 to 2
2018-07-15 22:42:10.809 [vent.ItemStateChangedEvent] - Window_Office changed from 2 to 0
То есть, как бы срабатывает, но тут же переходит в вариант "else".
Прошу помощи знатоков, где я ошибся?
На мой взгляд у второго if до него не хватает else

Bonefolder
Сообщения: 245
Зарегистрирован: 30 мар 2017, 11:15
Откуда: г.Севастополь

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

Сообщение Bonefolder » 16 июл 2018, 02:18

На мой взгляд тоже). Переделал в вот такой вид

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

rule "Office Window" 
when
	Item Sw_1 changed or
	Item Sw_16 changed
then
	if (Sw_1.state == ON && Sw_16.state == OFF) {
		postUpdate(Window_Office, 2)
	}
	if (Sw_1.state == ON && Sw_16.state == ON) {
		postUpdate(Window_Office, 1)
	}
	if (Sw_1.state == OFF && Sw_16.state == OFF) {
		postUpdate(Window_Office, 0)
	}
end
Все срабатывает исправно. Но есть одно НО, обновление (в UI интерфейсе OH) распарсенных значений Sw1 & Sw_16, а следовательно и изменение "состояния" окна, происходит с некой, причем непостоянной, задержкой. Иногда 0,5 сек. А иногда и до 10 сек доходит. Куда копать? Правил пока только 4. И те - небольшие
Upd. Я так понимаю, что "задержка" каким-то образом связана с временем опроса i2c( Пробовал ставить 3 секунды, но это слабо помогает. Думаю, все же надо копать в сторону "отслеживания" порта прерывания IntA/IntB. Завтра, вернее уже сегодня утром этим и займусь на свежую голову. Ждите новых вопросов :D

Petros
Сообщения: 358
Зарегистрирован: 21 авг 2012, 22:09

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

Сообщение Petros » 16 июл 2018, 08:53

Попробуйте отключить режим дебага. Иногда помогает. Не знаю почему :)

Bonefolder
Сообщения: 245
Зарегистрирован: 30 мар 2017, 11:15
Откуда: г.Севастополь

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

Сообщение Bonefolder » 16 июл 2018, 15:32

Petros писал(а):
16 июл 2018, 08:53
Попробуйте отключить режим дебага. Иногда помогает. Не знаю почему :)
Этот режим не включал. Просто забыл, как это делается :)
Выдалось свободное время и мне удалось поиграться с настройками. Вот, что получилось. Возможно, кому-то пригодится. Как вариант, у уважаемого Петроса получится интегрировать МСР230ХХ в свой баиндинг.
1. "Подключил" порт прерывания IntA/IntB к OH (У меня это порт 7 меги. SDA/SCL - 34 и 35 порты, соответственно. Настройки портов - по инструкции Andrey_B)
Things:

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

Bridge megad:bridge:megad_2 [port=8989]
{
Thing device mcpIntA_2 [hostname="192.168.1.114", password="sec", port="7", r="0"] 
Thing device mcp23017_2 [hostname="192.168.1.114", password="sec", port="34", scl="35", r="3"] // можно не подключать
}
Items:

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

String McpIntA_2								{ channel = "megad:device:megad_2:mcpIntA_2:smstext" }
String MCP23017_2	"Строка данных с расширителя" 	{ channel="megad:device:megad_2:mcp23017_2:i2c" } // oставлено для контроля
Switch Sw_1													//  Sw_1 - Sw_16  Виртуальные порты MCP23017
Switch Sw_16
Number Window_Office		"Окнов в кабинете [MAP(windows.map):%s]" // собственно само окно, реагирующее на изменение состояния герконов Sw_1 & Sw_16
При форматировании Item'a McpIntA_2 как "smstext" OH регистрирует изменение состояния таим образом

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

2018-07-16 14:07:21.716 [vent.ItemStateChangedEvent] - McpIntA_2 changed from 1 to 0
2018-07-16 14:07:31.937 [vent.ItemStateChangedEvent] - McpIntA_2 changed from 0 to 1
То есть, при срабатывании порта прерывания IntA/IntB на МСР23017 состояние String McpIntA_2 изменяется с 0 на 1. При получении следующего "СМС" - обратно с 1 на 0.
Возможно, это не совсем верный вариант использования порта прерывания IntA/IntB, так как он сам ( по заявлению Андрея_Б) отдает серверу Ext'ны, получившие изменения. А так же использование типа баиндинга "СМС", но это дало возможность получать изменения состояния МСР23017 по порту прерывания IntA/IntB, а не опросом I2C с определенным интервалом. Немного подправив незатейливое правило, написанное мною выше, парсим данные MCP23017 при срабатывании порта IntA/IntB :
Rule:

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

rule "MCP23017_2"
when
	Item McpIntA_2 changed
then
	val parseme = sendHttpGetRequest("http://192.168.1.114/sec/?pt=34&cmd=get")
	val parse = parseme.split(";")
		postUpdate(Sw_1,parse.get(0))
		postUpdate(Sw_2,parse.get(1))
		postUpdate(Sw_3,parse.get(2))
		postUpdate(Sw_15,parse.get(3))
		postUpdate(Sw_16,parse.get(15))
end
По изменению состояния Sw_1 & Sw_16, правилом для Окна написанном выше, получаем "отслеживание" состояния окна. 0 - "Закрыто", 1 - "Открыто", 2 - "Проветривание"

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

2018-07-16 14:07:21.716 [vent.ItemStateChangedEvent] - McpIntA_2 changed from 1 to 0
2018-07-16 14:07:21.769 [vent.ItemStateChangedEvent] - Sw_1 changed from ON to OFF
2018-07-16 14:07:21.830 [vent.ItemStateChangedEvent] - Window_Office changed from 2 to 0
2018-07-16 14:07:31.937 [vent.ItemStateChangedEvent] - McpIntA_2 changed from 0 to 1
2018-07-16 14:07:31.994 [vent.ItemStateChangedEvent] - Sw_1 changed from OFF to ON
2018-07-16 14:07:32.041 [vent.ItemStateChangedEvent] - Window_Office changed from 0 to 2
Все работает.
З.Ы. Петрос - Огромное спасибо за Ваше время и помощь

winniepooh
Сообщения: 9
Зарегистрирован: 22 янв 2018, 22:11

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

Сообщение winniepooh » 19 июл 2018, 14:40

Принимаю смс в openhab, вижу в логах:

13:34:28.840 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - incoming from Megad: 192.168.20.210 GET /openhab?sms_phone=+79200000000&sms_text=Test sms HTTP/1.1
13:34:28.846 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - 0 value openhab
13:34:28.851 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - 1 value sms_phone
13:34:28.857 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - 2 value +79200000000
13:34:28.862 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - 3 value sms_text
13:34:28.867 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - 4 value Test

Получается парсит строку с пробелами неверно.

Еще вопрос:
Возможно ли прямо в биндинге конвертировать кодировку входящих смс? (из UCS2 в utf8 например), чтобы входящие русские смс нормально читались, а не такой строкой:
2018-07-11 16:44:30.068 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - 4 value 04220435044104420438044004430435043C00200441043C0441 (Тестируем смс)

winniepooh
Сообщения: 9
Зарегистрирован: 22 янв 2018, 22:11

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

Сообщение winniepooh » 19 июл 2018, 15:36

И также в Item:
Number mega2561_1_start "Mega перезагрузка" <network> { channel = "megad:device:dev1:mega1_start:st" }

в этом итеме после входящего смс почему то появляется номер входящего телефона... а он должен срабатывать только при загрузке меги и только со значением "1"

5kull
Сообщения: 53
Зарегистрирован: 19 июл 2015, 17:35

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

Сообщение 5kull » 07 авг 2018, 13:57

Всем привет! есть ли способ опрашивать датчик по факту его срабатывания, ибо у меня Openhab опрашивает 14 входов меги ежесекундно, что иногда может привести мегу к зависанию. В Things ставил значение опроса "0" не реагирует на датчики вообще.

martiniman
Сообщения: 155
Зарегистрирован: 09 авг 2016, 15:09
Откуда: Сочи

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

Сообщение martiniman » 07 авг 2018, 20:13

Что понимается под датчиком?
Кнопка или именно датчик темп/влаж и тд?

Ответить