Error executing the transformation 'JSONPATH': An error occured while transforming JSON expression

JsonPath in OH 1.x was easier in this regard but incorrect.

So that means there is no way to strip [ ] easily and get a Number?

java.lang.String.substring should work.

Could you help with:

var Number battery_soc = new Integer(transform("JSONPATH", "$.devstatus.ports[?(@.Port==10)].SOC", json))

Once I get that to work I should be able to fix all the others.

Maybe

var String result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==10)].SOC", json)
var Number battery_soc = new Integer(result.substring(1,result.indexOf(']')))
1 Like

You rock my world.

Is there a way I can use a var such as “result” more then once? Or do I need to have a different var name for every single transform?

That works for battery_soc, but not battery_voltage [52.5] as an example.

var String json = Outback_Dev_status.state.toString
  logInfo("Testing", "JSON - JSONPATH 1")
var String battery_string_result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==10)].SOC", json)
var Number battery_soc = new Integer(battery_string_result.substring(1,battery_string_result.indexOf(']')))
  logInfo("Testing", "JSON - JSONPATH 2 " + battery_soc)
var String battery_voltage_result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==10)].Batt_V", json)
var Number battery_voltage = new Integer(battery_voltage_result.substring(1,battery_voltage_result.indexOf(']')))
  logInfo("Testing", "JSON - JSONPATH 3 " + battery_voltage)
var String battery_temp_result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==10)].Batt_temp", json)
var Number battery_temp = new Integer(battery_temp_result.substring(1,battey_temp_result.indexOf(']')))
  logInfo("Testing", "JSON - JSONPATH 4 " + battery_temp)

“52.5” can’t be used to make an Integer. Maybe new Double instead for any possible non-integer (whole number)?

Sorry that was a lame copy mistake. :frowning:

Now I am getting stuck on battery_temp transformation resulted in ‘[“22 C”]’ I strip the ] the way you suggested and getting the value of 22 number the old OH1 way, but that is not working (or causing an error).

var String json = Outback_Dev_status.state.toString
  logInfo("Testing", "JSON - JSONPATH 1")
var String battery_string_result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==10)].SOC", json)
var Number battery_soc = new Integer(battery_string_result.substring(1,battery_string_result.indexOf(']')))
  logInfo("Testing", "JSON - JSONPATH 2 " + battery_soc)
var String battery_voltage_result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==10)].Batt_V", json)
var Number battery_voltage = new Double(battery_voltage_result.substring(1,battery_voltage_result.indexOf(']')))
  logInfo("Testing", "JSON - JSONPATH 3 " + battery_voltage)
var String battery_temp_result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==10)].Batt_temp", json)
var String battery_temp_string = new String(battery_temp_result.substring(1,battery_temp_result.indexOf(']')))
  logInfo("Testing", "JSON - JSONPATH 4 " + battery_temp_string)
var Number battery_temp = new Integer(battery_temp_string.split(" ").get(0))
  logInfo("Testing", "JSON - JSONPATH 4.5 " + battery_temp)
var String shunt_a_amps_result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==10)].Shunt_A_I", json)
var Number shunt_a_amps = new Double(shunt_a_amps_result.substring(1,shunt_a_amps_result.indexOf(']')))
  logInfo("Testing", "JSON - JSONPATH 5 " + shunt_a_amps)

And the logs:

