mirror of
https://github.com/MickMake/GoSungrow.git
synced 2025-03-29 11:01:42 +01:00
Fix PsTree bug
This commit is contained in:
parent
3f78088664
commit
42d53539e2
87
.idea/workspace.xml
generated
87
.idea/workspace.xml
generated
@ -6,8 +6,11 @@
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="76adadc9-ae71-42a6-82a1-66dbc8ecb14c" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/CHANGELOG.md" beforeDir="false" afterPath="$PROJECT_DIR$/CHANGELOG.md" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/cmd/cmd_show_point.go" beforeDir="false" afterPath="$PROJECT_DIR$/cmd/cmd_show_point.go" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/cmd/cmd_ha.go" beforeDir="false" afterPath="$PROJECT_DIR$/cmd/cmd_ha.go" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/cmd/cmd_show_psid.go" beforeDir="false" afterPath="$PROJECT_DIR$/cmd/cmd_show_psid.go" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/iSolarCloud/api/GoStruct/valueTypes/datetime.go" beforeDir="false" afterPath="$PROJECT_DIR$/iSolarCloud/api/GoStruct/valueTypes/datetime.go" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/iSolarCloud/highlevel_point.go" beforeDir="false" afterPath="$PROJECT_DIR$/iSolarCloud/highlevel_point.go" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/iSolarCloud/highlevel_ps.go" beforeDir="false" afterPath="$PROJECT_DIR$/iSolarCloud/highlevel_ps.go" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@ -81,7 +84,7 @@
|
||||
<configuration name="GoSungrow" type="GoApplicationRunConfiguration" factoryName="Go Application">
|
||||
<module name="GoSungrow" />
|
||||
<working_directory value="$PROJECT_DIR$/../SungrowData/test" />
|
||||
<parameters value="show ps save . . 20230504" />
|
||||
<parameters value="show ps data . . " />
|
||||
<envs>
|
||||
<env name="GOCACHE" value="$PROJECT_DIR$/../../../../../../Media/GoCache" />
|
||||
</envs>
|
||||
@ -432,12 +435,12 @@
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_point.go</url>
|
||||
<line>649</line>
|
||||
<line>654</line>
|
||||
<option name="timeStamp" value="7893" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_point.go</url>
|
||||
<line>627</line>
|
||||
<line>632</line>
|
||||
<option name="timeStamp" value="7902" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
@ -537,7 +540,7 @@
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_point.go</url>
|
||||
<line>517</line>
|
||||
<line>522</line>
|
||||
<option name="timeStamp" value="8082" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
@ -642,22 +645,22 @@
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/cmd/cmd_ha.go</url>
|
||||
<line>144</line>
|
||||
<line>134</line>
|
||||
<option name="timeStamp" value="8618" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/cmd/cmd_ha.go</url>
|
||||
<line>154</line>
|
||||
<line>144</line>
|
||||
<option name="timeStamp" value="8619" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/cmd/cmd_ha.go</url>
|
||||
<line>164</line>
|
||||
<line>154</line>
|
||||
<option name="timeStamp" value="8620" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/cmd/cmd_ha.go</url>
|
||||
<line>176</line>
|
||||
<line>166</line>
|
||||
<option name="timeStamp" value="8626" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
@ -682,29 +685,9 @@
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_point.go</url>
|
||||
<line>625</line>
|
||||
<line>630</line>
|
||||
<option name="timeStamp" value="8646" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_ps.go</url>
|
||||
<line>180</line>
|
||||
<option name="timeStamp" value="8654" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_ps.go</url>
|
||||
<line>187</line>
|
||||
<option name="timeStamp" value="8659" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_ps.go</url>
|
||||
<line>188</line>
|
||||
<option name="timeStamp" value="8660" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_ps.go</url>
|
||||
<line>181</line>
|
||||
<option name="timeStamp" value="8664" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/api/GoStruct/valueTypes/uv.go</url>
|
||||
<line>61</line>
|
||||
@ -735,11 +718,6 @@
|
||||
<line>604</line>
|
||||
<option name="timeStamp" value="8839" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_point.go</url>
|
||||
<line>412</line>
|
||||
<option name="timeStamp" value="8849" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_template.go</url>
|
||||
<line>270</line>
|
||||
@ -822,7 +800,7 @@
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_point.go</url>
|
||||
<line>462</line>
|
||||
<line>467</line>
|
||||
<option name="timeStamp" value="8898" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
@ -855,6 +833,41 @@
|
||||
<line>333</line>
|
||||
<option name="timeStamp" value="8906" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_point.go</url>
|
||||
<line>380</line>
|
||||
<option name="timeStamp" value="8909" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_ps.go</url>
|
||||
<line>222</line>
|
||||
<option name="timeStamp" value="8910" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_ps.go</url>
|
||||
<line>330</line>
|
||||
<option name="timeStamp" value="8914" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_ps.go</url>
|
||||
<line>202</line>
|
||||
<option name="timeStamp" value="8924" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_point.go</url>
|
||||
<line>403</line>
|
||||
<option name="timeStamp" value="8925" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/highlevel_point.go</url>
|
||||
<line>384</line>
|
||||
<option name="timeStamp" value="8927" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||
<url>file://$PROJECT_DIR$/iSolarCloud/api/GoStruct/valueTypes/datetime.go</url>
|
||||
<line>277</line>
|
||||
<option name="timeStamp" value="8928" />
|
||||
</line-breakpoint>
|
||||
</breakpoints>
|
||||
<default-breakpoints>
|
||||
<breakpoint type="DlvErrorBreakpoint" />
|
||||
|
@ -76,18 +76,6 @@ func (c *CmdHa) AttachCommand(cmd *cobra.Command) *cobra.Command {
|
||||
|
||||
func (c *CmdHa) CmdLovelace(cmd *cobra.Command, args []string) error {
|
||||
for range Only.Once {
|
||||
// if len(args) == 0 {
|
||||
// fmt.Println("One of: basic graphs stats")
|
||||
// _ = cmd.Help()
|
||||
// break
|
||||
// }
|
||||
//
|
||||
// var pids valueTypes.PsIds
|
||||
// pids, c.Error = cmds.Api.SunGrow.GetPsIds()
|
||||
// if c.Error != nil {
|
||||
// break
|
||||
// }
|
||||
|
||||
pids := cmds.Api.SunGrow.SetPsIds(args...)
|
||||
if cmds.Api.SunGrow.Error != nil {
|
||||
c.Error = cmds.Api.SunGrow.Error
|
||||
@ -95,8 +83,8 @@ func (c *CmdHa) CmdLovelace(cmd *cobra.Command, args []string) error {
|
||||
}
|
||||
|
||||
for _, pid := range pids {
|
||||
var tree iSolarCloud.PsTree
|
||||
tree, c.Error = cmds.Api.SunGrow.PsTreeMenu(pid.String())
|
||||
var trees iSolarCloud.PsTrees
|
||||
trees, c.Error = cmds.Api.SunGrow.PsTreeMenu(pid.String())
|
||||
if c.Error != nil {
|
||||
break
|
||||
}
|
||||
@ -105,18 +93,20 @@ func (c *CmdHa) CmdLovelace(cmd *cobra.Command, args []string) error {
|
||||
var DeviceType22 string
|
||||
var DeviceType43 string
|
||||
|
||||
for _, device := range tree.Devices {
|
||||
if device.DeviceType.Match(14) {
|
||||
DeviceType14 = device.PsKey.String()
|
||||
continue
|
||||
}
|
||||
if device.DeviceType.Match(22) {
|
||||
DeviceType22 = device.PsKey.String()
|
||||
continue
|
||||
}
|
||||
if device.DeviceType.Match(43) {
|
||||
DeviceType43 = device.PsKey.String()
|
||||
continue
|
||||
for pid2 := range trees {
|
||||
for _, device := range trees[pid2].Devices {
|
||||
if device.DeviceType.Match(14) {
|
||||
DeviceType14 = device.PsKey.String()
|
||||
continue
|
||||
}
|
||||
if device.DeviceType.Match(22) {
|
||||
DeviceType22 = device.PsKey.String()
|
||||
continue
|
||||
}
|
||||
if device.DeviceType.Match(43) {
|
||||
DeviceType43 = device.PsKey.String()
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -177,6 +167,7 @@ func (c *CmdHa) CmdLovelace(cmd *cobra.Command, args []string) error {
|
||||
return c.Error
|
||||
}
|
||||
|
||||
|
||||
const lovelaceBasic = `views:
|
||||
- theme: Backend-selected
|
||||
title: Status
|
||||
|
@ -124,7 +124,7 @@ func (c *CmdShow) AttachPsTree(cmd *cobra.Command) *cobra.Command {
|
||||
}
|
||||
func (c *CmdShow) funcPsTree(_ *cobra.Command, args []string) error {
|
||||
for range Only.Once {
|
||||
var pids iSolarCloud.PsTree
|
||||
var pids iSolarCloud.PsTrees
|
||||
pids, c.Error = cmds.Api.SunGrow.PsTreeMenu(args...)
|
||||
if c.Error != nil {
|
||||
break
|
||||
|
@ -267,27 +267,29 @@ func SetDateTimeValue(value time.Time) DateTime {
|
||||
|
||||
func (dt *DateTime) GetDayStartTimestamp() string {
|
||||
var ret string
|
||||
f1 := dt.Time.Round(time.Hour * 24)
|
||||
f1 := time.Date(dt.Time.Year(), dt.Time.Month(), dt.Time.Day(), 0, 0, 0, 0, dt.Time.Location())
|
||||
ret = f1.Format(DateTimeLayoutSecond)
|
||||
return ret
|
||||
// return fmt.Sprintf("%s000000", dt.Time.Format(DtLayoutDay))
|
||||
}
|
||||
|
||||
func (dt *DateTime) SetDayStart() {
|
||||
dt.Time = dt.Time.Round(time.Hour * 24)
|
||||
// dt.Time = dt.Time.Truncate(time.Hour * 24)
|
||||
dt.Time = time.Date(dt.Time.Year(), dt.Time.Month(), dt.Time.Day(), 0, 0, 0, 0, dt.Time.Location())
|
||||
dt.string = dt.Time.Format(dt.format)
|
||||
}
|
||||
|
||||
func (dt *DateTime) GetDayEndTimestamp() string {
|
||||
var ret string
|
||||
f1 := dt.Time.Round(time.Hour * 24).Add(time.Hour * 24).Add(-time.Second)
|
||||
f1 := time.Date(dt.Time.Year(), dt.Time.Month(), dt.Time.Day(), 23, 59, 59, 0, dt.Time.Location())
|
||||
ret = f1.Format(DateTimeLayoutSecond)
|
||||
return ret
|
||||
// return fmt.Sprintf("%s235900", dt.Time.Format(DtLayoutDay))
|
||||
}
|
||||
|
||||
func (dt *DateTime) SetDayEnd() {
|
||||
dt.Time = dt.Time.Truncate(time.Hour * 24).Add(time.Hour * 24).Add(-time.Second)
|
||||
// dt.Time = dt.Time.Truncate(time.Hour * 24).Add(time.Hour * 24).Add(-time.Second)
|
||||
dt.Time = time.Date(dt.Time.Year(), dt.Time.Month(), dt.Time.Day(), 23, 59, 59, 0, dt.Time.Location())
|
||||
dt.string = dt.Time.Format(dt.format)
|
||||
}
|
||||
|
||||
|
@ -327,28 +327,30 @@ func (sg *SunGrow) GetDevicePointAttrs(psId valueTypes.PsId) (getDevicePointAttr
|
||||
var ret getDevicePointAttrs.Points
|
||||
|
||||
for range Only.Once {
|
||||
var tree PsTree
|
||||
tree, sg.Error = sg.PsTreeMenu(psId.String())
|
||||
var trees PsTrees
|
||||
trees, sg.Error = sg.PsTreeMenu(psId.String())
|
||||
if sg.Error != nil {
|
||||
break
|
||||
}
|
||||
|
||||
for _, pid := range tree.Devices {
|
||||
ep := sg.GetByStruct(getDevicePointAttrs.EndPointName,
|
||||
getDevicePointAttrs.RequestData {
|
||||
Uuid: pid.UUID,
|
||||
PsId2: pid.PsId,
|
||||
DeviceType2: pid.DeviceType,
|
||||
},
|
||||
time.Hour * 24,
|
||||
)
|
||||
if sg.IsError() {
|
||||
break
|
||||
}
|
||||
for pid := range trees {
|
||||
for _, tree := range trees[pid].Devices {
|
||||
ep := sg.GetByStruct(getDevicePointAttrs.EndPointName,
|
||||
getDevicePointAttrs.RequestData{
|
||||
Uuid: tree.UUID,
|
||||
PsId2: tree.PsId,
|
||||
DeviceType2: tree.DeviceType,
|
||||
},
|
||||
time.Hour*24,
|
||||
)
|
||||
if sg.IsError() {
|
||||
break
|
||||
}
|
||||
|
||||
data := getDevicePointAttrs.Assert(ep)
|
||||
ret = append(ret, data.Points()...)
|
||||
// more := sg.GetDevicePointNames(pid.DeviceType)
|
||||
data := getDevicePointAttrs.Assert(ep)
|
||||
ret = append(ret, data.Points()...)
|
||||
// more := sg.GetDevicePointNames(pid.DeviceType)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -377,6 +379,9 @@ func (sg *SunGrow) getPointData(startDate string, endDate string, interval strin
|
||||
|
||||
// Also set the startDate based on the ps_id deployment endDate if not set.
|
||||
sd := valueTypes.NewDateTime(startDate)
|
||||
if startDate == "" {
|
||||
sd.SetDayStart()
|
||||
}
|
||||
var ed valueTypes.DateTime
|
||||
if endDate == "" {
|
||||
ed = sd
|
||||
|
@ -274,14 +274,16 @@ func (sg *SunGrow) GetPsKeys() (valueTypes.PsKeys, error) {
|
||||
|
||||
// -------------------------------------------------------------------------------- //
|
||||
// Method 2: PsTreeMenu
|
||||
var tree PsTree
|
||||
tree, sg.Error = sg.PsTreeMenu()
|
||||
var trees PsTrees
|
||||
trees, sg.Error = sg.PsTreeMenu()
|
||||
if sg.Error != nil {
|
||||
break
|
||||
}
|
||||
for _, pid := range tree.Devices {
|
||||
// pskey := fmt.Sprintf("%s_%s_%s_%s", pid.PsId, pid.DeviceType, pid.PsKey.DeviceCode, pid.PsKey.ChannelId)
|
||||
pskeys = append(pskeys, pid.PsKey.String())
|
||||
for pid := range trees {
|
||||
for _, tree := range trees[pid].Devices {
|
||||
// pskey := fmt.Sprintf("%s_%s_%s_%s", pid.PsId, pid.DeviceType, pid.PsKey.DeviceCode, pid.PsKey.ChannelId)
|
||||
pskeys = append(pskeys, tree.PsKey.String())
|
||||
}
|
||||
}
|
||||
if len(pskeys) > 0 {
|
||||
ret.Set(pskeys...)
|
||||
@ -449,8 +451,8 @@ func (sg *SunGrow) GetPsIds() (valueTypes.PsIds, error) {
|
||||
|
||||
|
||||
// PsTreeMenu - WebIscmAppService.getPsTreeMenu
|
||||
func (sg *SunGrow) PsTreeMenu(psIds ...string) (PsTree, error) {
|
||||
var ret PsTree
|
||||
func (sg *SunGrow) PsTreeMenu(psIds ...string) (PsTrees, error) {
|
||||
ret := make(PsTrees)
|
||||
|
||||
for range Only.Once {
|
||||
pids := sg.SetPsIds(psIds...)
|
||||
@ -469,7 +471,9 @@ func (sg *SunGrow) PsTreeMenu(psIds ...string) (PsTree, error) {
|
||||
|
||||
data := getPsTreeMenu.Assert(ep)
|
||||
|
||||
ret.Scan(data.Response.ResultData.List, false)
|
||||
var p PsTree
|
||||
p.Scan(data.Response.ResultData.List, false)
|
||||
ret[psId.String()] = p
|
||||
}
|
||||
}
|
||||
|
||||
@ -515,6 +519,10 @@ func (p *PsTree) Scan(devices []getPsTreeMenu.Ps, print bool) {
|
||||
p.Map = make(map[string]*Ps)
|
||||
for _, ps := range p.Devices {
|
||||
name := ps.UpUUID.String()
|
||||
// if name == "0" {
|
||||
// // name = ps.PsId.String()
|
||||
// }
|
||||
|
||||
// fmt.Printf("[%s]\tParent:%s\tSelf: - %s\t%s\t%s\t%s\n", name, ps.UpUUID, ps.UUID, ps.PsId, ps.PsKey, ps.DeviceName)
|
||||
if _, ok := p.Map[name]; !ok {
|
||||
p.Map[name] = &Ps {
|
||||
@ -553,6 +561,17 @@ func (p *PsTree) loop(current string, count int, depth int) {
|
||||
}
|
||||
|
||||
|
||||
type PsTrees map[string]PsTree
|
||||
|
||||
func (p PsTrees) String() string {
|
||||
var ret string
|
||||
for i := range p {
|
||||
ret += p[i].String()
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
|
||||
// QueryDeviceListForBackSys - WebIscmAppService.queryDeviceListForBackSys
|
||||
func (sg *SunGrow) QueryDeviceListForBackSys(psId string) ([]queryDeviceListForBackSys.Device, error) {
|
||||
var ret []queryDeviceListForBackSys.Device
|
||||
|
Loading…
x
Reference in New Issue
Block a user