示例#1
0
        public Task ProcessEventsAsync(PartitionContext context, IEnumerable <EventData> messages)
        {
            foreach (var eventData in messages)
            {
                try
                {
                    var data = Encoding.UTF8.GetString(eventData.Body.Array, eventData.Body.Offset, eventData.Body.Count);

                    var jsonArrayMessage = JArray.Parse(data);
                    foreach (var obj in jsonArrayMessage.Children <JObject>())
                    {
                        string deviceId = string.Empty;
                        deviceId = obj.Property("deviceId").Value.Value <string>();
                        Guid deviceIdGuid = Guid.Parse(deviceId);

                        int temperature = obj.Property("temperature").Value.Value <int>();

                        IDeviceDigiTwin deviceActor = ActorProxy.Create <IDeviceDigiTwin>(new ActorId(Convert.ToString(deviceId)), new Uri("fabric:/DigitalTwinApp/DeviceDigiTwinActorService"));
                        deviceActor.SetTemperatureAsync(temperature);
                    }

                    //eventData.Properties
                    Console.WriteLine($"Message received. Partition: '{context.PartitionId}', Data: '{data}'");
                }
                catch (Exception ex) { }
            }

            return(context.CheckpointAsync());
        }
示例#2
0
        public async Task <IActionResult> GetDeviceTemperature(Guid deviceId)
        {
            IDeviceDigiTwin deviceTwinActor = ActorProxy.Create <IDeviceDigiTwin>(new ActorId(Convert.ToString(deviceId)), new Uri("fabric:/DigitalTwinApp/DeviceDigiTwinActorService"));
            var             temperature     = await deviceTwinActor.GetTemperatureAsync();

            return(new ObjectResult(temperature));
        }
示例#3
0
        public async Task <IActionResult> CreateDeviceInstance(Guid deviceId, [FromBody] JObject deviceInstance)
        {
            IDeviceDigiTwin deviceTwinActor = ActorProxy.Create <IDeviceDigiTwin>(new ActorId(Convert.ToString(deviceId)), new Uri("fabric:/DigitalTwinApp/DeviceDigiTwinActorService"));
            await deviceTwinActor.UpdateDeviceInstanceAsync(Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(deviceInstance)));

            return(new ObjectResult(deviceId));
        }
示例#4
0
        public async Task <IActionResult> UpdateDeviceTemperature(Guid deviceId, [FromBody] JObject temperatureInput)
        {
            var             temppurature    = Int32.Parse(temperatureInput.Property("temperature").Value.Value <string>());
            IDeviceDigiTwin deviceTwinActor = ActorProxy.Create <IDeviceDigiTwin>(new ActorId(Convert.ToString(deviceId)), new Uri("fabric:/DigitalTwinApp/DeviceDigiTwinActorService"));
            await deviceTwinActor.SetTemperatureAsync(temppurature);

            return(new ObjectResult(String.Format("Temperature Updated for {0}", deviceId)));
        }