【发布时间】:2019-04-06 15:16:58
【问题描述】:
我在谷歌函数上有 API,上面有两个函数,比如:
- 添加 (https://xxx.cloudfunctions.net/iotUp?text=id)
- 删除 (https://xxx.cloudfunctions.net/iotDown?text=id)
当我在网络浏览器中加载它们时,每个功能都可以正常工作(添加和删除数据库上的数据)。问题是,我无法在 Raspberry Pi 3 上的 python 脚本中执行此操作。我想在开关的打开和关闭位置使用这些 URL。
RasPi 上的 Python 脚本
#buttoninput
import RPi.GPIO as GPIO
import sys
import requests
myid="dedektor001"
def button_callback(channel):
sys.stdout.write('\033c')
print('open')
requests.get("https://xxx.cloudfunctions.net/iotUptext=myid,timeout=1")
def button_off(channel):
sys.stdout.write('\033c')
print('close');
requests.get("https://xxx.cloudfunctions.net/iotDowntext=myid,timeout=1")
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD);
buttonon = 10
buttonoff = 8
GPIO.setup(buttonon, GPIO.IN, pull_up_down=GPIO.PUD_DOWN);
GPIO.setup(buttonoff, GPIO.IN, pull_up_down=GPIO.PUD_DOWN);
print("ok");
GPIO.add_event_detect(buttonon,GPIO.RISING,callback=button_callback)
GPIO.add_event_detect(buttonoff, GPIO.RISING, callback=button_off);
message= input("enter to exit")
GPIO.cleanup();
此代码在第一次切换开关时有效,但它会冻结。即使我改变开关位置也会打印“打开”。
【问题讨论】:
-
除了字符串中的语法错误之外,还应该进行一些身份验证,不是吗。
-
实际上它有效,我认为只是等待回复。正如我所说,第一次切换后冻结。 @克劳斯D。
-
您是否尝试在没有任何请求的情况下打印一些消息?检查问题是否与请求(看起来不像)或逻辑(可能与仅工作一次的事件处理程序)有关?
-
是的,它可以在没有请求的情况下正常工作@extempl
-
requests.get调用中的那些 url 看起来不太正确,也许它们应该与您在问题顶部提供的那些匹配? (无论哪种方式,它们看起来都不是有效的 URL,因为最后的路径/查询字符串混淆了)
标签: python raspberry-pi python-requests google-cloud-functions