Tasmota: Eenable Power Value Lists (#5748)

This commit is contained in:
Markus Thierolf 2023-01-12 13:04:37 +01:00 • committed by GitHub
parent bdcf4325e4
commit e3a449d847
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 7 deletions

View file

@ -50,8 +50,27 @@ func (d *Connection) ExecCmd(cmd string, res interface{}) error {
// CurrentPower implements the api.Meter interface
func (d *Connection) CurrentPower() (float64, error) {
var res StatusSNSResponse
err := d.ExecCmd("Status 8", &res)
return float64(res.StatusSNS.Energy.Power), err
var err error
var power float64
if err = d.ExecCmd("Status 8", &res); err == nil {
switch v := res.StatusSNS.Energy.Power.(type) {
case float64:
power = res.StatusSNS.Energy.Power.(float64)
case []interface{}:
// take first power meter value in case of a power meter list
for i, vl := range v {
switch vv := vl.(type) {
case float64:
if i == 0 {
power = vv
}
}
}
}
}
return power, err
}
// TotalEnergy implements the api.MeterEnergy interface

View file

@ -68,12 +68,13 @@ type StatusSNSResponse struct {
Total float64
Yesterday float64
Today float64
Power int
ApparentPower int
ReactivePower int
Factor float64
Power interface{}
ApparentPower interface{}
ReactivePower interface{}
Factor interface{}
Frequency int
Voltage int
Current float64
Current interface{}
}
// SML sensor readings