main.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package main
  2. import (
  3. "context"
  4. "github.com/gogf/gf/frame/g"
  5. "github.com/gogf/gf/os/glog"
  6. "github.com/gogf/gf/os/gproc"
  7. "os"
  8. "pt100-gateway/server"
  9. "sparrow-sdk/config"
  10. gatewayV2 "sparrow-sdk/v2"
  11. )
  12. func main() {
  13. ctx := context.Background()
  14. err := glog.SetLevelStr(g.Cfg().GetString("Server.RunMode"))
  15. if err != nil {
  16. panic(err)
  17. }
  18. gw := gatewayV2.NewGateway(&config.Config{
  19. SparrowServer: g.Cfg().GetString("Sparrow.Server"),
  20. ProductKey: g.Cfg().GetString("Sparrow.ProductKey"),
  21. Protocol: "mqtt",
  22. DeviceCode: g.Cfg().GetString("Sparrow.DeviceCode"),
  23. Version: "1.0.0",
  24. Debug: g.Cfg().GetBool("Sparrow.Debug"),
  25. })
  26. if _, err = gw.Register(); err != nil {
  27. panic(err)
  28. }
  29. if _, err = gw.Authentication(); err != nil {
  30. panic(err)
  31. }
  32. // 通用指令回调
  33. gw.SetReportCommandCallback(func(deviceCode, subId string) error {
  34. return nil
  35. })
  36. go gw.Connect()
  37. srv := server.NewServer(
  38. ctx,
  39. g.Cfg().GetString("Server.Addr"),
  40. g.Cfg().GetInt("Server.Port"),
  41. gw,
  42. )
  43. go func() {
  44. if err := srv.Start(); err != nil {
  45. panic(err)
  46. }
  47. }()
  48. closeReportChan := make(chan struct{})
  49. go func() {
  50. for {
  51. select {
  52. case msg := <-gw.RecvCommand():
  53. if msg.Data.Cmd == "SetOffset" {
  54. }
  55. case <-closeReportChan:
  56. return
  57. }
  58. }
  59. }()
  60. gproc.AddSigHandlerShutdown(func(sig os.Signal) {
  61. gw.Close()
  62. srv.Stop()
  63. })
  64. gproc.Listen()
  65. }