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()); }
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)); }
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)); }
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))); }