我对python很陌生,只是在以下问题上悬而未决。
我正在尝试建立一个植物浇水自动化。作为基础,使用龙卷风套接字服务器,该服务器侦听客户端轮询并提供数据以进行可视化。
对于浇水自动化,我创建了一个连续回调(每 30 分钟一次(,其中我想检查湿度并控制泵(GPIO 输出(。
任务:如果回调启动并且测量到低湿度,则应通过切换 GPIO 引脚一段时间来开始泵送。(时间在SQLITE DB中定义(
问题:我该怎么做,我输入回调并开始泵操作(我有 4 个泵(并在定义的时间后结束?(定时器?,定时器中断?不影响套接字服务器 IOloop?
.
.
谢谢你和最良好的祝愿
塞巴斯蒂安
我猜
def on_button_or_whatever():
setGPIO_HIGH()
timer = threading.Timer(target=setGPIO_LOW,5.0)
timer.start()
多亏了Joran,我做到了。
这是我的代码。
GPIO_PUMP_1 = 17
GPIO_PUMP_2 = 27
GPIO_PUMP_3 = 22
GPIO_PUMP_4 = 10
#function which switches the relais off (low-active)
def setGPIO_HIGH(pin):
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, GPIO.LOW)
return True
#function which switches the relais on (low-active)
def setGPIO_LOW(pin):
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, GPIO.HIGH)
return True
#main function for controlling the watering logic
def doStuff():
setGPIO_HIGH(GPIO_PUMP_1)
setGPIO_HIGH(GPIO_PUMP_2)
setGPIO_HIGH(GPIO_PUMP_3)
setGPIO_HIGH(GPIO_PUMP_4)
timer1 = threading.Timer(5.0, setGPIO_LOW, [GPIO_PUMP_1])
timer1.start()
timer2 = threading.Timer(6.0, setGPIO_LOW, [GPIO_PUMP_2])
timer2.start()
timer3 = threading.Timer(7.0, setGPIO_LOW, [GPIO_PUMP_3])
timer3.start()
timer4 = threading.Timer(8.0, setGPIO_LOW, [GPIO_PUMP_4])
timer4.start()
WebSocketHandler.broadcast("all done")
return True