阿里云物联网平台体验(树莓派+Python篇)

阿里云物联网平台体验(树莓派+Python)

虽然对阿里云物联网平台比较熟悉了,从一开始就有幸参与了飞凤平台(Link Develop 一站式开发平台的前身)的一些偏硬件接入的工作。但是同时也见证了阿里云物联网团队从几十人到数百人的迅速扩张,其物联网平台所承载的内容也急速膨胀,物联网开发套件基础版、飞凤、Link Develop一站式开发平台、物联网开发平台高级版、飞燕、飞象、城市大脑、农业大脑和工业互联平台不一而足……,很难有精力真正熟悉和了解阿里云的每一款物联网产品。

这次有幸成为物联网平台的阿里云MVP体验官,可以从另外一个角度来体验阿里云物联网平台了。最早我们都是基于MCU单片+.NET MF平台,直接采用MQTT协议实现相关的代码对接阿里云平台,虽然也可以基于组态配置很灵活地接入物联网平台,但是对一些WEB、AI和云端开发的人来说还是有些陌生。正是因为这些需求,JS,Java,Python这些高级语言已经走入了硬件开发,可以直接在MCU芯片上运行,大大提速了物联网云和端的连接工作。

本篇文章就是采用高级语言Python基于树莓派进行物联网云端对接的(后续篇幅会介绍nodejs的云端对接)。

下面是阿里云团队快递过来的相关测试硬件:

1、 树莓派3B+  自带wifi和蓝牙

2、 DHT11温湿度模块

3、 LED灯模块

第一步:我们需要为树莓派安装操作系统

我们安装的是Raspbian固件,可以按如下链接介绍的步骤进行安装:https://www.yuque.com/cloud-dev/iot-tech/ig269q

第二步:安装阿里云平台的Python SDK

执行如下指令:$ pip install aliyun-python-sdk-iot-client

第三步:代码编写

在阿里云平台的说明文档:https://www.yuque.com/cloud-dev/iot-tech/rz6fpl 中已经提供了一个示例代码,不过功能相对简单,就是把两个随机数送到云端。

我们设计一个相对复杂的场景,我们首先要实现双向通信,不仅仅把传感器数据送到云端,我们还要让云端下发一个指令,控制相关的设备。

上传数据我们选择一个真实的传感器 DHT11,可以获取温度和湿度值。另外还有一个LED灯模块,通过云端下达的指令,控制灯亮和灯灭。

树莓派的管脚定义图如下:

DHT11模块共3根线,属于单总线通信,电源线我们接入5V-4pin,地线我们接入GND-6pin,通信pin我们接入GPIO16-36pin。LED模块也是3根线,我们电源线接入3V3-1pin,地线接入GND-9pin,控制线接入GPIO4-7pin。

LED的控制相对容易,就是控制管脚的高低电平即可。

led_pin = 4                       //GPIO为4

GPIO.setmode(GPIO.BCM)            //BCM的GPIO定义

GPIO.setup(led_pin, GPIO.OUT)     //设置为输出模式

点亮灯:

GPIO.output(led_pin, GPIO.HIGH)
关闭灯:
GPIO.output(led_pin, GPIO.LOW)
 

