Es gibt viele Instanzen dieses Problems hier, aber alle von ihnen zeigen einen Fehler beim Versuch, das Skript auszuführen. Wenn ich versuche, mein Skript vom Terminal aus zu starten, denkt es für etwa eine Sekunde und kehrt dann zu einer normalen Terminal-Eingabeaufforderung zurück (ohne eine Fehlermeldung).Python-Skript läuft in IDLE, aber nicht in Terminal
Ich bin neu bei Python, also vergib mir, wenn ich einfach etwas falsch mache, aber für das Leben von mir. . . Das funktioniert einwandfrei, wenn IDLE geöffnet/ausgeführt wird.
import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
import RPi.GPIO as GPIO
RELAY_PIN_1 = 23
RELAY_PIN_2 = 24
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(RELAY_PIN_1, GPIO.OUT, initial=GPIO.HIGH)
GPIO.setup(RELAY_PIN_2, GPIO.OUT, initial=GPIO.HIGH)
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("/amber/1/1")
client.subscribe("/amber/1/2")
def on_message(client, userdata, msg):
if msg.topic == "/amber/1/1":
if msg.payload == b'ON':
GPIO.output(RELAY_PIN_1, GPIO.LOW)
elif msg.payload == b'OFF':
GPIO.output(RELAY_PIN_1, GPIO.HIGH)
if msg.topic == "/amber/1/2":
if msg.payload == b'ON':
GPIO.output(RELAY_PIN_2, GPIO.LOW)
elif msg.payload == b'OFF':
GPIO.output(RELAY_PIN_2, GPIO.HIGH)
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("10.0.0.163", 1883, 60)
client.loop_start()
Falls jemand fragen, ist, ich habe versucht, dies zu laufen mit dem Befehl python mqtt.py
(mit mqtt.py
der Dateiname ist). Außerdem benutze ich Python2.7 sowohl in IDLE als auch vom Terminal.
Wenn es eine Sekunde lang darüber nachdenkt, kehrt es ohne Fehler zur Eingabeaufforderung zurück, was normalerweise bedeutet, dass es vollständig ausgeführt wird. –
Das ist ein Gedanke, den ich hatte, aber die 'client.loop_start'-Zeile sollte es bis zum Abbruch beibehalten. . . oder zumindest dachte ich es sollte. Wie auch immer, es läuft weiter und wartet auf MQTT-Posts, wenn es von IDLE ausgeführt wird. – LiquidDrummer