ESP32使用MicroPython通过MQTT上传数据至阿里云服务器

之前做嵌入式的时候遇到的一些问题,这里给一个比较简单的解决方案

一、连接WiFi

要想将数据上传至阿里云服务器,首先得给MCU连上wifi,所以我们新建一个wifi.py

import network
def do_connect():
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('连接网络中...')
        wlan.connect('{wifi名称}', '{wifi密码}')
        while not wlan.isconnected():
            pass
    print('网络配置:', wlan.ifconfig())

二、MQTT配置

可以连接wifi之后我们才能与服务器进行通信

我们需要simple库 ,MircoPython不含包管理工具,手动下载simple库,链接:github链接

新建aliyuniot.py

# simple是MQTT库的一部分,连接阿里云用到它
from simple import MQTTClient
import wifi
from config import aliyun_config


def connect_aliyun():
    wifi.do_connect()
    # 配置MQTT客户端连接参数
    clientId = aliyun_config["clientId"]
    mqttHostUrl = aliyun_config["mqttHostUrl"]
    port = aliyun_config["port"]
    username = aliyun_config["username"]
    passwd = aliyun_config["passwd"]
    # 创建MQTT客户端
    client = MQTTClient(client_id=clientId, server=mqttHostUrl, port=port, user=username, password=passwd, keepalive=60)
    # 连接到服务器
    try:
        client.connect()
        print("MQTT客户端已连接到阿里云物联网平台")
        # 定义要发布的Topic和消息内容
        topic = '/sys/{}/{}/thing/event/property/post'.format(aliyun_config["ProductKey"], aliyun_config["DeviceName"])
        # 示例:上传心率数据
        payload = '{"params": {"heart_rate": 65}}'
        # 发布消息
        client.publish(topic, payload)
    except Exception as e:
        print("连接失败:", e)
connect_aliyun()

我们创建一个config.py在里面放我们的配置

aliyun_config = {
    "ProductKey": "",
    "DeviceName": "",
    "DeviceSecret": "",
    "clientId":"",
    "username":"",
    "mqttHostUrl":"",
    "passwd":"",
    "port":1883,
    }

这些配置在阿里云的设备MQTT连接参数可以找到

上报数据的部分在try代码块,可以把它挪出去另写一个更通用的方法

三、测试数据上报

如图,上次心率的数据实际为70bpm。

运行一下单独运行aliyuniot.py

看看数据有没有更新

可以看到心率已经从之前的70bpm变成65bpm了。

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值