1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package main
- import (
- "context"
- "fmt"
- "github.com/gogf/gf/v2/encoding/gjson"
- "github.com/gogf/gf/v2/os/glog"
- "github.com/gogf/gf/v2/os/gproc"
- "os"
- "sparrow-sdk/config"
- "sparrow-sdk/protocal"
- gatewayV2 "sparrow-sdk/v2"
- "water-system-gateway/protocol"
- "water-system-gateway/server"
- )
- func main() {
- ctx := context.Background()
- err := glog.SetLevelStr(protocol.GetConfig("Server.RunMode").String())
- if err != nil {
- panic(err)
- }
- gw := gatewayV2.NewGateway(&config.Config{
- SparrowServer: protocol.GetConfig("Sparrow.Server").String(),
- ProductKey: protocol.GetConfig("Sparrow.ProductKey").String(),
- Protocol: "mqtt",
- DeviceCode: protocol.GetConfig("Sparrow.DeviceCode").String(),
- Version: "1.0.0",
- Debug: protocol.GetConfig("Sparrow.Debug").Bool(),
- })
- if _, err = gw.Register(); err != nil {
- panic(err)
- }
- if _, err = gw.Authentication(); err != nil {
- panic(err)
- }
- // 通用指令回调
- gw.SetReportCommandCallback(func(deviceCode, subId string) error {
- return nil
- })
- go gw.Connect()
- srv := server.NewServer(
- ctx,
- protocol.GetConfig("Server.Addr").String(),
- protocol.GetConfig("Server.Port").Int(),
- gw,
- )
- go func() {
- if err := srv.Start(); err != nil {
- panic(err)
- }
- }()
- closeReportChan := make(chan struct{})
- go func() {
- for {
- select {
- case msg := <-gw.RecvCommand():
- fmt.Println(msg.Data.Cmd)
- case <-closeReportChan:
- return
- }
- }
- }()
- if err = gw.RegisterCommand("waterSystemControl", func(msg protocal.CloudSend) error {
- var params protocol.ControlArgs
- j := gjson.New(msg.Data.Params)
- err = j.Scan(¶ms)
- glog.Debugf(ctx, "指令:%s, 子设备Id:%s, 参数:%v", msg.Data.Cmd, msg.SubDeviceId, params)
- client := srv.GetClient(msg.SubDeviceId)
- if client != nil {
- if err = client.WaterSystemControl(uint16(params.Address), params.Value); err != nil {
- glog.Errorf(ctx, "执行命令出错:%s", err.Error())
- return err
- }
- }
- return nil
- }); err != nil {
- panic(err)
- }
- gproc.AddSigHandlerShutdown(func(sig os.Signal) {
- gw.Close()
- srv.Stop()
- })
- gproc.Listen()
- }
|