Beispiel #1
0
        public static async Task Process()
        {
            // 找出裝置的清單
            DevicesProcessor    devicesProcessor = new DevicesProcessor(strIoTHubConnectionString, intMaxCountOfDevices, "");
            List <DeviceEntity> devicesList      = await devicesProcessor.GetDevices();

            Console.WriteLine("All Devices Count:" + devicesList.Count.ToString());

            // 過濾出離線的裝置資料
            List <DeviceEntity> offlineDevices = devicesList
                                                 .Where(x => x.ConnectionState == "Disconnected" && x.State == "Enabled")
                                                 .ToList();

            Console.WriteLine("Offline Devices Count:" + offlineDevices.Count.ToString());

            // 取出離線的裝置客戶資料
            for (int i = 0; i < offlineDevices.Count; i++)
            {
                string   strDeviceId     = offlineDevices[i].Id;
                DateTime dtLastStateTime = offlineDevices[i].LastConnectionStateUpdatedTime;

                Console.WriteLine($"Device [{offlineDevices[i].Id}] is offline, Last updated time :[{dtLastStateTime.ToString()}]");

                /*
                 *  在這邊加入通知或是告警的機制,如透過SnedGrid寄發EMail通知
                 */
            }
        }
Beispiel #2
0
        public async Task GetDevices(string connectionString)
        {
            try
            {
                var devicesProcessor = new DevicesProcessor(connectionString, 1000, string.Empty);
                var devices          = await devicesProcessor.GetDevices();

                Devices.Clear();

                foreach (var device in devices)
                {
                    Devices.Add(device.Id, device);
                }
                cmbHubDevices.DataSource = Devices.Keys.ToList();
            }
            catch (Exception ex)
            {
                throw new ArgumentException("Invalid IoTHub connection string. " + ex.Message);
            }
        }
Beispiel #3
0
        public async Task Connect()
        {
            IsConnecting = true;
            Disconnect();

            try
            {
                _devicesProcessor = new DevicesProcessor(IoTHubConnectionString, 1000, string.Empty);

                await Task.WhenAll(LoadSensorsDataAsync(), LoadIoTDevicesAsync());

                IsConnected = true;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
                Disconnect();
            }
            finally
            {
                IsConnecting = false;
            }
        }
Beispiel #4
0
 public SampleDataController()
 {
     this.devicesProcessor = new DevicesProcessor(CONNECTION_STRING, MAX_COUNT_OF_DEVICES, string.Empty);
 }