Python轻应用实现远程设备控制

前言

IoT 场景中,一个非常常见的场景就是设备远程控制。我们通过手机端,调用服务端SDK,从而实现对另外一个设备的控制。 今天我们要介绍的就是如何通过阿里云IoT 的 物联网平台和Python 轻应用,轻松实现设备的远程控制功能。

方案介绍

阿里云物联网平台提供安全可靠的设备连接通信能力,支持设备数据采集上云,规则引擎流转数据和云端数据下发设备端。 此外,也提供方便快捷的设备管理能力,支持物模型定义,数据结构化存储,和远程调试、监控、运维。


本文使用的是自定义物模型,通过定义一个LedSwitch 属性,云端通过改变这个属性值,实现对设备端Led的控制,具体交互方案设计如下:

LinkKit

物品清单

硬件

  1. HaaS100 开发板一块

  2. 电源一个

  3. micro usb 一个

  4. sdcard 一个

注意事项:

  1. HaaS100支持外接微型SD卡(Micro SD),最大支持64GB数据的存储,SD卡槽位于开发板背,可以外接微型SD存储卡;

  2. sdcard 格式支持: FAT16/FAT32,本案例中暂时不支持exFAT 格式;

  3. 本案例中暂时不支持exFAT 格式;

软件

1、最新的HaaS100 开源代码 2、串口工具 3、Python轻应用代码

以上就是 Python 轻应用的主体代码,我们将其保存到文件 LinkKitControlLed.py, 然后拷贝到 sdcard 的根目录。它的主要功能如下:

  1. 连接物联网平台

  2. 等待物联网平台的云端消息,并处理

注意事项

1、信息更新: 请务必将代码中的

PRODUCT_KEY = “xxxxxx”

PRODUCT_SECRET = “xxxxxxx”

DEVICE_NAME = “xxxxx”

DEVICE_SECRET = “xxxxxx”

替换成自己的物联网平台上相关信息

2、设备联网: 运行代码之前请务必保证机器联网,Python 联网指令如下

python /data/python-apps/wifi/main.py your_ssid your_password

实现步骤

首先参考 文章 创建产品和设备。

鉴权信息

如上图所示,笔者创建的产品是 mpy_test, 设备是mpy_001

鉴权信息

如上图所示,首先点击产品,选择我们自己创建的产品mpy_test, 然后点击编辑草稿,添加自定义功能 进入下图中的界面

鉴权信息

选择属性,输入LED开关, 选中弹出的默认属性, 点击确定即可完成属性的添加。 也可以完全自己定义一个属性,确保属性主程序代码中的属性键的名称和 这里一致即可。 创建完成以后,点击发布即可。

烧录完成以后,插入sdcard, 开机并连接串口。通过串口输入:

python /sdcard/LinkKitControlLed.py

就可以完成轻应用的启动,启动成功以后,串口会出现如下打印:

鉴权信息

连接成功以后,主程序就会等待云端的消息分发,收到消息以后就会通过on_prop_set 函数处理.

在设备属性发布以后,我们就可以开始在线调试了

鉴权信息

如上图所示:

  • 选择监控运维—->在线调试

  • 选择产品mpy_test 和 设备 mpy_001

  • 正常情况下,设备已经在线,我们就可以看到下面的调试选项了

  • 选择属性调试—->默认模块—->LED开关

  • 选择参数  开启-1

  • 点击调试,设置即可

发送成功以后,设备端串口会收到如下打印,最终调用回调函数,开启设备上的led 灯,从而实现上图中的效果

鉴权信息