文章目录
使用python3模拟向阿里云发送数据
主要目的是为了实现当Nano板部署AI模型识别出对应的结果时,可以将识别出的结果上传至云平台,目前先适应一下Nano板连云的过程
阿里云准备
1.登入阿里云物联网平台
2.产品创建流程
点击进入公共实例,在产品界面选择快速入门:
在弹出的界面选择“开始体验”,之后根据提示注册设备:
选择开发包界面,选择Linux,MQTT,Node.js:
SDK下载界面里的LInux工具包不使用,但是不下载无法点击下一步,此处点击下载,之后直接点击下一步即可:
配置与测试界面无需操作直接点击完成:
完成后在产品界面即可看到刚新建的“Nano测试”产品:
在设备界面可以看到刚生成的“nano”设备,应该是处于未激活状态,此处因为已经跑成功了所以显示的在线:
点击右侧查看即可查看设备的三元素,后面要用:
3.功能自定义
在刚刚新建的产品界面,点击查看:
选择“功能定义”,点击“编辑草稿”:
选择“添加自定义功能”:
添加温度、湿度属性如下:
之后一定要点击“发布上线”:
Jetson Nano准备
1.系统准备,首先烧写系统镜像
英伟达官网下载ubantu18.0.4系统
2.检查python3版本
在终端命令行输入:
python3 --version
初始装的python版本为3.6.9
3.下载pip工具
sudo apt install python3-pip
4.py文件准备
通过cd命令进入Desktop目录,在桌面新建一个文件夹aliyun-iot-demo-python:
cd Desktop
mkdir aliyun-iot-demo-python
之后在该文件夹中下载安装mqtt的SDK:
pip3 install paho-mqtt
在aliyun-iot-demo-python文件夹内编写一个python脚本:
可通过vim xxx.py的方式新建,之后通过vim的方式输入代码
此处我为了省事,通过了ssh工具FinalShell远程连接到Nano板上,再在本地新建一个文本文件,复制粘贴下列代码并修改三元素之后,修改后缀名为.py,然后通过拖拽的方式放置到aliyun-iot-demo-python文件下内:
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
import time
import hashlib
import hmac
import random
import json
#这个就是我们在阿里云注册产品和设备时的三元组啦
#把我们自己对应的三元组填进去即可
options = {
'productKey':'你的productKey',
'deviceName':'你的deviceName',
'deviceSecret':'你的deviceSecret',
'regionId':'cn-shanghai'
}
HOST = options['productKey'] + '.iot-as-mqtt.'+options['regionId']+'.aliyuncs.com'
PORT = 1883
PUB_TOPIC = "/sys/" + options['productKey'] + "/" + options['deviceName'] + "/thing/event/property/post";
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
# client.subscribe("the/topic")
# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
print(msg.topic+" "+str(msg.payload))
def hmacsha1(key, msg):
return hmac.new(key.encode(), msg.encode(), hashlib.sha1).hexdigest()
def getAliyunIoTClient():
timestamp = str(int(time.time()))
CLIENT_ID = "paho.py|securemode=3,signmethod=hmacsha1,timestamp="+timestamp+"|"
CONTENT_STR_FORMAT = "clientIdpaho.pydeviceName"+options['deviceName']+"productKey"+options['productKey']+"timestamp"+timestamp
# set username/password.
USER_NAME = options['deviceName']+"&"+options['productKey']
PWD = hmacsha1(options['deviceSecret'],CONTENT_STR_FORMAT)
client = mqtt.Client(client_id=CLIENT_ID, clean_session=False)
client.username_pw_set(USER_NAME, PWD)
return client
if __name__ == '__main__':
client = getAliyunIoTClient()
client.on_connect = on_connect
client.on_message = on_message
client.connect(HOST, 1883, 300)
payload_json = {
'id': int(time.time()),
'params': {
'temperature': random.randint(20, 30),#随机温度
'humidity': random.randint(40, 50)#随机相对湿度
},
'method': "thing.event.property.post"
}
print('send data to iot server: ' + str(payload_json))
client.publish(PUB_TOPIC,payload=str(payload_json),qos=1)
client.loop_forever()
4.运行py文件并验证
在aliyun-iot-demo-python文件夹下输入:
python xxx.py
(xxx)为之前你为py文件自己定义的名字
打开阿里云物联网平台会发现此时设备已经在线,且打开“物模型数据”可以看到python模拟上传的数据: