private void OnNext(StateChange <ClimateEntity, EntityState <ClimateAttributes> > e) { // event has 3 properties ClimateEntity entity = e.Entity; EntityState <ClimateAttributes>?newSate = e.New; EntityState <ClimateAttributes>?oldState = e.Old; var currentState = e.Entity.EntityState; // should be the same as e.New (unless the was another change in the meantime) string area = e.Entity.Area; string?state = e.Entity.State; // attribute properties are strong typed double temperature = e.New?.Attributes?.Temperature ?? 0; double?temperatureDelta = e.New?.Attributes?.Temperature - e.Old?.Attributes?.Temperature; // dump as json to view the structure var asJson = JsonSerializer.Serialize(e, new JsonSerializerOptions() { WriteIndented = true }); Console.WriteLine(asJson); Console.WriteLine($"{e}"); Console.WriteLine($"{e.New?.Attributes}"); }
public M3App(IHaContext ha) { Ha = ha; // Ha.CallService("notify", "persistent_notification", new { message = "Hello", title = "Yay it works in HassModel via HaContext" }, true);; _climateEntity = new ClimateEntity(ha, "climate.dummy_thermostat"); _climateEntity.StateAllChanges().Where(e => e.New?.Attributes?.Temperature > 20).Subscribe(); _climateEntity.StateAllChanges().Subscribe(OnNext); string? state = _climateEntity.State; string? state2 = _climateEntity.EntityState?.State; // is the same DateTime?lastChanged = _climateEntity.EntityState?.LastChanged; Ha.StateChanges().Subscribe(e => { }); // Entity that has not changed yet is retrieved on demand var zone = new ZoneEntity(Ha, "zone.home"); var lat = zone.Attributes?.latitude; var netEnergySensor = new NumericSensorEntity(Ha, "sensor.netto_energy"); // NumericSensor has double? as state double?netEnergy = netEnergySensor.State; double?netEnergy2 = netEnergySensor.EntityState?.State; netEnergySensor.StateChanges().Subscribe(e => Console.WriteLine($"{e.New?.Attributes?.FriendlyName} {e.New?.State} {e.New?.Attributes?.UnitOfMeasurement}")); // Prints: 'Netto energy 8908.81 kWh' }
public CallServiceApp(IHaContext ha) { var climate = new ClimateEntity(ha, "climate.dummy_thermostat"); climate.CallService("set_temperature", new SetTemperatureData { HvacMode = "heat", Temperature = 20, } ); }
public async Task <Climate> Add([FromBody] Climate climate) { ClimateEntity newclimate = new ClimateEntity(climate.Id, climate.Name); await _context.Climate.AddAsync(newclimate); await _context.SaveChangesAsync(); if (await _context.Climate.ContainsAsync(newclimate)) { return(climate); } return(null); }
public static IObservable <StateChange <ClimateEntity, EntityState <ClimateAttributes> > > StateAllChangesWithCurrent(this ClimateEntity entity) { return(entity.StateAllChangesWithCurrent <ClimateEntity, EntityState <ClimateAttributes>, ClimateAttributes>()); }