//Request configuration from server
        public async static Task requestConfig()
        {
            HavissIoTCommandBuilder commandBuilder = new HavissIoTCommandBuilder();

            //Add user (and password) if available
            if (password.Length > 0 && username.Length > 0)
            {
                commandBuilder.addUser(username, password);
            }
            else if(username.Length > 0)
            {
                commandBuilder.addUser(username);
            }
            //Add request for server configuration
            commandBuilder.getConfig();
            if (SharedVariables.client.isConnected())
            {
                //Store response in string
                string response = await SharedVariables.client.request(commandBuilder.getJsonString());
                //Parses response to an jsonobject
                try
                {
                    JObject jsonObject = JObject.Parse(response);
                    brokerAddress = (string) jsonObject.GetValue("brokerAddress");
                    brokerPort = (int)jsonObject.GetValue("brokerPort");
                    mqttQOS = (int)jsonObject.GetValue("qos");
                }
                catch (Exception ex)
                {
                    //TODO Handle exception
                    Debug.WriteLine(ex.Message);
                }
            }
                        
        }
 public async Task refreshSensors()
 {
     if (SharedVariables.client.isConnected())
     {
         HavissIoTCommandBuilder commandBuilder = new HavissIoTCommandBuilder();
         if (Config.username.Length > 0)
         {
             if (Config.password.Length > 0)
             {
                 commandBuilder.addUser(Config.username, Config.password);
             }
             else
             {
                 commandBuilder.addUser(Config.username);
             }
         }
         commandBuilder.listSensors();
         String response = await SharedVariables.client.request(commandBuilder.getJsonString());
         JObject jsonObject = null;
         JArray jsonArray = null;
         try
         {
             jsonObject = JObject.Parse(response);
             jsonArray = jsonObject.GetValue("r") as JArray;
         }
         catch (Exception ex)
         {
             Debug.WriteLine(ex.Message);
             jsonObject = null;
             jsonArray = null;
         }
         if (jsonArray != null)
         {
             foreach (JObject s in jsonArray)
             {
                 try
                 {
                     string sensorName = (string)s.GetValue("name");
                     string sensorTopic = (string)s.GetValue("topic");
                     string sensorType = (string)s.GetValue("type");
                     bool toStore = (bool)s.GetValue("toStore");
                     IoTSensor sensor = new IoTSensor(sensorName, sensorTopic, sensorType, toStore);
                     SharedVariables.sensorHandler.addSensor(sensor);
                 }
                 catch (Exception ex)
                 {
                     Debug.WriteLine(ex.Message);
                 }
             }
         }
     }
 }
 private async void refreshUsers() {
     HavissIoTCommandBuilder commandBuilder =new HavissIoTCommandBuilder();
     commandBuilder.getUsers();
     if (Config.username.Length > 0)
     {
         if (Config.password.Length > 0)
         {
             commandBuilder.addUser(Config.username, Config.password);
         }
         else
         {
             commandBuilder.addUser(Config.username);
         }
     }
     string response = await SharedVariables.client.request(commandBuilder.getJsonString());
     JObject jsonObject = null;
     JArray jsonArray = null;
     try
     {
         jsonObject = JObject.Parse(response);
         jsonArray = (JArray)jsonObject.GetValue("r");
     }
     catch (Exception ex)
     {
         MessageDialog message = new MessageDialog(ex.Message, "Request parse error");
         return;
     }
     List<string> usernames = new List<string>();
     SharedVariables.userHandler.clearUsers();
     foreach (JObject j in jsonArray)
     {
         try
         {
             string username = (string)j.GetValue("name");
             bool OP = (bool)j.GetValue("isOP");
             bool isProtected = (bool)j.GetValue("isProtected");
             bool isPasswordProtected = (bool)j.GetValue("isPasswordProtected");
             User user = new User(username, OP, isProtected, isPasswordProtected);
             SharedVariables.userHandler.addUser(user);
             usernames.Add(username);
         }
         catch (Exception ex)
         {
             MessageDialog message = new MessageDialog(ex.Message, "Request parse error");
             return;
         }
     }
     available_users.ItemsSource = usernames;
 }
 //If exit button is pressed
 private void exit_button_Click(object sender, RoutedEventArgs e)
 {
     HavissIoTCommandBuilder commandBuilder = new HavissIoTCommandBuilder();
     if (Config.password.Length > 0)
     {
         commandBuilder.addUser(Config.username, Config.password);
     }
     else
     {
         commandBuilder.addUser(Config.username);
     }
     commandBuilder.serverExit();
     SharedVariables.client.write(commandBuilder.getJsonString());
 }