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

树莓派家用空气质量监测脚本Adafruit IO请求404失败如何修复

Adafruit IO 404报错排查与修复方案

核心报错原因:aio.send()方法的第一个参数必须传入Adafruit IO平台上预先创建的Feed(数据馈送)键名,你当前代码里传入的是本地脚本执行命令、脚本文件名,平台找不到对应的数据上传路径,直接返回404状态码。

排查修复步骤

  • 核对账号鉴权参数
    代码中Client()初始化的两个参数分别对应你的Adafruit IO用户名、平台生成的Active API Key,先登录平台后台确认这两个值填写准确,鉴权参数错误也可能导致路径匹配失败。
  • 提前创建对应数据Feed
    在Adafruit IO后台新建两个独立Feed,分别用于存储PM2.5、PM10的监测数据,Feed键名建议使用纯小写字母、数字、短横线组合,不要带空格、点号、文件后缀等特殊字符,比如可命名为pm25、pm10。
  • 修正代码逻辑
    原代码缺少必要的模块导入语句,同时send()方法参数传值错误,修正后的可运行参考代码如下:
import serial
import time
from Adafruit_IO import Client

# 替换为个人账号对应的真实用户名、API Key
AIO_USERNAME = '你的用户名'
AIO_KEY = '你的API密钥'
aio = Client(AIO_USERNAME, AIO_KEY)

# 若串口打开失败可补充波特率参数,比如serial.Serial('/dev/ttyUSB0', 9600)
ser = serial.Serial('/dev/ttyUSB0')

while True:
    data = []
    for index in range(0, 10):
        datum = ser.read()
        data.append(datum)
    
    pmtwofive = int.from_bytes(b''.join(data[2:4]), byteorder='little') / 10
    # 替换为自己创建的PM2.5对应Feed键名
    aio.send('pm25', pmtwofive)
    
    pmten = int.from_bytes(b''.join(data[4:6]), byteorder='little') / 10
    # 替换为自己创建的PM10对应Feed键名
    aio.send('pm10', pmten)
    
    time.sleep(10)
  • 运行前环境检查
    先安装必要依赖:pip3 install adafruit-io pyserial
    给树莓派当前用户开放串口操作权限,执行sudo usermod -aG dialout $USER后重启设备生效,避免串口读数据权限报错。
  • 可选优化
    当前串口读取逻辑没有做数据帧校验,若遇到串口传输干扰容易解析出异常数值,可根据你用的颗粒物传感器协议补充帧头校验逻辑,确认读取到完整有效数据帧后再做数值解析上传。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:39:18