main.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package main
  2. import (
  3. "context"
  4. "dlt645-server/server"
  5. "github.com/gogf/gf/frame/g"
  6. "github.com/gogf/gf/os/glog"
  7. "github.com/gogf/gf/os/gproc"
  8. "os"
  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. go gw.Connect()
  33. srv := server.NewServer(
  34. ctx,
  35. g.Cfg().GetString("Server.Addr"),
  36. g.Cfg().GetInt("Server.Port"),
  37. gw,
  38. )
  39. go func() {
  40. if err := srv.Start(); err != nil {
  41. panic(err)
  42. }
  43. }()
  44. gw.SetReportCommandCallback(func(deviceCode, subId string) error {
  45. client := srv.GetClient(subId)
  46. if client != nil {
  47. if err = client.ReportActivePower(); err != nil {
  48. glog.Errorf("上报数据发生错误:%s", err.Error())
  49. return err
  50. }
  51. }
  52. return nil
  53. })
  54. gproc.AddSigHandlerShutdown(func(sig os.Signal) {
  55. gw.Close()
  56. srv.Stop()
  57. })
  58. gproc.Listen()
  59. }