Добавьте больше трейтов и обработчиков

Вы можете добавить в модель вашего устройства столько характеристик, сколько пожелаете. Эти характеристики не привязаны к одному типу устройства, вы можете использовать их по своему усмотрению.

Это процесс добавления любого признака и обработки входящей команды:

  1. Определите, какую черту вы хотите добавить.

  2. Откройте файл pushtotalk.py .

    cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc
    nano pushtotalk.py
  3. Добавьте следующий блок кода под существующий, который обрабатывает команду action.devices.commands.OnOff (не удаляйте существующий блок кода).

    @device_handler.command('action.devices.commands.command-name')
    def my-function(parameter-name):
        if conditional:
            logging.info('Something happened.')
        else:
            logging.info('Something else happened.')
    
  4. Найдите необходимую информацию для каждой переменной в приведенном выше блоке кода.

    command-name Перейдите на страницу конкретного свойства из шага 1 (например, ColorTemperature ). Используйте команду из таблицы КОМАНДЫ УСТРОЙСТВА .
    my-function Назовите свою функцию-обработчик как хотите.
    parameter-name Посмотрите еще раз на таблицу КОМАНДЫ УСТРОЙСТВА на странице свойств. С каждой командой связан один или несколько параметров. Они перечислены в разделе "params" в JSON-запросе EXECUTE. Используйте точное имя параметра. Обратите внимание, что некоторые из этих параметров являются объектами, содержащими другие параметры — просто используйте объект верхнего уровня.
    conditional Вам не обязательно использовать условие в коде обработчика, но это может помочь дифференцировать способ выполнения команды на устройстве.

    Вот несколько примеров черт Brightness и ColorTemperature :

    @device_handler.command('action.devices.commands.BrightnessAbsolute')
    def brightnessCheck(brightness):
        if brightness > 50:
            logging.info('brightness > 50')
        else:
            logging.info('brightness <= 50')
    
    @device_handler.command('action.devices.commands.ColorAbsolute')
    def color(color):
        if color.get('name') == "blue":
            logging.info('color is blue')
        else:
            logging.info('color is not blue')
    
  5. Обновите модель устройства , указав признак, добавленный на шаге 1.

  6. Запустите измененный исходный код.

    cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc
    python pushtotalk.py
  7. Нажмите клавишу Enter и попробуйте выполнить запрос.

    Например:

    Установите яркость на 65%.

    Сделайте его синим.

Следующий шаг

Регистрация пользовательских действий с устройством