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

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
martiniman
Сообщения: 528
Зарегистрирован: 09 авг 2016, 15:09
Откуда: Сочи

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

Сообщение martiniman » 19 фев 2018, 14:49

И про postUpdate и sendCommand поясните - непонятно зачем такой оборот, по идее же sendCommand меняет статус.

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

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

Сообщение Petros » 19 фев 2018, 14:52

Нет, не меняет. Он только отправляет команду во вне

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

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

Сообщение martiniman » 19 фев 2018, 17:11

Petros писал(а):
19 фев 2018, 14:52
Нет, не меняет. Он только отправляет команду во вне
Это особенность биндинга? Чего-то я растерялся, написал правило для проверки.
sendCommand - меняет state Айтема. Или я чего-то недопонял.

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

rule "rule name"
when
	Item MegaTestString received update
then
	if (MegaTestString.state=="CMD"){
		MegaTestSwitch.sendCommand(ON)
		Thread::sleep(100)
		//тут state всегда становится равным присланной команде ON, даже если был OFF
		logWarn ("    ----> MegaTestSwitch", MegaTestSwitch.state.toString)
	}
	if (MegaTestString.state=="POST"){
		MegaTestSwitch.postUpdate(OFF)
		Thread::sleep(100)
		//тут state всегда становится равным присланной команде (OFF)
		logWarn ("    ----> MegaTestSwitch", MegaTestSwitch.state.toString)
	}

end	

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

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

Сообщение Petros » 19 фев 2018, 23:52

А в оболочке при этом?

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

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

Сообщение martiniman » 20 фев 2018, 00:15

Petros писал(а):
19 фев 2018, 23:52
А в оболочке при этом?
Меняется, только что проверил, добавил MegaTestSwitch в сайтмэп.

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

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

Сообщение Petros » 20 фев 2018, 00:17

Сдаюсь :) нужно посмотреть. Возможно это атавизм 1.8 версии

kiltman
Сообщения: 3
Зарегистрирован: 02 июн 2015, 01:54

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

Сообщение kiltman » 24 фев 2018, 01:06

Может кто знает как преобразовать спецсимвол двоеточие?
Отпавляю http=">[ON:GET:http://172.16.1.20/sec/?pt=9&cmd=9:1]
или POST пофиг

log:
Executing url 'http://172.16.1.20/sec/?pt=9&cmd=9' via method GET
Executing url 'http://172.16.1.20/sec/?pt=9&cmd=9' via method POST, with body content '1'

В OH1.8 всё работало. Как перешел на OH2 перестало.

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

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

Сообщение empenoso » 24 фев 2018, 17:51

kiltman писал(а):
24 фев 2018, 01:06
Может кто знает как преобразовать спецсимвол двоеточие?
Отпавляю http=">[ON:GET:http://172.16.1.20/sec/?pt=9&cmd=9:1]
или POST пофиг

log:
Executing url 'http://172.16.1.20/sec/?pt=9&cmd=9' via method GET
Executing url 'http://172.16.1.20/sec/?pt=9&cmd=9' via method POST, with body content '1'

В OH1.8 всё работало. Как перешел на OH2 перестало.
Может быть это поможет? https://meyerweb.com/eric/tools/dencoder/

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

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

Сообщение empenoso » 24 фев 2018, 17:56

Настраиваю биндинг и слегка подзабыл - во второй версии опенхаба надо в addons.cfg что-то прописывать? Почему-то не биндинг не видит переключение портов когда из-под интерфейса меги переключаешь, хотя на меге все настроено и из-под опенхаба он переключает.

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

