evcc-io/meter/tplink/types.go

61 lines
2.1 KiB
Go

package tplink
// TP-Link smart power plug/outlet responses
// https://www.softscheck.com/en/reverse-engineering-tp-link-hs110/#Portscan
// SystemResponse is the TP-Link plug/outlet api system response
type SystemResponse struct {
System struct {
SetRelayState struct {
ErrCode int `json:"err_code,omitempty"`
} `json:"set_relay_state"`
GetSysinfo struct {
ErrCode int `json:"err_code,omitempty"`
SwVer string `json:"sw_ver,omitempty"`
Model string `json:"model,omitempty"`
Alias string `json:"alias,omitempty"`
DevName string `json:"dev_name,omitempty"`
RelayState int `json:"relay_state,omitempty"`
Feature string `json:"feature,omitempty"`
} `json:"get_sysinfo"`
} `json:"system"`
}
// EmeterResponse is the TP-Link plug/outlet api emeter get_realtime response
type EmeterResponse struct {
Emeter struct {
GetRealtime struct {
// 1st plug generation E-Meter get_realtime Response
Current float64 `json:"current,omitempty"`
Voltage float64 `json:"voltage,omitempty"`
Power float64 `json:"power,omitempty"`
Total float64 `json:"total,omitempty"`
// 2nd plug generation E-Meter get_realtime Response
CurrentMa float64 `json:"current_ma,omitempty"`
VoltageMv float64 `json:"voltage_mv,omitempty"`
PowerMw float64 `json:"power_mw,omitempty"`
TotalWh float64 `json:"total_wh,omitempty"`
// Common E-Meter get_realtime Response
ErrCode int `json:"err_code,omitempty"`
} `json:"get_realtime"`
} `json:"emeter"`
}
// DayStatResponse is the TP-Link plug/outlet api emeter get_realtime get_daystat response
type DayStatResponse struct {
Emeter struct {
GetDaystat struct {
DayList []struct {
Year int `json:"year,omitempty"`
Month int `json:"month,omitempty"`
Day int `json:"day,omitempty"`
// 1st plug generation E-Meter get_daystat Response
Energy float64 `json:"energy,omitempty"`
// 2nd plug generation E-Meter get_daystat Response
EnergyWh float64 `json:"energy_wh,omitempty"`
} `json:"day_list"`
// Common E-Meter get_daystat Response
ErrCode int `json:"err_code,omitempty"`
} `json:"get_daystat"`
} `json:"emeter"`
}