Javascript I';我试图找到一种在服务器端使用GPIO输入将客户端重定向到另一个网页rpi、rpi.GPIO、python、flask、JS的方法

Javascript I';我试图找到一种在服务器端使用GPIO输入将客户端重定向到另一个网页rpi、rpi.GPIO、python、flask、JS的方法,javascript,python,flask,raspberry-pi,gpio,Javascript,Python,Flask,Raspberry Pi,Gpio,我在做一个逃生室项目。实际上,我试图创建的行为如下所示: Web浏览器以通常的方式显示Web应用程序的一部分。从这一点开始,客户端上的键盘/鼠标将不再有其他输入。我已经使用JS解决了基于时间的更改,因此我可以加载web应用程序,并且在一段时间后,JS会重定向到另一个应用程序路径。这里是我开始挣扎的地方,以及基于时间的重定向,我希望在服务器端输入GPIO,使浏览器重定向到另一个应用程序路由 我使用的是线程,所以当approute函数运行时,它会启动正在等待GPIO输入的函数上运行的线程。waitf

我在做一个逃生室项目。实际上,我试图创建的行为如下所示:

Web浏览器以通常的方式显示Web应用程序的一部分。从这一点开始,客户端上的键盘/鼠标将不再有其他输入。我已经使用JS解决了基于时间的更改,因此我可以加载web应用程序,并且在一段时间后,JS会重定向到另一个应用程序路径。这里是我开始挣扎的地方,以及基于时间的重定向,我希望在服务器端输入GPIO,使浏览器重定向到另一个应用程序路由

我使用的是线程,所以当approute函数运行时,它会启动正在等待GPIO输入的函数上运行的线程。
waitfortrigger
函数正常工作并运行,直到我尝试返回重定向。此时,我在Flask调试日志中得到一个未知的上下文错误。我可以使用
app.app\u context
app.app\u context.push
修复错误。此时,
waitfortrigger
函数将正常运行,但不会导致客户端重定向。我也尝试过使用
copy\u current\u context decorator
,但并不真正了解如何使用它,也没有成功。您可能会注意到,我使用的是一个用于重定向的URL,而不是用于函数的
URL\u。这是因为没有客户端请求
url\u for
无法构建我试图重定向到的url。使用完整的URL对于我正在尝试做的事情来说真的不是一个问题

我想我说的对,它在客户端不起作用的原因是因为请求不是来自客户端,而是在与主应用程序不同的线程中,所以它不知道重定向什么

下面是我正在尝试的代码的简化版本:

从flask导入flask、呈现模板、重定向、url、会话、日志
将RPi.GPIO导入为GPIO
导入线程
app=烧瓶(名称)
输入_引脚=18
def gpio_设置():
GPIO.setmode(GPIO.BCM)
GPIO.setup(输入引脚,GPIO.IN,上下拉=GPIO.PUD上)
def waitfortrigger():
当GPIO.input(input_引脚)==GPIO.HIGH时:
持续
其他:
con.push()
返回重定向('http://192.168.0.17:5000/page2')
@应用程序路径(“/”)
def home():
trig_thread.start()
全球大会
con=app.app\u context()
返回渲染模板('home.html')
@应用程序路径(“/page2”)
def page2():
GPIO.cleanup()
返回呈现模板('page2.html')
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
gpio_设置()
app.secret_key='test'
trig_thread=threading.thread(target=waitfortrigger)
运行(debug=True,host=0.0.0.0')
我现在想的是:也许有一种方法,我可以使用
waitfortrigger
函数在服务器端看到GPIO输入时更新某些内容,然后用JS监视某些内容,然后在客户端的JS中重定向

或者使用Flask作为web应用程序不是最好的解决方案?
我边学习边学习,所以如果有任何建议,我将不胜感激。

最后,我努力做到这一点。。。。 从rpi GPIO获取输入的函数现在创建一个文件。 在我的主应用程序中,我用if语句创建了一个新的flask路由。如果文件不存在,函数将返回404。 在客户端的js中,我查询url,如果返回200,则只在文件存在时执行重定向

有效地使更改服务器端重定向客户端成为可能

我将输入更改为pwm,从而有效地创建了一个安全的不倒翁锁,当输入正确的代码时,它会重定向显示在逃生室屏幕上的web应用程序

感谢那个花时间纠正我原来问题中拼写和语法的人


现在,如果我能弄清楚为什么我的rpi会双重执行我的代码hmmm

的话,最后我想做这件事。。。。 从rpi GPIO获取输入的函数现在创建一个文件。 在我的主应用程序中,我用if语句创建了一个新的flask路由。如果文件不存在,函数将返回404。 在客户端的js中,我查询url,如果返回200,则只在文件存在时执行重定向

有效地使更改服务器端重定向客户端成为可能

我将输入更改为pwm,从而有效地创建了一个安全的不倒翁锁,当输入正确的代码时,它会重定向显示在逃生室屏幕上的web应用程序

感谢那个花时间纠正我原来问题中拼写和语法的人


现在,如果我能弄清楚为什么我的rpi会双重执行我的代码,那么最后我找到了一种方法,最后我找到了一种方法。