ESPEasy

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Pooh
Сообщения: 74
Зарегистрирован: Вт дек 31, 2013 2:03 pm
Откуда: Самара
Благодарил (а): 25 раз
Поблагодарили: 5 раз

ESPEasy

Сообщение Pooh » Сб апр 23, 2016 7:05 am

поиском по форуму не нашел..
Есть у кого опыт интеграции этого проекта в МД?
Вроде неплохая универсальная альтернативная прошивка.

ЗЫ Для быстрого старта. После прошивки создает точку доступа "ESP_0", пароль на нее: configesp
после чего идем по адресу http://192.168.4.1, забиваем параметры домашнего вай-фай, появится ссылка на страницу конфигурации...
Аватара пользователя
Amarok
Сообщения: 1425
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: ESPEasy

Сообщение Amarok » Сб апр 23, 2016 11:54 am

А эта чем хуже? http://homes-smart.ru/
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
azh122
Сообщения: 113
Зарегистрирован: Вт янв 28, 2014 5:33 pm
Благодарил (а): 1 раз
Поблагодарили: 6 раз

Re: ESPEasy

Сообщение azh122 » Сб апр 23, 2016 2:16 pm

Amarok писал(а):А эта чем хуже? http://homes-smart.ru/
А чем она лучше? Закрытая, свое особо не добавишь
А ESPEasy - может где то в чем то меньше, но доложить что хош можно.
В общем каждому свое.
Pooh
Сообщения: 74
Зарегистрирован: Вт дек 31, 2013 2:03 pm
Откуда: Самара
Благодарил (а): 25 раз
Поблагодарили: 5 раз

Re: ESPEasy

Сообщение Pooh » Сб апр 23, 2016 6:05 pm

Amarok писал(а):А эта чем хуже? http://homes-smart.ru/
платная
devoff
Сообщения: 181
Зарегистрирован: Пт апр 04, 2014 10:17 pm
Благодарил (а): 37 раз
Поблагодарили: 54 раза

Re: ESPEasy

Сообщение devoff » Сб апр 23, 2016 11:25 pm

Хорошая штука, на первый взгляд к МЖД можно через MQTT.
А чуть сложнее просто в код вставить такую же ссылку на запуск скрипта как и у homes-smart.ru
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

Re: ESPEasy

Сообщение savenko_egor » Вс апр 24, 2016 2:10 am

Как вариант свою прошивку накатать на Arduino IDE для ESP.
Аватара пользователя
Amarok
Сообщения: 1425
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: ESPEasy

Сообщение Amarok » Вс апр 24, 2016 8:46 am

Pooh писал(а):
Amarok писал(а):А эта чем хуже? http://homes-smart.ru/
платная
100р - дорого? один вечер пиво не попить
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
devoff
Сообщения: 181
Зарегистрирован: Пт апр 04, 2014 10:17 pm
Благодарил (а): 37 раз
Поблагодарили: 54 раза

Re: ESPEasy

Сообщение devoff » Вс апр 24, 2016 10:04 am

Amarok - это когда ты одну бутылку пьешь, а я уже ящик купил *) Конечно это не дорого и есть поддержка от автора за эти деньги, но если есть бесплатно и с возможностью настроить под себя и еще есть желание, то почему бы не попробовать ?

Я с homes-smart боролся, у нее есть функции включение GPIO по датчику движения, захожу в туалет свет загорелся, на сервер пришло сообщение - "кто то в туалете", все отлично, НО после заданного времени в поле GPIO Time Key - свет выключается, и есть ли движение в данный момент или нет, не важно, выключился и через секунду загорелось, то есть в самой прошивке не заложен перезапуск таймера по движению и это дико раздражало, особенно когда такая же копия перебралась в ванну, стоишь в ванне и свет потух ... Потом надоело и разобрался в прошивке через ARduino IDE, как оказалось? там все очень просто и за вечер написал код, который нужен именно мне и именно для этой комнаты.

Вот поэтому и нет счастья за 100 рублей, хоть и офигенная, и главное, стабильная прошивка :)
Аватара пользователя
Amarok
Сообщения: 1425
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: ESPEasy

Сообщение Amarok » Вс апр 24, 2016 10:46 am

devoff писал(а):Amarok - это когда ты одну бутылку пьешь, а я уже ящик купил *)
А я совсем не пью)))
devoff писал(а):разобрался в прошивке через ARduino IDE, как оказалось? там все очень просто и за вечер написал код, который нужен именно мне и именно для этой комнаты.
Поделись?
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
devoff
Сообщения: 181
Зарегистрирован: Пт апр 04, 2014 10:17 pm
Благодарил (а): 37 раз
Поблагодарили: 54 раза

Re: ESPEasy

Сообщение devoff » Вс апр 24, 2016 11:16 am

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

Код: Выделить всё

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
//#include <ESP8266mDNS.h>

#define relayPin  12  // 
#define DIGITAL_INPUT_SENSOR 2 // датчик движения

const char* ssid = "wifi";
const char* password = "pass";
const char* host = "192.168.1.10";

ESP8266WebServer server(80);


int pirauto = 1;
int pirOn = 1;
int relay;


//Время, в которое был принят сигнал отсутствия движения(LOW)
long unsigned int lowIn;        
long unsigned int timer;
long unsigned int sendpause = 15*60000;