Bridge megad:bridge:shields  [port=8989]
{
    Thing device Bedroom_LampOnWall_Right    [hostname="192.168.48.20", port="0", password="sec", refresh="0"]
    Thing device Bedroom_LampOnWall_Left     [hostname="192.168.48.20", port="1", password="sec", refresh="0"]
    Thing device Bedroom_TV                  [hostname="192.168.48.20", port="2", password="sec", refresh="0"] 
    Thing device Bedroom_Curtains_Open       [hostname="192.168.48.20", port="3", password="sec", refresh="0"] 
    Thing device Bedroom_Curtains_Close      [hostname="192.168.48.20", port="4", password="sec", refresh="0"] 
    Thing device Loggia                      [hostname="192.168.48.20", port="5", password="sec", refresh="0"] 
}

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

Switch Bedroom_LampOnWall_Right     "Бра в спальне, справа [%s]"    <light>  (Lamp)    {channel ="megad:device:shields:Bedroom_LampOnWall_Right:out"}	
Switch Bedroom_LampOnWall_Left      "Бра в спальне, слева [%s]"     <light>  (Lamp)    {channel ="megad:device:shields:Bedroom_LampOnWall_Left:out"}

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

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

Сообщение martiniman » 25 фев 2018, 02:32

Прошу ткнуть носом в как получить данные с BME280.
Это 1 Thing с 3мя channels?
Или это 3 Thing по одному Channel?
Не нашел про i2c param - что это?
Refresh у меня почему-то не меняется из PaperUI, вернее цифра то меняется, но по факту в логах время обновления не меняется.

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

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

Сообщение empenoso » 25 фев 2018, 07:00

martiniman писал(а):
25 фев 2018, 02:32
Прошу ткнуть носом в как получить данные с BME280.
Можно разными способами, например даже так, но надо чтобы http биндинг был установлен:

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

Number Shield3_Top_P0_BMx280_Temp       "Темп. на улице [%.2f °C]"	       <temperature>	 (Pipes)    { http="<[http://192.168.48.30/sec/?pt=0&scl=1&i2c_dev=bmx280&i2c_par=1:60000:REGEX((.*?))]" }	
Number Shield3_Top_P0_BMx280_Hum        "Влажность на улице [%.2f %%]"     <humidity>                   { http="<[http://192.168.48.30/sec/?pt=0&scl=1&i2c_dev=bmx280&i2c_par=2:60000:REGEX((.*?))]" }	
Number Shield3_Top_P0_BMx280_Press	  	"Атм. давление [%.2f мм рт. ст.]"  <humidity>		            { http="<[http://192.168.48.30/sec/?pt=0&scl=1&i2c_dev=bmx280:60000:REGEX((.*?))]" }	

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

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

Сообщение martiniman » 25 фев 2018, 11:44

empenoso писал(а):
25 фев 2018, 07:00
Можно разными способами, например даже так, но надо чтобы http биндинг был установлен:
Спасибо, а как это же сделать через MegaD binding?
--
Разобрался, работает темп и давление, а третий параметр Влажность не читает:

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

Things:
Thing device mega1-p30     [hostname="192.168.1.11", password="sec", port="30", refresh="5", scl="31", i2c_dev="bmx280"]
Items:
Number Mega1_p30_t  "BME280 temp"   { channel = "megad:device:srv:mega1-p30:temp" }
Number Mega1_p30_h  "BME280 hum"   { channel = "megad:device:srv:mega1-p30:humidity" }
Number Mega1_p30_p  "BME280 pressure"   { channel = "megad:device:srv:mega1-p30:i2c" }
--
И еще вопрос - как отловить длительное нажатие кнопки через биндинг?
--
Как передать через биндинг команду
Дополнительная команда "d" (default). Если сервер на факт срабатывания входа, возвращает 'd', то это дает сигнал устройству выполнить сценарий по умолчанию (Act). Эта команда дублиует поведение контроллера в случае установленного флажка Act, но в этом случае сам сервер определяет когда выполнять сценарий по умолчанию.
?

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

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

Сообщение empenoso » 26 фев 2018, 21:32

empenoso писал(а):
24 фев 2018, 17:56
Настраиваю биндинг и слегка подзабыл - во второй версии опенхаба надо в addons.cfg что-то прописывать? Почему-то не биндинг не видит переключение портов когда из-под интерфейса меги переключаешь, хотя на меге все настроено и из-под опенхаба он переключает.

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

