V2C Trydan: add 1p/3p charge mode switching (#31526)

This commit is contained in:
andig 2026-07-07 12:06:44 +02:00 • committed by GitHub
parent de976b7aa2
commit 4fc0a131d9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 40 additions and 1 deletions

View file

@ -53,8 +53,16 @@ type RealTimeData struct {
FirmwareVersion string `json:"FirmwareVersion"`
DynamicPowerMode int `json:"DynamicPowerMode"`
ContractedPower int `json:"ContractedPower"`
ChargeMode int `json:"ChargeMode"`
}
// Trydan ChargeMode values
const (
trydanChargeModeMono = 0
trydanChargeModeThree = 1
trydanChargeModeMixed = 2
)
// Trydan charger implementation
type Trydan struct {
*request.Helper
@ -203,6 +211,37 @@ func (c Trydan) MaxCurrent(current int64) error {
// return time.Duration(data.ChargeTime) * time.Second, err
// }
var _ api.PhaseSwitcher = (*Trydan)(nil)
// Phases1p3p implements the api.PhaseSwitcher interface
func (c Trydan) Phases1p3p(phases int) error {
mode := trydanChargeModeThree
if phases == 1 {
mode = trydanChargeModeMono
}
return c.setValue("ChargeMode", mode)
}
var _ api.PhaseGetter = (*Trydan)(nil)
// GetPhases implements the api.PhaseGetter interface
func (c Trydan) GetPhases() (int, error) {
data, err := c.statusG.Get()
if err != nil {
return 0, err
}
switch data.ChargeMode {
case trydanChargeModeMono:
return 1, nil
case trydanChargeModeThree:
return 3, nil
default:
// mixed mode: phase count varies dynamically, not a fixed 1p/3p state
return 0, nil
}
}
var _ api.Meter = (*Trydan)(nil)
// CurrentPower implements the api.Meter interface

View file

@ -1,5 +1,5 @@
template: v2c
capabilities: ["meter", "dim"]
capabilities: ["1p3p", "meter", "dim"]
covers: ["trydan"]
products:
- brand: V2C