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) }