예제 #1
0
        public List <Models.Telemetry> GetTelemetry(Guid id, Guid organization)
        {
            List <Models.Telemetry> telemetryList = null;

            try
            {
                //SQL Statement
                var sqlString = "SELECT * FROM telemetry WHERE id = @id AND organization = @organization";

                using (var connection = new NpgsqlConnection(connectionString))
                {
                    connection.Open();

                    using (var command = new NpgsqlCommand(sqlString, connection))
                    {
                        command.Parameters.AddWithValue("@id", NpgsqlTypes.NpgsqlDbType.Uuid, id);
                        command.Parameters.AddWithValue("@organization", NpgsqlTypes.NpgsqlDbType.Uuid, organization);
                        command.Prepare();

                        using (var reader = command.ExecuteReader())
                        {
                            if (reader != null && reader.HasRows)
                            {
                                //Initialize Telemetry Object
                                Models.Telemetry telemetry = null;
                                //Create a List to hold multiple Telemetry Objects
                                telemetryList = new List <Models.Telemetry>();

                                while (reader.Read())
                                {
                                    //Create and hydrate a new Object
                                    telemetry = new Models.Telemetry();

                                    telemetry.Id               = Guid.Parse(reader["id"].ToString());
                                    telemetry.DigitalTwin      = Guid.Parse(reader["digital_twin"].ToString());
                                    telemetry.DigitalTwinData  = Convert.ToString(reader["digital_twin_data"]).Trim();
                                    telemetry.DigitalTwinModel = Guid.Parse(reader["digital_twin_model"].ToString());
                                    telemetry.Created          = Convert.ToDateTime(reader["created"]);

                                    //Add to List
                                    telemetryList.Add(telemetry);
                                }
                            }
                        }
                    }
                }
                return(telemetryList);
            }
            catch (Exception ex)
            {
                //Log Exception
                _logger.LogError(ex, "error retrieving telemetry");
                return(telemetryList);
            }
        }
예제 #2
0
        public async Task Post(string deviceId, [FromBody] Models.Telemetry telemetry)
        {
            IDeviceActor actor = GetActor(deviceId);

            var deviceTelemetry = new DeviceActor.Interfaces.Telemetry()
            {
                Humidity    = telemetry.Humidity,
                Temperature = telemetry.Temperature,
                Timestamp   = telemetry.Timestamp
            };

            await actor.SaveTelemetry(deviceTelemetry);
        }
예제 #3
0
        private async Task <dynamic> SubmitTelemetryAsyncTask(Models.Telemetry telemetry)
        {
            if (functionUrl == string.Empty)
            {
                throw new Exception("URL must be updated in Repositories/Telemetry/AzureFunctionTelemetryRepositoryKey.cs");
            }

            Log("Serialising payload to JSON");
            var json = JsonConvert.SerializeObject(telemetry);

            Log("Sending payload to Azure Function");
            var result = await HttpPost(functionUrl, json);

            Log("Deserialising response");
            var resp = JsonConvert.DeserializeObject(result);

            return(resp);
        }
예제 #4
0
 public IAsyncOperation <dynamic> SubmitTelemetryAsync(Models.Telemetry telemetry) => SubmitTelemetryAsyncTask(telemetry).AsAsyncOperation();