我正在尝试使用 Raspberry Pi 套件的 GPIO 引脚(引脚 4)将 LDR 传感器连接到 IoT 并发布 MQTT 消息。我使用激光作为发射器,LDR传感器作为接收器,LDR传感器的输出信号是(0或1),如果有东西通过激光线,LDR传感器的输出将为1,那么代码必须发布一个 MQTT 消息。
我试过这个代码:
import paho.mqtt.client as mqtt
import RPi.GPIO as GPIO
import time
import ssl
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.IN)
# Define Variables
MQTT_PORT = 1883
MQTT_KEEPALIVE_INTERVAL = 60
MQTT_TOPIC = "ldr"
MQTT_MSG = "there is a product"
MQTT_HOST = "iot.eclipse.org"
# Define on_publish event function
def on_publish(client, userdata, mid):
print ("Message Published...")
# Initiate MQTT Client
mqttc = mqtt.Client()
# Register publish callback function
mqttc.on_publish = on_publish
# Connect with MQTT Broker
mqttc.connect(MQTT_HOST, MQTT_PORT, MQTT_KEEPALIVE_INTERVAL)
print ("Connected Successfully")
mqttc.loop_forever()
#Main Loop
while True
input_value = GPIO.input(4)
if input_value == 1:
mqttc.publish(MQTT_TOPIC,MQTT_MSG,qos=1)
print ("message published")
time.sleep(1)
当我运行它时,我只看到打印的输出文本“成功连接”,我没有看到任何预期的 MQTT 消息。
你能告诉我这段代码有什么问题吗?我根据这个想法创建了主循环:input_value = GPIO.input(4)
如果信号的值为 1 应该输入信号然后它应该发布消息我的代码有什么问题?