Я пытаюсь реализовать MQTT с Arduino и ESP8266. Предполагается, что настройка будет опубликована брокеру, переведена в спящий режим на некоторый промежуток времени, а затем сброшена сама по себе, чтобы цикл продолжился.
Эскиз:
#include <WiFiEsp.h>
#include <WiFiEspClient.h>
#include <WiFiEspUdp.h>
#include "SoftwareSerial.h"
#include <PubSubClient.h>
#include "LowPower.h"
IPAddress server(10, 8, 17, 14);
char ssid[] = "myssid";
char pass[] = "pass";
int status = WL_IDLE_STATUS;
WiFiEspClient espClient;
PubSubClient client(espClient);
SoftwareSerial soft(2,3);
void setup() {
Serial.begin(9600);
soft.begin(9600);
WiFi.init(&soft);
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
while (true);
}
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to WPA SSID: ");
Serial.println(ssid);
status = WiFi.begin(ssid, pass);
}
Serial.println("You're connected to the network");
client.setServer(server, 1883);
}
void(* resetFunc)(void)=0;
void loop() {
if (!client.connected()) {
reconnect();
}
Serial.println("going to sleep");
delay(500);
for(int i=0;i<8;i++)
LowPower.powerDown(SLEEP_8S,ADC_OFF,BOD_OFF);
delay(500);
Serial.println("resetting");
delay(500);
resetFunc();
}
void reconnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
if (client.connect("arduinoClient")) {
Serial.println("connected");
client.publish("IITMandi","testing mqtt powersaver...");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}
После нескольких публикаций (наибольшее количество последовательных публикаций, которые я видел, составляет около 20), он не может публиковать больше. Nano не нагревается, но ESP нагревается.
Кто-нибудь может сказать мне, в чем может быть причина?
failed, rc = -2
в коде библиотеки и выяснить, что это за код возврата ошибки? - person Maximilian Gerhardt   schedule 04.07.2017resetFunc()
внутри основного цикла наclient.loop()
, тестировал около 8 часов, вроде работает нормально. - person Pratik Kumar   schedule 05.07.2017