public static async Task ToggleApplianceState(int applianceID) { var appl = await _database.CallSPReaderAsync("Appliances", "Appliances_GetAppliance", new SqlParameter("@ApplianceID", SqlDbType.Int) { Value = applianceID }); if (appl == null) { return; } switch (Convert.ToInt32(appl.Rows[0][5])) { case 1: if (_microcontroller.States[0]) { _microcontroller.SendCommand(Microcontroller.Command.TurnOffSocketA); _microcontroller.States[0] = false; await Log("SWITCH", string.Format("{0} at {1} has been turned {2}.", appl.Rows[0][1].ToString().Trim(), appl.Rows[0][2].ToString().Trim(), "Off")); } else { _microcontroller.SendCommand(Microcontroller.Command.TurnOnSocketA); _microcontroller.States[0] = true; await Log("SWITCH", string.Format("{0} at {1} has been turned {2}.", appl.Rows[0][1].ToString().Trim(), appl.Rows[0][2].ToString().Trim(), "On")); } break; case 2: if (_microcontroller.States[1]) { _microcontroller.SendCommand(Microcontroller.Command.TurnOffSocketB); _microcontroller.States[1] = false; await Log("SWITCH", string.Format("{0} at {1} has been turned {2}.", appl.Rows[0][1].ToString().Trim(), appl.Rows[0][2].ToString().Trim(), "Off")); } else { _microcontroller.SendCommand(Microcontroller.Command.TurnOnSocketB); _microcontroller.States[1] = true; await Log("SWITCH", string.Format("{0} at {1} has been turned {2}.", appl.Rows[0][1].ToString().Trim(), appl.Rows[0][2].ToString().Trim(), "On")); } break; default: break; } }