Bridge megad:bridge:shields  [port=8989]
{
    Thing device Bedroom_LampOnWall_Right    [hostname="192.168.48.20", port="0", password="sec", refresh="0"]
    Thing device Bedroom_LampOnWall_Left     [hostname="192.168.48.20", port="1", password="sec", refresh="0"]
    Thing device Bedroom_TV                  [hostname="192.168.48.20", port="2", password="sec", refresh="0"] 
    Thing device Bedroom_Curtains_Open       [hostname="192.168.48.20", port="3", password="sec", refresh="0"] 
    Thing device Bedroom_Curtains_Close      [hostname="192.168.48.20", port="4", password="sec", refresh="0"] 
    Thing device Loggia                      [hostname="192.168.48.20", port="5", password="sec", refresh="0"] 
}

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

Switch Bedroom_LampOnWall_Right     "Бра в спальне, справа [%s]"    <light>  (Lamp)    {channel ="megad:device:shields:Bedroom_LampOnWall_Right:out"}	
Switch Bedroom_LampOnWall_Left      "Бра в спальне, слева [%s]"     <light>  (Lamp)    {channel ="megad:device:shields:Bedroom_LampOnWall_Left:out"}
Никак не могу настроить - переключаю выход на меге - опенхаб не видит...

Ошибок в логе вроде как нет:

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

2018-02-26 22:27:22.052 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - Polling job called

2018-02-26 22:27:22.055 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - MegaD Server open port 8090

2018-02-26 22:27:22.058 [hingStatusInfoChangedEvent] - 'megad:device:shields:Kitchen_Lamp' changed from OFFLINE (BRIDGE_OFFLINE) to OFFLINE

2018-02-26 22:27:22.059 [DEBUG] [b.binding.megad.handler.MegaDHandler] - Thing Handler for Kitchen_Lamp stop

2018-02-26 22:27:22.061 [DEBUG] [b.binding.megad.handler.MegaDHandler] - unregister

2018-02-26 22:27:22.061 [me.event.ThingUpdatedEvent] - Thing 'megad:bridge:shields' has been updated.

2018-02-26 22:27:22.064 [hingStatusInfoChangedEvent] - 'megad:device:shields:Kitchen_Lamp' changed from OFFLINE to ONLINE

2018-02-26 22:27:22.066 [DEBUG] [b.binding.megad.handler.MegaDHandler] - Thing Handler for Kitchen_Lamp started

2018-02-26 22:27:22.067 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - thingHandler for thing: '192.168.48.20.13'

2018-02-26 22:27:22.070 [hingStatusInfoChangedEvent] - 'megad:device:shields:Kitchen_Lamp' changed from ONLINE to OFFLINE

2018-02-26 22:27:22.071 [DEBUG] [ing.megad.handler.MegaDBridgeHandler] - register thingHandler for thing: org.openhab.binding.megad.handler.MegaDHandler@117eb2c

2018-02-26 22:27:22.074 [DEBUG] [b.binding.megad.handler.MegaDHandler] - refresh: 0

2018-02-26 22:27:22.075 [hingStatusInfoChangedEvent] - 'megad:device:shields:Kitchen_Lamp' changed from OFFLINE to ONLINE

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

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

Сообщение Igor78 » 27 фев 2018, 17:38

empenoso писал(а):
26 фев 2018, 21:32
Настраиваю биндинг и слегка подзабыл - во второй версии опенхаба надо в addons.cfg что-то прописывать? Почему-то не биндинг не видит переключение портов когда из-под интерфейса меги переключаешь, хотя на меге все настроено и из-под опенхаба он переключает.
...
Никак не могу настроить - переключаю выход на меге - опенхаб не видит...
..
Когда переключаете выход на Меге она ничего не шлет серверу. Состояние выходов можно получить/обновить используя параметр refresh в .things, у Вас стоит 0 т.е. никогда. refresh="10" - читаем состояние порта раз в 10 сек
С уважением, Игорь

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

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

