여기에는이 문제의 인스턴스가 많이 있지만, 스크립트를 실행하려고 할 때 모두 오류를 나열합니다. 터미널에서 스크립트를 실행하려고하면 잠시 생각한 다음 정상적인 터미널 프롬프트로 돌아갑니다 (오류 메시지없이).IDLE에서 실행 중이지만 터미널에는 실행되지 않는 Python 스크립트
저는 파이썬을 처음 접했으므로, 단순히 잘못된 것을하고 있으면 저를 용서해주세요. 그러나 저의 삶을 위해서. . . IDLE을 열거 나 실행할 때 완벽하게 실행됩니다.
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()
경우 사람이 궁금해, 나는 (mqtt.py
파일 이름 인 상태) 명령 python mqtt.py
를 사용하여이 작업을 실행하려고하고있다. 또한 IDLE과 터미널에서 Python2.7을 사용하고 있습니다.
잠깐 생각하면 오류없이 프롬프트로 돌아가 일반적으로 완료 될 때까지 실행됩니다. –
그게 한 가지 생각 이었지만,'client.loop_start' 줄은 취소 될 때까지 계속 유지해야합니다. . . 적어도 나는 그것이해야한다고 생각했다. 어느 쪽이든, IDLE에서 실행될 때 MQTT 포스트를 계속 실행하고 수신 대기한다. – LiquidDrummer