Spiritwolf
New member
Доброго времени суток, форумчане!
Прошу вашей помощи!
Суть прошивки: отправляю в топик "soc1" сообщение. Если оно получено ESP8266, то модуль отвечает в топике "soc1feedback".
Проблема: отправляю "on", и модуль в ответ спамит "on" (предполагалось, что ответит один раз). Шлю следом "off" - модуль спамит "on" и "off" по очереди. В чем может быть проблема, подскажите, пожалуйста.
Прошу вашей помощи!
Суть прошивки: отправляю в топик "soc1" сообщение. Если оно получено ESP8266, то модуль отвечает в топике "soc1feedback".
Проблема: отправляю "on", и модуль в ответ спамит "on" (предполагалось, что ответит один раз). Шлю следом "off" - модуль спамит "on" и "off" по очереди. В чем может быть проблема, подскажите, пожалуйста.
Код:
void callback(const MQTT::Publish& pub)
{
Serial.print(pub.topic());
Serial.print(" => ");
Serial.print(pub.payload_string());
if(payload=="on"){
digitalWrite(LED_BUILTIN, LOW);
client.publish("soc1feedback","on");
};
if(payload=="off"){
digitalWrite(LED_BUILTIN, HIGH);
client.publish("soc1feedback","off");
};
}
void setup(void)
{
Serial.begin(115200);
Serial.println();
Serial.printf("Connecting to %s\n", ssid); // "Подключение к "
WiFi.begin(ssid, pass);
pinMode(LED_BUILTIN, OUTPUT);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("Connected, IP address: "); // "Подключено, IP-адрес: "
Serial.println(WiFi.localIP());
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
if (!client.connected()) {
Serial.println("Connecting to MQTT server");
if (client.connect(MQTT::Connect("").set_auth(mqtt_user, mqtt_pass))) {
Serial.println("Connected to MQTT server");
client.set_callback(callback);
client.subscribe("soc1");
client.subscribe("soc1feedback");
} else {
Serial.println("Could not connect to MQTT server");
delay(500);
}
}
if (client.connected())
client.loop();
}
}