//Пауза, после которой движение считается оконченным
long unsigned int pause = 60000; 
boolean lockLow = true;
boolean takeLowTime; 

void status() {
  String message = "Server Status\n\n";
  message += "(p) Auto Dimmer: ";
  message += pirauto;
  message += "\nPirSensor: ";
  message += (digitalRead(DIGITAL_INPUT_SENSOR));
  message += "\nUpTime: ";
  message += (millis()/1000/60);

  message += "\n";  
  for (uint8_t i = 0; i < server.args(); i++) {
    message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  }
  server.send(200, "text/plain", message);
}

void setup(void) {
  
  WiFi.mode (WIFI_STA);
  
  pinMode(relayPin, OUTPUT);
  digitalWrite(relayPin, 1);
  
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  Serial.print("Chip ID: ");
  Serial.println(ESP.getChipId());

//  if (MDNS.begin("esp8266")) {
//    Serial.println("MDNS responder started");
//  }

  //server.on("/", handleRoot);

  server.on("/inline", []() {
    server.send(200, "text/plain", "this works as well");
  });

  server.on("/", []() {
    // server args for state
    if (server.arg("p") != "") {
      if (server.arg("p") == "1" || server.arg("p") == "on" || server.arg("p") == "true") {
        pirauto = 1;
        sendData();
      }
      else if (server.arg("p") == "t") {
        // updateState(!state);
      }   
      else {
        pirauto = 0;
        sendData();
      }}

if (server.arg("gpio") != "") {
      if (server.arg("gpio") == "1" || server.arg("gpio") == "on" || server.arg("gpio") == "true") {
        digitalWrite(relayPin, HIGH);
        pirauto = 0;
        sendData();
      }

      else {
        digitalWrite(relayPin, LOW);
        pirauto = 1;
        sendData();

      }}
      

    
    status();

    server.send(200, "text/plain", "ok");
  });




      server.begin();
      Serial.println("HTTP server started");
    }


  void loop(void) {
    server.handleClient();
     if (pirauto) {pirAUTO(); }
     sendtimer () ;
  }

  


void pirAUTO() 
 
{
  //Если обнаружено движение
  if(digitalRead(DIGITAL_INPUT_SENSOR) == HIGH && pirauto == 1)
  {
    //Если до этого момента еще не включили реле
    if(lockLow)
    {
      lockLow = false;      
      //Включаем реле.
      //!ВНИМАНИЕ! При использовании n-p-n реле необходимо в след. строчке поменять LOW на HIGH
      digitalWrite(relayPin, HIGH);
      relay = 1;
      pirOn = 1;
      delay(50);
      sendData ();
    }        
    takeLowTime = true;
  }

  //Ели движения нет
  if(digitalRead(DIGITAL_INPUT_SENSOR) == LOW && pirauto == 1)
  {      
    //Если время окончания движения еще не записано
    if(takeLowTime)
    {
      lowIn = millis();          //Сохраним время окончания движения
      takeLowTime = false;       //Изменим значения флага, чтобы больше не брать время, пока не будет нового движения
    }
    //Если время без движение превышает паузу => движение окончено
    if(!lockLow && millis() - lowIn > pause)
    { 
      //Изменяем значение флага, чтобы эта часть кода исполнилась лишь раз, до нового движения
      lockLow = true;                
      digitalWrite(relayPin, LOW);
      relay = 0;
      pirOn = 0;
      delay(50);
      sendData ();
    }
  }
}


void sendtimer () {

  if(millis() - timer > sendpause)
    { 
      sendData();
      timer = millis(); 
    }
    
}

void sendData () {

    Serial.print("connecting to ");
  Serial.println(host);
  
  // Use WiFiClient class to create TCP connections
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }
  
  // We now create a URI for the request  http://192.168.1.10/objects/?script=espdata
  String url = "/objects/?script=espdata&idesp=";
  url += "ESP826600a55001";
  url += "&pirOn=";
  url += pirOn;
  url += "&pirauto=";
  url += pirauto;
  url += "&relay=";
  url += relay;
  
  Serial.print("Requesting URL: ");
  Serial.println(url);
  
  // This will send the request to the server
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" + 
               "Connection: close\r\n\r\n");
  delay(10);
  
  // Read all the lines of the reply from server and print them to Serial
  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
  
  Serial.println();
  Serial.println("closing connection");
}


в мжд используем тот же скрипт, что и homes-smart, в объект приходят данные
relay = 0\1 - включен или выключен свет
pirOn = 0\1 - сработал датчик движения
pirauto = 0\1 - включен ли свет по датчику движения или можно зафиксировать включения отправив - http://адрес/?gpio=1 (?gpio=0 включен автосвет)

как то так.
Последний раз редактировалось devoff Вс апр 24, 2016 11:31 am, всего редактировалось 1 раз.
За это сообщение автора devoff поблагодарили (всего 4):
Amarok (Вс апр 24, 2016 12:11 pm) • Pooh (Пн апр 25, 2016 4:27 pm) • samum (Пт ноя 18, 2016 2:13 pm) • Strangeman (Пт мар 15, 2019 6:41 pm)
Рейтинг: 4.65%
Ответить