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

基于Raspberry Pi2与DHT22的ThingSpeak接入IFTTT Webhook配置求助

嘿,恭喜你已经搞定了DHT22到ThingSpeak的数据上传!对接IFTTT实现通知和Hue灯闪烁其实没那么复杂,我给你一步步捋清楚,包你能搞定:

第一步:在IFTTT上搭建你的自动化流程(Applet)
  • 先登录IFTTT,点击右上角的「Create」创建新Applet
  • 点击「If This」,搜索并选择「Webhooks」作为触发条件
  • 选择「Receive a web request」,给这个请求起个好记的名字(比如temp_hum_alert,后面代码里要和它完全一致),然后点击「Create trigger」
  • 接下来点击「Then That」,先添加第一个动作:比如要手机通知,就搜索「Notifications」,选择「Send a notification from the IFTTT app」,编辑通知内容,比如温湿度超标啦!当前温度:{{Value1}}℃,湿度:{{Value2}}%(这里的Value1和Value2是后面我们会传给IFTTT的温湿度数据),保存这个动作
  • 再点击「Add another action」,添加Philips Hue的动作:搜索「Philips Hue」,选择「Blink lights」,然后选中你要控制的灯,设置好闪烁的次数和时长,保存动作
  • 最后给这个Applet起个名字,点击「Finish」就完成创建了
第二步:获取你的IFTTT Webhook密钥
  • 回到IFTTT的Webhooks服务页面,点击右上角的「Documentation」
  • 你会看到一个类似https://maker.ifttt.com/trigger/{event}/with/key/{your_key}的URL,把里面的{your_key}部分复制下来,后面代码要用到这个密钥
第三步:修改Raspberry Pi上的代码,对接IFTTT

首先确保你的树莓派已经安装了必要的依赖,打开终端输入这些命令:

sudo apt-get update
sudo apt-get install python3-pip
pip3 install requests adafruit-circuitpython-dht
sudo apt-get install libgpiod2

然后修改你原来的DHT22上传ThingSpeak的代码,加入IFTTT的触发逻辑,示例代码如下(记得替换成你自己的密钥和参数):

import time
import requests
import adafruit_dht
from board import D4  # 假设你的DHT22接在GPIO4上,根据实际接线修改

# 初始化传感器
dht_device = adafruit_dht.DHT22(D4)

# 配置参数(替换成你自己的信息)
THINGSPEAK_API_KEY = "你的ThingSpeak API密钥"
THINGSPEAK_URL = "https://api.thingspeak.com/update"
IFTTT_KEY = "你刚才复制的IFTTT Webhook密钥"
IFTTT_EVENT = "temp_hum_alert"  # 和第一步里的Webhook事件名一致
# 设置触发阈值,比如温度超过30℃或者湿度超过70%就触发
TEMP_THRESHOLD = 30.0
HUMID_THRESHOLD = 70.0

def send_to_thingspeak(temp, hum):
    payload = {
        "api_key": THINGSPEAK_API_KEY,
        "field1": temp,
        "field2": hum
    }
    try:
        response = requests.get(THINGSPEAK_URL, params=payload)
        print(f"ThingSpeak上传状态:{response.status_code}")
    except Exception as e:
        print(f"上传ThingSpeak失败:{e}")

def trigger_ifttt(temp, hum):
    ifttt_url = f"https://maker.ifttt.com/trigger/{IFTTT_EVENT}/with/key/{IFTTT_KEY}"
    payload = {
        "value1": round(temp, 1),
        "value2": round(hum, 1)
    }
    try:
        response = requests.post(ifttt_url, json=payload)
        print(f"IFTTT触发状态:{response.status_code}")
    except Exception as e:
        print(f"触发IFTTT失败:{e}")

while True:
    try:
        temperature = dht_device.temperature
        humidity = dht_device.humidity
        if temperature is not None and humidity is not None:
            print(f"当前温度:{temperature:.1f}℃,湿度:{humidity:.1f}%")
            # 上传数据到ThingSpeak
            send_to_thingspeak(temperature, humidity)
            # 判断是否触发IFTTT动作
            if temperature > TEMP_THRESHOLD or humidity > HUMID_THRESHOLD:
                print("温湿度超标,触发通知和灯光!")
                trigger_ifttt(temperature, humidity)
        else:
            print("读取传感器数据失败,重试中...")
    except RuntimeError as e:
        print(f"传感器读取错误:{e}")
    time.sleep(60)  # 每分钟读取一次,可根据需求调整间隔时间
第四步:测试和调试
  • 把代码保存为dht22_ifttt.py,然后在终端运行:python3 dht22_ifttt.py
  • 可以手动模拟超标情况(比如用手捂住DHT22升温),看看手机有没有收到通知,Hue灯会不会闪烁
  • 如果没触发,先排查这些点:
    • IFTTT的Webhook事件名和代码里的IFTTT_EVENT是否完全一致
    • IFTTT密钥有没有输错
    • 树莓派的网络连接是否正常
    • DHT22的接线是否牢固

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:02:39