Tariffs: add outdoor temperature type and OpenMeteo (#27780)

Co-authored-by: Michael Geers <michael@geers.tv>
This commit is contained in:
Daniel Martin 2026-07-17 14:54:56 +02:00 • committed by GitHub
parent 68db0b7727
commit d68e5e5809
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
34 changed files with 449 additions and 135 deletions

View file

@ -166,33 +166,35 @@ func (c Messaging) IsConfigured() bool {
}
type Tariffs struct {
Currency string
Grid config.Typed
FeedIn config.Typed
Co2 config.Typed
Planner config.Typed
Solar []config.Typed
Currency string
Grid config.Typed
FeedIn config.Typed
Co2 config.Typed
Planner config.Typed
Solar []config.Typed
Temperature config.Typed
}
func (c Tariffs) IsConfigured() bool {
return c.Currency != "" || c.Grid.Type != "" || c.FeedIn.Type != "" || c.Co2.Type != "" || c.Planner.Type != "" || len(c.Solar) > 0
return c.Currency != "" || c.Grid.Type != "" || c.FeedIn.Type != "" || c.Co2.Type != "" || c.Planner.Type != "" || len(c.Solar) > 0 || c.Temperature.Type != ""
}
type TariffRefs struct {
Grid string `json:"grid"`
FeedIn string `json:"feedIn"`
Co2 string `json:"co2"`
Planner string `json:"planner"`
Solar []string `json:"solar"`
Grid string `json:"grid"`
FeedIn string `json:"feedIn"`
Co2 string `json:"co2"`
Planner string `json:"planner"`
Solar []string `json:"solar"`
Temperature string `json:"temperature"`
}
func (refs TariffRefs) IsConfigured() bool {
return refs.Grid != "" || refs.FeedIn != "" || refs.Co2 != "" || refs.Planner != "" || len(refs.Solar) > 0
return refs.Grid != "" || refs.FeedIn != "" || refs.Co2 != "" || refs.Planner != "" || len(refs.Solar) > 0 || refs.Temperature != ""
}
func (refs TariffRefs) Used() iter.Seq[string] {
return func(yield func(string) bool) {
for _, ref := range append([]string{refs.Grid, refs.FeedIn, refs.Co2, refs.Planner}, refs.Solar...) {
for _, ref := range append([]string{refs.Grid, refs.FeedIn, refs.Co2, refs.Planner, refs.Temperature}, refs.Solar...) {
if ref != "" {
if !yield(ref) {
return

View file

@ -12,6 +12,7 @@ const (
TariffTypePriceForecast
TariffTypeCo2
TariffTypeSolar
TariffTypeTemperature // outdoor temperature forecast in °C
)
type TariffUsage int
@ -23,4 +24,5 @@ const (
TariffUsageGrid
TariffUsagePlanner
TariffUsageSolar
TariffUsageTemperature // outdoor temperature forecast
)

View file

@ -7,11 +7,11 @@ import (
"strings"
)
const _TariffTypeName = "pricestaticpricedynamicpriceforecastco2solar"
const _TariffTypeName = "pricestaticpricedynamicpriceforecastco2solartemperature"
var _TariffTypeIndex = [...]uint8{0, 11, 23, 36, 39, 44}
var _TariffTypeIndex = [...]uint8{0, 11, 23, 36, 39, 44, 55}
const _TariffTypeLowerName = "pricestaticpricedynamicpriceforecastco2solar"
const _TariffTypeLowerName = "pricestaticpricedynamicpriceforecastco2solartemperature"
func (i TariffType) String() string {
i -= 1
@ -30,9 +30,10 @@ func _TariffTypeNoOp() {
_ = x[TariffTypePriceForecast-(3)]
_ = x[TariffTypeCo2-(4)]
_ = x[TariffTypeSolar-(5)]
_ = x[TariffTypeTemperature-(6)]
}
var _TariffTypeValues = []TariffType{TariffTypePriceStatic, TariffTypePriceDynamic, TariffTypePriceForecast, TariffTypeCo2, TariffTypeSolar}
var _TariffTypeValues = []TariffType{TariffTypePriceStatic, TariffTypePriceDynamic, TariffTypePriceForecast, TariffTypeCo2, TariffTypeSolar, TariffTypeTemperature}
var _TariffTypeNameToValueMap = map[string]TariffType{
_TariffTypeName[0:11]: TariffTypePriceStatic,
@ -45,6 +46,8 @@ var _TariffTypeNameToValueMap = map[string]TariffType{
_TariffTypeLowerName[36:39]: TariffTypeCo2,
_TariffTypeName[39:44]: TariffTypeSolar,
_TariffTypeLowerName[39:44]: TariffTypeSolar,
_TariffTypeName[44:55]: TariffTypeTemperature,
_TariffTypeLowerName[44:55]: TariffTypeTemperature,
}
var _TariffTypeNames = []string{
@ -53,6 +56,7 @@ var _TariffTypeNames = []string{
_TariffTypeName[23:36],
_TariffTypeName[36:39],
_TariffTypeName[39:44],
_TariffTypeName[44:55],
}
// TariffTypeString retrieves an enum value from the enum constants string name.

View file

@ -7,11 +7,11 @@ import (
"strings"
)
const _TariffUsageName = "co2feedingridplannersolar"
const _TariffUsageName = "co2feedingridplannersolartemperature"
var _TariffUsageIndex = [...]uint8{0, 3, 9, 13, 20, 25}
var _TariffUsageIndex = [...]uint8{0, 3, 9, 13, 20, 25, 36}
const _TariffUsageLowerName = "co2feedingridplannersolar"
const _TariffUsageLowerName = "co2feedingridplannersolartemperature"
func (i TariffUsage) String() string {
i -= 1
@ -30,9 +30,10 @@ func _TariffUsageNoOp() {
_ = x[TariffUsageGrid-(3)]
_ = x[TariffUsagePlanner-(4)]
_ = x[TariffUsageSolar-(5)]
_ = x[TariffUsageTemperature-(6)]
}
var _TariffUsageValues = []TariffUsage{TariffUsageCo2, TariffUsageFeedIn, TariffUsageGrid, TariffUsagePlanner, TariffUsageSolar}
var _TariffUsageValues = []TariffUsage{TariffUsageCo2, TariffUsageFeedIn, TariffUsageGrid, TariffUsagePlanner, TariffUsageSolar, TariffUsageTemperature}
var _TariffUsageNameToValueMap = map[string]TariffUsage{
_TariffUsageName[0:3]: TariffUsageCo2,
@ -45,6 +46,8 @@ var _TariffUsageNameToValueMap = map[string]TariffUsage{
_TariffUsageLowerName[13:20]: TariffUsagePlanner,
_TariffUsageName[20:25]: TariffUsageSolar,
_TariffUsageLowerName[20:25]: TariffUsageSolar,
_TariffUsageName[25:36]: TariffUsageTemperature,
_TariffUsageLowerName[25:36]: TariffUsageTemperature,
}
var _TariffUsageNames = []string{
@ -53,6 +56,7 @@ var _TariffUsageNames = []string{
_TariffUsageName[9:13],
_TariffUsageName[13:20],
_TariffUsageName[20:25],
_TariffUsageName[25:36],
}
// TariffUsageString retrieves an enum value from the enum constants string name.