NameError: имя 'process_button16' не определено

Я получаю NameError: name 'process_button16' is not defined ошибка при запуске следующего кода.

Он также включает светодиоды, не нажимая кнопку... это не должно делать это...

Я пытаюсь реализовать действие нажатия кнопки, используя приложение в appdaemon для Home Assistant. Я бывший разработчик, но не Python, поэтому я бьюсь головой о клавиатуру здесь... Любая помощь будет наиболее ценной.

import appdaemon.appapi as appapi
from gpiozero import Button
import RPi.GPIO as GPIO

global button    
BUTTON_PIN = 16
button = None



class ButtonSense(appapi.AppDaemon):
    GPIO.output(17,GPIO.LOW)
    GPIO.output(27,GPIO.LOW)

    def initialize(self):
        self.log("-------  Hello -------")
        button = Button(BUTTON_PIN)
        button.when_pressed = process_button16()

    def process_button16():
            GPIO.output(17,GPIO.HIGH)
            GPIO.output(27,GPIO.HIGH)
            self.log("-------  Pressed -------")

1 ответ

Решение

Замещать button.when_pressed = process_button16() с button.when_pressed = self.process_button16(), так как вы определили process_button16() как частная функция класса ButtonSense,

button.when_pressed = process_button16() пытается назначить глобальную функцию с именем process_button16() в button.when_pressed и поскольку вы не определили ни одной такой глобальной функции, она выдает ошибку NameError: имя 'process_button16' не определено

Другие вопросы по тегам