Example #1
0
        public async Task <List <NestThermostatMeasurementEvent> > Measure()
        {
            NestApiResponse response = await this.GetAllData();

            List <NestThermostatMeasurementEvent> events = new List <NestThermostatMeasurementEvent>();

            foreach (var thermostat in response.devices.thermostats.Values)
            {
                NestThermostatMeasurementEvent e = new NestThermostatMeasurementEvent
                {
                    MeasurementTime     = DateTime.UtcNow,
                    ThermostatId        = thermostat.device_id,
                    Name                = thermostat.name,
                    WhereId             = thermostat.where_id,
                    WhereName           = thermostat.where_name,
                    LastContactTime     = thermostat.last_connection,
                    Humidity            = thermostat.humidity,
                    TemperatureScale    = thermostat.temperature_scale,
                    TargetTemperatureF  = thermostat.target_temperature_f,
                    AmbientTemperatureF = thermostat.ambient_temperature_f,
                    HvacMode            = thermostat.hvac_mode,
                    HvacState           = thermostat.hvac_state,
                };

                events.Add(e);
            }

            return(events);
        }
Example #2
0
        public async Task Test()
        {
            if (this.NestClient != null)
            {
                StreamWriter file = new StreamWriter($"data.tab", true);
                file.WriteLine(string.Join("\t", NestThermostatMeasurementEvent.GetHeader()));

                while (true)
                {
                    try
                    {
                        Logger.WriteLine("querying thermostat");
                        List <NestThermostatMeasurementEvent> events = await this.NestClient.Measure();

                        foreach (var e in events)
                        {
                            file.WriteLine(string.Join("\t", e.GetStringValues()));
                            await this.Storage.AddThermostatEvent(e);
                        }
                        file.Flush();

                        Logger.WriteLine(JsonConvert.SerializeObject(events, Formatting.Indented));
                    }
                    catch (Exception e)
                    {
                        Logger.WriteLine(e);
                    }

                    try
                    {
                        Logger.WriteLine("querying weather");
                        WeatherObservation weather = await this.WeatherGovClient.GetCurrentWeather();

                        await this.Storage.AddWeatherObservation(weather);

                        Logger.WriteLine(JsonConvert.SerializeObject(weather, Formatting.Indented));
                    }
                    catch (Exception e)
                    {
                        Logger.WriteLine(e);
                    }

                    Logger.WriteLine("sleeping");
                    await Task.Delay(60 * 1000);
                }
            }
        }
Example #3
0
 public async Task AddThermostatEvent(NestThermostatMeasurementEvent data)
 {
     await this.thermostatEventsCollection.InsertOneAsync(data);
 }