[英]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.