HaaS轻应用(Python):连接物联网平台并控制设备硬件

简介: 今天要介绍的是HaaS100如何使用micropython ,连接阿里云的物联网平台,并通过云端来控制设备的LED 灯。

1、前言

Python 语言的是一款非常容易使用的解释性语言,它的主要特点如下:

  • 易学易用
  • 可扩展可移植
  • 丰富的三方库

正是由于以上这些特点,使得python在一些逻辑简单,功能复杂的场景应用非常广泛。近几年,随着人工智能的飞速发展,Python 的优点得到的充分的体现,因此成为了AI开发的首选语言。

MicroPython(简称mpy)在保留了python语言主要特性的基础上,他还对嵌入式系统的底层做了非常不错的封装,它的特点如下:

  • 沿用python语法和基本数据结构,保持易学易用性
  • 提供基于嵌入式系统的硬件功能库封装,让嵌入式开发简单便捷

今天要介绍的是HaaS100如何使用micropython ,连接阿里云的物联网平台,并通过云端来控制设备的LED 灯。

2、方案介绍

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

本文通过物联网平台下发修改HaaS100的LED状态的命令,HaaS100上的Python程序接收命令,并控制LED灯。具体交互方案设计如下:

image.png

3、效果视频

LinkKit 控制HaaS100视频详情

4、代码清单

# -*- coding: UTF-8 -*-
 
import iot
 
import utime
 
# 请替换物联网平台申请到的产品和设备信息,可以参考文章:https://blog.csdn.net/HaaSTech/article/details/114360517
 
productKey = "xxxxx"
 
productSecret = "xxxxx"
 
deviceName  =    "xxxxx"
 
deviceSecret  =   "xxxx"
 
 
 
on_connected = False
 
# 初始化linkkit sdk
 
key_info = {
 
    'region' : 'cn-shanghai' ,
 
    'productKey': productKey ,
 
    'deviceName': deviceName ,
 
    'deviceSecret': deviceSecret ,
 
    'productSecret': productSecret
 
}
 
device = iot.Device(key_info)
 
# 物联网平台连接成功的回调函数
 
def on_connect():
 
    global on_connected
 
    on_connected = True
 
 
 
device.on('connect',on_connect)
 
# 设置props 事件接收函数(本案例是云端控制led事件)
 
def on_props(request):
 
    from driver import GPIO
 
    import ujson
 
    ON = 0
 
    OFF = 1
 
    #服务端返回的json 转换成dict
 
    payload = ujson.loads(request)
 
    #获取dict 中的led 状态字段
 
    stat = payload["LEDSwitch"]
 
    gpio = GPIO()
 
    # open 函数支持的参数列表如下:
 
    # led1;led2;led3;led4;led5
 
    gpio.open('led1')
 
    if stat == 1:
 
        gpio.write(ON)
 
    else:
 
        gpio.write(OFF)
 
    utime.sleep_ms(200)
 
    gpio.close()
 
device.on('props',on_props)
 
# 连接物联网平台
 
device.connect()
 
# 触发linkit sdk持续处理server端信息
 
while(True):
 
    # device.do_yield(200)
 
    if on_connected:
 
        print('物联网平台连接成功')
 
        break
 
    else:
 
        utime.sleep(1)
 
 
 
while True:
 
    utime.sleep(0.2)
 
# 断开连接
 
device.close()
 
AI 代码解读

以上就是python 轻应用的主体代码,我们将其保存到文件 LinkKitControlLed.py, 然后拷贝到 sdcard 的根目录。

它的主要功能如下:

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

注意事项:

  • 请务必将代码中以下信息替换成自己的物联网平台上相关信息
PRODUCT_KEY = "a1uTFk4xjko"
 
PRODUCT_SECRET = "xxxxxxx"
 
DEVICE_NAME  =    "mpy_001"
 
DEVICE_SECRET  =   "xxxxxxxxxxxxxxx"
 
AI 代码解读
  • 运行代码之前请务必保证机器联网,python 联网指令如下
python /data/python-apps/wifi/main.py wifi_ssid  wifi_password
AI 代码解读

5、物品清单

5.1、硬件

  • HaaS100 开发板一块
  • 电源一个
  • micro usb 一个
  • sdcard 一个

注意事项:

  • HaaS100支持外接微型SD卡(Micro SD),最大支持64GB数据的存储,SD卡槽位于开发板背,可以外接微型SD存储卡
  • sdcard 格式支持: FAT16/FAT32
  • 本案例中暂时不支持exFAT 格式

5.2、软件

  • 最新的HaaS100 开源代码
  • 串口工具

6、实现步骤

在开始之前,务必保证按照Python轻应用官网中的快速开始章节,烧录官方固件或者自己编译固件烧录。

6.1、创建产品和设备

首先参考文章 https://help.aliyun.com/document_detail/189183.html?spm=a2c4g.11174283.6.572.3a8b1668juSbg2 ,创建一个自己的产品和设备

