0

0

树莓派结合Twilio API实现传感器触发WhatsApp消息通知教程

碧海醫心

碧海醫心

发布时间:2025-12-07 22:02:02

|

645人浏览过

|

来源于php中文网

原创

树莓派结合twilio api实现传感器触发whatsapp消息通知教程

本教程详细介绍了如何利用树莓派、Twilio API和Python编程,实现传感器触发后自动发送WhatsApp消息通知的功能。文章从Twilio账户设置、树莓派硬件连接到Python代码实现,提供了完整的步骤和示例,并强调了WhatsApp在国际通信中的成本优势,为物联网项目提供了一种高效可靠的远程通知解决方案。

引言

在物联网(IoT)项目中,当特定事件发生时,及时获取通知至关重要。树莓派因其小巧、低功耗和强大的计算能力,常被用作物联网设备的控制器。结合Twilio的强大通信API,我们可以轻松实现传感器触发时的自动化消息通知。相较于传统的短信(SMS),WhatsApp消息在国际范围内具有显著的成本优势,且用户覆盖率高,是跨国或全球部署项目的理想选择。本教程将指导您如何搭建一个系统,使树莓派在传感器被触发时,通过Twilio API向您的WhatsApp发送消息。

准备工作

在开始之前,请确保您已具备以下条件:

  1. 树莓派 (Raspberry Pi):已安装操作系统(如Raspberry Pi OS),并能连接互联网。
  2. 传感器模块:例如PIR运动传感器、按钮、光敏电阻等,可产生数字信号。
  3. Twilio 账户:访问 Twilio官网 注册并创建一个账户。
  4. WhatsApp 已启用电话号码:在Twilio账户中,您需要启用一个电话号码来发送WhatsApp消息。Twilio提供了WhatsApp Sandbox供测试使用,或者您可以将自己的Twilio号码连接到WhatsApp Business API。详细设置请参考 Twilio WhatsApp 教程
  5. Python 编程环境:树莓派通常预装Python。
  6. 必要的Python库:twilio 和 RPi.GPIO。

Twilio API 配置

  1. 获取 Twilio 凭证: 登录您的Twilio账户控制台,您会找到您的 Account SIDAuth Token。这些是调用Twilio API的必要凭证。
  2. 配置 WhatsApp 发送号码
    • 如果您使用Twilio WhatsApp Sandbox,您会得到一个Twilio提供的特殊号码(例如 whatsapp:+14155238886)。您还需要将您的手机号码加入Sandbox,以便接收测试消息。
    • 如果您已将自己的Twilio号码连接到WhatsApp Business API,请使用该号码。 请确保您知道用于发送消息的Twilio WhatsApp号码(From号码)和接收消息的您的WhatsApp号码(To号码),它们都应以 whatsapp: 前缀开头。

树莓派硬件连接

以连接一个简单的按钮传感器为例:

  1. 连接传感器
    • 将按钮的一端连接到树莓派的 GPIO 引脚(例如GPIO 17)。
    • 将按钮的另一端连接到树莓派的 接地 (GND) 引脚
    • 为了确保信号稳定,您可能需要为GPIO引脚配置内部上拉或下拉电阻,或者使用外部电阻。

Python 脚本开发

我们将使用Python编写一个脚本,监听GPIO引脚状态变化,并在传感器触发时发送WhatsApp消息。

1. 安装所需库

打开树莓派终端,执行以下命令安装 twilio 库:

pip install twilio RPi.GPIO

2. 编写Python代码

创建一个名为 whatsapp_notifier.py 的文件,并粘贴以下代码:

绘蛙
绘蛙

电商场景的AI创作平台,无需高薪聘请商拍和文案团队,使用绘蛙即可低成本、批量创作优质的商拍图、种草文案

下载
import RPi.GPIO as GPIO
import time
import os
from twilio.rest import Client

# --- Twilio 配置 ---
# 从环境变量获取Twilio凭证,提高安全性
# export TWILIO_ACCOUNT_SID='ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# export TWILIO_AUTH_TOKEN='your_auth_token_here'
ACCOUNT_SID = os.environ.get("TWILIO_ACCOUNT_SID")
AUTH_TOKEN = os.environ.get("TWILIO_AUTH_TOKEN")

# 您的Twilio WhatsApp号码 (例如: "whatsapp:+14155238886" 或您的Twilio号码)
TWILIO_WHATSAPP_NUMBER = "whatsapp:+14155238886" # 请替换为您的Twilio WhatsApp号码
# 您的WhatsApp接收号码 (例如: "whatsapp:+8613800138000")
RECIPIENT_WHATSAPP_NUMBER = "whatsapp:+8613800138000" # 请替换为您的接收WhatsApp号码

client = Client(ACCOUNT_SID, AUTH_TOKEN)

# --- 树莓派 GPIO 配置 ---
SENSOR_PIN = 17  # 传感器连接的GPIO引脚编号 (例如: GPIO 17)
DEBOUNCE_TIME = 0.2 # 传感器去抖时间 (秒)

GPIO.setmode(GPIO.BCM)  # 使用BCM引脚编号模式
# 设置传感器引脚为输入模式,并启用内部上拉电阻
# 如果传感器是常开型,触发时接地,则使用PUD_UP
# 如果传感器是常闭型,触发时断开,则使用PUD_DOWN
GPIO.setup(SENSOR_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)

