I am taking serial input from my arduino uno.
Serial String is as follows
{“device_no”:“WKSP-01”,“client”:“Workshop”,“device_type”:“SAM”,“device_key”:“LUJPIOJV7L5NHCWQ1F4J”,“node_no”:“024”,“Name”:"*Soham",“TEMP”:“32.26”,“HUM”:“0.00”,“LDR”:“127750.13”,“POWER”:“OFF”,“DOOR”:“CLOSE”,“PIR”:“NO”}
I want this String to be parsed for the given items.
Items Code is as follows:
String Device_num "Device Number [%s] " <app> (gArduino) { serial = "<COM1>@<9600>" }
String Client_name "Client Name [%s] " <app> (gArduino) { serial = "<COM1>@<9600>" }
String Device_type "Device Type [%s] " <app> (gArduino) { serial = "<COM1>@<9600>" }
String Device_Key "Device Key [%s] " <app> (gArduino) { serial = "<COM1>@<9600>" }
String Node_Num "Node Number [%s] " <app> (gArduino) { serial = "<COM1>@<9600>" }
String Name "Name [%s] " <app> (gArduino) { serial = "<COM1>@<9600>" }
String Sensor_Temperature "Temperature [%s]" <temperature> (gArduino) { serial = "<COM1>@<9600>" }
String Sensor_Humidity "Humidity [%s]" <cistern> (gArduino) { serial = "<COM1>@<9600>" }
String Sensor_LDR "LDR [%s]" <switch> (gArduino) { serial = "<COM1>@<9600>" }
String Sensor_Power "Power [%s]" <switch> (gArduino) { serial = "<COM1>@<9600>" }
String Sensor_Door "Door [%s]" <temperature> (gArduino) { serial = "<COM1>@<9600>" }
String Sensor_Proximity "Proximity [%s]" <climate> (gArduino) { serial = "<COM1>@<9600>" }
I am expecting output as
Device Number = WKSP-01(exclude equa lto sign)
Client Name = Workshop(exclude equa lto sign)
.
.
.
My rule is as follows (which is not working)
rule "gArduino"
when
Item gArduino received update
then
var String ArduinoUpdate = gArduino.state.toString.trim
/*------------------------------------------------------------------*/
/*String to be parsed
{"device_no":"WKSP-01","client":"Workshop","device_type":"SAM","device_key":"LUJPIOJV7L5NHCWQ1F4J","node_no":"024","Name":"*YadwadRajesh","TEMP":"32.26","HUM":"0.00","LDR":"127750.13","POWER":"OFF","DOOR":"CLOSE","PIR":"NO"}
*/
var int device_noStartsOn = ArduinoUpdate.indexOf("device_no") + "device_no".length+1
var String device = ArduinoUpdate.mid(device_noStartsOn,ArduinoUpdate.indexOf(',')-device_noStartsOn)
Device_num.postUpdate(device)
var int client_nameStartsOn = ArduinoUpdate.indexOf("client") + "client".length+1
var String cl = ArduinoUpdate.mid(client_nameStartsOn,ArduinoUpdate.indexOf(',')-client_nameStartsOn)
Client_name.postUpdate(cl)
var int device_typeStartsOn = ArduinoUpdate.indexOf("device_type") + "device_type".length+1
var String deviceType = ArduinoUpdate.mid(device_typeStartsOn,ArduinoUpdate.indexOf(',')-device_typeStartsOn)
Device_type.postUpdate(deviceType)
var int device_kStartsOn = ArduinoUpdate.indexOf("device_key") + "device_key".length+1
var String deviceKey = ArduinoUpdate.mid(device_kStartsOn,ArduinoUpdate.indexOf(',')-device_kStartsOn)
Device_Key.postUpdate(deviceKey)
var int node_noStartsOn = ArduinoUpdate.indexOf("node_no") + "node_no".length+1
var String nodeno = ArduinoUpdate.mid(node_noStartsOn,ArduinoUpdate.indexOf(',')-node_noStartsOn)
Node_Num.postUpdate(nodeno)
var int NameStartsOn = ArduinoUpdate.indexOf("Name") + "Name".length+1
var String name = ArduinoUpdate.mid(NameStartsOn,ArduinoUpdate.indexOf(',')-NameStartsOn)
Name.postUpdate(name)
var int TempStartsOn = ArduinoUpdate.indexOf("TEMP") + "TEMP".length+1
var String temp = ArduinoUpdate.mid(TempStartsOn,ArduinoUpdate.indexOf(',')-TempStartsOn)
Sensor_Temperature.postUpdate(temp)
var int humiditytStartsOn = ArduinoUpdate.indexOf("HUM") + "HUM".length+1
var String humidity = ArduinoUpdate.mid(humiditytStartsOn, ArduinoUpdate.indexOf(',')-humiditytStartsOn)
Sensor_Humidity.postUpdate(humidity)
var int LDRStartsOn = ArduinoUpdate.indexOf("LDR") + "LDR".length+1
var String LDR = ArduinoUpdate.mid(LDRStartsOn, ArduinoUpdate.indexOf(',')-LDRStartsOn)
Sensor_LDR.postUpdate(LDR)
var int powerStartsOn = ArduinoUpdate.indexOf("POWER") + "POWER".length+1
var String power = ArduinoUpdate.mid(powerStartsOn, ArduinoUpdate.indexOf(',')-powerStartsOn)
Sensor_Power.postUpdate(power)
var int doorStartsOn = ArduinoUpdate.indexOf("DOOR") + "DOOR".length+1
var String door = ArduinoUpdate.mid(doorStartsOn, ArduinoUpdate.indexOf(',')-doorStartsOn)
Sensor_Door.postUpdate(door)
var int PirStartsOn = ArduinoUpdate.indexOf("PIR") + "PIR".length +1
var String pir = ArduinoUpdate.mid(PirStartsOn, ArduinoUpdate.indexOf(',')-PirStartsOn)
Sensor_Proximity.postUpdate(pir)
end
PLEASE SUGGEST EDITS IN THE FOLLOWING RULE!
THANK YOU