148 lines
3.8 KiB
Go
148 lines
3.8 KiB
Go
package rpc
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// 设备详情
|
|
type DeviceDetail struct {
|
|
Type uint8 `json:"type"`
|
|
ConnectType uint8 `json:"connect_type"`
|
|
Secret string `json:"secret"`
|
|
PId uint32 `json:"p_id"`
|
|
DataId uint32 `json:"data_id"`
|
|
}
|
|
|
|
var device *Device
|
|
|
|
// 获取设备相关RPC类
|
|
func GetDevice() *Device {
|
|
if device == nil {
|
|
device = &Device{}
|
|
}
|
|
return device
|
|
}
|
|
|
|
// 设备相关RPC
|
|
type Device struct{}
|
|
|
|
// 获取设备详情
|
|
func (d *Device) GetDetail(deviceId uint32) (*Result[DeviceDetail], error) {
|
|
body := map[string]any{
|
|
"device_id": deviceId,
|
|
"field_list": []string{"type", "secret", "connect_type", "p_id", "data_id"},
|
|
}
|
|
result := &Result[DeviceDetail]{}
|
|
if err := GetRequest().Send("device.get_detail", body, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// 重置设备在线状态
|
|
func (d *Device) ResetOnlineStatus() (*Result[any], error) {
|
|
result := &Result[any]{}
|
|
if err := GetRequest().Send("device.reset_online_status", map[string]any{}, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// 更新设备在线状态
|
|
func (d *Device) UpdateOnlineStatus(deviceId uint32, online bool, updateTime time.Time) (*Result[any], error) {
|
|
body := map[string]any{
|
|
"device_id": deviceId,
|
|
"online": online,
|
|
"time": updateTime.Format(time.DateTime),
|
|
}
|
|
result := &Result[any]{}
|
|
if err := GetRequest().Send("device.update_online_status", body, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// 更新从设备在线状态
|
|
func (d *Device) UpdateSlaveOnlineStatus(deviceId uint32, online bool, updateTime time.Time, parentId *uint32) (*Result[any], error) {
|
|
body := map[string]any{
|
|
"device_id": deviceId,
|
|
"online": online,
|
|
"time": updateTime.Format(time.DateTime),
|
|
}
|
|
if parentId != nil {
|
|
body["parent_id"] = *parentId
|
|
}
|
|
result := &Result[any]{}
|
|
if err := GetRequest().Send("device.update_salve_online_status", body, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// 更新设备属性上报时间
|
|
func (d *Device) UpdateReportTime(deviceId uint32, reportTime *time.Time) (*Result[any], error) {
|
|
body := map[string]any{
|
|
"device_id": deviceId,
|
|
}
|
|
if reportTime != nil {
|
|
body["time"] = reportTime.Format(time.DateTime)
|
|
}
|
|
result := &Result[any]{}
|
|
if err := GetRequest().Send("device.update_report_time", body, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// 设置设备属性
|
|
func (d *Device) SetAttribute(deviceId uint32, attributeSet map[string]any) (*Result[any], error) {
|
|
body := map[string]any{
|
|
"device_id": deviceId,
|
|
"attribute": attributeSet,
|
|
}
|
|
result := &Result[any]{}
|
|
if err := GetRequest().Send("device.set_attribute", body, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// 获取设备属性
|
|
func (d *Device) GetAttribute(deviceId uint32) (*Result[map[string]any], error) {
|
|
body := map[string]any{
|
|
"device_id": deviceId,
|
|
}
|
|
result := &Result[map[string]any]{}
|
|
if err := GetRequest().Send("device.get_attribute", body, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// 更新设备版本信息
|
|
func (d *Device) UpdateVersion(deviceId uint32, versionNumber uint) (*Result[any], error) {
|
|
body := map[string]any{
|
|
"device_id": deviceId,
|
|
"version_number": versionNumber,
|
|
}
|
|
result := &Result[any]{}
|
|
if err := GetRequest().Send("device.update_version", body, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// 保存升级结果
|
|
func (d *Device) SaveUpgradeResult(upgradeTaskId uint32, status uint8, finishTime time.Time) (*Result[any], error) {
|
|
body := map[string]any{
|
|
"upgrade_task_id": upgradeTaskId,
|
|
"status": status,
|
|
"finish_time": finishTime.Format(time.DateTime),
|
|
}
|
|
result := &Result[any]{}
|
|
if err := GetRequest().Send("device.save_upgrade_result", body, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|