Я не могу понять, в чем моя проблема. Было бы хорошо, если бы кто-нибудь мог мне помочь. 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()