Разобрался наконец то с подключением и тп... При загрузке прочитывает только топик Home/rgbr, второй топик Home/svetdiap не читает... Но если я меняю их с телефона то читатет оба. как заставить читать либо все при старте ... либо принудительно читать топик ? Код (C++): #include <MQTT.h> // Подключаем библиотеку для работы протоколом MQTT #include <PubSubClient.h> // Подключаем библиотеку для получения и публикации топиков от/на брокере #include <ESP8266WiFi.h> // Подключаем библиотеку для работы с WiFi const char *ssid = ""; // Имя вайфай точки доступа const char *pass = ""; // Пароль от точки доступа const char *mqtt_server = ""; // Имя сервера MQTT const int mqtt_port = ; // Порт для подключения к серверу MQTT const char *mqtt_user = "f"; // Логи от сервер const char *mqtt_pass = ""; // Пароль от сервера WiFiClient wclient; // создаем обьект клиента Wifi PubSubClient client(wclient, mqtt_server, mqtt_port); // создаем обьект клиента MQTT #define BUFFER_SIZE 100 int tm, temp; int rgbr; String putcomand; // Создаём массив для отправки данных String getcomand; // Создаем массив для приема данных String hour1, hour2, hour3, hour4; //переменные для временных диапозонов. часы. String min1, min2, min3, min4; //переменные для временных диапозонов. минуты. int svetdiap; // количество световых диапазонов void setup() { pinMode (D1, OUTPUT); Serial.begin(115200); // Внимание !!!! при просмотре com порта выставьте скорость 115200 //svetdiap = 2; //минимальное значение световых диапазонов } void loop() { if (!client.connected()) { // переподключаемся к MQTT серверу reconnect(); } if (client.connected()) { client.loop(); //TempSend(); svetdiapf(); } } // Функция отправки показаний с термодатчика void TempSend() { if (tm == 0) { temp = 2; client.publish("/Home/temp", String(temp)); // отправляем в топик для термодатчика значение температуры //Serial.println(temp); tm = 300; // пауза между отправками значений температуры коло 3 секунд } tm--; delay(10); } void svetdiapf() { if (tm == 0) { putcomand = "AT"; putcomand += svetdiap; Serial.println (putcomand); tm = 300; } tm--; delay(10); } void callback(const MQTT::Publish & pub) { Serial.print(pub.topic()); // выводим в сериал порт название топика Serial.print(" => "); Serial.println(pub.payload_string()); // выводим в сериал порт значение полученных данных String payload = pub.payload_string(); if (String(pub.topic()) == "/Home/rgbr") // проверяем из нужного ли нам топика пришли данные { rgbr = payload.toInt(); // преобразуем полученные данные в тип integer if (rgbr != 0) { analogWrite(D1, rgbr); // включаем или выключаем светодиод в зависимоти от полученных значений данных } else { analogWrite(D1, 0); // включаем или выключаем светодиод в зависимоти от полученных значений данных } } if (String(pub.topic()) == "/Home/svetdiap") // проверяем из нужного ли нам топика пришли данные { svetdiap = payload.toInt(); // преобразуем полученные данные в тип integer } } void reconnect() { if (WiFi.status() != WL_CONNECTED) { // подключаемся к WIFI Serial.print("Подключение к WiFi SSID: "); Serial.print(ssid); Serial.println("..."); WiFi.begin(ssid, pass); if (WiFi.waitForConnectResult() != WL_CONNECTED) return; Serial.println("WiFi Подключен"); Serial.print ("IP: "); Serial.println(WiFi.localIP());//получаем IP WeMos, этот IP необходимо ввести в адресной строке браузера, чтобы получить доступ к WeMos Serial.print ("MAC: "); Serial.println(WiFi.macAddress()); //получаем MAC-адрес WeMos Serial.print ("Mask: "); Serial.println(WiFi.subnetMask()); //маску подсети Serial.print ("Gateway: "); Serial.println(WiFi.gatewayIP()); //IP- шлюза Serial.print ("SSID: "); Serial.println(WiFi.SSID());// имя сети, к которой подключен WeMos Serial.print ("уровень сигнала: "); Serial.println(WiFi.RSSI()); //и уровень сигнала } if (WiFi.status() == WL_CONNECTED) { // если вафля подключена if (!client.connected()) { // подключаемся к MQTT серверу Serial.println("Подключаемся к MQTT серверу"); if (client.connect(MQTT::Connect("arduinoClient2") .set_auth(mqtt_user, mqtt_pass))) { Serial.println("Подключение удалось"); client.set_callback(callback); client.subscribe("/Home/rgbr"); // подписывааемся по топик с данными яркости карсного client.subscribe("/Home/svetdiap"); // подписывааемся по топик с данными яркости карсного } else { Serial.println("Подключение не удалось"); } } } }
на 3 форуме спрашиваю... и везде тишина... неужто никто не делал восстановление данных после перезагрузки вемоса/ардуины и тп )