我有一个主文件fileA.py
,它根据GPIO触发器控制我的无线电演播室的照明。我关心的部分是在While True循环中,如下所示:
While True:
#other triggers for other things unrelated
if GPIO.input(25) == GPIO.LOW and (state) = 'off':
blue()
studiostatus = "online"
#other triggers for other things unrelated
elif count > 7200:
dbo()
clockoff()
studiostatus = "offline"
然后,我在同一台树莓派上同时运行了第二个python文件fileB.py
import SocketServer
from BaseHTTPServer import BaseHTTPRequestHandler
def some_function():
print "some_function got called"
class MyHandler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path == '/doorbell':
some_function()
self.send_response(200)
httpd = SocketServer.TCPServer(("", 8080), MyHandler)
httpd.serve_forever()
然而,我希望这能不断更新studiostatus
,使其与fileA.py
不同,从而使fileB.py
中的行变为
if self.path == '/doorbell' and studiostatus = "online":
action1()
elif self.path == '/doorbell' and studiostatus = "offline":
action2()
任何帮助都非常感谢,因为目前我看不出如何最好地解决这个
如果我理解正确,当有人在大楼里时,你希望一些灯闪烁。注意上一句没有提到HTTP、文件、变量、GPIO或代码的任何技术细节。在描述你想做的事情时,这总是你应该开始的地方
现在来谈谈";如何";。。。在高层,您有一个门铃,可以将命令作为HTTP请求发送到RPi。你需要向灯光的控制装置发送GPIO信号。
看起来这是在两个单独的文件中进行的,这两个文件作为单独的脚本运行。一个文件通过GPIO引脚控制灯,另一个文件接收来自门铃的HTTP请求。
解决这个问题的一种方法是,只要启动当Ring检测到有人进入房子时会闪烁灯光的脚本,并在检测到所有人都离开时杀死该脚本。
另一种解决方案是像您一样使用状态值,但HTTP服务器将状态写入文件,GPI脚本从文件中读取。