Hier noch einmal der bei mir lauffähige code,
python sollte natürlich installiert sein, wenn das Skript genutzt wird.
(Leider Steige ich grade bei deinem Skript nicht ganz durch, aber es ist auch schon spät.
Mit (On|Off) wird ja nur festgelegt, dass der wert entweder oder ist, die Powerconsumption kann natürlich beliebig sein.
python sollte natürlich installiert sein, wenn das Skript genutzt wird.
(Leider Steige ich grade bei deinem Skript nicht ganz durch, aber es ist auch schon spät.
Mit (On|Off) wird ja nur festgelegt, dass der wert entweder oder ist, die Powerconsumption kann natürlich beliebig sein.
Code:
rule "NETIO" when Time cron "*/30 * * * * ?" then var String command1 var String command2 command1 = "python /volume1/public/OpenHAB/configurations/scripts/consumption.py 10.0.0.1" command2 = "python /volume1/public/OpenHAB/configurations/scripts/consumption.py 10.0.0.2" var String cons1 = executeCommandLine(command1, 2000) var String cons2 = executeCommandLine(command2, 2000) var Pattern power = Pattern::compile("::(ON|OFF):(ON|OFF):(ON|OFF):(ON|OFF):(.*):(.*):(.*):(.*):") var Matcher m1 = power.matcher(cons1) var Matcher m2 = power.matcher(cons2) if (m1.matches()) { if (m1.group(1) != Port1_1.state.toString) { postUpdate(Port1_1, m1.group(1) )} if(m1.group(2) != Port1_2.state.toString){ postUpdate(Port1_2, m1.group(2) )} if(m1.group(3)!=Port1_3.state.toString){ postUpdate(Port1_3, m1.group(3) )} if(m1.group(4)!=Port1_4.state.toString){ postUpdate(Port1_4,m1.group(4) )} postUpdate(Port1_1c, Integer::parseInt(m1.group(5))) postUpdate(Port1_2c, Integer::parseInt(m1.group(6))) postUpdate(Port1_3c, Integer::parseInt(m1.group(7))) postUpdate(Port1_4c, Integer::parseInt(m1.group(8))) } if (m2.matches()) { if(m2.group(1)!=Port2_1.state.toString){ postUpdate(Port2_1, m2.group(1) )} if(m2.group(2)!=Port2_2.state.toString){ postUpdate(Port2_2, m2.group(2) )} if(m2.group(3)!=Port2_3.state.toString){ postUpdate(Port2_3, m2.group(3) )} if(m2.group(4)!=Port2_4.state.toString){ postUpdate(Port2_4, m2.group(4) )} postUpdate(Port2_1c, Integer::parseInt(m2.group(5))) postUpdate(Port2_2c, Integer::parseInt(m2.group(6))) postUpdate(Port2_3c, Integer::parseInt(m2.group(7))) postUpdate(Port2_4c, Integer::parseInt(m2.group(8))) } postUpdate(Measure_Power_Liv,(Port1_1c.state as DecimalType) + (Port1_2c.state as DecimalType) + (Port1_3c.state as DecimalType) + (Port1_4c.state as DecimalType) + (Port2_1c.state as DecimalType) + (Port2_2c.state as DecimalType) + (Port2_3c.state as DecimalType) + (Port2_4c.state as DecimalType))
Kommentar