[英]Activate GPIO or any Python Script from Google Assistant SDK
昨天我在我的 Raspberry Pi 4 上安装了 Google Assistant SDK,我使用了这个( https://developers.google.com/assistant/sdk/guides/service/python )教程,并想让 GPIO 25 打开并通过 onoff 特征关闭,在本节中解释( https://developers.google.com/assistant/sdk/guides/service/python/extend/handle-device-commands )。
但是他们这样做的方式对我不起作用,当我运行助手并说“打开”时,Gpio 没有任何反应。
当直接运行“pushtotalk.py”时,它会给你一个错误 output 并且它显示设备处理程序没有定义,即使它就在 onoff function 之前。
这是我的代码(来自谷歌):
device_handler = device_helpers.DeviceRequestHandler(device_id)
GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT, initial=GPIO.LOW)
device_handler.command('action.devices.commands.OnOff')
def onoff(on):
if on:
logging.info('Turning device on')
GPIO.output(25, 1)
else:
logging.info('Turning device off')
GPIO.output(25, 0)
这是错误:
Traceback (most recent call last):
File "pushtotalk.py", line 465, in <module>
main()
File "/home/pi/env/lib/python3.7/site-packages/click/core.py", line 722, in __call__
return self.main(*args, **kwargs)
File "/home/pi/env/lib/python3.7/site-packages/click/core.py", line 697, in main
rv = self.invoke(ctx)
File "/home/pi/env/lib/python3.7/site-packages/click/core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/pi/env/lib/python3.7/site-packages/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "pushtotalk.py", line 425, in main
device_handler.command('action.devices.commands.OnOff')
UnboundLocalError: local variable 'device_handler' referenced before assignment
Python 对缩进级别(不是字符)非常严格。 您的device
声明有一个缩进。 使其与device_handler
对齐应该可以解决该错误。
device = '3eeb4608-7913-11ea-ad54-dca632812cbd'
device_handler = device_helpers.DeviceRequestHandler(device)
GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT, initial=GPIO.LOW)
device_handler.command('action.devices.commands.OnOff')
def onoff(on):
if on:
logging.info('Turning device on')
GPIO.output(25, 1)
else:
logging.info('Turning device off')
GPIO.output(25, 0)
这种方式现在工作非常稳定并且设备处理程序现在被识别,即使我只更改了 if 语句中的行,显然导入 GPIO 模块存在问题。
device_handler = device_helpers.DeviceRequestHandler(device_id)
@device_handler.command('action.devices.commands.OnOff')
def onoff(on):
if on:
logging.info('Turning device on')
os.system('python <Filename>.py')
else:
logging.info('Turning device off')
os.system('python <filename>.py')
这样,您可以使用 Google 助理轻松激活 Python 脚本,例如。 只需说“打开”即可使用 Raspberry Pi。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.