本文为您介绍使用OpenAPI通过自定义Topic向设备发布消息的完整示例。
查看OpenAPI文档
通过阅读API列表得知,通过自定义Topic向设备发布消息的OpenAPI为Pub。请您根据文档,了解调用该接口需要准备的数据和权限。
创建RAM用户并授权
身份
您可以使用阿里云账号(主账号)、RAM用户、RAM角色调用该接口,有关各种身份的差异,请参见身份、凭据、授权。本案例中,我们使用RAM用户进行接口调用。
登录RAM访问控制,创建一个仅允许API调用的RAM用户,并记录AccessKey信息。具体操作,请参见创建RAM用户。
授权
访问RAM用户列表,单击目标RAM用户操作列的添加权限。
在选择权限区块中输入关键字
IoT
进行搜索,选择AliyunIOTFullAccess策略。说明物联网平台的系统权限策略如下:
AliyunIOTFullAccess:管理物联网平台(IoT)的权限。
AliyunIOTReadOnlyAccess:只读访问物联网平台(IoT)的权限。
关于如何创建自定义权限,请参见自定义权限。
单击确定,完成授权操作。
凭证
在创建RAM用户时会默认生成一个AccessKey,可直接使用。
您也可以进入到对应的RAM用户详情页面,在认证管理页签,单击创建AccessKey,创建一个新的AccessKey。具体操作,请参见创建AccessKey。
调用OpenAPI
本文以Python语言为例,为您介绍OpenAPI的调用方法。
准备Python环境
先查看当前系统是否安装Python3版本。
Linux和macOS系统
打开系统终端,输入
python3 --version
。系统回显Python版本号,表示已安装Python3。否则,执行下一步,安装Python3。
Windows系统
在Python的安装路径下,双击python.exe,打开命令提示符页面。您也可通过键盘快捷键Win+R打开运行对话框,输入命令python,单击确定。
系统回显类似如下,进入Python交互式环境,表示Python安装成功。
Python 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
下载并安装Python。
Python 3的下载地址,请参见Python 3。
Linux
获取Python包。
wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz
解压缩Python包。
tar -zxvf Python-3.9.6.tgz
切换到解压后的目录,指定安装路径。
cd Python-3.9.6 sudo ./configure --prefix=/usr/bin/python3
编译并安装Python。
make make install
配置Python3环境变量。
例如Ubuntu的Linux系统,可执行以下命令。
打开
.bashrc
文件,在文件底部nano ~/.bashrc
在文件底部添加以下内容,保存并关闭。
export PATH=$PATH:/usr/bin/python3
执行以下命令,更新环境变量。
source ~/.bashrc
执行以下命令,可查看环境变量包含Python3安装路径。
echo $PATH
macOS
该系统自带有Python2.7环境,推荐下载最新版安装Python 3.x版本。
下载安装包后,双击安装包,进入Python安装向导对话框。
单击继续,按照指示进行配置和安装。
根据Python3安装路径,配置对应环境变量。
Windows
下载后,双击下载包,进入Python安装向导,使用默认设置并选中Add Python 3.9 to PATH。
单击Install Now,开始安装。
安装完成后,单击Close,关闭安装窗口。
参照步骤1查看Python3版本,显示对应版本,表示安装成功。
配置环境变量
为避免将AccessKey硬编码到业务代码中带来的安全风险,本示例采用配置环境变量的方法管理AccessKey。
Linux和macOS系统
将以下命令中的
<access_key_id>
和<access_key_secret>
替换为您自己的AccessKey ID和AccessKey Secret,输入到终端执行。export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
Windows系统
新建环境变量文件,添加环境变量
ALIBABA_CLOUD_ACCESS_KEY_ID
和ALIBABA_CLOUD_ACCESS_KEY_SECRET
,并写入已准备好的AccessKey ID和AccessKey Secret,然后重启Windows系统。
安装依赖
pip3 install alibabacloud_tea_openapi
pip3 install alibabacloud_iot20180120
pip3 install alibabacloud-tea-console
下载示例代码
请求参数IotInstanceId、ProductKey、TopicFullName、MessageContent输入对应值,其他参数可不填写。
单击发起调用。
调用结果页签显示调用成功后,先单击SDK示例页签,再单击Python页签。
单击下载完整工程,下载示例代码包。
在本地解压示例代码包,并进入alibabacloud_sample目录。
运行代码
执行以下命令:
python sample.py
输出结果如下:
{
"headers": {
"date": "Thu, 10 Aug 2023 09:26:52 GMT",
"content-type": "application/json;charset=utf-8",
"content-length": "99",
"connection": "keep-alive",
"keep-alive": "timeout=25",
"access-control-allow-origin": "*",
"access-control-expose-headers": "*",
"x-acs-request-id": "1296FD43-4BD3-5F80-AB2C-1ADF99B02253",
"x-acs-trace-id": "aee72e4c5e***************77fc9d",
"etag": "9umD************cjYJ8og9"
},
"statusCode": 200,
"body": {
"MessageId": 1689000000000004736,
"RequestId": "1296FD43-4BD3-5F80-AB2C-1ADF99B02253",
"Success": true
}
}