利用华为云,mqtt协议来上传一些数据。使用的例程是FRDM_K64的lwip_mqtt例程 关键点,一方面要在华为云创建设备,获得准备用来通信的数据,另一方面则是组织需要传递的topic,还有就是将需要传递的数据,使用json来表示 在华为云申请完设别以后可以获得名字和密码,client id还有主机服务器地址,在lwip_mqtt_freertos.c文件里宏定义这些参数 同时需要为这个设备添加属性,这样我们就可以往这个属性写值。我们添加一个adc_value的属性,创建设备,添加属性华为云都有说明文档不再赘述。 查阅华为云文档可以知道,如果要写数据进去,就要使用如下数据格式,topic要report这json字符串 我们要传递的json格式应该长这样,event_time可以不用改值,因为我们这个mqtt并不需要时间校验。 { "services":[{ "service_id":"adc_value", "properties":{ "adc_value": 57 }, "event_time":"2020081013" }
} 于是我们的代码,将这段字符分成三部分,adc值为一部分,adc值之前和之后各一部分,adc获得数据以后,拼接这三部分 然后根据查阅的文档,定义report这个topic 在publish_message函数里,使用mqtt_publish来上报数据。
mqtt_publish(mqtt_client, topic, message,strlen(message), 1, 0, mqtt_message_published_cb, (void *)topic); 结果如图 串口打印 页面结果 如果值没更新,华为云有消息日志可以查看消息到底是否成功发送
|