Я выполняю программу в Arduino IDE с целью мигать светодиодом на макете с NodeMCU всякий раз, когда он получает сообщение ON из темы MQTT. Я выполнил программу, но светодиод не мигает.Если я делаю программу удаления части MQTT, все в порядке.Возможно, я что-то не так делаю в loop ().
Я создал тему MQTT с помощью Node-Red. Когда я тестировал публикацию-подписку на Node Red, поток работает, как и ожидалось.Но когда я пытаюсь прочитать сообщение от arduino, я не вижу, чтобы светодиод менял его состояние.
Копирование соответствующей части кода -
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
// Update these with values suitable for your network.
const char* ssid = "NET";
const char* password = "xx";
const char* mqtt_server = "192.x.x.x";
const int lamp = 4;
WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
String messageTemp;
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
messageTemp += (char)payload[i];
}
Serial.println();
Serial.println("messageTemp-"+messageTemp);
if (topic=="room/lamp") {
Serial.print("Changing Room lamp to ");
if (messageTemp == "on") {
digitalWrite(lamp, LOW);
Serial.print("On");
}
else if (messageTemp == "off") {
digitalWrite(lamp, HIGH);
Serial.print("Off");
}
}
Serial.println();
}
void setup() {
pinMode(lamp, OUTPUT);
Serial.begin(9600);
setup_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
}
Я ожидаю, когда нажимаю иОтключить сообщения на тему «комната / лампа» от nodered, светодиод должен включаться и выключаться. Но этого сейчас не происходит. Я новичок в Arduino. Пожалуйста, сообщите.