4х канальное реле esp8266.



  • Доброго всем времени суток. У меня вопрос. Я приобрёл и настроил 4х канальное реле esp8266. На ESP12F. WIFI. Реле в одной сети с роутером и привязанно к нему по WIFI. Реле работает через браузер. Например 192.168.0.7/1/1 вкл. И 192.168.0.7/1/0 выкл. И так далее 4 релюшки. Как мне и каким плагином привязать данное реле. MQTT не получилось установить, не хватает памяти на контроллере (orange pi). Есть ли способы засунуть скрипт в IH или что ни будь другое. Задача управлять освещением и теплыми полами.



  • @dangers-77, вашу задачу можно реализовать 2 плагинами - http или megad. MQTT тут не причем, поскольку эти Wi-Fi реле скорее всего не поддерживают этот протокол. Orange Pi - это не контроллер!, а полноценный одноплатный компьютер. Какая версия компьютера у Вас (Zero, One, PC)?



  • Пользователь @Alex_Jet написал в 4х канальное реле esp8266.:

    megad.

    Добрый день. C megad не прошел фокус. А мини пк orange pc.



  • @Alex_Jet
    Я немного дописал для большего понимания о чем речь идет

    Доброго всем времени суток. У меня вопрос. Я приобрёл и настроил 4х канальное реле esp8266. На ESP12F. WIFI. Данное реле настраивается и прошивается софтом для Ардуино. Для работы заливается снипет (ниже)
    Реле имеет свой IP 192.168.4.1 и когда настраиваем снипет указываем свою точку wifi домашнюю и происходит привязка с выделением IP сети Реле работает через браузер. Например 192.168.0.7/1/1 вкл. И 192.168.0.7/1/0 выкл. И так далее 4 релюшки. Как мне и каким плагином привязать данное реле. MQTT не получилось установить, не хватает памяти на контроллере (orange pi). Есть ли способы засунуть скрипт в IH или что ни будь другое. Задача управлять реле. Плагин HTTP Ведет опрос серверов. MegaD видимо по протоколу не подходит. Есть мысли. Было бы супер. Ведь львиная доля всех не дорогих датчиков и реле относится к Ардуино.

    #include <ESP8266WiFi.h>

    // Имя и пароль вашей сети WiFi
    const char* ssid = "???????";
    const char* password = "??????";

    // Создаем сервер и порт для прослушки 80

    WiFiServer server(80);

    void setup() {
    Serial.begin(115200);
    delay(10);

    // Подготовка GPIO
    pinMode(16, OUTPUT);
    digitalWrite(16, 0);
    pinMode(14, OUTPUT);
    digitalWrite(14, 0);
    pinMode(13, OUTPUT);
    digitalWrite(12, 0);
    pinMode(12, OUTPUT);
    digitalWrite(13, 0);

    // Подключаемся к сети WiFi
    Serial.println();
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);
    WiFi.begin(ssid, password);

    // Ожидание подключения
    while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    }
    Serial.println("");
    Serial.println("WiFi connected");

    // Запуск сервера
    server.begin();
    Serial.println("Server started");

    // Вывод полученного IP адреса
    Serial.println(WiFi.localIP());
    }

    void loop() {

    // Проверка подключения
    WiFiClient client = server.available();
    if (!client) {
    return;
    }

    // Ожидание данных
    Serial.println("new client");
    while (!client.available()) {
    delay(1);
    }

    // Чтение первой строки запроса
    String req = client.readStringUntil('\r');
    Serial.println(req);
    client.flush();

    // Работа с GPIO
    if (req.indexOf("/1/0") != -1)
    digitalWrite(16, 0);
    else if (req.indexOf("/1/1") != -1)
    digitalWrite(16, 1);
    else if (req.indexOf("/2/0") != -1)
    digitalWrite(14, 0);
    else if (req.indexOf("/2/1") != -1)
    digitalWrite(14, 1);
    else if (req.indexOf("/3/0") != -1)
    digitalWrite(12, 0);
    else if (req.indexOf("/3/1") != -1)
    digitalWrite(12, 1);
    else if (req.indexOf("/4/0") != -1)
    digitalWrite(13, 0);
    else if (req.indexOf("/4/1") != -1)
    digitalWrite(13, 1);
    else if (req.indexOf("/5") != -1) {
    Serial.println("TEST OK");
    String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nTest OK. Uptime: ";

    // Подстчет UpTime
    int  Sec   = (millis() / 1000UL) % 60;
    int  Min   = ((millis() / 1000UL) / 60UL) % 60;
    int  Hours = ((millis() / 1000UL) / 3600UL) % 24;
    int  Day   = ((millis() / 1000UL) / 3600UL / 24UL);
    s += Day;
    s += "d ";
    s += Hours;
    s += ":";
    s += Min;
    s += ":";
    s += Sec;
    s += "</html>\n";
    client.print(s);
    client.stop();
    return;
    

    }
    else
    // Если неверный запрос написать об ошибке
    {
    Serial.println("invalid request");
    String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nInvalid request";
    s += "</html>\n";
    client.print(s);
    client.stop();
    return;
    }

    client.flush();

    // Формирование ответа
    String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO set OK";
    s += "</html>\n";

    // Send the response to the client
    client.print(s);
    delay(1);
    Serial.println("Client disonnected");

    }



  • Пользователь @dangers-77 написал в 4х канальное реле esp8266.:

    Я немного дописал для большего понимания о чем речь идет

    Создайте каналы в плагине http и пропишите в них соответствующие команды для включения/выключения реле. Можно использовать и плагин megad, но тогда нужно поправить скетч на вот такое:

    if (req.indexOf("/?cmd=0:0") != -1)
    digitalWrite(16, 0);
    else if (req.indexOf("/?cmd=0:1") != -1)
    digitalWrite(16, 1);
    else if (req.indexOf("/?cmd=1:0") != -1)
    digitalWrite(14, 0);
    else if (req.indexOf("/?cmd=1:1") != -1)
    digitalWrite(14, 1);
    else if (req.indexOf("/?cmd=2:0") != -1)
    digitalWrite(12, 0);
    else if (req.indexOf("/?cmd=2:1") != -1)
    digitalWrite(12, 1);
    else if (req.indexOf("/?cmd=3:0") != -1)
    digitalWrite(13, 0);
    else if (req.indexOf("/?cmd=3:1") != -1)
    digitalWrite(13, 1);
    

    Таким образом, в плагине megad нужно удалить пароль и создать 4- канала: 0,1,2,3 и все будет работать через него. Единственного что не хватает в скетче - ответа от сервера о приеме команды и ее выполнении, например, "Done" как это сделано в контроллерах MegaD.



  • @Alex_Jet Спасибо попробую. С наступающим Новым Годом.



  • Пользователь @Alex_Jet написал в 4х канальное реле esp8266.:

    if (req.indexOf("/?cmd=0:0") != -1)
    digitalWrite(16, 0);
    else if (req.indexOf("/?cmd=0:1") != -1)
    digitalWrite(16, 1);
    else if (req.indexOf("/?cmd=1:0") != -1)
    digitalWrite(14, 0);
    else if (req.indexOf("/?cmd=1:1") != -1)
    digitalWrite(14, 1);
    else if (req.indexOf("/?cmd=2:0") != -1)
    digitalWrite(12, 0);
    else if (req.indexOf("/?cmd=2:1") != -1)
    digitalWrite(12, 1);
    else if (req.indexOf("/?cmd=3:0") != -1)
    digitalWrite(13, 0);
    else if (req.indexOf("/?cmd=3:1") != -1)
    digitalWrite(13, 1);

    Все заработало спасибо большое. Дальнейший шаг подцепить блок который работает по протоколу modbus и производит измерения каналов. Пожарку хочу сделать, при сработки датчиков чтоб алармы приходили при изменении напряжения на каналах.


Авторизуйтесь, чтобы ответить