如何用按键关闭AIY语音包

How to shutdown AIY voice kit with button

我使用以下代码作为 AIY VOICE KIT google 助手。此套件使用 raspberry pi 至 运行 google 助手。所以基本上你可以建立自己的迷你 google 家并控制其他树莓派或任何可以与 python 交谈的东西。我用内置的 python 演示设置了它,这样当我按下 pi 顶部的按钮时,我就可以用麦克风与 google 交谈。这有点像用按钮说“OK google”。


#!/usr/bin/env python3
# Copyright 2017 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""A demo of the Google Assistant GRPC recognizer."""

import subprocess
import aiy.cloudspeech
import argparse
import locale
import logging
import signal
import sys

from aiy.assistant.grpc import AssistantServiceClientWithLed
from aiy.board import Board

def volume(string):
    value = int(string)
    if value < 0 or value > 100:
        raise argparse.ArgumentTypeError('Volume must be in [0...100] range.')
    return value

def locale_language():
    language, _ = locale.getdefaultlocale()
    return language

def main():
    logging.basicConfig(level=logging.DEBUG)
    signal.signal(signal.SIGTERM, lambda signum, frame: sys.exit(0))

    parser = argparse.ArgumentParser(description='Assistant service example.')
    parser.add_argument('--language', default=locale_language())
    parser.add_argument('--volume', type=volume, default=100)
    args = parser.parse_args()

    with Board() as board:
        assistant = AssistantServiceClientWithLed(board=board,
                                                  volume_percentage=args.volume,
                                                  language_code=args.language)
        while True:
            logging.info('Press button to start conversation...')
            board.button.wait_for_press()
            logging.info('Conversation started!')
            assistant.conversation()

if __name__ == '__main__':
    main()

程序 运行 没问题。但是,如果不连接到桌面,则无法关闭电源。我想修改程序,如果我按住按钮十秒钟,它就会关机。如果这有什么不同,我使用 raspberry pi 零到 运行 这个。谁能帮帮我?

我为 rc.local 编写了一些 python 代码,允许我使用内置按钮将其关闭。

import subprocess
from aiy.board import Board
with Board() as board:
    board.button.wait_for_press()
    subprocess.call('sudo shutdown now', shell=True)

希望对遇到同样问题的人有所帮助。