123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- package openApi
- import (
- "Cold_Api/models/Device"
- "bytes"
- "encoding/json"
- "github.com/beego/beego/v2/adapter/orm"
- "github.com/beego/beego/v2/core/logs"
- beego "github.com/beego/beego/v2/server/web"
- "io"
- "net/http"
- "strconv"
- "strings"
- "time"
- )
- type T struct {
- Msg string `json:"msg"`
- Code int `json:"code"`
- Data struct {
- Code int `json:"code"`
- Data []struct {
- DeviceGuid string `json:"deviceGuid"`
- SubUid int `json:"subUid"`
- DeviceName string `json:"deviceName"`
- Tmp1 string `json:"tmp1"`
- Tmp2 string `json:"tmp2"`
- Tmp3 string `json:"tmp3"`
- Tmp4 string `json:"tmp4"`
- Hum1 string `json:"hum1"`
- Hum2 string `json:"hum2"`
- Lux1 string `json:"lux1"`
- Power string `json:"power"`
- Signal string `json:"signal"`
- Position string `json:"position"`
- Address string `json:"address"`
- LastDataTime int64 `json:"lastDataTime"`
- LastSessionTime int64 `json:"lastSessionTime"`
- LastAddressTime string `json:"lastAddressTime"`
- AlarmState bool `json:"alarmState"`
- WarnState bool `json:"warnState"`
- WaybillStart string `json:"waybillStart"`
- WaybillEnd string `json:"waybillEnd"`
- WaybillState string `json:"waybillState"`
- } `json:"data"`
- Time string `json:"time"`
- Message string `json:"message"`
- Error string `json:"error"`
- } `json:"data"`
- }
- func GetRealtime() {
- url, err := beego.AppConfig.String("apiurl")
- if err != nil {
- logs.Debug("无法获取apiurl:", err)
- return
- }
- o := orm.NewOrm()
- var DeviceList []string
- //查询设备表中精创设备
- sql := "select t_sn from device where Islocal = '1'"
- rows, err := o.Raw(sql).QueryRows(&DeviceList)
- if rows == 0 {
- logs.Debug("未查询到设备")
- return
- }
- if err != nil {
- logs.Debug("查询设备表失败:", err)
- return
- }
- marshal, err := json.Marshal(DeviceList)
- if err != nil {
- logs.Debug("json转换失败:", err)
- return
- }
- resp, err := http.Post(url+"getRealTimeData", "application/json", bytes.NewReader(marshal))
- if err != nil {
- logs.Debug("请求失败:", err)
- return
- }
- defer resp.Body.Close()
- body, _ := io.ReadAll(resp.Body)
- var temp T
- err = json.Unmarshal(body, &temp)
- if err != nil {
- logs.Error("解析失败:", err)
- return
- }
- if temp.Code != 0 {
- logs.Error("请求失败:", temp.Msg)
- return
- }
- for _, v := range temp.Data.Data {
- var T_t, T_rh float64
- if len(v.Tmp1) != 0 {
- Tmp1 := strings.Trim(v.Tmp1, "℃")
- T_t, err = strconv.ParseFloat(Tmp1, 32)
- if err != nil {
- logs.Error("转换温度失败:", err)
- return
- }
- }
- if len(v.Hum1) != 0 {
- Hum1 := strings.Trim(v.Hum1, "%RH")
- T_rh, err = strconv.ParseFloat(Hum1, 32)
- if err != nil {
- logs.Error("转换湿度失败:", err)
- return
- }
- }
- var T_time time.Time
- if v.LastSessionTime != 0 {
- T_time = time.Unix(v.LastSessionTime, 0).Local()
- }
- key := v.DeviceGuid + "|" + strconv.Itoa(v.SubUid+1)
- r, is := Device.Read_DeviceSensorParameter(v.DeviceGuid, v.SubUid+1)
- if !is {
- logs.Error("获取最新设备参数失败:", err)
- return
- }
- Device.RedisDeviceData_Set(key, Device.DeviceData_{
- T_rh: float32(T_rh),
- T_t: float32(T_t),
- T_time: T_time,
- T_site: v.Position,
- T_sp: r.Id,
- T_id: v.SubUid + 1,
- })
- }
- }
|