Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • M meter-api
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 2
    • Issues 2
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • 优库
  • meter-api
  • Issues
  • #2

Closed
Open
Created Dec 28, 2023 by vuuvv@vuuvvOwner

电表的时段设置

1. 更新meter-api到最新版本

go get -u vuuvv.cn/youku/meter-api

2. 时段的类型有4个分别是t1, t2, t3, t4

3. 获取当前度数的接口返回值有改变

添加了Kwh字段代表时段度数

type DeviceResp struct {
	Time        time.Time          `json:"time"`
	Sn          string             `json:"sn"`
	Value       string             `json:"value,omitempty"`
	DeltaSecond int                `json:"deltaSecond"`
	Kwh         *entity.Kwh        `json:"kwh,omitempty" gorm:"-"` // 时段度数
	TimeSlots   []*models.TimeSlot `json:"timeSlots,omitempty" gorm:"-"`
}

kwh字段的定义

type Kwh struct {
	All *KwhItem `json:"all,omitempty"` // 总度数
	T1  *KwhItem `json:"t1,omitempty"` // t1类型的度数
	T2  *KwhItem `json:"t2,omitempty"` // t2类型的度数
	T3  *KwhItem `json:"t3,omitempty"` // t3类型的度数
	T4  *KwhItem `json:"t4,omitempty"` // t4类型的度数
}

4. 时段配置参数

type TimeSlots struct {
	DeviceSn
	Items []*models.TimeSlot `json:"items"` // 时段配置
}
// 只能设置4种计费类型
const (
	TimeSlotTypeT1 = "t1"
	TimeSlotTypeT2 = "t2"
	TimeSlotTypeT3 = "t3"
	TimeSlotTypeT4 = "t4"
)

type TimeSlot struct {
	Hour   int    `json:"hour"`                            // 开始小时数
	Minute int    `json:"minute"`                          // 开始分钟数
	Type   string `json:"type" valid:"required~请填写时段计费类型"` // 计费类型
}

5. 获取当前时段配置

func TestGetTimeSlot(t *testing.T) {
	_, err := requests.Meter.GetTimeSlots(&forms.DeviceSn{
		Mac: "xxxx",
		Sn:  "xxxx",
	})
	if err != nil {
		t.Fatal(err)
	}
}

6. 设置电表时段

规则:

  • 只能设置4种计费类型
  • 最多只能设置8个时段
  • 第一个时段必须从0点0分开始
  • 时段必须从小到大进行排序
  • 不能有重复的时间段
  • 调用后如果没有返回错误就是成功,每次调用不一定成功,要自己做逻辑确保调用成功。
func TestSetTimeSlot(t *testing.T) {
	form := &forms.TimeSlots{}
	form.SetMac("xxxxx")
	form.SetSn("xxxxxxx")
	form.Items = []*models.TimeSlot{
		{Hour: 0, Minute: 0, Type: "t1"},  // 00:00~08:00 t1
		{Hour: 8, Minute: 0, Type: "t2"},  // 80:00~12:00 t2
		{Hour: 12, Minute: 0, Type: "t3"}, // 12:00~18:00 t3
		{Hour: 18, Minute: 0, Type: "t2"}, // 18:00~22:00 t2
		{Hour: 22, Minute: 0, Type: "t1"}, // 22:00~24:00 t1
	}
	_, err := requests.Meter.SetTimeSlots(form)
	if err != nil {
		t.Fatal(err)
	}
}
Edited Dec 28, 2023 by vuuvv
Assignee
Assign to
Time tracking