Сообщение Igor78 » 27 фев 2018, 19:01

Уважаемый Petros, спасибо Вам за ваш труд!

Проект MegaD-2561 развивается стремительно, и я прекрасно понимаю, что у Вас может просто не хватать времени реализовывать новые типы датчиков и модулей расширения, особенно если Вы сами с ними не работаете.
Основное преимущество MegaD-биндинга, на мой взгляд в том, что оно имеет свой HTTP сервер, позволяющий реагировать на события по портам типа IN, т.к. считывать состояния датчиков, отправлять ИК-команды, писать текст на дисплей, читать и изменять состояние OUT/PWM портов можно и при помощи "родного" HTTP-биндинга.
Так вот мое предложение в том, чтобы реализовать DummyIN-Item типа String, который просто хранил бы все что приходит на сервер после ?pt=XX, где XX-номер порта. На refresh можно просто сохранять ответ на запрос http://MEGA_IP/PAS/?pt=XX&cmd=get . В идеале, конечно, это чтобы можно было бы указывать строку запроса состояния порта (то, что после ?pt=XX&): cmd=get / cmd=list / scl=4&i2c_dev=ads1115&i2c_par=0

Возможный синтаксис былы таким:

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

.things

Bridge megad:bridge:incomingserver [port=8585]
{
   Thing device ADS1115_port [hostname="172.16.7.40", port="5", password="sec", request="scl=4&i2c_dev=ads1115&i2c_par=0", refresh="15"]
   Thing device MCP23017_port [hostname="172.16.7.40", port="7", password="sec", request="cmd=get", refresh="15"]
}

.items

String ADS1115_asString "Значение портов ADS1115: [%s]" { channel = "megad:device:incomingserver:ADS1115_port:dummy_in" }
String MCP23017_asString "Значение портов MCP23017: [%s]" { channel = "megad:device:incomingserver:MCP23017_port:dummy_in" }
В настоящее время это позволило бы работать с платами расширения ADS1115, PCA9685(опрос состояния портов), а также, и это самое главное, т.к. сейчас вообще не понятно как его привязать к OH, MCP23008/MCP23017(опрос состояния портов и реакция на события по портам типа IN).
С уважением, Игорь

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

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

Сообщение empenoso » 01 мар 2018, 21:23

Спасибо, все получилось.
У диммера ведь еще есть состояние On|Off. А как его прописать в items - а то кнопка выключить/включить всё - не работает для этих элементов группы.
Dimmer Percentage value for dimmers OnOff, IncreaseDecrease, Percent

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

Dimmer Bedroom_Lamps                "Лампы в спальне [%d %%]"                            <bedroom>       (Lamp, Bedroom)                   {channel ="megad:device:shields:Bedroom_Lamps:dimmer"}	
.

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

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

Сообщение empenoso » 02 мар 2018, 07:55

Написал правило для штор:

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

Rollershutter Bedroom_Curtains      "Штора в спальне [%d %%]"                            <blinds>        (Bedroom)                              

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

rule "Bedroom_Curtains UP" 
when
    Item Bedroom_Curtains received command UP    //открыть
then
    postUpdate(Bedroom_Curtains, 100)
    publish("mosquitto","megad/20/cmd","4=1")
    Thread::sleep(8500) //половина
    postUpdate(Bedroom_Curtains, 50)
	Thread::sleep(8500) //17000 миллисекунд в секундах
    publish("mosquitto","megad/20/cmd","4=0")
    postUpdate(Bedroom_Curtains, 0)
end

rule "Bedroom_Curtains DOWN" 
when
    Item Bedroom_Curtains received command DOWN    //закрыть
