Помогите разобраться со скетчем, где ошибка?
Код: Выделить всё
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <Stepper.h>
const char* ssid = "ASUS58"; //Название сети
const char* password = "13591354"; //пароль
const char* mqtt_server = "192.168.1.10"; //ip брокера mqtt
const int stepsPerRevolution = 64; // число шагов за оборот
Stepper myStepper(stepsPerRevolution, D1, D2, D5, D6); // Инициализировать библиотеку степпинга на D1, D2, D5, D6
// myStepper - название шагового двигателяg
WiFiClient espClient; //инициализация WiFi клиента
PubSubClient client(espClient); //инициализация MQTT клиента
int max_steps = 640; //максимальное число шагов для открытия шторы по умолчанию (настроить по размеру окна)
int max_level_step = 10; //максимальное число уровней положений открытия шторы по умолчанию (настроить по размеру окна)
int last_level_step = 0; //последенне число уровня положения, по умолчанию всегда 0
void setup() //Выполняется при запуске 1 раз
{
Serial.begin(115200); //инициализация монитора порта
client.setServer(mqtt_server, 1883); //подключаемся к MQTT
client.setCallback(callback); //функция получения топиков с брокера
delay(100); //ждем 100 милисекунд
WiFi.begin(ssid, password); //подключаемся к WiFi
delay(2000); //ждем 2 секунд
client.connect("ESP8266Client"); //конектимся с брокером как клиент
client.subscribe(level_topic); //подписываемся на топик
myStepper.setSpeed(80); //устанавливаем скорость шагового двигателя на 80 rpm:
}
void callback(char* topic, byte* payload, unsigned int length) //читаем топики
{
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
int level_step =(char)payload[0]-'0'; // level_step равен значению из топика
last_level_step = level_step - last_level_step; // определяем на сколько уровней надо изменить от последнего положения
step_level = last_level_step * max_steps / max_level_step; // определяем количество шагов для level_step из топика
myStepper.step(steps_level); // делаем шаги на открытие или закрытие шторки
}
void reconnect_server() //функция проверки подключения
{
if (WiFi.status() != WL_CONNECTED) //если нет подключения с сети
{
WiFi.begin(ssid, password);
Serial.println("");
Serial.println("WiFi connect..."); //выводим в монитор порта что пытаемся подключиться
} else //если есть подключение
{
//Serial.println("");
//Serial.println("WiFi connected"); //выводим в монитор порта что подключились
// Serial.println("IP address: "); //выводим в монитор порта наш IP
// Serial.println(WiFi.localIP()); //выводим в монитор порта наш IP
// Serial.println(WiFi.RSSI()); //выводим в монитор порта уровень сети
}
if (!client.connected() && WiFi.status() == WL_CONNECTED) //если к сети подключились но к MQTT нет
{
if (client.connect("ESP8266Client")) //если с брокером уже конектились
{
Serial.println("Mosquitto connect...");//выводим в монитор порта что пытаемся подключиться
client.subscribe(level_topic); //подписываемся на топик
} else //если не получилось
{
Serial.print("failed connect Mosquitto, rc="); //пишем ошибку
Serial.print(client.state());
Serial.println("");
}
}
}
void loop() { //основной цикл
if (!client.connected()) {
delay(5000);
reconnect();
}
client.loop();
}