本文为您介绍使用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
    }
}