Example #1
0
        private async Task LoadRegisterdDevicesAsync()
        {
            IsLoading         = true;
            registeredDevices = (await metersDatabase.GetMetersAsync()).ToList();

            Devices.Clear();
            Devices = new ObservableCollection <MeteringDevice>(
                registeredDevices.Select(r => new MeteringDevice()
            {
                Id        = r.DeviceId,
                DisplayIp = r.DeviceIp,
                Ip        = r.DeviceIp,
                Status    = MeteringDeviceStatus.Registered
            }));
            IsLoading = false;

            await meteringStationDetector.StartDiscoveryAsync();
        }
Example #2
0
        public ConfigureMetersViewModel(IMeteringStationDetector meteringStationDetector,
                                        IMetersDatabase metersDatabase,
                                        IEventAggregator eventAggregator)
        {
            this.meteringStationDetector = meteringStationDetector;
            this.metersDatabase          = metersDatabase;

            registeredDevices = Enumerable.Empty <RegisteredMeter>().ToList();

            Refresh      = new Command(async() => await meteringStationDetector.StartDiscoveryAsync());
            Load         = new Command(() => Device.BeginInvokeOnMainThread(async() => await LoadRegisterdDevicesAsync()));
            AddDevice    = new Command <MeteringDevice>(async device => await UpsertDeviceAsync(device));
            RemoveDevice = new Command <MeteringDevice>(async device => await DeleteDeviceAsync(device));

            eventAggregator.Subscribe <DetectionStartedEvent>(_ => IsLoading  = true);
            eventAggregator.Subscribe <DetectionFinishedEvent>(_ => IsLoading = false);
            eventAggregator.Subscribe <DeviceDetectedEvent>(e => HandleDevice(e));
        }
 private async Task StartMeteringStationsDetection()
 {
     await meteringStationDetector.StartDiscoveryAsync();
 }