Beispiel #1
0
        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);
            }
        }
Beispiel #3
0
 public static void Start()
 {
     Accelerometer = new SimulatedSensor <MotionVector>();
     Gyroscope     = new SimulatedSensor <MotionVector>();
     Compass       = new SimulatedSensor <double>();
 }