mirror of
https://github.com/MickMake/GoSungrow.git
synced 2025-03-21 15:21:52 +01:00
353 lines
7.3 KiB
Go
353 lines
7.3 KiB
Go
package example
|
|
|
|
import (
|
|
"GoSungrow/iSolarCloud"
|
|
"GoSungrow/iSolarCloud/AppService/login"
|
|
"GoSungrow/iSolarCloud/AppService/queryMutiPointDataList"
|
|
"GoSungrow/iSolarCloud/api/GoStruct/output"
|
|
"GoSungrow/iSolarCloud/api/GoStruct/valueTypes"
|
|
"fmt"
|
|
"github.com/MickMake/GoUnify/Only"
|
|
"log"
|
|
"os"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
|
|
// Example1 - GoSungrow API example
|
|
func Example1(startDate string, endDate string, interval string, points []string) error {
|
|
var err error
|
|
for range Only.Once {
|
|
|
|
// -------------------------------------------------------------------------------- //
|
|
// Initial setup.
|
|
url := "https://augateway.isolarcloud.com"
|
|
appKey := iSolarCloud.DefaultApiAppKey
|
|
user := "mick"
|
|
password := "password"
|
|
token := "tokenfile.json"
|
|
|
|
sg := iSolarCloud.NewSunGro(url, "./cache")
|
|
if sg.Error != nil {
|
|
err = sg.Error
|
|
break
|
|
}
|
|
|
|
err = sg.Init()
|
|
if err != nil {
|
|
break
|
|
}
|
|
|
|
auth := login.SunGrowAuth {
|
|
AppKey: appKey,
|
|
UserAccount: user,
|
|
UserPassword: password,
|
|
TokenFile: token,
|
|
Force: true,
|
|
}
|
|
err = sg.Login(auth)
|
|
if err != nil {
|
|
break
|
|
}
|
|
|
|
|
|
// -------------------------------------------------------------------------------- //
|
|
// Produce output.
|
|
data := sg.NewSunGrowData()
|
|
|
|
startDate = valueTypes.NewDateTime(startDate).Format(valueTypes.DateTimeLayoutSecond)
|
|
endDate = valueTypes.NewDateTime(endDate).Format(valueTypes.DateTimeLayoutSecond)
|
|
|
|
fmt.Printf("Points: %s\n", strings.Join(points, ","))
|
|
data.SetArgs(
|
|
"StartTimeStamp:" + startDate,
|
|
"EndTimeStamp:" + endDate,
|
|
"MinuteInterval:" + interval,
|
|
"Points:" + strings.Join(points, ","),
|
|
)
|
|
data.SetEndpoints(queryMutiPointDataList.EndPointName)
|
|
|
|
sg.Error = data.GetData()
|
|
if sg.Error != nil {
|
|
// break
|
|
}
|
|
|
|
sg.SetOutputType(output.StringTypeTable)
|
|
sg.SaveAsFile = false
|
|
|
|
sg.Error = data.OutputDataTables()
|
|
if sg.Error != nil {
|
|
break
|
|
}
|
|
}
|
|
|
|
return err
|
|
}
|
|
|
|
// Example2 - GoSungrow API example
|
|
func Example2(startDate string, endDate string, interval string, points []string) error {
|
|
var err error
|
|
for range Only.Once {
|
|
|
|
// -------------------------------------------------------------------------------- //
|
|
// Setup values.
|
|
p := valueTypes.SetPointIdsString(points...)
|
|
|
|
if len(p.PointIds) == 0 {
|
|
break
|
|
}
|
|
|
|
psids := p.PsIds()
|
|
if len(psids) == 0 {
|
|
break
|
|
}
|
|
psId := psids[0]
|
|
|
|
i := valueTypes.SetIntegerString(interval)
|
|
if !i.Valid {
|
|
i.SetValue(5)
|
|
}
|
|
|
|
sd := valueTypes.SetDateTimeString(startDate)
|
|
if sd.IsZero() {
|
|
sd.SetValue(time.Now())
|
|
sd.SetDayStart()
|
|
}
|
|
sd.SetDateType(valueTypes.DateTimeLayoutSecond)
|
|
|
|
ed := valueTypes.SetDateTimeString(endDate)
|
|
if ed.IsZero() {
|
|
ed.SetValue(sd.Value())
|
|
ed.SetDayEnd()
|
|
}
|
|
ed.SetDateType(valueTypes.DateTimeLayoutSecond)
|
|
|
|
|
|
// -------------------------------------------------------------------------------- //
|
|
// Initial setup.
|
|
url := "https://augateway.isolarcloud.com"
|
|
appKey := iSolarCloud.DefaultApiAppKey
|
|
user := "mick"
|
|
password := "password"
|
|
token := "tokenfile.json"
|
|
|
|
sg := iSolarCloud.NewSunGro(url, "./cache")
|
|
if sg.Error != nil {
|
|
err = sg.Error
|
|
break
|
|
}
|
|
|
|
err = sg.Init()
|
|
if err != nil {
|
|
break
|
|
}
|
|
|
|
auth := login.SunGrowAuth {
|
|
AppKey: appKey,
|
|
UserAccount: user,
|
|
UserPassword: password,
|
|
TokenFile: token,
|
|
Force: true,
|
|
}
|
|
err = sg.Login(auth)
|
|
if err != nil {
|
|
break
|
|
}
|
|
|
|
|
|
// -------------------------------------------------------------------------------- //
|
|
// Produce output.
|
|
ep := sg.GetByStruct(
|
|
"AppService.queryMutiPointDataList",
|
|
queryMutiPointDataList.RequestData {
|
|
PsId: psId,
|
|
StartTimeStamp: sd,
|
|
EndTimeStamp: ed,
|
|
MinuteInterval: i,
|
|
PsKeys: *p.PsKeys(),
|
|
Points: p,
|
|
},
|
|
time.Hour * 24,
|
|
)
|
|
if sg.IsError() {
|
|
break
|
|
}
|
|
|
|
var response iSolarCloud.SunGrowDataResponse
|
|
response.Data = ep.GetEndPointData()
|
|
|
|
response.Data.ProcessMap()
|
|
if response.Data.Error != nil {
|
|
sg.Error = response.Data.Error
|
|
break
|
|
}
|
|
|
|
table := response.Data.CreateResultTable(false)
|
|
table.OutputType = output.TypeTable
|
|
table.SetSaveFile(false)
|
|
sg.Error = table.Output()
|
|
if sg.Error != nil {
|
|
break
|
|
}
|
|
|
|
response.Options = iSolarCloud.OutputOptions {
|
|
OutputType: output.TypeTable,
|
|
SaveAsFile: false,
|
|
GraphRequest: output.GraphRequest{},
|
|
}
|
|
|
|
sg.Error = response.OutputDataTables()
|
|
if sg.IsError() {
|
|
break
|
|
}
|
|
}
|
|
|
|
return err
|
|
}
|
|
|
|
func Example3(startDate valueTypes.DateTime, endDate valueTypes.DateTime, interval valueTypes.Integer, points valueTypes.PointIds) error {
|
|
var err error
|
|
for range Only.Once {
|
|
|
|
// -------------------------------------------------------------------------------- //
|
|
// Setup values.
|
|
if len(points.PointIds) == 0 {
|
|
break
|
|
}
|
|
|
|
psids := points.PsIds()
|
|
if len(psids) == 0 {
|
|
break
|
|
}
|
|
psId := psids[0]
|
|
|
|
if !interval.Valid {
|
|
interval.SetValue(5)
|
|
}
|
|
|
|
if startDate.IsZero() {
|
|
startDate.SetValue(time.Now())
|
|
startDate.SetDayStart()
|
|
}
|
|
startDate.SetDateType(valueTypes.DateTimeLayoutSecond)
|
|
|
|
if endDate.IsZero() {
|
|
endDate.SetValue(startDate.Value())
|
|
endDate.SetDayEnd()
|
|
}
|
|
endDate.SetDateType(valueTypes.DateTimeLayoutSecond)
|
|
|
|
if !interval.Valid {
|
|
interval.SetValue(5)
|
|
}
|
|
|
|
|
|
// -------------------------------------------------------------------------------- //
|
|
// Initial setup.
|
|
url := "https://augateway.isolarcloud.com"
|
|
appKey := iSolarCloud.DefaultApiAppKey
|
|
user := "mick"
|
|
password := "password"
|
|
token := "tokenfile.json"
|
|
|
|
sg := iSolarCloud.NewSunGro(url, "./cache")
|
|
if sg.Error != nil {
|
|
err = sg.Error
|
|
break
|
|
}
|
|
|
|
err = sg.Init()
|
|
if err != nil {
|
|
break
|
|
}
|
|
|
|
auth := login.SunGrowAuth {
|
|
AppKey: appKey,
|
|
UserAccount: user,
|
|
UserPassword: password,
|
|
TokenFile: token,
|
|
Force: true,
|
|
}
|
|
err = sg.Login(auth)
|
|
if err != nil {
|
|
break
|
|
}
|
|
|
|
|
|
// -------------------------------------------------------------------------------- //
|
|
// Produce output.
|
|
ep := sg.GetByStruct(
|
|
"AppService.queryMutiPointDataList",
|
|
queryMutiPointDataList.RequestData {
|
|
PsId: psId,
|
|
StartTimeStamp: startDate,
|
|
EndTimeStamp: endDate,
|
|
MinuteInterval: interval,
|
|
PsKeys: *points.PsKeys(),
|
|
Points: points,
|
|
},
|
|
time.Hour * 24,
|
|
)
|
|
if sg.IsError() {
|
|
break
|
|
}
|
|
|
|
var response iSolarCloud.SunGrowDataResponse
|
|
response.Data = ep.GetEndPointData()
|
|
|
|
response.Data.ProcessMap()
|
|
if response.Data.Error != nil {
|
|
sg.Error = response.Data.Error
|
|
break
|
|
}
|
|
|
|
response.Options = iSolarCloud.OutputOptions {
|
|
OutputType: output.TypeGraph,
|
|
SaveAsFile: false,
|
|
GraphRequest: output.GraphRequest{},
|
|
}
|
|
|
|
sg.Error = response.OutputDataTables()
|
|
if sg.IsError() {
|
|
break
|
|
}
|
|
}
|
|
|
|
return err
|
|
}
|
|
|
|
|
|
func main() {
|
|
var err error
|
|
|
|
startDate := "20220701"
|
|
endDate := "20220701"
|
|
interval := "5"
|
|
points := []string{"Points:1171348_43_2_2.p58603", "1171348_43_2_2.p58604", "1171348_43_2_2.p58605", "1171348_43_2_2.p58606"}
|
|
|
|
|
|
err = Example1(startDate, endDate, interval, points)
|
|
if err != nil {
|
|
log.Fatalf("Error: %s", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
|
|
err = Example2(startDate, endDate, interval, points)
|
|
if err != nil {
|
|
log.Fatalf("Error: %s", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
|
|
err = Example3(valueTypes.SetDateTimeString(startDate), valueTypes.SetDateTimeString(endDate),
|
|
valueTypes.SetIntegerString(interval), valueTypes.SetPointIdsString(points...))
|
|
if err != nil {
|
|
log.Fatalf("Error: %s", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
os.Exit(0)
|
|
}
|