1.4.4.1 Hello World

优质
小牛编辑
128浏览
2023-12-01

更新时间:2018-10-30 11:32:18

简介

万丈高楼平地起,物联网丰富的应用场景离不开数据通信。本文介绍一个最简示例,用于演示搭载 AliOS Things 的设备与 Link Develop(以下简称LD) 的集成。此处我们姑且称之为 “物联网的 Hello World”。
本示例源码: simple_mqtt

simple_mqtt
├── README.md
├── simple_mqtt.c
├── simple_mqtt.mk
└── ucube.py

功能介绍

设备端 AliOS Things 启动后初始化与 LD 云端的 MQTT 连接,然后在串口 cli 中提供一个 pub 命令,用来向云端固定 topic 发布消息,消息格式遵循 Alink 协议规范。同时会订阅接收云端下发到固定 topic 的消息。
简而言之,本示例通过 MQTT 完成了最基本的设备端和云端双向通信。

环境要求

设备端环境

任意具有接入互联网能力,且已完成移植 AliOS Things 移植的设备,如:ST开发板, NXP开发板, TI开发板
亦可请参考其他已支持的硬件

云端环境

  • Link Develop 注册账号(与阿里云账号通用)。

  • 在 LD 产品创建好以后,在设备模型的自定义功能处,新增两个属性, 一个用于上行消息, 另一个用于下行消息, 均设为字符串类型。如图:


因此,消息内容的结构如下所示:

```
"params": {
    "down": "downstream payload",
    "up": "upstream payload"
}
```
  • 设备模型创建完成后,新增一个测试设备,记下如下所示的三元组信息。 该组信息会用于烧写到实际设备中,而这个测试设备,则会是实际设备在云端的一个影子。
    • PRODUCT_KEY
    • DEVICE_NAME
    • DEVICE_SECRET

设备端编译构建

前置开发环境搭建请移步开发准备

example/simple_mqtt.c 中, 将以下几个字段更新为上述生成的对应信息,如:

#define PRODUCT_KEY             "b1VxeCKSQeO"
#define DEVICE_NAME             "simple"
#define DEVICE_SECRET           "x9D0k0DjwtYG734unBm0YYsyoMRxgCNR"

然后在 AliOS Things 代码环境中编译出目标.bin文件,如:

aos make simple_mqtt@developerkit

烧录到板子中:

aos upload simple_mqtt@developerkit

注意: 此处烧录方式根据不同硬件会有所不同,此处以 Developer kit 为例

运行

启动并连网

烧录完成以后重新上电板子,在串口中 cli 中使用 netmgr 命令进行连网:

# netmgr connect ssid password

其中 ssidpassword 是WiFi路由器的名字和密码。
看到如下信息以后即说明连网完成,并已经和 LD 云端建立好 MQTT 连接。

[inf] _TLSConnectNetwork(357):   . Setting up the SSL/TLS structure...
[inf] _TLSConnectNetwork(367):  ok
[inf] _TLSConnectNetwork(402): Performing the SSL/TLS handshake...
[inf] _TLSConnectNetwork(410):  ok
[inf] _TLSConnectNetwork(414):   . Verifying peer X.509 certificate..
[inf] _real_confirm(93): certificate verification result: 0x00
[005598]<V> mqtt service
[005652]<V> subscribe success, packet-id=1
#

发送上行消息

在串口 cli 用 pub 命令发送上行消息:

# pub [payload]

其中 payload 是消息内容,可以任意输入你喜欢的字符,回车即发射。
此时在 LD 的设备调试日志中,可以看到上行的消息,比如此处发送了 helloworld-from-my-device

# pub helloworld-from-my-device
[499130]<V> id: 5, publish msg: {"id":"5","version":"1.0","method":"thing.event.property.post","params":{"up":"helloworld-from-my-device"}}

接收下行消息

如果我们按上图所示,在LD控制台的调试功能处选择下行消息,方法选设置,点击右侧发送指令按钮,即可在设备的串口日志中,看到如下信息:

# [509540]<V> ----
[509540]<V> Topic: '/sys/b1VxeCKSQeO/simple/thing/service/property/set' (Length: 50)
[509550]<V> Payload: '{"method":"thing.service.property.set","id":"64002324","params":{"down":"hi from link develop to device"},"version":"1.0.0"}' (Length: 124)
[509570]<V> ----

结语

至此,已经完成了物联网的基础:设备端和云端的双向通信。
一切尽在掌控,可以开始进一步的探索了,请参考更多示例