device.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package service
  2. import (
  3. "fmt"
  4. "server/dao"
  5. "server/logger"
  6. "server/modbus"
  7. "server/model"
  8. "server/utils"
  9. )
  10. func SaveData(data []dao.Region) error {
  11. if len(data) == 0 {
  12. return fmt.Errorf("数据不能为空")
  13. }
  14. err := utils.SaveData("static/data.json", data)
  15. if err != nil {
  16. return err
  17. }
  18. // Remove the redundant return err statement.
  19. return nil // Return nil to indicate success
  20. }
  21. func DeviceLoopSwitch(deviceLoop dao.DeviceLoop) error {
  22. data := modbus.DeviceLoopSwitch(deviceLoop.ID, deviceLoop.State)
  23. logger.Get().Println(deviceLoop.DeviceId)
  24. logger.Get().Println(model.ConnectionMap)
  25. if model.ConnectionMap[deviceLoop.DeviceId] == nil {
  26. return fmt.Errorf("设备连接丢失")
  27. }
  28. _, dev, _ := utils.GetDataByDeviceId(deviceLoop.DeviceId)
  29. if dev.State == 0 {
  30. return fmt.Errorf("设备离线无法操作")
  31. }
  32. err := utils.WriteDevice(data, model.ConnectionMap[deviceLoop.DeviceId])
  33. if err != nil {
  34. fmt.Printf("Write device error: %v\n", err)
  35. return err
  36. }
  37. return nil
  38. }
  39. func DeviceSwitch(req model.DeviceRequest) error {
  40. data := modbus.DeviceSwitch(req.Device.LoopNumber, req.State)
  41. if model.ConnectionMap[req.Device.Sn] == nil {
  42. return fmt.Errorf("设备连接丢失")
  43. }
  44. err := utils.WriteDevice(data, model.ConnectionMap[req.Device.Sn])
  45. if err != nil {
  46. logger.Get().Errorf("Write device error: %v\n", err)
  47. return err
  48. }
  49. return nil
  50. }
  51. func DeviceBatchSwitch(req model.DevicesRequest) error {
  52. for _, device := range req.Devices {
  53. if device.State == 0 {
  54. continue
  55. }
  56. data := modbus.DeviceSwitch(device.LoopNumber, req.State)
  57. if model.ConnectionMap[device.Sn] == nil {
  58. return fmt.Errorf("设备连接丢失")
  59. }
  60. err := utils.WriteDevice(data, model.ConnectionMap[device.Sn])
  61. if err != nil {
  62. fmt.Printf("Write device error: %v\n", err)
  63. return err
  64. }
  65. }
  66. return nil
  67. }
  68. // GetOnlineDevice 获取在线设备 总共设备 在线率
  69. func GetOnlineDevice() (total, online int) {
  70. devices, err := utils.GetOnlineDevices()
  71. if err != nil {
  72. logger.Get().Errorf("GetOnlineDevices err = %s\n", err.Error())
  73. return
  74. }
  75. allDevices, err := utils.GetAllDevices()
  76. if err != nil {
  77. logger.Get().Errorf("GetAllDevices err = %s\n", err.Error())
  78. return
  79. }
  80. return len(allDevices), len(devices)
  81. }
  82. func GetSunDevices() (devices []dao.Device, err error) {
  83. allDevices, err := utils.GetAllDevices()
  84. if err != nil {
  85. return nil, err
  86. }
  87. for _, device := range allDevices {
  88. if device.IsSun {
  89. devices = append(devices, device)
  90. }
  91. }
  92. return
  93. }
  94. func UpdateRegisterAddress(deviceId string) error {
  95. err := utils.WriteDevice(modbus.UpdateRegisterAddress(), model.ConnectionMap[deviceId])
  96. if err != nil {
  97. logger.Get().Errorf("UpdateRegisterAddress error: %v\n", err)
  98. return err
  99. }
  100. return nil
  101. }
  102. func CommandPub(id, hexStr string) {
  103. modbus.CommandPub(id, hexStr)
  104. }