then
    postUpdate(Bedroom_Curtains, 0)
    publish("mosquitto","megad/20/cmd","3=1")
    Thread::sleep(8500) //половина
    postUpdate(Bedroom_Curtains, 50)    
	Thread::sleep(8500) //17000 миллисекунд в секундах
    publish("mosquitto","megad/20/cmd","3=0")
    postUpdate(Bedroom_Curtains, 100)
end

rule "Bedroom_Curtains STOP" 
when
    Item Bedroom_Curtains received command STOP    //стоп
then
    publish("mosquitto","megad/20/cmd","3=0")
    publish("mosquitto","megad/20/cmd","4=0")
end
Еще одно адаптировал из инета (но оно больше до 2 версии заточено, потому что % закрытия сразу до конца отображает, а если стоп нажать - то правильный % уже только после нажатия на стоп):

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

//variables to store current state of Bedroom_Curtains https://github.com/openhab/openhab1-addons/wiki/Rollershutter-Bindings
var Number Bedroom_CurtainsOldState = 50
var Number Bedroom_CurtainsLastUp = 0
var Number Bedroom_CurtainsLastDown = 0

//URL to be called as HTPP GET. Up and Down start moving shutting either until completely moved or until Stop called.
var String Bedroom_CurtainsDownActionUrl =  "http://192.168.48.20/sec/?pt=4&cmd=3:1"
var String Bedroom_CurtainsUpActionUrl =    "http://192.168.48.20/sec/?pt=4&cmd=4:1"
var String Bedroom_CurtainsStopActionUrlDown =  "http://192.168.48.20/sec/?pt=4&cmd=3:0"
var String Bedroom_CurtainsStopActionUrlUp =    "http://192.168.48.20/sec/?pt=4&cmd=4:0"

//time in ms needed to completely open and close Bedroom_Curtains, respectively
var Number Bedroom_Curtains_FULL_UP_TIME = 17000
var Number Bedroom_Curtains_FULL_DOWN_TIME = 17000


rule "Bedroom_Curtains Save Old State Rule"
when
    Item Bedroom_Curtains changed	
then
    Bedroom_CurtainsOldState = previousState as DecimalType
end

rule "Bedroom_Curtains Control Rule"
when
    Item Bedroom_Curtains received command 
then
    if(receivedCommand !== null){
        var Number upTime = now.millis - Bedroom_CurtainsLastUp
        var Number downTime = now.millis - Bedroom_CurtainsLastDown
        switch(receivedCommand.toString.upperCase) {
            case "STOP" :{ 
                var Number newState = -1
                if(upTime < downTime && upTime < Bedroom_Curtains_FULL_UP_TIME) {
                    //last action was up and still going UP.
                    //0% is open!				
                    var Number percentMoved =  ((upTime) * 100 / Bedroom_Curtains_FULL_UP_TIME).intValue 
                    newState = Bedroom_CurtainsOldState - percentMoved
                    logInfo("Bedroom_CurtainsOldState: " + Bedroom_CurtainsOldState + " UP: " + percentMoved + "% in " + upTime/1000 + "sec. Now: " + newState+ "%" )
                } else if(upTime > downTime && downTime < Bedroom_Curtains_FULL_DOWN_TIME) {
                    //last action was down and still going DOWN.
                    //100% is closed!
                    var Number percentMoved = ((downTime) * 100 / Bedroom_Curtains_FULL_DOWN_TIME).intValue
                    newState = Bedroom_CurtainsOldState + percentMoved
                    logInfo("Bedroom_CurtainsOldState: " + Bedroom_CurtainsOldState + "% DOWN: " + percentMoved + "% in " + downTime/1000 + "sec. Now: " + newState+ "%" )
                }
                if(newState > 0 && newState < 100) {
                    postUpdate(Bedroom_Curtains, newState)
                    if(Bedroom_CurtainsStopActionUrlDown !== null){
                        sendHttpGetRequest(Bedroom_CurtainsStopActionUrlDown)
						sendHttpGetRequest(Bedroom_CurtainsStopActionUrlUp)
                    }
                }
            }			
            case "UP" : {
                if(upTime < Bedroom_Curtains_FULL_UP_TIME) {
                    //still going up. ignore.
                } else {
                    Bedroom_CurtainsLastUp = now.millis
                    if(Bedroom_CurtainsUpActionUrl !== null){
                        sendHttpGetRequest(Bedroom_CurtainsUpActionUrl)
                    }
                }
            }
            case "DOWN":{
                if(downTime < Bedroom_Curtains_FULL_DOWN_TIME) {
                    //still going up. ignore.
                } else {
                    Bedroom_CurtainsLastDown = now.millis
                    if(Bedroom_CurtainsDownActionUrl !== null){
                        sendHttpGetRequest(Bedroom_CurtainsDownActionUrl)
                    }
                }
            }
        }
    }
