operate.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package modbus
  2. import (
  3. "server/logger"
  4. "server/model"
  5. "server/utils"
  6. "time"
  7. )
  8. // GetSunPowerInfo 获取太阳能信息
  9. func GetSunPowerInfo() error {
  10. for id, conn := range model.ConnectionMap {
  11. _, dev, err := utils.GetDataByDeviceId(id)
  12. if dev.IsSun && dev.State == 1 { //打开 并且在线
  13. err = utils.WriteDevice(SolarEnergyData(), conn)
  14. logger.Get().Info(dev.Sn + "SunPowerInfo 发送")
  15. if err != nil {
  16. return err
  17. }
  18. }
  19. }
  20. return nil
  21. }
  22. // GetDeviceInfo 获取设备信息
  23. func GetDeviceInfo() {
  24. for id, conn := range model.ConnectionMap {
  25. _, dev, _ := utils.GetDataByDeviceId(id)
  26. utils.WriteDevice(ReadDeviceInfo(dev.LoopNumber), conn)
  27. }
  28. }
  29. // DealWithOffline 处理离线
  30. func DealWithOffline() {
  31. regions, err := utils.LoadData()
  32. if err != nil {
  33. logger.Get().Errorln("离线" + err.Error())
  34. return
  35. }
  36. for i, region := range regions {
  37. for i2, device := range region.Devices {
  38. if time.Now().After(device.OnlineTime.Add(4*time.Minute)) && regions[i].Devices[i2].State != 0 {
  39. regions[i].Devices[i2].State = 0
  40. }
  41. }
  42. }
  43. if len(regions) == 0 {
  44. return
  45. }
  46. err = utils.SaveData("static/data.json", regions)
  47. logger.Get().Errorln("离线保存" + err.Error())
  48. }