2022-02-28 10:49:33 +11:00

256 lines
7.6 KiB
Go

package queryDeviceList
import (
"GoSungrow/Only"
"GoSungrow/iSolarCloud/api"
"GoSungrow/iSolarCloud/api/apiReflect"
"GoSungrow/iSolarCloud/api/output"
"fmt"
)
const Url = "/v1/devService/queryDeviceList"
const Disabled = false
type RequestData struct {
PsId string `json:"ps_id" required:"true"`
}
func (rd RequestData) IsValid() error {
return apiReflect.VerifyOptionsRequired(rd)
}
func (rd RequestData) Help() string {
ret := fmt.Sprintf("")
return ret
}
type ResultData struct {
DevCountByStatusMap struct {
FaultCount int64 `json:"fault_count"`
OfflineCount int64 `json:"offline_count"`
RunCount int64 `json:"run_count"`
WarningCount int64 `json:"warning_count"`
} `json:"dev_count_by_status_map"`
DevCountByTypeMap struct {
One4 int64 `json:"14"`
Two2 int64 `json:"22"`
} `json:"dev_count_by_type_map"`
DevTypeDefinition struct {
One string `json:"1"`
One0 string `json:"10"`
One1 string `json:"11"`
One2 string `json:"12"`
One3 string `json:"13"`
One4 string `json:"14"`
One5 string `json:"15"`
One6 string `json:"16"`
One7 string `json:"17"`
One8 string `json:"18"`
One9 string `json:"19"`
Two0 string `json:"20"`
Two1 string `json:"21"`
Two2 string `json:"22"`
Two3 string `json:"23"`
Two4 string `json:"24"`
Two5 string `json:"25"`
Two6 string `json:"26"`
Two8 string `json:"28"`
Two9 string `json:"29"`
Three string `json:"3"`
Three0 string `json:"30"`
Three1 string `json:"31"`
Three2 string `json:"32"`
Three3 string `json:"33"`
Three4 string `json:"34"`
Three5 string `json:"35"`
Three6 string `json:"36"`
Three7 string `json:"37"`
Three8 string `json:"38"`
Three9 string `json:"39"`
Four string `json:"4"`
Four0 string `json:"40"`
Four1 string `json:"41"`
Four2 string `json:"42"`
Four3 string `json:"43"`
Four4 string `json:"44"`
Four5 string `json:"45"`
Four6 string `json:"46"`
Four7 string `json:"47"`
Four8 string `json:"48"`
Five string `json:"5"`
Five0 string `json:"50"`
Six string `json:"6"`
Seven string `json:"7"`
Eight string `json:"8"`
Nine string `json:"9"`
Nine9 string `json:"99"`
} `json:"dev_type_definition"`
PageList []struct {
AlarmCount int64 `json:"alarm_count"`
ChnnlID int64 `json:"chnnl_id"`
CommandStatus int64 `json:"command_status"`
ComponentAmount int64 `json:"component_amount"`
DataFlag int64 `json:"data_flag"`
DataFlagDetail int64 `json:"data_flag_detail"`
DeviceArea string `json:"device_area"`
DeviceAreaName string `json:"device_area_name"`
DeviceCode int64 `json:"device_code"`
DeviceID int64 `json:"device_id"`
DeviceModelCode string `json:"device_model_code"`
DeviceModelID string `json:"device_model_id"`
DeviceName string `json:"device_name"`
DeviceStatus int64 `json:"device_status"`
DeviceType int64 `json:"device_type"`
FaultCount int64 `json:"fault_count"`
FaultStatus string `json:"fault_status"`
FunctionEnum string `json:"function_enum"`
InstallerAlarmCount int64 `json:"installer_alarm_count"`
InstallerDevFaultStatus int64 `json:"installer_dev_fault_status"`
InstallerFaultCount int64 `json:"installer_fault_count"`
InverterModelType int64 `json:"inverter_model_type"`
IsDeveloper string `json:"is_developer"`
IsG2point5Module int64 `json:"is_g2point5_module"`
IsInit int64 `json:"is_init"`
IsSecond int64 `json:"is_second"`
IsSupportParamset int64 `json:"is_support_paramset"`
NodeTimestamps interface{} `json:"node_timestamps"`
OwnerAlarmCount int64 `json:"owner_alarm_count"`
OwnerDevFaultStatus int64 `json:"owner_dev_fault_status"`
OwnerFaultCount int64 `json:"owner_fault_count"`
PointData PointData `json:"point_data"`
Points interface{} `json:"points"`
PsTimezoneInfo struct {
IsDst string `json:"is_dst"`
TimeZone string `json:"time_zone"`
} `json:"psTimezoneInfo"`
PsID int64 `json:"ps_id"`
PsKey string `json:"ps_key"`
RelState int64 `json:"rel_state"`
Sn string `json:"sn"`
StringAmount int64 `json:"string_amount"`
TypeName string `json:"type_name"`
UnitName interface{} `json:"unit_name"`
UUID string `json:"uuid"`
UUIDIndexCode string `json:"uuid_index_code"`
} `json:"pageList"`
RowCount int64 `json:"rowCount"`
}
type PointData []struct {
CodeID int64 `json:"code_id"`
CodeIDOrderID string `json:"code_id_order_id"`
CodeName string `json:"code_name"`
DevPointLastUpdateTime string `json:"dev_point_last_update_time"`
IsPlatformDefaultUnit int64 `json:"is_platform_default_unit"`
IsShow int64 `json:"is_show"`
OrderID int64 `json:"order_id"`
OrderNum int64 `json:"order_num"`
PointGroupID int64 `json:"point_group_id"`
PointGroupIDOrderID string `json:"point_group_id_order_id"`
PointGroupName string `json:"point_group_name"`
PointID int64 `json:"point_id"`
PointName string `json:"point_name"`
PointSign string `json:"point_sign"`
Relate int64 `json:"relate"`
TimeStamp string `json:"time_stamp"`
Unit string `json:"unit"`
ValIsFixd string `json:"val_is_fixd"`
ValidSize int64 `json:"valid_size"`
Value string `json:"value"`
ValueDescription string `json:"value_description"`
}
func (e *ResultData) IsValid() error {
var err error
// switch {
// case e.Dummy == "":
// break
// default:
// err = errors.New(fmt.Sprintf("unknown error '%s'", e.Dummy))
// }
return err
}
// type DecodeResultData ResultData
//
// func (e *ResultData) UnmarshalJSON(data []byte) error {
// var err error
//
// for range Only.Once {
// if len(data) == 0 {
// break
// }
// var pd DecodeResultData
//
// // Store ResultData
// _ = json.Unmarshal(data, &pd)
// e.Dummy = pd.Dummy
// }
//
// return err
// }
func (e *ResultData) GetDataByName(name string) PointData {
var ret PointData
for range Only.Once {
i := len(e.PageList)
if i == 0 {
break
}
for _, p := range e.PageList {
if p.DeviceName != name {
continue
}
ret = p.PointData
break
}
}
return ret
}
func (e *EndPoint) GetDataTable() output.Table {
var table output.Table
for range Only.Once {
table = output.NewTable()
e.Error = table.SetTitle("")
if e.Error != nil {
break
}
_ = table.SetHeader(
"Date",
"Point Id",
"PointGroupName",
"PointName",
"Value",
"Unit",
)
for _, d := range e.Response.ResultData.PageList {
for _, p := range d.PointData {
_ = table.AddRow(
api.NewDateTime(p.TimeStamp).PrintFull(),
fmt.Sprintf("%s.%d", d.PsKey, p.PointID),
p.PointGroupName,
p.PointName,
p.Value,
p.Unit,
)
}
}
table.InitGraph(output.GraphRequest {
Title: "",
TimeColumn: output.SetInteger(1),
ValueColumn: output.SetInteger(5),
UnitsColumn: output.SetInteger(6),
SearchColumn: output.SetInteger(2),
SearchString: output.SetString(""),
MinLeftAxis: output.SetFloat(0),
MaxLeftAxis: output.SetFloat(0),
})
}
return table
}