package collector
|
|
import (
|
"encoding/json"
|
|
"plc-recorder/config"
|
"plc-recorder/logger"
|
"plc-recorder/msg"
|
"plc-recorder/util"
|
)
|
|
func getDeviceList() ([]msg.PLCDevice, error) {
|
token, _ := util.CreateToken()
|
responseBody, err := util.HttpPost(config.Options.DeviceListWebApi, nil, token)
|
if err != nil {
|
logger.Warn("get device list from aps error:%s", err.Error())
|
return nil, err
|
}
|
|
var response msg.ApsDeviceApiResponse
|
err = json.Unmarshal(responseBody, &response)
|
if err != nil {
|
logger.Warn("unmarshal aps response error:%s", err.Error())
|
return nil, err
|
}
|
|
logger.Debug("get device list total:%d", response.Total)
|
|
return response.Data, nil
|
}
|
|
// 设备信息发生改变时更新采集的任务, 删除, 修改, 或者重新启动
|
func HandleDeviceUpdate(message []byte) error {
|
var device msg.PLCDevice
|
|
logger.Debug("receive device update msg: %s", string(message))
|
|
err := json.Unmarshal(message, &device)
|
if err != nil {
|
logger.Error("unmarshal device update msg error:%s", err.Error())
|
return err
|
}
|
|
// 先停掉正在执行的任务
|
stopTask(&device)
|
|
// 判断是否是重新启动的状态, 启动一个新的任务
|
if device.Status == 0 {
|
addTask(&device)
|
}
|
|
return nil
|
}
|