func (d *Device) statusHandler(client *MQTT.Client, msg MQTT.Message) { status := protocol.Data{} err := status.UnMarshal(msg.Payload()) if err != nil { fmt.Println(err) return } fmt.Println("device receiving status set : ") for _, one := range status.SubData { fmt.Println("subdeviceid : ", one.Head.SubDeviceid) fmt.Println("no : ", one.Head.PropertyNum) fmt.Println("params : ", one.Params) } }
func (d *Device) reportStatus(client *MQTT.Client) { payloadHead := protocol.DataHead{ Flag: 0, Timestamp: uint64(time.Now().Unix() * 1000), } param := []interface{}{uint8(1)} params, err := tlv.MakeTLVs(param) if err != nil { fmt.Println(err) return } sub := protocol.SubData{ Head: protocol.SubDataHead{ SubDeviceid: uint16(1), PropertyNum: uint16(1), ParamsCount: uint16(len(params)), }, Params: params, } status := protocol.Data{ Head: payloadHead, SubData: []protocol.SubData{}, } status.SubData = append(status.SubData, sub) payload, err := status.Marshal() if err != nil { fmt.Println(err) return } client.Publish("s", 1, false, payload) }