2017-01-16 12:21:35.227 [DEBUG] [ternal.JSonPathTransformationService] - about to transform '{"devstatus": {^M
"Sys_Time": 1484569356,^M
"Sys_Batt_V": 52.4,^M
"ports": [^M
{ "Port": 1, "Dev": "GS","Type": "60Hz","Inv_I_L1": 4,"Chg_I_L1": 0,"Buy_I_L1": 2,"Sell_I_L1": 0,"VAC1_in_L1": 120,"VAC2_in_L1": 0,"VAC_out_L1": 120,"Inv_I_L2": 4,"Chg_I_L2": 0,"Buy_I_L2": 3,"Sell_I_L2": 0,"VAC1_in_L2": 120,"VAC2_in_L2": 0,"VAC_out_L2": 120,"AC_Input": "Grid","Batt_V": 52.0,"AC_mode": "AC USE","INV_mode": "Offsetting","Warn": ["none"],"Error": ["none"],"AUX": "disabled","RELAY": "disabled"},^M
{ "Port": 2, "Dev": "GS","Type": "60Hz","Inv_I_L1": 0,"Chg_I_L1": 0,"Buy_I_L1": 4,"Sell_I_L1": 0,"VAC1_in_L1": 121,"VAC2_in_L1": 0,"VAC_out_L1": 121,"Inv_I_L2": 0,"Chg_I_L2": 0,"Buy_I_L2": 5,"Sell_I_L2": 0,"VAC1_in_L2": 120,"VAC2_in_L2": 0,"VAC_out_L2": 120,"AC_Input": "Grid","Batt_V": 51.6,"AC_mode": "AC DROP","INV_mode": "Off","Warn": ["none"],"Error": ["none"],"AUX": "disabled","RELAY": "disabled"},^M
{ "Port": 3, "Dev": "GS","Type": "60Hz","Inv_I_L1": 0,"Chg_I_L1": 0,"Buy_I_L1": 5,"Sell_I_L1": 0,"VAC1_in_L1": 124,"VAC2_in_L1": 0,"VAC_out_L1": 123,"Inv_I_L2": 0,"Chg_I_L2": 0,"Buy_I_L2": 5,"Sell_I_L2": 0,"VAC1_in_L2": 124,"VAC2_in_L2": 0,"VAC_out_L2": 123,"AC_Input": "Grid","Batt_V": 52.0,"AC_mode": "AC DROP","INV_mode": "Off","Warn": ["none"],"Error": ["none"],"AUX": "disabled","RELAY": "disabled"},^M
{ "Port": 5, "Dev": "CC","Type": "FM80","Out_I": 5.8,"In_I": 2,"Batt_V": 52.7,"In_V": 106.3,"Out_kWh": 1.3,"Out_AH": 24,"CC_mode": "Bulk  ","Error": ["none"],"Aux_mode": "Manual","AUX": "disabled"},^M
{ "Port": 6, "Dev": "CC","Type": "FM80","Out_I": 5.7,"In_I": 2,"Batt_V": 52.8,"In_V": 109.6,"Out_kWh": 1.2,"Out_AH": 24,"CC_mode": "Bulk  ","Error": ["none"],"Aux_mode": "Manual","AUX": "disabled"},^M
{ "Port": 7, "Dev": "CC","Type": "FM80","Out_I": 5.4,"In_I": 2,"Batt_V": 52.8,"In_V": 106.0,"Out_kWh": 1.2,"Out_AH": 22,"CC_mode": "Bulk  ","Error": ["none"],"Aux_mode": "Manual","AUX": "disabled"},^M
{ "Port": 8, "Dev": "CC","Type": "FM60/80","Out_I": 4.4,"In_I": 2,"Batt_V": 52.6,"In_V": 106.5,"Out_kWh": 0.9,"Out_AH": 17,"CC_mode": "Bulk  ","Error": ["none"],"Aux_mode": "Manual","AUX": "disabled"},^M
{ "Port": 10, "Dev": "FNDC","Enabled": ["A","B"],"Shunt_A_I":  -24.7,"Shunt_A_AH": -63,"Shunt_A_kWh":  -3.260,"Shunt_B_I":  21.7,"Shunt_B_AH": 62,"Shunt_B_kWh":  3.310,"SOC": 99,"Min_SOC": 99,"Days_since_full": 0.1,"CHG_parms_met": false,"In_AH_today": 101,"Out_AH_today": 86,"In_kWh_today":  5.460,"Out_kWh_today":  4.470,"Net_CFC_AH": -4,"Net_CFC_kWh": -0.150,"Batt_V": 52.4,"Batt_temp": "22 C","Aux_mode": "auto","AUX": "disabled"}^M
]}}' by the function '$.devstatus.ports[?(@.Port==10)].Batt_temp'
2017-01-16 12:21:35.227 [DEBUG] [ternal.JSonPathTransformationService] - transformation resulted in '["22 C"]'
2017-01-16 12:21:35.227 [INFO ] [lipse.smarthome.model.script.Testing] - JSON - JSONPATH 4 "22 C"
2017-01-16 12:21:35.228 [INFO ] [lipse.smarthome.model.script.Testing] - JSON - Ready to Unlock
2017-01-16 12:21:35.228 [INFO ] [lipse.smarthome.model.script.Testing] - JSON - JSONPATH 1

