电表的时段设置
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)
}
}