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); }
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); } } }
public async Task AddThermostatEvent(NestThermostatMeasurementEvent data) { await this.thermostatEventsCollection.InsertOneAsync(data); }