private static async Task GetInitialDesiredConfiguration(DeviceClient deviceClient) { var twin = await deviceClient.GetTwinAsync(); _twinDesiredProperties = JsonConvert.DeserializeObject <DesiredDeviceTwinConfiguration>( twin.Properties.Desired["deviceTwinConfig"].ToString()); }
private static async Task OnDesiredPropertyChange(TwinCollection desiredproperties, object usercontext) { if (desiredproperties.Contains("deviceTwinConfig")) { Message message; var deviceTwinConfig = JsonConvert.DeserializeObject <DesiredDeviceTwinConfiguration>( desiredproperties["deviceTwinConfig"].ToString()); // ignore delay for now. Just want to see if it can be parsed. int delay; if (int.TryParse(deviceTwinConfig.MessageSendDelay, out delay)) { lock (Locker) { _twinDesiredProperties = deviceTwinConfig; _propertyChangeStatus = Status.Pending; } message = new Message( Encoding.ASCII.GetBytes( $"Device accepted messageSendDelay value: `{deviceTwinConfig.MessageSendDelay}`. Property change is pending call to 'acceptDesiredProperties'.") ); message.Properties.Add(MessageProperty.Type.ToString("G"), Type.ConfigChage.ToString("G")); message.Properties.Add(MessageProperty.Status.ToString("G"), Status.Pending.ToString("G")); message.Properties.Add(MessageProperty.Severity.ToString("G"), Severity.Critical.ToString("G")); } else { _propertyChangeStatus = Status.Rejected; ($"Device Twin Property `messageSendDelay` is set to an illegal value: `{deviceTwinConfig.MessageSendDelay}`, " + $"change status is 'rejected'. Sending Critical Notification.").LogMessage(ConsoleColor.Red); message = new Message( Encoding.ASCII.GetBytes( $"Parameter messageSendDelay value: `{deviceTwinConfig.MessageSendDelay}`, could not be converted to an Int.")); message.Properties.Add(MessageProperty.Type.ToString("G"), Type.ConfigChage.ToString("G")); message.Properties.Add(MessageProperty.Status.ToString("G"), Status.Rejected.ToString("G")); message.Properties.Add(MessageProperty.Severity.ToString("G"), Severity.Critical.ToString("G")); } await _deviceClient.SendEventAsync(message); } }