image.png

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

6.2、创建物模型

image.png

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

image.png

选择属性,输入LED开关, 选中弹出的默认属性, 点击确定即可完成属性的添加

也可以完全自己定义一个属性,确保属性主程序代码中的属性键的名称和 这里一致即可。

创建完成以后,点击发布即可。

6.3、执行轻应用代码

烧录完成以后,插入sdcard, 开机并连接串口

通过串口输入:

python /sdcard/LinkKitControlLed.py
AI 代码解读

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

image.png

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

6.4、发送云端控制指令

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

image.png

如上图所示:

  • 选择监控运维---->在线调试
  • 选择产品mpy_test 和 设备 mpy_001
  • 正常情况下,设备已经在线,我们就可以看到下面的调试选项了
  • 选择属性调试---->默认模块---->LED开关
  • 选择参数 开启-1
  • 点击调试,设置即可

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

image.png

技术交流

Python轻应用继承了Python易学易用的特点,同时提供了基于嵌入式硬件的基础库封装,让开发者可以很方便的通过交互式的环境,实时进行嵌入式开发,让嵌入式开发也变得简单方便。

如需更多技术支持,可加入钉钉开发者群,获取一对一的技术支持!

image.png

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
打赏
0
0
0
0
12436
分享
相关文章
Python AutoML框架选型攻略:7个工具性能对比与应用指南
本文系统介绍了主流Python AutoML库的技术特点与适用场景,涵盖AutoGluon、PyCaret、TPOT、Auto-sklearn、H2O AutoML及AutoKeras等工具,帮助开发者根据项目需求高效选择自动化机器学习方案。
99 1
Python可视化应用——学生成绩分布柱状图展示
本程序使用Python读取Excel中的学生成绩数据,统计各分数段人数,并通过Matplotlib库绘制柱状图展示成绩分布。同时计算最高分、最低分及平均分,实现成绩可视化分析。
44 0
Python数值方法在工程和科学问题解决中的应用
本文探讨了Python数值方法在工程和科学领域的广泛应用。首先介绍了数值计算的基本概念及Python的优势,如易学易用、丰富的库支持和跨平台性。接着分析了Python在有限元分析、信号处理、优化问题求解和控制系统设计等工程问题中的应用,以及在数据分析、机器学习、模拟建模和深度学习等科学问题中的实践。通过具体案例,展示了Python解决实际问题的能力,最后总结展望了Python在未来工程和科学研究中的发展潜力。
企业上网监控系统中红黑树数据结构的 Python 算法实现与应用研究
企业上网监控系统需高效处理海量数据,传统数据结构存在性能瓶颈。红黑树通过自平衡机制,确保查找、插入、删除操作的时间复杂度稳定在 O(log n),适用于网络记录存储、设备信息维护及安全事件排序等场景。本文分析红黑树的理论基础、应用场景及 Python 实现,并探讨其在企业监控系统中的实践价值,提升系统性能与稳定性。
18 1
Python时间序列平滑技术完全指南:6种主流方法原理与实战应用
时间序列数据分析中,噪声干扰普遍存在,影响趋势提取。本文系统解析六种常用平滑技术——移动平均、EMA、Savitzky-Golay滤波器、LOESS回归、高斯滤波与卡尔曼滤波,从原理、参数配置、适用场景及优缺点多角度对比,并引入RPR指标量化平滑效果,助力方法选择与优化。
83 0
​MCP协议深度解析:原理、应用与物联网时代的机遇-优雅草卓伊凡
​MCP协议深度解析:原理、应用与物联网时代的机遇-优雅草卓伊凡
353 40
​MCP协议深度解析:原理、应用与物联网时代的机遇-优雅草卓伊凡
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
94 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
Python:蓝牙心率广播设备监测(BLE 心率监测器)技术解析与实现
本文探讨了如何使用 Python 脚本与支持蓝牙低功耗(BLE)心率广播的设备交互以获取实时心率数据。重点分析了 BLE 协议、GATT 服务模型,以及具体方法。此外,还讨论了华为手表等设备的兼容性问题。
450 19
论上网限制软件中 Python 动态衰减权重算法于行为管控领域的创新性应用
在网络安全与行为管理的学术语境中,上网限制软件面临着精准识别并管控用户不合规网络请求的复杂任务。传统的基于静态规则库或固定阈值的策略,在实践中暴露出较高的误判率与较差的动态适应性。本研究引入一种基于 “动态衰减权重算法” 的优化策略,融合时间序列分析与权重衰减机制,旨在显著提升上网限制软件的实时决策效能。
78 2

物联网

+关注

热门文章

最新文章

相关产品

  • 物联网平台
  • 推荐镜像

    更多
    AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等

    登录插画

    登录以查看您的控制台资源

    管理云资源
    状态一览
    快捷访问