Разобрался наконец то с подключением и тп...
При загрузке прочитывает только топик Home/rgbr, второй топик Home/svetdiap не читает...
Но если я меняю их с телефона то читатет оба.
как заставить читать либо все при старте ... либо принудительно читать топик ?
При загрузке прочитывает только топик Home/rgbr, второй топик Home/svetdiap не читает...
Но если я меняю их с телефона то читатет оба.
как заставить читать либо все при старте ... либо принудительно читать топик ?
Код:
#include <MQTT.h> // Подключаем библиотеку для работы протоколом MQTT
#include <PubSubClient.h> // Подключаем библиотеку для получения и публикации топиков от/на брокере
#include <ESP8266WiFi.h> // Подключаем библиотеку для работы с WiFi
//const char *ssid = ""; // Имя вайфай точки доступа
//const char *pass = ""; // Пароль от точки доступа
const char *ssid = ""; // Имя вайфай точки доступа
const char *pass = ""; // Пароль от точки доступа
const char *mqtt_server = ""; // Имя сервера MQTT
const int mqtt_port = ; // Порт для подключения к серверу MQTT
const char *mqtt_user = ""; // Логи от сервер
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; // Создаем массив для приема данных
int hour1, hour2, hour3, hour4; //переменные для временных диапозонов. часы.
int 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); // включаем или выключаем светодиод в зависимоти от полученных значений данных
Serial.println ("Вкл");
}
else {
analogWrite(D1, 0); // включаем или выключаем светодиод в зависимоти от полученных значений данных
Serial.println ("Выкл");
}
}
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("Подключение не удалось");
}
}
}
}
Последнее редактирование: