Beispiel #1
0
        private void ConnectToCam()
        {
            if (Servers.SelectedIndex < 0)
            {
                ShowSettingsPage();
                return;
            }

            Settings settings = Settings.LoadSettings(Servers.Items[Servers.SelectedIndex]);
            IWifi    wifi     = new Wifi();

            string server = wifi.GetSSID() == $"\"{settings.LocalSSID}\""
                ? settings.LocalServerName
                : settings.RemoteServerName;

            string html = "<html><head><style>" +
                          $"body{{Width:{CamWebView.Width - 16}px;Height:{CamWebView.Height - 16}px;}}" +
                          $".loader{{left:{CamWebView.Width/2 - 8};margin:{CamWebView.Height/2 - 46}px auto;position:fixed;}}" +
                          $"img{{width:{CamWebView.Width - 16};height:{CamWebView.Height - 16};position:fixed;}}" +
                          "</style><link rel=\"stylesheet\" type=\"text/css\" href=\"car-cam.css\" /></head><body>" +
                          "<div class=\"loader\">Loading...</div>" +
                          $"<img class=\"camview\" src=\"http://{server}:{settings.CameraPort}/?action=stream\" onerror=\"this.src = '';\" />" +
                          "</body></html>";

            Device.BeginInvokeOnMainThread(() => CamWebView.LoadContent(html, DependencyService.Get <IBaseUrl>().Get()));
        }
Beispiel #2
0
        private void ConnectToBroker()
        {
            if (Servers.SelectedIndex < 0)
            {
                ShowSettingsPage();
                return;
            }
            if (_clientConnected)
            {
                return;
            }

            Settings settings = Settings.LoadSettings(Servers.Items[Servers.SelectedIndex]);

            if (!settings.EnableControls)
            {
                return;
            }
            IWifi wifi = new Wifi();

            string server = wifi.GetSSID() == $"\"{settings.LocalSSID}\""
                ? settings.LocalServerName
                : settings.RemoteServerName;

            string connectionString = $"tcp://{server}:{settings.MqttPort}";

            Device.BeginInvokeOnMainThread(() =>
            {
                if (!string.IsNullOrEmpty(settings.Username))
                {
                    client = MqttClientFactory.CreateClient(connectionString, Guid.NewGuid().ToString(), settings.Username,
                                                            settings.Password);
                }
                else
                {
                    client = MqttClientFactory.CreateClient(connectionString, Guid.NewGuid().ToString());
                }

                client.Connected      += ClientConnected;
                client.ConnectionLost += ClientConnectionLost;
                client.PublishArrived += ClientPublishArrived;

                IDeviceInfo device = new DeviceInfo();
                string name        = device.GetName();

                try
                {
                    client.Connect("car/DISCONNECT", QoS.BestEfforts, new MqttPayload(name), false, true);
                }
                catch (Exception ex)
                {
                    Toaster(ex.Message, ToastPriority.Critical, ToastLength.Long);
                    _clientConnected = false;
                }
            });
        }