• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

MQTT и HTTP сервер

leon013

New member
Задача проста. Основная работа ESP это MQTT клиент. Но для запуска нужны параметры WiFi и MQTT брокера. Решил задействовать EEPROM. Логика такая считываем данные из памяти и начинаем коннектится к вифи. Смогли - то запуск mqtt клиента, если нет то запускаем точку доступа с сервером , на странице которого ввод всех параметров . После ввода все записывается в EEPROM. Подскажите как правильно запустить или сервер или клиента. Пока не запускаю mqtt клиента, а его настройка только в setup{} точка доступа с сервером работает отлично. Стоит расскомментировать все что касаемо mqtt клиента. К точке доступа еще подключиться можно, а вот страница для данных уже не загружается.
С mqtt клиентом тоже самое, он запускается, коннектится с брокером , но получить данные топика не получает.
По отдельности все исходники рабочие....
 

leon013

New member
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <EEPROM.h>
#include <PubSubClient.h>


String str = "";
String _ssid;
String _password;
//char *mqtt_server;
String mqtt_server ;
unsigned int mqtt_port;
//char *mqtt_user;
String mqtt_user ;
//char *mqtt_pass;
String mqtt_pass ;
unsigned int count;

boolean conf = false;

String html_header = "<html>\
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\
<head>\
<title>ESP8266 Settings</title>\
<style>\
body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\
</style>\
</head>";

ESP8266WebServer server(80);
WiFiClient wclient;
//PubSubClient client(wclient, mqtt_server, mqtt_port);


void setup(void)
{
pinMode(16, OUTPUT);
digitalWrite(16, HIGH);
Serial.begin(115200);
eep_init();
WiFi_Init();

}
void loop() {
int i;
//mqtt_client();


delay(1);
count++;
if(count < 10){
digitalWrite(16, LOW);
}
else{digitalWrite(16, HIGH);}
if(count > 500) count = 0;
}
вот так все серверное работает.
как только раскомментирую //PubSubClient client(wclient, mqtt_server, mqtt_port); все кранты работе сервера
 
Сверху Снизу