.indexOf(' ') instead of .indexOf(']') for that one I guess.

A more general solution for all of these would be .replaceAll("[^\\d.-]", "") instead of .subString(...), meaning, any non digit, decimal or minus sign? Throw it away.

You can reuse vars.

var String result = transform(“JSONPATH”, “$.devstatus.ports[?(@.Port==1)].VAC_out_L1”, json)
var Number a_l1_voltage = new Integer(result.substring(1,result.indexOf(’]’)))
var String result = transform(“JSONPATH”, “$.devstatus.ports[?(@.Port==1)].Buy_I_L1”, json)
var Number a_l1_buy_amps = new Integer(result.substring(1,result.indexOf(’]’)))

openhab.log:2017-01-17 17:58:10.236 [ERROR] [.script.engine.ScriptExecutionThread] - Rule 'Outback JSON parsing': An error occured during the script execution: Cannot create a duplicate value 'result'.

Oops.

You don’t use the var String part after the first use.

var String result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==1)].VAC_out_L1", json)
var Number a_l1_voltage = new Integer(result.substring(1,result.indexOf(']')))
result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==1)].Buy_I_L1", json)
var Number a_l1_buy_amps = new Integer(result.substring(1,result.indexOf(']')))

Can you explain more how OH 1.x was incorrect? I am running into more JSONPATH errors even with expressions that don’t have [0] such as:

val Number current_tank = new Double(transform("JSONPATH", "$device.lastReading.tank", json))

and:

var Number pm2 = new Integer(transform("JSONPATH", "$current.p2", json))

Is there anywhere documented that shows how to convert from OH1.x to OH2.x JSONPATH?

I think you need $.device... and $.current... (note the . after the $)

This has been working fine all the way to openHAB 2.3.

You rock my world, this fixed my issues with openHAB 2.3.

Can you post you rule that work now, please?
I am interested, this will come up again for someone else

Sure;

rule "Outback JSON parsing"
when
        Item Outback_Dev_status changed
