You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Raspberry Pico W的MicroPython向InfluxDB Cloud写入数据?

Raspberry Pico W(MicroPython)写入InfluxDB Cloud的方案

关于官方InfluxDB Python客户端的支持

官方的influxdb-client Python库不支持MicroPython,因为它依赖大量CPython标准库(如requests、urllib3、datetime的完整实现等),而MicroPython的标准库是精简版,无法满足这些依赖要求,直接用这个库行不通。

可行的替代方案

方案1:直接发送HTTP POST请求(最推荐)

InfluxDB Cloud提供了基于HTTP的写入API,你可以用MicroPython内置的urequests库发送POST请求,将数据以Line Protocol格式提交。

示例代码:

import network
import urequests
import utime

# WiFi配置
SSID = "你的WiFi名称"
PASSWORD = "你的WiFi密码"

# InfluxDB Cloud配置
INFLUXDB_URL = "https://us-west-2-1.aws.cloud2.influxdata.com/api/v2/write"  # 替换为你的InfluxDB Cloud区域URL
BUCKET = "你的Bucket名称"
ORG = "你的组织ID"
TOKEN = "你的API Token"

# 连接WiFi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)

# 等待连接成功
while not wlan.isconnected():
    utime.sleep(1)
print("WiFi已连接")

# 构造Line Protocol格式的数据
# 格式:measurement,tag_key=tag_value field_key=field_value timestamp
data = "sensor_temperature,device=pico_w temperature=25.6 " + str(int(utime.time_ns()))

# 构造请求头
headers = {
    "Authorization": f"Token {TOKEN}",
    "Content-Type": "text/plain; charset=utf-8"
}

# 构造请求参数
params = {
    "bucket": BUCKET,
    "org": ORG,
    "precision": "ns"  # 时间戳精度,这里用纳秒
}

# 发送POST请求
try:
    response = urequests.post(INFLUXDB_URL, headers=headers, params=params, data=data)
    if response.status_code == 204:
        print("数据写入成功")
    else:
        print(f"写入失败,状态码:{response.status_code},响应内容:{response.text}")
    response.close()
except Exception as e:
    print(f"请求出错:{e}")

注意事项:

  • 替换代码中的WiFi信息和InfluxDB Cloud的配置参数(URL、Bucket、ORG、TOKEN),这些都可以在InfluxDB Cloud控制台找到。
  • Line Protocol的格式要严格遵守,否则会写入失败,比如字段值的类型(数值不加引号,字符串要加双引号)。
  • 注意Pico W的网络稳定性,建议添加重连逻辑。

方案2:使用社区维护的MicroPython轻量客户端

有社区开发者维护了适配MicroPython的InfluxDB客户端,比如influxdb-micropython,它实现了基础的写入功能,依赖更少。你可以通过Thonny或者mpremote工具将这个库上传到Pico W。

使用示例(简化版):

from influxdb import InfluxDBClient

client = InfluxDBClient(host="us-west-2-1.aws.cloud2.influxdata.com", port=443, token="你的API Token", org="你的组织ID", ssl=True)
client.write(bucket="你的Bucket名称", record="sensor_temperature,device=pico_w temperature=25.6")

不过要注意,这类第三方库的功能可能不如官方库完整,且维护状态不确定,建议优先选择HTTP请求的方式,更灵活可控。

内容的提问来源于stack exchange,提问作者FloHaschke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 17:42:16