来自Python的可控且可覆盖的蜂鸣器

时间:2019-07-20 14:31:02

标签: python lua raspberry-pi domoticz

首先让我指出我的Python技能不是那么好,所以请耐心等待,如果您不介意新手问题,请跳过此问题;)

我的设置包括一个树莓派,domoticz(家庭自动化软件)和一个连接GPIO的蜂鸣器。控制蜂鸣器已经可以了,所以一切都很好。我可以从domoticz环境中启动python脚本,然后输出蜂鸣声。主要问题是domoticz脚本编制环境将等待脚本完成。因此,一个30秒的提示音循环将锁定环境30秒钟。第二个问题是,一旦我启动了该30秒脚本,就无法取消它。

所以基本上我有两个要求:

  1. 我调用脚本的方式应该是非阻塞的。现在,我正在使用io.popen()从另一个基于LUA的脚本中调用该脚本。
  2. 任何连续命令都应覆盖先前发出的命令。因此,当运行30秒的哔哔声循环时,类似“扬声器关闭”的命令应将其关闭。

猜我需要的是一些有关如何在基于Python的环境中最好地做到这一点的指导。我知道我使用C#的方式,但是没有任何线索和免责声明:我真的没有为使用Python做适当的课程而烦恼,因为这只是支持脚本编写,而我没有其他选择。

我正在使用的当前蜂鸣器脚本可以在这里找到:https://gist.github.com/jsiegmund/d25e378aff799f99bd5f71819d5a84ec

从LUA拨打电话的方式:

if (zoneText == 'Arming') then
    -- Arming gives 30 seconds of delay before armed, start countdown
    domoticz.log('Arming, starting buzzer 5 secs')
    io.popen('python /home/pi/domoticz/scripts/buzzer.py 5')
end

0 个答案:

没有答案