private async Task<SshCommand> ExecuteCommandAsync(string command)
 {
     if (status.SelectedNAO == null)
     {
         LogError("No address selected for NAO");
     }
     else
     {
         NAORemote.NAORemote remote = new NAORemote.NAORemote(status.SelectedNAO.IP, "nao", "nao", "/home/nao");
         remote.Error += remote_Error;
         bool connected = await remote.ConnectAsync();
         if (connected)
         {
             var remoteCommand = await remote.ExecuteCommandAsync(command);
             remote.Disconnect();
             return remoteCommand;
         }
     }
     return null;
 }
        public async void Start()
        {
            
            status.IsSearchingForNAO = true;
            while (status.IsSearchingForNAO)
            {
                await naoDiscoverer.DiscoverNAO();
                if (naoDiscoverer.NAOs.Count > 0)
                {
                    naoRemote = new NAORemote.NAORemote(naoDiscoverer.NAOs[0].IP, "nao", "nao");
                    naoRemote.Connect();
                    status.IsSearchingForNAO = false;
                    status.DiscoveredNAOs = new ObservableCollection<NAOHost>(naoDiscoverer.NAOs);
                    status.SelectedNAO = naoDiscoverer.NAOs[0];
                }
            }
            string character = Environment.GetCommandLineArgs().Length > 1 ? Environment.GetCommandLineArgs()[1] : "";
            naoThalamusClient = await ConnectThalamusAsync(character, status.SelectedNAO.IP);

            CheckPythonInstalledAsync();
            CheckBehavioursInstalledAsync();

            await shellControl.Connect(status.SelectedNAO.IP, "nao", "nao");
            
            if (!await CheckIsPythonRunning())
            {
                RunPythonAsync();
                PythonChecker();
                NaoQiChecker();
            }
            else
            {
                LogError("Python already running. You have to manually stop it and run again this application");
            }
        }