Squeak.ru - шаблоны программирования

GPIO Raspberry Pi Python

Я не могу понять, в чем моя проблема. Было бы хорошо, если бы кто-нибудь мог мне помочь. Mqtt работает хорошо, но каждый раз, когда срабатывает GPIO, программа вылетает.

Ошибка:

Связано с кодом результата 0

/ test / light1 0 0 Отслеживание (последний вызов последним): файл "garage.py", строка 33, в файле client.loop_forever () "/usr/local/lib/python2.7/dist-packages/paho/mqtt /client.py ", строка 1481, в loop_forever rc = self.loop (timeout, max_packets) Файл" /usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py ", строка 1003, in loop rc = self.loop_read (max_packets) Файл "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", строка 1284, в файле loop_read rc = self._packet_read () " /usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py ", строка 1849, в файле _packet_read rc = self._packet_handle ()" /usr/local/lib/python2.7/dist -packages / paho / mqtt / client.py ", строка 2305, в _packet_handle return self._handle_publish () File" /usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py ", строка 2500, в файле _handle_publish self._handle_on_message (сообщение) "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", строка 2647, в _handle_on_message self.on_message (self, self._userdata, message) Файл "garage.py", строка 22, в on_message GPIO.output (pin, GPIO.LOW) RuntimeError: канал GPIO не был настроен как OUTPUT

#!/usr/bin/env python
import paho.mqtt.client as mqtt
import RPi.GPIO as GPIO

pin = 15

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)

GPIO.setup(pin, GPIO.OUT)
GPIO.setup(pin, GPIO.HIGH)

def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))

    client.subscribe("/test/light1")

def on_message(client, userdata, msg):
        print(msg.topic + " " + str(msg.payload))
        if msg.payload == "0":
                print("0")
                GPIO.output(pin, GPIO.LOW)
        if msg.payload == "1":
                print("1")
                GPIO.output(pin, GPIO.HIGH)

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect("192.168.178.60", 1883, 60)

client.loop_forever()
09.05.2018

  • Ошибка очевидна, вы не настроили канал GPIO как выход GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH) chan_list = [11,12] # also works with tuples GPIO.output(chan_list, GPIO.LOW) # sets all to GPIO.LOW GPIO.output(chan_list, (GPIO.HIGH, GPIO.LOW)) # sets first HIGH and second LOW 10.05.2018

Ответы:


1

Вы вызываете GPIO.setup(pin, GPIO.HIGH), чтобы установить начальное значение (после установки режима вывода), когда вы должны вызывать GPIO.output(pin, GPIO.HIGH). В качестве альтернативы вы можете использовать GPIO.setup(pin, GPIO.OUT, initial=GPIO.HIGH).

09.05.2018

2

На первый взгляд, я мог бы подумать, что проблема в том, что GPIO.setup не распространяется на определенные функции. Вместо того, чтобы определять их глобально вверху, создайте вспомогательный метод

def gpio_setup():
  pin = 15

  GPIO.setwarnings(False)
  GPIO.setmode(GPIO.BCM)

  GPIO.setup(pin, GPIO.OUT)
  GPIO.setup(pin, GPIO.HIGH)

А затем вызовите этот метод в каждом из других методов:

def on_message(client, userdata, msg):
  gpio_setup()

Вы даже можете начать с настройки GPIO.setup вручную в каждом методе, чтобы найти, где он ломается.

09.05.2018
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...