package iot import ( "errors" "time" "speech-nlu-parse/global" "speech-nlu-parse/pkg/logger" "github.com/parnurzeal/gorequest" ) // TODO 在使用前,请在结构体struct中手动添加 json 注解 // 有注释的地方为json注解的固定内容,其他为默认内容 var cmdUrl = global.InternalRemoteSetting.IOT.IotHost + global.InternalRemoteSetting.IOT.SendDevCmd // 控制命令请求数据 type _devCmd struct { Mac string SubID string //subId Opt []string P []interface{} Cid string } // 设备响应参数 type devResponse struct { R int T string Msg string Opt []string P []interface{} } // 控制命令下发 func HandleDevCmd(mac string, params map[string]interface{}) error { opt := make([]string, 0) p := make([]interface{}, 0) for k, v := range params { opt = append(opt, k) p = append(p, v) } devCmd := _devCmd{ Mac: mac, Cid: "app", Opt: opt, P: p, } //fmt.Printf("devCmd:%+v\n", devCmd) var dr devResponse req := gorequest.New().Timeout(3 * time.Second) _, body, errs := req.Post(cmdUrl).Send(devCmd).EndStruct(&dr) if len(errs) > 0 { global.Logger.Errorf("get device command interface error: %v", errs) return errs[0] } global.Logger.WithFields(logger.Fields{ "sendBody": devCmd, "recvRawBody": string(body), "recvBody": dr, }).Debugf("success") if dr.R != 200 { return errors.New(dr.Msg) } return nil }