then  
  //logInfo("LOCK", "Outback JSON - Locking")
  lock.lock()
  try {
    var String json = Outback_Dev_status.state.toString
    var String result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==10)].SOC", json)
    var Number battery_soc = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==10)].Batt_V", json)
    var Number battery_voltage = new Double(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==10)].Batt_temp", json)
    var Number battery_temp = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==10)].Shunt_A_I", json)
    var Number shunt_a_amps = new Double(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==10)].Shunt_B_I", json)
    var Number shunt_b_amps = new Double(result.replaceAll("[^\\d.-]", ""))
    var Number shunt_total_amps = shunt_a_amps + shunt_b_amps
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==10)].In_kWh_today", json)
    var Number today_in_kwh = new Double(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==10)].Out_kWh_today", json)
    var Number today_out_kwh = new Double(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==5)].Out_I", json)
    var Number charge_a_amps = new Double(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==6)].Out_I", json)
    var Number charge_b_amps = new Double(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==7)].Out_I", json)
    var Number charge_c_amps = new Double(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==8)].Out_I", json)
    var Number charge_d_amps = new Double(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==5)].Out_kWh", json)
    var Number charge_a_kwh = new Double(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==6)].Out_kWh", json)
    var Number charge_b_kwh = new Double(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==7)].Out_kWh", json)
    var Number charge_c_kwh = new Double(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==8)].Out_kWh", json)
    var Number charge_d_kwh = new Double(result.replaceAll("[^\\d.-]", ""))
    var Number charge_a_watts = charge_a_amps * battery_voltage
    var Number charge_b_watts = charge_b_amps * battery_voltage
    var Number charge_c_watts = charge_c_amps * battery_voltage
    var Number charge_d_watts = charge_d_amps * battery_voltage
    var Number total_watts = charge_a_watts + charge_b_watts + charge_c_watts + charge_d_watts
    var Number today_solar_kwh = charge_a_kwh + charge_b_kwh + charge_c_kwh + charge_d_kwh
    postUpdate(Battery_Charge, battery_soc)
    postUpdate(Battery_Voltage, battery_voltage)
    postUpdate(Battery_Temp, battery_temp * 1.8 + 32)
    postUpdate(Solar_Charge_A_Watts, charge_a_watts)
    postUpdate(Solar_Charge_B_Watts, charge_b_watts)
    postUpdate(Solar_Charge_C_Watts, charge_c_watts)
    postUpdate(Solar_Charge_D_Watts, charge_d_watts)
    postUpdate(Solar_Total_Watts, total_watts)
    postUpdate(Shunt_A_Amps, shunt_a_amps)
    postUpdate(Shunt_B_Amps, shunt_b_amps)
    postUpdate(Shunt_Total_Amps, shunt_total_amps)
    postUpdate(Today_In_kWh, today_in_kwh)
    postUpdate(Today_Out_kWh, today_out_kwh)
    postUpdate(Today_Solar_kWh, today_solar_kwh)

    // Low Battery voltage generator start
    if (battery_voltage <= 43) {
      sendCommand(Battery_Low, ON)
      if (Generator_Auto.state == OFF && Generator_Failed.state == OFF) {
        sendMail("8323303810@mms.att.net", "Battery", "Battery voltage at " + battery_voltage + " volts!!!," + " load at " +  Inverter_Total_Watts.state + " watts")
          sendCommand(Generator_Auto, ON)
          Thread::sleep(45000) // Let Generator spool up
      }
    }

    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==1)].VAC_out_L1", json)
    var Number a_l1_voltage = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==1)].Buy_I_L1", json)
    var Number a_l1_buy_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==1)].Sell_I_L1", json)
    var Number a_l1_sell_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==1)].Inv_I_L1", json)
    var Number a_l1_inv_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==1)].VAC_out_L2", json)
    var Number a_l2_voltage = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==1)].Buy_I_L2", json)
    var Number a_l2_buy_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==1)].Sell_I_L2", json)
    var Number a_l2_sell_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==1)].Inv_I_L2", json)
    var Number a_l2_inv_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==1)].AC_mode", json)
    var String a_ac_mode = new String(result.replaceAll("[^a-zA-Z ]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==1)].INV_mode", json)
    var String a_inverter_mode = new String(result.replaceAll("[^a-zA-Z ]", ""))
    var Number a_l1_buy_watts = a_l1_voltage * a_l1_buy_amps
    var Number a_l2_buy_watts = a_l1_voltage * a_l2_buy_amps
    var Number buy_a_watts = a_l1_buy_watts + a_l2_buy_watts
    var Number a_l1_sell_watts = a_l1_voltage * a_l1_sell_amps
    var Number a_l2_sell_watts = a_l1_voltage * a_l2_sell_amps
    var Number sell_a_watts = a_l1_sell_watts + a_l2_sell_watts
    var Number a_l1_watts = a_l1_voltage * a_l1_inv_amps
    var Number a_l2_watts = a_l2_voltage * a_l2_inv_amps
    var Number inverter_a_watts = a_l1_watts + a_l2_watts

    postUpdate(Buy_A_Watts, buy_a_watts)
    postUpdate(Sell_A_Watts, sell_a_watts)
    postUpdate(Inverter_A_Watts, inverter_a_watts)
    postUpdate(AC_Mode_A, a_ac_mode)
    postUpdate(Inverter_Mode_A, a_inverter_mode)

    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==2)].VAC_out_L1", json)
    var Number b_l1_voltage = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==2)].Buy_I_L1", json)
    var Number b_l1_buy_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==2)].Sell_I_L1", json)
    var Number b_l1_sell_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==2)].Inv_I_L1", json)
    var Number b_l1_inv_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==2)].VAC_out_L2", json)
    var Number b_l2_voltage = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==2)].Buy_I_L2", json)
    var Number b_l2_buy_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==2)].Sell_I_L2", json)
    var Number b_l2_sell_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==2)].Inv_I_L2", json)
    var Number b_l2_inv_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==2)].AC_mode", json)
    var String b_ac_mode = new String(result.replaceAll("[^a-zA-Z ]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==2)].INV_mode", json)
    var String b_inverter_mode = new String(result.replaceAll("[^a-zA-Z ]", ""))
    var Number b_l1_buy_watts = b_l1_voltage * b_l1_buy_amps
    var Number b_l2_buy_watts = b_l1_voltage * b_l2_buy_amps
    var Number buy_b_watts = b_l1_buy_watts + b_l2_buy_watts
    var Number b_l1_sell_watts = b_l1_voltage * b_l1_sell_amps
    var Number b_l2_sell_watts = b_l1_voltage * b_l2_sell_amps
    var Number sell_b_watts = b_l1_sell_watts + b_l2_sell_watts
    var Number b_l1_watts = b_l1_voltage * b_l1_inv_amps
    var Number b_l2_watts = b_l2_voltage * b_l2_inv_amps
    var Number inverter_b_watts = b_l1_watts + b_l2_watts

    postUpdate(Buy_B_Watts, buy_b_watts)
    postUpdate(Sell_B_Watts, sell_b_watts)
    postUpdate(Inverter_B_Watts, inverter_b_watts)
    postUpdate(AC_Mode_B, b_ac_mode)
    postUpdate(Inverter_Mode_B, b_inverter_mode)

    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==3)].VAC_out_L1", json)
    var Number c_l1_voltage = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==3)].Buy_I_L1", json)
    var Number c_l1_buy_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==3)].Sell_I_L1", json)
    var Number c_l1_sell_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==3)].Inv_I_L1", json)
    var Number c_l1_inv_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==3)].VAC_out_L2", json)
    var Number c_l2_voltage = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==3)].Buy_I_L2", json)
    var Number c_l2_buy_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==3)].Sell_I_L2", json)
    var Number c_l2_sell_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==3)].Inv_I_L2", json)
    var Number c_l2_inv_amps = new Integer(result.replaceAll("[^\\d.-]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==3)].AC_mode", json)
    var String c_ac_mode = new String(result.replaceAll("[^a-zA-Z ]", ""))
    result = transform("JSONPATH", "$.devstatus.ports[?(@.Port==3)].INV_mode", json)
    var String c_inverter_mode = new String(result.replaceAll("[^a-zA-Z ]", ""))
    var Number c_l1_buy_watts = c_l1_voltage * c_l1_buy_amps
    var Number c_l2_buy_watts = c_l1_voltage * c_l2_buy_amps
    var Number buy_c_watts = c_l1_buy_watts + c_l2_buy_watts
    var Number c_l1_sell_watts = c_l1_voltage * c_l1_sell_amps
    var Number c_l2_sell_watts = c_l1_voltage * c_l2_sell_amps
    var Number sell_c_watts = c_l1_sell_watts + c_l2_sell_watts
    var Number c_l1_watts = c_l1_voltage * c_l1_inv_amps
    var Number c_l2_watts = c_l2_voltage * c_l2_inv_amps
    var Number inverter_c_watts = c_l1_watts + c_l2_watts

    postUpdate(Buy_C_Watts, buy_c_watts)
    postUpdate(Sell_C_Watts, sell_c_watts)
    postUpdate(Inverter_C_Watts, inverter_c_watts)
    postUpdate(AC_Mode_C, c_ac_mode)
    postUpdate(Inverter_Mode_C, c_inverter_mode)
  
    var Number buy_total = buy_a_watts + buy_b_watts + buy_c_watts
    postUpdate(Buy_Total_Watts, buy_total)
    var Number sell_total = sell_a_watts + sell_b_watts + sell_c_watts
    postUpdate(Sell_Total_Watts, sell_total)
    var Number inverter_total = inverter_a_watts + inverter_b_watts + inverter_c_watts
    postUpdate(Inverter_Total_Watts, inverter_total)

    // LIFX Power Monitor
    var solar_color = (total_watts / 45) + 100
    sendCommand(Solar_Color, solar_color+",100,15")
  }
  catch(Throwable t) {
    logError("Error", "Some bad stuff happened in my outback rule: " + t.toString)
  }
  finally {
    lock.unlock()
    //logInfo("LOCK", "Outback JSON - Unlocked")
  }
end
1 Like