runtimeInfo:
version: 3.1.0
buildString: Release Build
locale: tr-TR
systemInfo:
configFolder: /etc/openhab
userdataFolder: /var/lib/openhab
logFolder: /var/log/openhab
javaVersion: 11.0.12
javaVendor: Azul Systems, Inc.
javaVendorVersion: Zulu11.50+19-CA
osName: Linux
osVersion: 5.10.60-sunxi
osArchitecture: arm
availableProcessors: 4
freeMemory: 91725960
totalMemory: 194772992
bindings:
- astro
- icalendar
- icloud
- kodi
- remoteopenhab
- serial
- systeminfo
Hello All,
In the rule below, I want to match the items defined in openhab with the identifiers I obtained from the string and affect the relevant item.
if the defined item is a switch(OnOffType), it’s fine, I’m sending “ON” or “OFF”, but I don’t know if this item is “OnOffType” or “UpDownType”.
If I can learn the item type in the rule, I want to send commands according to the item type.
//import org.eclipse.smarthome.model.script.ScriptServiceUtil
import org.openhab.core.model.script.ScriptServiceUtil
rule "React on String Data (CANBus) change/update"
when
Item CANBus received update // your condition here
then
var String CANBusData = CANBus.state.toString
val parts = CANBusData.split(";")
var dTYPE = Integer::parseInt(parts.get(0).split("=").get(1)) as Number
var dID = Integer::parseInt(parts.get(1).split("=").get(1)) as Number
var pID = Integer::parseInt(parts.get(2).split("=").get(1)) as Number
var String cID = parts.get(3).split("=").get(1)
val name = "In"+ dID + "_P" + pID
logInfo("CANBus", "(Parts : '{}'", parts)
logInfo("CANBus", "(CANBUS) Input.Device.Type : '{}'", dTYPE)
logInfo("CANBus", "(CANBUS) Input.Device.ID : '{}'", dID)
logInfo("CANBus", "(CANBUS) Input.Port.ID : '{}'", pID)
logInfo("CANBus", "(CANBUS) Command.ID : '{}'", cID)
logInfo("CANBus", "(CANBUS) Item.Name : '{}'", name)
if (name.Type instanceof OnOffType ) {
logInfo("name type is Switch")
if (cID == "01" )
name.sendCommand("ON")
else
name.sendCommand("OFF")
}
else if(name.Type instanceof UpDownType ) {
logInfo("name type is RollerShutter")
if (cID == "01" )
name.sendCommand("UP")
else
name.sendCommand("DOWN")
}
end
==> /var/log/openhab/events.log <==
2021-09-18 01:57:24.754 [INFO ] [openhab.event.ChannelTriggeredEvent ] - serial:serialBridge:SB1:data triggered PRESSED
2021-09-18 01:57:24.764 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'CANBus' changed from DTYPE=11;DID=01;PID=001;CID=00;
to DTYPE=11;DID=01;PID=001;CID=01;
==> /var/log/openhab/openhab.log <==
2021-09-18 01:57:24.791 [INFO ] [org.openhab.core.model.script.CANBus] - (Parts : '[DTYPE=11, DID=01, PID=001, CID=01,
]'
2021-09-18 01:57:24.797 [INFO ] [org.openhab.core.model.script.CANBus] - (CANBUS) Input.Device.Type : '11'
2021-09-18 01:57:24.803 [INFO ] [org.openhab.core.model.script.CANBus] - (CANBUS) Input.Device.ID : '1'
2021-09-18 01:57:24.809 [INFO ] [org.openhab.core.model.script.CANBus] - (CANBUS) Input.Port.ID : '1'
2021-09-18 01:57:24.815 [INFO ] [org.openhab.core.model.script.CANBus] - (CANBUS) Command.ID : '01'
2021-09-18 01:57:24.821 [INFO ] [org.openhab.core.model.script.CANBus] - (CANBUS) Item.Name : 'In1_P1'
2021-09-18 01:57:24.827 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Input-1' failed: 'Type' is not a member of 'java.lang.String'; line 23, column 9, length 9 in Input
==> /var/log/openhab/events.log <==
2021-09-18 01:57:26.530 [INFO ] [openhab.event.ChannelTriggeredEvent ] - serial:serialBridge:SB1:data triggered PRESSED
2021-09-18 01:57:26.535 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'CANBus' changed from DTYPE=11;DID=01;PID=001;CID=01;
to DTYPE=11;DID=01;PID=001;CID=00;
==> /var/log/openhab/openhab.log <==
2021-09-18 01:57:26.548 [INFO ] [org.openhab.core.model.script.CANBus] - (Parts : '[DTYPE=11, DID=01, PID=001, CID=00,
]'
2021-09-18 01:57:26.551 [INFO ] [org.openhab.core.model.script.CANBus] - (CANBUS) Input.Device.Type : '11'
2021-09-18 01:57:26.555 [INFO ] [org.openhab.core.model.script.CANBus] - (CANBUS) Input.Device.ID : '1'
2021-09-18 01:57:26.558 [INFO ] [org.openhab.core.model.script.CANBus] - (CANBUS) Input.Port.ID : '1'
2021-09-18 01:57:26.561 [INFO ] [org.openhab.core.model.script.CANBus] - (CANBUS) Command.ID : '00'
2021-09-18 01:57:26.564 [INFO ] [org.openhab.core.model.script.CANBus] - (CANBUS) Item.Name : 'In1_P1'
2021-09-18 01:57:26.567 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Input-1' failed: 'Type' is not a member of 'java.lang.String'; line 23, column 9, length 9 in Input
I found 2 methods, but I could not manage to implement them.
How can I do that?
Thank you for your time and assists…
Veli