print(f"监听GPIO引脚 {SENSOR_PIN} 的状态变化...")

# --- 消息发送函数 ---
def send_whatsapp_message(message_body):
    try:
        message = client.messages.create(
            from_=TWILIO_WHATSAPP_NUMBER,
            to=RECIPIENT_WHATSAPP_NUMBER,
            body=message_body
        )
        print(f"WhatsApp消息发送成功!SID: {message.sid}")
    except Exception as e:
        print(f"发送WhatsApp消息失败: {e}")

# --- 传感器回调函数 ---
def sensor_callback(channel):
    # 检查当前引脚状态,确保是触发事件 (例如,从高电平变为低电平)
    if GPIO.input(channel) == GPIO.LOW:
        print("传感器被触发!")
        send_whatsapp_message("警报:树莓派传感器被触发!")
    else:
        print("传感器状态恢复。") # 或者其他非触发状态处理

try:
    # 添加事件检测:当引脚从高电平变为低电平时触发回调函数
    # bouncetime 参数用于去抖动
    GPIO.add_event_detect(SENSOR_PIN, GPIO.FALLING, callback=sensor_callback, bouncetime=int(DEBOUNCE_TIME * 1000))

    # 保持程序运行,等待传感器触发
    while True:
        time.sleep(1)

except KeyboardInterrupt:
    print("程序退出。")
except Exception as e:
    print(f"发生错误: {e}")
finally:
    GPIO.cleanup()  # 清理GPIO设置,释放资源
    print("GPIO已清理。")

3. 配置环境变量

为了安全起见,不建议将Twilio的 ACCOUNT_SID 和 AUTH_TOKEN 直接写在代码中。推荐使用环境变量。在运行脚本前,在终端中设置它们:

export TWILIO_ACCOUNT_SID='ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
export TWILIO_AUTH_TOKEN='your_auth_token_here'

请将 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 和 'your_auth_token_here' 替换为您的实际凭证。为了让这些变量在重启后仍然有效,您可以将它们添加到 ~/.bashrc 文件中。

4. 运行脚本

在终端中执行Python脚本:

python whatsapp_notifier.py

现在,当您触发连接到树莓派GPIO 17引脚的传感器时(例如按下按钮),您的WhatsApp将收到一条通知消息。

注意事项与优化

  1. 安全性:除了使用环境变量存储Twilio凭证外,还可以考虑使用配置文件或密钥管理服务来进一步保护敏感信息。
  2. 去抖动 (Debouncing):物理传感器(如按钮)在按下或释放时可能会产生短时间的信号抖动,导致多次触发。代码中的 bouncetime 参数可以有效解决这个问题。对于更复杂的场景,可能需要软件去抖动算法。
  3. 错误处理:在发送消息的 send_whatsapp_message 函数中加入了 try-except 块来捕获API调用可能产生的错误。在实际应用中,您可能需要更详细的错误日志记录和重试机制。
  4. 后台运行:为了让脚本在树莓派启动时自动运行并在后台持续工作,可以将其配置为 systemd 服务或使用 cron 任务。
  5. 消息频率:Twilio对WhatsApp消息发送有速率限制。避免在短时间内发送大量消息,否则可能会被限制。在设计系统时,考虑引入消息发送间隔或消息队列。
  6. 传感器类型:根据您使用的传感器类型,可能需要调整GPIO引脚的输入模式(GPIO.PUD_UP 或 GPIO.PUD_DOWN)以及触发条件(GPIO.FALLING 或 GPIO.RISING)。
  7. Twilio 费用:Twilio对WhatsApp消息发送会收取费用,具体取决于目的地国家和消息类型。在部署前请查阅Twilio的定价页面。

总结

通过本教程,您已经成功地将树莓派、传感器和Twilio WhatsApp API结合起来,构建了一个实用的自动化通知系统。这种方案不仅成本效益高,尤其适用于国际通信,而且易于扩展和集成到各种物联网项目中。无论是家庭安防、环境监测还是工业自动化,这种基于事件的WhatsApp通知都能提供及时、可靠的信息传递。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6608

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

842

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

1092

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

2184

2024.03.01

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

497

2023.08.14

物联网有哪些应用
物联网有哪些应用

物联网应用有智能家居、智慧城市、工业自动化、农业智能化、物流和供应链管理、医疗健康、智能交通、能源管理、环境监测、智能零售等等。详细介绍:1、智能家居,物联网技术可以将家庭中的各种设备和家居系统连接到互联网,实现智能化的家居控制和管理,例如,通过智能手机可以远程控制家中的照明、温度、安防系统等;2、智慧城市,物联网技术可以应用于城市基础设施和公共服务,实现智慧城市的建设等等。

245

2023.09.05

物联网中的m2m概念
物联网中的m2m概念

M2M是人与机器连接的手段与方式。想了解更多的相关内容,可以阅读本专题下面的文章。

442

2024.03.12

物联网应用岗位
物联网应用岗位

常见岗位包括:物联网架构师;物联网工程师;数据分析师;云计算工程师;应用程序开发人员;嵌入式系统工程师;网络安全分析师;产品经理;物联网项目经理;业务分析师等等。想了解更多物联网应用的相关内容,可以阅读本专题下面的文章。

423

2024.05.21

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 4.9万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号