deviceStatus.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package deviceStatus
  2. import (
  3. "github.com/gogf/gf/database/gredis"
  4. )
  5. var StatusKey = map[string]string{
  6. "1pw4umsiq2hd4w7p7o68k69bb0bnlzw0": "device:split:status:",
  7. "1umcgk0i6m0ch45z0hbgrf8900k4s576": "device:main:status:",
  8. "1pw4umsgxzld8kwvsm28ndz2f0dktty8": "device:main:status:",
  9. "1pw4ums6ty0d5pyua33f65h100yf45z2": "device:ffx:status:",
  10. "1pw4umsgxzlda7g4p1zcd6v2m0ukxftv": "device:newfan:status:",
  11. "1pw4umsimu4dcvsvph9iepl300r7d7v9": "device:wifi:status:",
  12. "1pw4umsgxzldbd8wyvknk623f0e2obdb": "device:fp:status:",
  13. "1pw4umsgxzld9eikeie2o822g0hy0yyn": "device:th4G:status:",
  14. "1pw4umsiq2hd4hplv2mhp9mba0l1bv87": "device:twb:status:",
  15. "1pw4umsgxzldbd6c46r0qpn3e0jekjgj": "device:wj:status:",
  16. }
  17. var InfoKey = map[string]string{
  18. "1pw4umsiq2hd4w7p7o68k69bb0bnlzw0": "device:split:info:",
  19. "1umcgk0i6m0ch45z0hbgrf8900k4s576": "device:main:info:",
  20. "1pw4umsgxzld8kwvsm28ndz2f0dktty8": "device:main:info:",
  21. "1pw4ums6ty0d5pyua33f65h100yf45z2": "device:ffx:info:",
  22. "1pw4umsgxzlda7g4p1zcd6v2m0ukxftv": "device:newfan:info:",
  23. "1pw4umsimu4dcvsvph9iepl300r7d7v9": "device:wifi:info:",
  24. "1pw4umsgxzldbd8wyvknk623f0e2obdb": "device:fp:info:",
  25. "1pw4umsgxzld9eikeie2o822g0hy0yyn": "device:th4G:info:",
  26. "1pw4umsiq2hd4hplv2mhp9mba0l1bv87": "device:twb:info:",
  27. "1pw4umsgxzldbd6c46r0qpn3e0jekjgj": "device:wj:info:",
  28. }
  29. var EventKey = map[string]string{
  30. "1pw4umsiq2hd4w7p7o68k69bb0bnlzw0": "device:split:event:",
  31. "1umcgk0i6m0ch45z0hbgrf8900k4s576": "device:main:event:",
  32. "1pw4umsgxzld8kwvsm28ndz2f0dktty8": "device:main:event:",
  33. "1pw4ums6ty0d5pyua33f65h100yf45z2": "device:ffx:event:",
  34. "1pw4umsgxzlda7g4p1zcd6v2m0ukxftv": "device:newfan:event:",
  35. "1pw4umsimu4dcvsvph9iepl300r7d7v9": "device:wifi:event:",
  36. "1pw4umsgxzldbd8wyvknk623f0e2obdb": "device:fp:event:",
  37. "1pw4umsgxzld9eikeie2o822g0hy0yyn": "device:th4G:event:",
  38. "1pw4umsiq2hd4hplv2mhp9mba0l1bv87": "device:twb:event:",
  39. "1pw4umsgxzldbd6c46r0qpn3e0jekjgj": "device:wj:event:",
  40. }
  41. const (
  42. dataExpires = 7200
  43. )
  44. type SplitStatus struct {
  45. Power int `json:"power"`
  46. Mode int `json:"mode"`
  47. FanSpeed int `json:"fan_speed"`
  48. SetTemp int `json:"set_temp"`
  49. EnvTemp int `json:"env_temp"`
  50. EnvCo2 int `json:"env_co2"`
  51. EnvPm25 int `json:"env_pm25"`
  52. StatusCode int `json:"status_code"`
  53. AirMode int `json:"air_mode"`
  54. AcType int `json:"ac_type"`
  55. AirType int `json:"air_type"`
  56. HumType int `json:"hum_type"`
  57. }
  58. type DevStatusManager struct {
  59. redisClient *gredis.Redis
  60. }
  61. func NewDevStatusManager(host string, port int) *DevStatusManager {
  62. red := gredis.New(&gredis.Config{
  63. Host: host,
  64. Port: port,
  65. Db: 14,
  66. MaxActive: 100,
  67. })
  68. mgr := &DevStatusManager{
  69. redisClient: red,
  70. }
  71. return mgr
  72. }
  73. func (mgr *DevStatusManager) GetDeviceStatus(id, productId string) (string, error) {
  74. key := StatusKey[productId] + id
  75. // get status from redis
  76. result, err := mgr.redisClient.DoVar("GET", key)
  77. if err != nil {
  78. return "", err
  79. }
  80. return result.String(), nil
  81. }
  82. func (mgr *DevStatusManager) GetDeviceInfo(id, productId string) (string, error) {
  83. key := InfoKey[productId] + id
  84. // get status from redis
  85. result, err := mgr.redisClient.DoVar("GET", key)
  86. if err != nil {
  87. return "", err
  88. }
  89. return result.String(), nil
  90. }
  91. func (mgr *DevStatusManager) GetDeviceStatusByKey(key string) (string, error) {
  92. // get status from redis
  93. result, err := mgr.redisClient.DoVar("GET", key)
  94. if err != nil {
  95. return "", err
  96. }
  97. return result.String(), nil
  98. }
  99. func (mgr *DevStatusManager) GetWeatherInfo(location string) (string, error) {
  100. key := "weather:city:" + location
  101. result, err := mgr.redisClient.DoVar("GET", key)
  102. if err != nil {
  103. return "", err
  104. }
  105. return result.String(), nil
  106. }
  107. func (mgr *DevStatusManager) SetWeatherInfo(location string, info string) error {
  108. key := "weather:city:" + location
  109. _, err := mgr.redisClient.DoVar("SET", key, info)
  110. if err != nil {
  111. return err
  112. }
  113. _, err = mgr.redisClient.Do("EXPIRE", key, 3600)
  114. if err != nil {
  115. return err
  116. }
  117. return nil
  118. }
  119. func (mgr *DevStatusManager) GetDeviceEvent(id, productId string) (string, error) {
  120. key := EventKey[productId] + id
  121. result, err := mgr.redisClient.DoVar("GET", key)
  122. if err != nil {
  123. return "", err
  124. }
  125. return result.String(), nil
  126. }