Skip to content

Instantly share code, notes, and snippets.

@Sealjay
Last active May 7, 2021 16:25
Show Gist options
  • Save Sealjay/cf01a071de6117a614b785a8593aaea7 to your computer and use it in GitHub Desktop.
Save Sealjay/cf01a071de6117a614b785a8593aaea7 to your computer and use it in GitHub Desktop.
kaiterra-data-model

Telemetry

    public class KaiterraTelemetry
    {
        public string Param {get;set;}
        public string Units{get;set;}
        public int Span {get;set;}

        public KaiterraTelemetryPoint[] Points {get;set;}
    }

Telemetry Point

    public class KaiterraTelemetryPoint {
        public DateTime ts { get; set; }
        public float value {get;set;}
    }

Response

    public class KaiterraResponse
    {
        public KaiterraTelemetry[] Data {get;set;}
    }

Data Query

using System;
using Microsoft.Extensions.Configuration;
using System.Threading.Tasks;
using System.Net.Http;
using System.Text.Json;

    public class KaiterraService
    {

        public HttpClient Client { get; }

        private string _uuid { get; }
        private string _apikey { get; }

        public KaiterraService(HttpClient client, IConfiguration configuration)
        {
            _uuid = configuration["Kaiterra:UUID"];
            _apikey = configuration["Kaiterra:ApiKey"];
            client.BaseAddress = new Uri("https://api.kaiterra.com/");

            Client = client;
        }
        public async Task<KaiterraResponse> GetTelemetry()
        {
            var response = await Client.GetAsync(
                "/v1/devices/" + _uuid + "/top?key=" + _apikey
                );

            response.EnsureSuccessStatusCode();

            using var responseStream = await response.Content.ReadAsStreamAsync();

            var deserializeOptions = new JsonSerializerOptions
            {
                PropertyNamingPolicy = JsonNamingPolicy.CamelCase
            };

            return await JsonSerializer.DeserializeAsync
                <KaiterraResponse>(responseStream, deserializeOptions);
        }
    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment