deviceStatus.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package deviceStatus
  2. import (
  3. "fmt"
  4. "github.com/gogf/gf/database/gredis"
  5. "github.com/gogf/gf/encoding/gjson"
  6. )
  7. const (
  8. KeyPrefix = "status:device:"
  9. dataExpires = 7200
  10. )
  11. type SplitStatus struct {
  12. Power int `json:"power"`
  13. Mode int `json:"mode"`
  14. FanSpeed int `json:"fan_speed"`
  15. SetTemp int `json:"set_temp"`
  16. EnvTemp int `json:"env_temp"`
  17. EnvCo2 int `json:"env_co2"`
  18. EnvPm25 int `json:"env_pm25"`
  19. StatusCode int `json:"status_code"`
  20. AirMode int `json:"air_mode"`
  21. AcType int `json:"ac_type"`
  22. AirType int `json:"air_type"`
  23. HumType int `json:"hum_type"`
  24. }
  25. type DevStatusManager struct {
  26. redisClient *gredis.Redis
  27. }
  28. func NewDevStatusManager(host string, port int) *DevStatusManager {
  29. red := gredis.New(&gredis.Config{
  30. Host: host,
  31. Port: port,
  32. Db: 14,
  33. MaxActive: 100,
  34. })
  35. mgr := &DevStatusManager{
  36. redisClient: red,
  37. }
  38. return mgr
  39. }
  40. func (mgr *DevStatusManager) GetDeviceStatus(id string) (*gjson.Json, error) {
  41. key := KeyPrefix + id
  42. fmt.Println(key)
  43. var status SplitStatus
  44. // get status from redis
  45. result, err := mgr.redisClient.DoVar("GET", key)
  46. if err != nil {
  47. return nil, err
  48. }
  49. err = result.Struct(&status)
  50. return gjson.New(result.String()), nil
  51. }