Tasmota: Eenable Power Value Lists (#5748)
This commit is contained in:
parent
bdcf4325e4
commit
e3a449d847
2 changed files with 27 additions and 7 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue