Как исправить мигание светодиода в программе arduino на основании сообщения mqtt - PullRequest
0 голосов
/ 21 сентября 2019

Я выполняю программу в 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. Пожалуйста, сообщите.

...