DHT11相对比较复杂,我2010年曾经写过一篇博文,想了解比较深入的可以参考一下(相关链接:https://blog.csdn.net/yfiot/article/details/5996524)。

由于代码比较多,所以我们封装为一个函数,并且可以同时返回两个值,一个是温度T,一个是湿度H。

网上大部分Python的实例都是读一次温湿度的,如果要连续读,必须间隔3秒左右,否则很容易失败。由于linux不是实时系统,我们发现即使间隔3秒,无法正确获取温湿度值的现象也时有发生,并且有时候居然也有通过校验的错误值出现。

DHT11的数据Pin接入的是 GPIO16,所以我们定义pin的代码如下:

dht_pin =16

封装函数的代码如下:

def GetDTH():

data = []

j = 0

GPIO.setup(dht_pin, GPIO.OUT)

GPIO.output(dht_pin, GPIO.LOW)

time.sleep(0.02)

GPIO.output(dht_pin, GPIO.HIGH)

GPIO.setup(dht_pin, GPIO.IN)

while GPIO.input(dht_pin) == GPIO.LOW:

continue

while GPIO.input(dht_pin) == GPIO.HIGH:

continue

while j < 40:

k = 0

while GPIO.input(dht_pin) == GPIO.LOW:

continue

while GPIO.input(dht_pin) == GPIO.HIGH:

k += 1

if k > 100:

break

if k < 8:

data.append(0)

else:

data.append(1)

j += 1

humidity_bit = data[0:8]

humidity_point_bit = data[8:16]

temperature_bit = data[16:24]

temperature_point_bit = data[24:32]

check_bit = data[32:40]

humidity = 0

humidity_point = 0

temperature = 0

temperature_point = 0

check = 0

for i in range(8):

humidity += humidity_bit[i] * 2 ** (7-i)

humidity_point += humidity_point_bit[i] * 2 ** (7-i)

temperature += temperature_bit[i] * 2 ** (7-i)

temperature_point += temperature_point_bit[i] * 2 ** (7-i)

check += check_bit[i] * 2 ** (7-i)

tmp = humidity + humidity_point + temperature + temperature_point

if check == tmp:

return temperature,humidity

else:

print "wrong"

return 0,0

这些准备工作做好后,我们要在云端定义相关产品和设备了。和阿里云官方示例不一样的是,我们额外增加了一个属性LED,具备读写能力,枚举型变量,0-表示关灯,1-表示开灯

这个定义好后,我们创建设备,并且获取设备的三元组。由于官方提供的示例仅仅是模拟数据,并且是单向上传,我们需要改造一下。

在main函数里,增加这句代码:

client.on_message = on_message

表示我们可以获取云端推送的信息。

我们云端推送的信息内容如下:

{"method":"thing.service.property.set","id":"169885527","params":{"LED":1},"version":"1.0.0"}

我们需要获取LED的值,所以on_message函数我们要增加一些内容:

setjson = json.loads(msg.payload)

led = setjson[‘params‘][‘LED‘]

GPIO.output(led_pin,(GPIO.HIGH if led==1 else GPIO.LOW ))

根据led的值,我们开灯或者关灯。

相关代码修改好后,我们就可以上传到树莓派设备,开始运行了,如下图所示:

这个时候我们查看云端设备的状态,会发现数据已经正常上传到云端了。

我们在云端产品的在线调试面板进行数据下发测试

我们发送0或1,会发现LED灭或亮了。

以上,我们会发现通过我们所熟悉的Python语言,就可以轻松编写物联网代码了。

本文相关的代码文件:alios_ht_all.py

原文地址:https://www.cnblogs.com/yefanqiu/p/10063296.html

时间: 2024-11-03 19:18:03

阿里云物联网平台体验(树莓派+Python篇)的相关文章

树莓派3B+实践(2)- 阿里云物联网平台接入(设备端C语言SDK编译)解决undefined reference to `IOT_CMP_Init&#39;错误

本想实践亚马逊aws的接入方案,由于亚马逊aws个人账户需要VISA信用卡,所以先用阿里云实践学习,以后有机会再接入aws. 1. 申请一个阿里云账户,需要绑定支付宝账户,阿里云个人账户可以申请部分业务免费,而且基础版每个月前100w条消息传输免费,个人用来学习实践绰绰有余. 2.根据阿里云物联网平台的帮助文档进行服务器端配置,这里不再赘述,帮助文档网址. 3. 重点说一下遇到的坑,由于阿里云的设备端sdk一直在更新功能,然而官网和github上的帮助文档没有随之更新,所以直接按照文档编译sdk

基于阿里云物联网平台实现的简易出入监控

本文通过一个简单实例,主要介绍了如何使用树莓派快速接入阿里云iot platform,并实现了一个简易的监控人员出入并拍照上送钉钉群的场景 场景在公司大门入口处布点树莓派和红外感应,实现出入口人员出入时,自动拍照并上送钉钉群机器人 准备物料准备树莓派HC-SR501 人体红外感应器树莓派摄像头母对母杜邦线三根阿里云环境准备物联网平台对象存储OSS函数计算日志服务(可选)操作步骤1 云端开发1.1 物联网平台登录阿里云控制台,进入物联网平台控制面板 1.1.1 新建产品进入设备管理,创建产品,选择

10.1 阿里云物联网平台介绍

阿里云物联网平台是阿里巴巴公司推出的专业物联网服务平台,其提供的详尽的文档和清晰的管理界面非常适合刚刚接触物联网平台的初学者,对物联网系统架构.管理等有一个整体上的把握. 阿里云物联网平台文档 阿里云物联网管理平台可视化界面 (需要注册阿里云账户后才能使用) 基于阿里云物联网平台的物联网系统架构 基于阿里云物联网平台的物联网系统架构图如上图所示,整个系统可大致分为4层架构: 边缘设备:物联网系统中的数据生产者,通常为传感器,一般认为没有计算能力. 边缘节点:边缘节点对下收集边缘设备产生的数据,对

手机秒变IoT设备?——巧妙利用阿里云物联网平台

作者序 什么?嵌入五行代码可以实现用户定位,用户在线数量统计,还能和云端消息交互! 没错得益于阿里云物联网套件创建设备免费,消息收费也只有百万消息三块六(先使用后付费,不满不要钱),尤其对于学生党来说,基本是用不了这么多,也就意味着免费!(学生党福音[手动滑稽]) Talk is cheap,show me the code public static void main(String[] args) { //去阿里云官网上创建一个产品,设置好地理位置属性.可以变相用做分组 String pro

ESA2GJK1DH1K升级篇: 阿里云物联网平台 OTA: 关于阿里云物联网平台 OTA 的升级流程

前言 鉴于有些用户直接想使用现成的物联网平台实现 OTA 远程升级 我就写一写这系列的文章 注意:首先大家必须把我自建服务器是如何实现的看明白! 我看了下阿里云提供的,实际上流程和咱自建实现的差别不大 https://help.aliyun.com/document_detail/85700.html?spm=a2c4g.11186623.6.699.6292740d5hzKl6 首先控制升级获取当前程序的版本号等走的还是MQTT 设备端首先通过MQTT获取云端的版本信息,还有程序固件的http

ESA2GJK1DH1K基础篇: 阿里云物联网平台: 测试MQTT连接阿里云物联网平台

前言 这节看一下在阿里云上实现MQTT通信是个怎样的流程 其实我很长时间都没有出怎么连接现成的物联网平台的教程, 一直写的是教给大家自己搭建服务器,主要原因是因为我感觉连接现有的学不到东西. 现在出这种教程,是因为发现确实很多人喜欢用. 但是大家看看吧!连接现有的十分的简单 其实我不明白的是:网上到处都是这种的教程!!!!而且价格定的高,就好像多么的高大上一样...... 搜索物联网平台(如果没有开通自行开通) 创建产品 注意:看看自己的这里是那个区域的,后面会用到 现在我就需要知道设备怎么连接

ESA2GJK1DH1K基础篇: 阿里云物联网平台: 云平台显示单片机采集的温湿度数据,控制设备继电器(基于ESP8266,AT指令TCP_MQTT通信)(V1.0)

实现的功能 把单片机采集的温湿度显示在云平台 实现步骤1 1.在云平台再弄一个自定义功能 实现步骤2 我就是修改的这一节的单片机程序 https://www.cnblogs.com/yangfengwu/p/12539421.html 1.为了方便大家使用,我修改成了下面 用户直接根据自己的修改就可以 2.我设置的发布主题 3.我设置的订阅主题 下载单片机程序然后测试 一,调整波动开关位置,STM32和Wi-Fi通信 二,短接STM32的PB2和Wi-Fi模块的RST引脚(为了做项目稳定可靠,请

阿里云-物联网套件体验

之前使用的用阿里云服务器,然后在服务器上部署物联网应用,这几天无意中发现阿里也提供一个物联网套件,尤其是设备认证环节,和我们的实现思路一样, https://help.aliyun.com/document_detail/30539.html?spm=5176.doc50633.6.574.BnPnoe 不同之处在于 我们https使用的是 hmacsh2,而阿里云只支持hamcmd5和hmacsha1,

ESA2GJK1DH1K基础篇: 阿里云物联网平台: 测试MQTT客户端接收云平台的数据

前言 有时候想想可能直接连接现成的感觉比较方便吧! 但是实际上如果你做多了会发现,限制住了很多. 当然,适合个人玩家. 所以很多人去连接现成的.不愿意自己去搭建, 测这节会感觉:这是啥呀...下一节更精彩,但是必须看这节 测这节会感觉:这是啥呀...下一节更精彩,但是必须看这节 测这节会感觉:这是啥呀...下一节更精彩,但是必须看这节 测试1 1.选择设备 ---- 查看 2.Topic ---- 查看 下面是说咱可以订阅那几个主题 咱先看订阅:  /a1m7er1nJbQ/Mqtt/user/