在本指南中,详细记录了如何配置和使用IFTTT,让树莓派可以检测到事件发生后触发通知等预定操作。
IFTTT是一个基于网络的免费服务,全称是 “If This Then That”。使用该服务,可以在满足特定条件时触发事件。一个基本的例子可以是,如果检测到一个运动,那么就向你的手机发送一个通知。在本指南中,我将向您展示如何连接到IFTTT,在其中设置一个webhook,以及如何从Raspberry Pi触发它。
设备清单
下面是设置树莓派IFTTT用到的所有设备清单,点击链接可直达特别优惠购买。
建议
可选
设置IFTTT
1. 首先需要做的是注册一个IFTTT账号。
要去IFTTT网站注册一个账号。
2. 创建了账户后,现在可以创建一个动作。
首先点击你的个人资料肖像(1.),然后点击 “创建 “选项(2.)。
3. 在这个页面上,需要先为IFTTT动作选择触发器。
点击 “+This”文字开始,如下图所示。
4. 现在,需要选择想要用于触发的服务。
在本教程中,我将向您展示如何使用webhook服务。
先在搜索框中搜索 “webhook”(1。接下来,需要点击 “Webhooks “按钮(2。
5. 然后需要做的就是点击 “Connect”按钮。
点击这个按钮将开始设置webhook。
6. 现在,需要选择这个服务提供的触发器。
在webhook的情况下,只有一个可用的触发器,点击它。
7. 需要给这个触发器起一个事件名称(1. )。
除了下划线(_)字符外,这个名称不能包含任何空格或符号。在我的示例事件中,我使用 “motion_detected “作为事件名称。完成后,点击 “Create trigger “按钮(2。
8. 现在选择IFTTT触发器的 “That”动作。
在这里选择的是当 “Then”事件被触发时将发生的事情。需要点击 “+That”的文字开始处理。
9. 下一步是选择要用于行动的服务。
在本教程中,我将利用 “notifications”服务。当我的事件被触发时,该服务会向IFTTT应用发送通知。还有其他各种服务,但通知是最容易设置的服务之一。需要在搜索框中搜索出 “notifications”(1.弹出 “notifications”服务时,点击它(2.
10. 现在点击 “Connect”按钮,将通知服务连接到事件。
11. 之后需要选择该服务提供的一个动作。
在这种情况下,我想要向IFTTT应用发送一个简单的通知,所以选择左边的选项。
12. 输入希望在通知中显示的信息(1.
在我的例子中,我使用 “Raspberry Pi检测到运动”的文本。你也可以通过在消息中包含{{Value1}}、{{Value2}}或{{Value3}}}来向webhook发送值并显示它们,然而这不是我在本教程中要触及的内容。输入后,点击 “Create action”按钮(2.
13. 最后,点击 “Finish”按钮。
14. 回到webhooks页面,点击屏幕右上角的 “Documentation”按钮。
点击这里,就可以在页面上找到需要的API密钥。
15. 在这一页,复制下API密钥(1.)
下面可以看到我将发送webhook调用的URL。这个URL位于 “To trigger an Event”标题的下方(2.)。
在树莓派上为IFTTT做准备工作
在本节中,我将向您展示如何从树莓派中与新创建的IFTTT webhook进行交互。
1. 由于我可能需要安装一些额外的软件包,先确保Raspberry Pi运行的是最新的可用软件。
可以通过运行以下两个命令来实现。
sudo apt update
sudo apt upgrade
2. 随着软件包的更新,现在可以安装Python 3及其一些依赖包。将使用Python与IFTTT webhook进行交互。为了确保Python的安装,运行以下命令。
sudo apt install python3 python3-pip
3. 现在安装了Python 3,确保能够访问Python Requests库。
运行以下命令,使用pip安装requests模块。
sudo pip3 install requests
现在可以继续编写一个Python脚本,它将与树莓派的IFFTT webhook进行交互。
从树莓派与IFTTT互动
1. 让使用下面的命令开始编写Python脚本。
第一个脚本将向你展示如何使用IFTTT webhook的基础知识。
nano ~/ifttt.py
2. 应该通过导入requests库来启动这个脚本。
import requests
3. 下一步就是对IFTTT提供的webhook URL进行发布请求。
要发送请求,有两件事需要知道:
第一个是你为webhook定义的事件名称。在我的例子中,我使用了事件名 “motion_detected”。
第二个是webhook API密钥。在设置IFTTT动作时,应该已经在指南的前面找到了这个。
有了这两个值,我需要输入以下一行。确保用相关信息替换”{EVENT_NAME}”和”{YOURAPIKEY}”。
requests.post('https://maker.ifttt.com/trigger/{EVENT_NAME}/with/key/{YOURAPIKEY}')
4. 这就是我在Python中进行webhook请求所需要做的全部工作。
按CTRL + X,然后按Y,再按ENTER键保存文件。
5. 在测试这个脚本之前,请确保你的手机上已经安装了IFTTT应用。
可以通过Android的Google Play商店或iPhone的App Store安装IFTTT应用。如果没有这个应用,你将永远不会收到通知。
6. 安装好IFTTT应用后,运行下面的命令来测试脚本。
python3 ~/ifttt.py
如果一切正常,你应该会看到设备上弹出一个通知。
修改运动检测脚本以发送通知
在本节中,我将向您展示,如果我在Raspberry Pi运动检测脚本中使用相同的代码段,会是什么样子。
1. 运动检测的脚本代码如下,把它复制保存到树莓派上,我这里命名为motion_sensor.py
#!/usr/bin/env python """ Detects motion and outputs a sound via a piezo buzzer. """ import RPi.GPIO as GPIO import time __author__ = "gus-pimylifeup" __version__ = "1.0" __maintainer__ = "pimylifeup.com" pir_sensor = 11 piezo = 7 GPIO.setmode(GPIO.BOARD) GPIO.setup(piezo,GPIO.OUT) GPIO.setup(pir_sensor, GPIO.IN) current_state = 0 try: while True: time.sleep(0.1) current_state = GPIO.input(pir_sensor) if current_state == 1: print("GPIO pin %s is %s" % (pir_sensor, current_state)) GPIO.output(piezo,True) time.sleep(1) GPIO.output(piezo,False) time.sleep(5) except KeyboardInterrupt: pass finally: GPIO.cleanup()
2. 现在可以修改文件,添加新需求。
运行以下命令开始编辑文件。
nano motion_sensor.py
3. 找到并增加一些额外的行。
寻找
import time
添加到下面
import requests
寻找
print("GPIO pin %s is %s" % (pir_sensor, current_state))
在下面添加 确保用相关的值替换{EVENT_NAME}和{YOURAPIKEY}。
requests.post('https://maker.ifttt.com/trigger/{EVENT_NAME}/with/key/{YOURAPIKEY}
4. 修改完毕后,按CTRL+X键保存文件,然后按Y键,再按ENTER键。
5. 下次运行运动检测脚本时,只要检测到运动,它就会发送通知。
希望到这里,你能对如何用树莓派上使用IFTTT有所了解。如果你在本教程中遇到任何问题或有任何反馈,那么欢迎在下方留言。
欢迎转载,请留下出处链接:Labno3 » 树莓派检测事件触发通知给手机,详细步骤配置和使用IFTTT