树莓派传感器触发时,如何用Twilio API发送海外免费WhatsApp消息?
树莓派触发传感器后通过Twilio发送WhatsApp消息实现方案
前提说明
Twilio的WhatsApp服务相比SMS在海外使用成本更低,个人项目可先通过沙箱模式免费测试,后续可申请正式号码用于长期使用。
步骤1:Twilio账号与沙箱配置
- 注册Twilio账号后,在控制台获取
Account SID和Auth Token(可在"Account Info"板块找到) - 进入"Programmable Messaging" > "Try it out" > "Send a WhatsApp message",启用WhatsApp沙箱
- 按照页面提示,用目标手机发送指定代码(如
join xxx-xxxx)到Twilio提供的沙箱WhatsApp号码,完成绑定(仅绑定号码能接收沙箱消息)
步骤2:树莓派环境准备
- 确保树莓派联网,安装Python及Twilio SDK:
sudo apt update && sudo apt install python3-pip pip3 install twilio
步骤3:传感器检测与消息发送代码
以红外传感器接GPIO17为例,编写Python脚本(sensor_whatsapp.py):
import RPi.GPIO as GPIO import time from twilio.rest import Client # Twilio配置信息 ACCOUNT_SID = '你的Account SID' AUTH_TOKEN = '你的Auth Token' TWILIO_WHATSAPP_NUMBER = 'whatsapp:+14155238886' # Twilio沙箱默认号码,可替换为正式号码 YOUR_PHONE_NUMBER = 'whatsapp:+你的手机号(带国家码,比如+86xxxxxx)' # GPIO配置 SENSOR_PIN = 17 GPIO.setmode(GPIO.BCM) GPIO.setup(SENSOR_PIN, GPIO.IN) def send_whatsapp_alert(): client = Client(ACCOUNT_SID, AUTH_TOKEN) message = client.messages.create( body="传感器已被触发!", from_=TWILIO_WHATSAPP_NUMBER, to=YOUR_PHONE_NUMBER ) print(f"消息已发送,SID: {message.sid}") try: print("等待传感器触发...") while True: if GPIO.input(SENSOR_PIN): print("传感器触发!") send_whatsapp_alert() time.sleep(60) # 防重复触发,间隔60秒 time.sleep(0.5) except KeyboardInterrupt: GPIO.cleanup() print("程序终止")
关键注意事项
- 沙箱模式仅支持绑定的测试号码,若需向多个号码发送消息,需申请Twilio正式WhatsApp号码(个人非商用用途一般可通过审核)
- 树莓派需保持稳定联网,建议配置静态IP或使用有线网络
- 可根据实际传感器类型调整GPIO配置和触发逻辑,比如添加软件防抖避免误触发
- Twilio的WhatsApp消息费用远低于国际SMS,具体费率可在Twilio控制台定价页查看
内容的提问来源于stack exchange,提问作者Abhinav Tavildar
相关产品推荐
相关产品推荐

