public void UpdateTwinPropertiesDirect(TwinPropertyRequest twinPropertyRequest) { // Update Twin Properties using a Direct Method var method = new CloudToDeviceMethod(twinPropertyRequest.Name) { ResponseTimeout = TimeSpan.FromSeconds(30) }; // see if this command has any desired properties if (twinPropertyRequest.Properties.Count > 0) { var json = "{"; for (var i = 0; i < twinPropertyRequest.Properties.Count; i++) { json += twinPropertyRequest.Properties[i].Key + $":'{twinPropertyRequest.Properties[i].Val}'"; if (i < (twinPropertyRequest.Properties.Count - 1)) { json += ","; } } json += "}"; method.SetPayloadJson(json); } try { AsyncHelper.RunSync <CloudToDeviceMethodResult>(() => _serviceClient.InvokeDeviceMethodAsync(twinPropertyRequest.DeviceId, method)); } catch (Exception err) { throw new Exception(Errors.ERR_DEVICE_BAGREQUEST, err); } }
public void UpdateTwinTags(TwinPropertyRequest twinPropertyRequest) { // Update Twin Tags try { var twin = AsyncHelper.RunSync <Twin>(() => _registryManager.GetTwinAsync(twinPropertyRequest.DeviceId)); var json = "{ tags : {" + $"{twinPropertyRequest.Name}" + ": {"; for (var i = 0; i < twinPropertyRequest.Properties.Count; i++) { json += twinPropertyRequest.Properties[i].Key + $":'{twinPropertyRequest.Properties[i].Val}'"; if (i < (twinPropertyRequest.Properties.Count - 1)) { json += ","; } } json += "}}}"; AsyncHelper.RunSync <Twin>(() => _registryManager.UpdateTwinAsync(twinPropertyRequest.DeviceId, json, twin.ETag)); } catch (Exception err) { throw new Exception(Errors.ERR_DEVICE_BAGREQUEST, err); } }
public Manifest Create(Manifest manifest) { try { if (manifest.IsValid()) { // Provision the device in IoT Hub var device = AsyncHelper.RunSync <Microsoft.Azure.Devices.Device>( () => _registryManager.AddDeviceAsync( new Microsoft.Azure.Devices.Device(manifest.SerialNumber))); var tags = new TwinPropertyRequest { DeviceId = device.Id, Name = "manufacturer", Properties = { ["manufacturer"] = manifest.Manufacturer, ["model"] = manifest.ModelNumber } }; UpdateTwinTags(tags); var desiredProps = new TwinPropertyRequest { DeviceId = device.Id, Name = "cadenceConfig", Properties = { ["heartbeat"] = manifest.Extensions["heartbeat"], ["telemetry"] = manifest.Extensions["telemetry"] } }; UpdateTwinProperties(desiredProps); // Update the manifest and store in DocDb manifest.Modified = DateTime.UtcNow; manifest.Key.PrimaryKey = device.Authentication.SymmetricKey.PrimaryKey; manifest.Key.SecondaryKey = device.Authentication.SymmetricKey.SecondaryKey; manifest.Hub = _iothubhostname; _dbase.Insert(manifest); } else { throw new Exception(Errors.ERR_DEVICE_MODEL_NOT_VALID); } } catch (Exception err) { throw new Exception(Errors.ERR_DEVICE_BAGREQUEST, err); } return(manifest); }
public void UpdateTwinProperties([FromBody] TwinPropertyRequest twinPropertyRequest) { _deviceService.UpdateTwinProperties(twinPropertyRequest); }