/// <summary> /// Gets home consumption. /// </summary> /// <param name="homeId"></param> /// <param name="resolution"></param> /// <param name="lastEntries">how many last entries to fetch; if no value provider a default will be used - hourly: 24; daily: 30; weekly: 4; monthly: 12; annually: 1</param> /// <param name="cancellationToken"></param> /// <exception cref="TibberApiHttpException"></exception> /// <returns>consumption entries</returns> public async Task <ICollection <ConsumptionEntry> > GetHomeConsumption(Guid homeId, EnergyResolution resolution, int?lastEntries = null, CancellationToken cancellationToken = default) { var result = await Query(new TibberQueryBuilder().WithHomeConsumption(homeId, resolution, lastEntries).Build(), cancellationToken); ValidateResult(result); return(result.Data?.Viewer?.Home?.Consumption?.Nodes); }
/// <summary> /// Builds a query for home production. /// </summary> /// <param name="homeQueryBuilder"></param> /// <param name="resolution"></param> /// <param name="lastEntries">how many last entries to fetch</param> /// <returns></returns> public static HomeQueryBuilder WithHomeProduction(this HomeQueryBuilder homeQueryBuilder, EnergyResolution resolution, int lastEntries) => homeQueryBuilder.WithProduction( new HomeProductionConnectionQueryBuilder().WithNodes(new ProductionEntryQueryBuilder().WithAllFields()), resolution, last: lastEntries);
private static int LastConsumptionEntries(EnergyResolution resolution) => resolution switch {
/// <summary> /// Builds a query for home production. /// </summary> /// <param name="builder"></param> /// <param name="homeId"></param> /// <param name="resolution"></param> /// <param name="lastEntries">how many last entries to fetch; if no value provider a default will be used - hourly: 24; daily: 30; weekly: 4; monthly: 12; annually: 1</param> /// <returns></returns> public static TibberQueryBuilder WithHomeProduction(this TibberQueryBuilder builder, Guid homeId, EnergyResolution resolution, int?lastEntries) => builder.WithViewer( new ViewerQueryBuilder() .WithHome( new HomeQueryBuilder().WithHomeProduction(resolution, lastEntries ?? LastConsumptionEntries(resolution)), homeId ) );