我已在我的Raspberry Pi上设置了Google助手sdk,如下所示:https://developers.google.com/assistant/sdk/prototype/getting-started-pi-python/run-sample
现在为了重新运行助手我已经找到了两个命令
$ source env/bin/activate
和
(env) $ google-assistant-demo
但是我希望将此过程自动化为一个脚本,我可以从rc.local
调用(后跟一个&
),以便从启动时启动助手。
但是如果我运行一个简单的脚本
#!/bin/bash
source env/bin/activate
google-assistant-demo
助手不在环境中运行
我的环境路径是/home/pi/env/bin/activate
如何让脚本启动环境,然后在虚拟环境中运行助手?
编辑:最后我采用了以下方法:
以此为基础: https://youtu.be/ohUszBxuQA4?t=774 - 感谢Eric Parisot
您需要download the src file他使用并将其内容提取到/home/pi/src/
但是有一些变化。
我没有将gassist.sh
作为sudo
运行,因为它给了我以下错误:
OpenAlsaHandle PcmOpen: No such file or directory
[7689:7702:ERROR:audio_input_processor.cc(756)] Input error
ON_MUTED_CHANGED:
{‘is_muted’: False}
ON_START_FINISHED
ON_ASSISTANT_ERROR:
{‘is_fatal’: True}
[7689:7704:ERROR:audio_input_processor.cc(756)] Input error
ON_ASSISTANT_ERROR:
{‘is_fatal’: True}
修复:请勿以sudo
如果gassist.sh
出现关于RPi.GPIO
的错误,则需要执行https://youtu.be/ohUszBxuQA4?t=580:
$ cd /home/pi/env/bin
$ source activate
(env) $ pip install RPi.GPIO
(env) $ deactivate
然后我做了sudo nano /etc/profile
并将其附加到最后:
#Harvs was here on 24/06/17
if pidof -x "gassist.sh" >/dev/null; then
echo ""
echo "/etc/profile says:"
echo "An instance of Google Assistant is already running, will not start again"
echo ""
else
echo "Starting Google Assistant..."
echo "If you are seeing this, perhaps you have SSH within seconds of reboot"
/home/pi/src/gassist.sh &
fi
现在它完美无缺,并且在虚拟环境中:)
答案 0 :(得分:2)
在此处找到解决方案:https://raspberrypi.stackexchange.com/a/45089
在根目录中创建一个启动shell脚本(我将其命名为#34;启动"),使其也可执行:
sudo nano launch.sh
我是这样写的:
#!/bin/bash
source /home/pi/env/bin/activate
/home/pi/env/bin/google-assistant-demo
保存文件
编辑LXDE-pi自动启动文件
sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart
将其添加到该文件的底部
./launch.sh
重新启动
答案 1 :(得分:0)
我认为这篇文章可能会有所帮助:Why do people write #!/usr/bin/env python on the first line of a Python script? 基本上,哟会在脚本的顶部添加#!/ usr / bin / env python而不是#!/ bin / bash,你可以使用chmod 755使你的文件可执行。另外不要忘记保持& ;在电话结束时google-assistant-demo&和引用绝对文件名而不是https://www.raspberrypi.org/documentation/linux/usage/rc-local.md中所述的相对文件名
答案 2 :(得分:0)
从rc.local
执行的脚本在根目录中执行(或者可能在root
用户的主目录中运行,具体取决于发行版,我认为?)
简单的解决方法是编写环境的完整路径。
#!/bin/bash
source /home/pi/env/bin/activate
google-assistant-demo
# or maybe /home/pi/google-assistant-demo
无需在rc.local
答案 3 :(得分:0)
最后我采用了以下方法:
以此为基础:https://youtu.be/ohUszBxuQA4?t=774 - 感谢Eric Parisot
但是有一些变化。
您需要download the src file他使用并将其内容提取到/home/pi/src/
我没有将gassist.sh
作为sudo
运行,因为它给了我以下错误:
OpenAlsaHandle PcmOpen: No such file or directory
[7689:7702:ERROR:audio_input_processor.cc(756)] Input error
ON_MUTED_CHANGED:
{‘is_muted’: False}
ON_START_FINISHED
ON_ASSISTANT_ERROR:
{‘is_fatal’: True}
[7689:7704:ERROR:audio_input_processor.cc(756)] Input error
ON_ASSISTANT_ERROR:
{‘is_fatal’: True}
修复:不要以sudo身份运行
如果gassist.sh
出现关于RPi.GPIO
的错误,则需要执行https://youtu.be/ohUszBxuQA4?t=580:
$ cd /home/pi/env/bin
$ source activate
(env) $ pip install RPi.GPIO
(env) $ deactivate
然后我做了sudo nano /etc/profile
并将其附加到最后:
#Harvs was here on 24/06/17
if pidof -x "gassist.sh" >/dev/null; then
echo ""
echo "/etc/profile says:"
echo "An instance of Google Assistant is already running, will not start again"
echo ""
else
echo "Starting Google Assistant..."
echo "If you are seeing this, perhaps you have SSH within seconds of reboot"
/home/pi/src/gassist.sh &
fi
现在它完美运行,在虚拟环境中,并在启动到CLI模式! :)