Всем привет!
Принимайте новичка. ))
Я еще только учусь как работатьc esp, но уже удалось подключить rgb ленту и сделать для нее эффекты. Теперь возникла необходимость подключить диммеры к светодиодным лентам на кухни и связать в homebtidge.
На одном сайте нашел инструкцию и код для ардуино. Код был сырой и чтобы скомпилился я его немного подправил но все равно лента не работает (я так понимаю не приходит сигнал от брокера)
Вот код
Подскажите пожалуйста, что я делаю не так?
PS подключение ленты через IRF520. Если ставить значение принудительно лента работает.
Принимайте новичка. ))
Я еще только учусь как работатьc esp, но уже удалось подключить rgb ленту и сделать для нее эффекты. Теперь возникла необходимость подключить диммеры к светодиодным лентам на кухни и связать в homebtidge.
На одном сайте нашел инструкцию и код для ардуино. Код был сырой и чтобы скомпилился я его немного подправил но все равно лента не работает (я так понимаю не приходит сигнал от брокера)
Вот код
Код:
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char *ssid = "*****"; //название сети
const char *password = "*****"; //пароль сети
const char *mqtt_server = "192.168.1.***"; //адрес mqtt брокера (RaspberryPi)
WiFiClient espClient; //инициализация WIFI
PubSubClient client(espClient); //инициализация mqtt клиента
#define LEDPIN 12 // D6 на wemos.
// функция получения топиков от брокера
void callback(char* topic, byte* payload, unsigned int length)
{
Serial.println();
Serial.print(topic); // выводим в сериал порт название топика
Serial.print(" => ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
} // выводим в сериал порт значение полученных данных
String strTopic = String(topic); //получаем название топика
if (strTopic == "ESP03/led") //проверяем из нужного ли топика пришли данные
{
payload[length] = 0; //чистим от мусора, длинна строки
String strPayload = String((char*)payload); //считываем значение топика //конвертируем для шим
int stled = map(strPayload.toInt(), 0, 100, 0, 1023); //приводим значение 0-100 в значение 0-1023
digitalWrite(LEDPIN, stled); //устанавливаем уровень шим сигнала
Serial.print(" => ");
Serial.print(stled); // для отладки
}
}
void setup() {
pinMode(LEDPIN, OUTPUT); //устанвливаем ка выход
Serial.begin(115200);
//digitalWrite(LEDPIN, HIGH);
}
void loop() {
if (WiFi.status() != WL_CONNECTED) //если нет подключения к вифи
{
WiFi.begin(ssid, password); //конектимся
if (WiFi.waitForConnectResult() != WL_CONNECTED)
return; //если не получилось то повторяем
}
if (WiFi.status() == WL_CONNECTED) //если подключились
{
if (!client.connected()) //если нет mqtt
{ // то подключаемся к mqtt
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
client.connect("ESP03led"); //id клиента(должно быть уникальным в сети)
client.subscribe("ESP03/led"); //подписываемся на топик
}
if (client.connected()) { // если подключились
client.loop(); // то запускаем цикл получения топиков)))
}
}
}
PS подключение ленты через IRF520. Если ставить значение принудительно лента работает.