end
Но думаю на обычный switch переделать с двумя кнопками - полностью открыто и закрыто - а то как-то не особо понятно как пользоваться выглядит. Тем более у опенхаб шторы только вверх/вниз нарисованы, а у меня ведь обычная штора - вправо/влево.

d.v.ermakov
Администратор
Сообщения: 2188
Зарегистрирован: 29 май 2015, 21:23
Откуда: Екатеринбург, Нижний Тагил

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

Сообщение d.v.ermakov » 02 мар 2018, 11:55

Я в этой теме где-то выкладывал архив со своей конфигурацией ОпенХАБа, там были все мои иконки, в том числе и штор (и гардин) разной степени открытия. И вообще иконок я много подобрал-доделал, но под стиль версии 1.х.
curt-on.png
curt-on.png (1.01 КБ) 2437 просмотров
curt-off.png
curt-off.png (1.53 КБ) 2437 просмотров
tulle-on.png
tulle-on.png (798 байт) 2437 просмотров
tulle-off.png
tulle-off.png (1.39 КБ) 2437 просмотров

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

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

Сообщение empenoso » 02 мар 2018, 16:09

d.v.ermakov писал(а):
02 мар 2018, 11:55
Я в этой теме где-то выкладывал архив со своей конфигурацией ОпенХАБа, там были все мои иконки, в том числе и штор (и гардин) разной степени открытия. И вообще иконок я много подобрал-доделал, но под стиль версии 1.х.
Спасибо посмотрю.

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

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

Сообщение empenoso » 02 мар 2018, 16:11

Написал правило для электрокранов на воду:

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

Switch Toilet_WaterLeak             "Перекрытие воды [MAP(water.map):%s]"               <faucet>        (Service, Water_Sensor)  

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

ON=перекрыта
OFF=течет
NULL=нет данных
-=нет данных

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

rule "Toilet_WaterLeak"
when
    Item Toilet_WaterLeak received command
then
    switch(receivedCommand) {
        case OFF: {        //открыть
            sendHttpGetRequest("http://192.168.48.20/sec/?pt=8&cmd=8:0")
            Thread::sleep(100)
            sendHttpGetRequest("http://192.168.48.20/sec/?pt=9&cmd=9:0")
            Thread::sleep(100)

            sendHttpGetRequest("http://192.168.48.20/sec/?pt=8&cmd=8:1")
            Thread::sleep(17000) //17000 миллисекунд в секундах
            sendHttpGetRequest("http://192.168.48.20/sec/?pt=8&cmd=8:0")
        }
        case ON: {       //закрыть
            sendHttpGetRequest("http://192.168.48.20/sec/?pt=8&cmd=8:0")
            Thread::sleep(100)
            sendHttpGetRequest("http://192.168.48.20/sec/?pt=9&cmd=9:0")
            Thread::sleep(100)

            sendHttpGetRequest("http://192.168.48.20/sec/?pt=9&cmd=9:1")
            Thread::sleep(17000) //17000 миллисекунд в секундах
            sendHttpGetRequest("http://192.168.48.20/sec/?pt=9&cmd=9:0")
        }
    }       
end
Все понятно из интерфейса и работает.

Ответить