task.go 715 B

1234567891011121314151617181920212223242526272829
  1. package timer
  2. import (
  3. "smartIntersection_edge/service"
  4. "smartIntersection_edge/util/logger"
  5. "time"
  6. )
  7. func IsOnline() {
  8. t := time.NewTicker(1 * time.Minute) //每分钟
  9. for {
  10. select {
  11. case <-t.C:
  12. for _, device := range service.Devices {
  13. //符合条件
  14. if time.Now().Add(-2*time.Minute).After(device.LastTime) || device.LastTime.IsZero() {
  15. //TODO 向云端上报设备离线
  16. topic := service.MqttService.GetTopic(device.Info.Sn, service.TopicChanStatus)
  17. err := service.MqttService.Publish(topic, 0)
  18. delete(service.Devices, device.Info.Sn)
  19. if err != nil {
  20. continue
  21. }
  22. logger.Logger.Infof("%v 设备离线了", device.Info.ScreensName)
  23. }
  24. }
  25. }
  26. }
  27. }