evcc-io/detect/tasks/types.go
2021-08-21 12:53:25 +02:00

43 lines
876 B
Go

package tasks
import (
"github.com/evcc-io/evcc/util"
"github.com/jinzhu/copier"
)
type ResultDetails struct {
IP string
Port int `json:",omitempty"`
Topic string `json:",omitempty"`
ModbusResult *ModbusResult `json:",omitempty"`
KebaResult *KebaResult `json:",omitempty"`
SmaResult *SmaResult `json:",omitempty"`
}
func (d *ResultDetails) Clone() ResultDetails {
var c ResultDetails
if err := copier.Copy(&c, *d); err != nil {
panic(err)
}
return c
}
type Result struct {
Task
ResultDetails
Attributes map[string]interface{} // TODO remove, only used for post-processing
}
type TaskType string
type Task struct {
ID string
Type TaskType
Depends string
Config map[string]interface{}
TaskHandler
}
type TaskHandler interface {
Test(log *util.Logger, in ResultDetails) []ResultDetails
}