public async Task <ActionResult> AddSensor(SimulatedSensor item, string createButton) { if (createButton.Equals("Cancel")) { return(Redirect(CacheHelper.GetPreviousPage(_cache))); } if (item.HardwareId == null) { item.HardwareId = Guid.NewGuid().ToString(); } if (item.DataType == DataTypeEnum.Motion) { item.InitialValue = true.ToString(); } else if (item.InitialValue == null) { item.InitialValue = ((item.MaxValue - item.MinValue) / 2).ToString(); } var list = await CacheHelper.GetSimulatedSensorListFromCacheAsync(_cache); list.Add(item); await CacheHelper.AddSimulatedSensorListInCacheAsync(_cache, list); return(RedirectToAction(nameof(Index))); }
public static async Task SendEvent(DeviceClient deviceClient, SimulatedSensor sensor) { var serializer = new DataContractJsonSerializer(typeof(CustomTelemetryMessage)); var curIteration = 0; var getRandomSensorReading = CreateGetRandomSensorReading(sensor.DataType.ToString(), curIteration); var telemetryMessage = new CustomTelemetryMessage() { SensorValue = getRandomSensorReading(), }; using (var stream = new MemoryStream()) { serializer.WriteObject(stream, telemetryMessage); var byteArray = stream.ToArray(); Message eventMessage = new Message(byteArray); eventMessage.Properties.Add("DigitalTwins-Telemetry", "1.0"); eventMessage.Properties.Add("DigitalTwins-SensorHardwareId", $"{sensor.HardwareId}"); eventMessage.Properties.Add("CreationTimeUtc", DateTime.UtcNow.ToString("o")); eventMessage.Properties.Add("x-ms-client-request-id", Guid.NewGuid().ToString()); await FeedbackHelper.Channel.SendMessageAsync( $"\t{DateTime.UtcNow.ToLocalTime()}> Sending message: {Encoding.UTF8.GetString(eventMessage.GetBytes())} " + $"Properties: {{ {eventMessage.Properties.Aggregate(new StringBuilder(), (sb, x) => sb.Append($"'{x.Key}': '{x.Value}',"), sb => sb.ToString())} }}" , MessageType.Info); await deviceClient.SendEventAsync(eventMessage); } }
public static void Start() { Accelerometer = new SimulatedSensor <MotionVector>(); Gyroscope = new SimulatedSensor <MotionVector>(); Compass = new SimulatedSensor <double>(); }