Re: Internorm Jalousien über http-Binding
Verfasst: 12. Mär 2023 11:26
Moin Udo,
hättest du denn dazu Lust und Zeit?
hättest du denn dazu Lust und Zeit?
Code: Alles auswählen
Rule "Sende Befehl an Internorm Rollläden"
when
Member of gMediola received command
then
var strData = ""
val strAdr = triggeringItem.name.split("_").get(2)
var strCommand = ""
switch(receivedCommand) {
case UP : strCommand = "000C"
case DOWN: strCommand = "000D"
case STOP: strCommand = "0007"
default : strCommand = "18"+Long.toHexString((receivedCommand as Number).intValue)
}
strData = strAdr + strCommand
logInfo("mediola","Sende Befehl {} an Adresse {}",strCommand,strAdr)
mediolaOut.sendCommand(strData)
end
Code: Alles auswählen
rule "Empfange Position von Internorm Rollläden"
when
Item mediolaIn changed
then
val strJSON = mediolaIn.state.toString
gMediola.members.forEach[i|
val strAdr = i.name.split("_").get(2)
val strHEXpos = transform("JSONPATH","$[?(@.adr=='"+strAdr+"')].state",strJSON).subStr(4,2)
val pos = Integer.parseInt(strHEXpos, 16)
logInfo("mediola","In - Item {} - Status {} - gemeldet: {}",i.name,i.state,pos)
if((i.state as Number).intValue != pos) {
i.postUpdate(pos)
}
]
end
Code: Alles auswählen
gMediola1
Rollershutter P2_RL9_09 (gMediola1)
Rollershutter P2_RL10_010 (gMediola1)
Rollershutter P2_RL11_011 (gMediola1)
String mediolaIn2 (gMediola1) {channel=“http:url:mediola:ch1in1”}
String mediolaOut2(gMediola1) {channel=“http:url:mediola:ch1out1”}
Code: Alles auswählen
Thing http:url:mediola1 "Mediola SC1" [
baseURL="http://192.168.0.5/command?XC_FNC=",
refresh=60,
timeout=5000
] {
Channels:
Type string : ch1out1 [
commandExtension="SendSC&type=IN&data="
]
Type string : ch1in1 [
stateExtension="GetStates"
]
}
Thing http:url:mediola2 "Mediola SC2" [
baseURL="http://192.168.0.6/command?XC_FNC=",
refresh=60,
timeout=5000
] {
Channels:
Type string : ch1out2 [
commandExtension="SendSC&type=IN&data="
]
Type string : ch1in2 [
stateExtension="GetStates"
]
}
Code: Alles auswählen
String mediolaIn1 {channel="http:url:mediola1:ch1in1"}
String mediolaOut1 {channel="http:url:mediola1:ch1out1"}
String mediolaIn2 {channel="http:url:mediola2:ch1in2"}
String mediolaOut2 {channel="http:url:mediola2:ch1out2"}
Group gMediola1
Rollershutter P4RL1_01 <rollershutter> (gMediola1)
Rollershutter P4RL2_02 <rollershutter> (gMediola1)
Rollershutter P4RL3_03 <rollershutter> (gMediola1)
Rollershutter P4RL4_04 <rollershutter> (gMediola1)
Rollershutter P4RL5_05 <rollershutter> (gMediola1)
Rollershutter P4RL8_08 <rollershutter> (gMediola1)
Rollershutter P4RL9_09 <rollershutter> (gMediola1)
Rollershutter P4RL10_10 <rollershutter> (gMediola1)
Rollershutter P4RL11_11 <rollershutter> (gMediola1)
Group gMediola2
Rollershutter P2RL9_09 (gMediola2)
Rollershutter P2RL10_10 (gMediola2)
Rollershutter P2RL11_11 (gMediola2)
Code: Alles auswählen
rule "Sende Befehl an Internorm Rollläden SC1"
when
Member of gMediola1 received command
then
var strData = ""
val strAdr = triggeringItem.name.split("_").get(2)
var strCommand = ""
switch(receivedCommand) {
case UP : strCommand = "000C"
case DOWN: strCommand = "000D"
case STOP: strCommand = "0007"
default : strCommand = "18"+Long.toHexString((receivedCommand as Number).intValue)
}
strData = strAdr + strCommand
logInfo("mediola","Sende Befehl {} an Adresse {}",strCommand,strAdr)
mediolaOut1.sendCommand(strData)
end
rule "Empfange Position von Internorm Rollläden SC1"
when
Item mediolaIn1 changed
then
val strJSON = mediolaIn1.state.toString
gMediola1.members.forEach[i|
val strAdr = i.name.split("_").get(2)
val strHEXpos = transform("JSONPATH","$[?(@.adr=='"+strAdr+"')].state",strJSON).subStr(4,2)
val pos = Integer.parseInt(strHEXpos, 16)
logInfo("mediola","In - Item {} - Status {} - gemeldet: {}",i.name,i.state,pos)
if((i.state as Number).intValue != pos) {
i.postUpdate(pos)
}
]
end
rule "Sende Befehl an Internorm Rollläden SC2"
when
Member of gMediola2 received command
then
var strData = ""
val strAdr = triggeringItem.name.split("_").get(2)
var strCommand = ""
switch(receivedCommand) {
case UP : strCommand = "000C"
case DOWN: strCommand = "000D"
case STOP: strCommand = "0007"
default : strCommand = "18"+Long.toHexString((receivedCommand as Number).intValue)
}
strData = strAdr + strCommand
logInfo("mediola","Sende Befehl {} an Adresse {}",strCommand,strAdr)
mediolaOut2.sendCommand(strData)
end
rule "Empfange Position von Internorm Rollläden SC2"
when
Item mediolaIn2 changed
then
val strJSON = mediolaIn2.state.toString
gMediola2.members.forEach[i|
val strAdr = i.name.split("_").get(2)
val strHEXpos = transform("JSONPATH","$[?(@.adr=='"+strAdr+"')].state",strJSON).subStr(4,2)
val pos = Integer.parseInt(strHEXpos, 16)
logInfo("mediola","In - Item {} - Status {} - gemeldet: {}",i.name,i.state,pos)
if((i.state as Number).intValue != pos) {
i.postUpdate(pos)
}
]
end
Code: Alles auswählen
2023-03-13 22:11:50.074 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'internorm-1' failed: Index 2 out of bounds for length 2 in internorm
Code: Alles auswählen
2023-03-13 22:12:00.753 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'P4RL5_05' received command UP
2023-03-13 22:12:00.758 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'P4RL5_05' changed from NULL to 0
2023-03-13 22:12:02.731 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'P4RL5_05' received command STOP
2023-03-13 22:12:03.511 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'P4RL5_05' received command DOWN
2023-03-13 22:12:03.513 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'P4RL5_05' changed from 0 to 100
2023-03-13 22:12:05.399 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'P4RL5_05' received command STOP
Code: Alles auswählen
Thing http:url:mediola "Mediola" [
baseURL="http://http://192.168.0.5/command?XC_FNC=",
refresh=60,
timeout=5000
] {
Channels:
Type string : ch1out [
commandExtension="SendSC&type=IN&data=%2$s"
]
Type string : ch1in [
stateExtension="GetStates"
]
}
Code: Alles auswählen
Thing http:url:0de4fe720f "Aio Gateway http" [baseURL="http://192.168.178.23/command?", authMode= "BASIC", commandMethod="GET", ignoreSSLErrors = true , bufferSize = "2048", timeout = "3000", refresh=60 ]
{
Channels:
Type switch : http_IT_Sch_4 "IT Schalter 4 http" [mode = "WRITEONLY", onValue = "XC_FNC=SendSC&type=IT&data=30E", offValue = "XC_FNC=SendSC&type=IT&data=306", commandExtension = "%2$s" ]
Type rollershutter: http_IT_Ro_1 "IT Rolladen 1 http" [mode = "WRITEONLY", upValue = "XC_FNC=SendSC&type=IT&data=F0E", downValue = "XC_FNC=SendSC&type=IT&data=F06", stopValue = "XC_FNC=SendSC&type=IT&data=F06",commandExtension = "%2$s" ]
Type rollershutter: http_IT_Ro_3 "IT Rolladen 2 http" [mode = "WRITEONLY", upValue = "XC_FNC=SendSC&type=IT&data=F2E", downValue = "XC_FNC=SendSC&type=IT&data=F26", stopValue = "XC_FNC=SendSC&type=IT&data=F26", commandExtension = "%2$s" ]
}