Страница 1 из 7
ESPEasy
Добавлено: Сб апр 23, 2016 7:05 am
Pooh
поиском по форуму не нашел..
Есть у кого опыт интеграции
этого проекта в МД?
Вроде неплохая универсальная альтернативная прошивка.
ЗЫ Для быстрого старта. После прошивки создает точку доступа "ESP_0", пароль на нее:
configesp
после чего идем по адресу
http://192.168.4.1, забиваем параметры домашнего вай-фай, появится ссылка на страницу конфигурации...
Re: ESPEasy
Добавлено: Сб апр 23, 2016 11:54 am
Amarok
Re: ESPEasy
Добавлено: Сб апр 23, 2016 2:16 pm
azh122
А чем она лучше? Закрытая, свое особо не добавишь
А ESPEasy - может где то в чем то меньше, но доложить что хош можно.
В общем каждому свое.
Re: ESPEasy
Добавлено: Сб апр 23, 2016 6:05 pm
Pooh
Re: ESPEasy
Добавлено: Сб апр 23, 2016 11:25 pm
devoff
Хорошая штука, на первый взгляд к МЖД можно через MQTT.
А чуть сложнее просто в код вставить такую же ссылку на запуск скрипта как и у homes-smart.ru
Re: ESPEasy
Добавлено: Вс апр 24, 2016 2:10 am
savenko_egor
Как вариант свою прошивку накатать на Arduino IDE для ESP.
Re: ESPEasy
Добавлено: Вс апр 24, 2016 8:46 am
Amarok
100р - дорого? один вечер пиво не попить
Re: ESPEasy
Добавлено: Вс апр 24, 2016 10:04 am
devoff
Amarok - это когда ты одну бутылку пьешь, а я уже ящик купил *) Конечно это не дорого и есть поддержка от автора за эти деньги, но если есть бесплатно и с возможностью настроить под себя и еще есть желание, то почему бы не попробовать ?
Я с homes-smart боролся, у нее есть функции включение GPIO по датчику движения, захожу в туалет свет загорелся, на сервер пришло сообщение - "кто то в туалете", все отлично, НО после заданного времени в поле GPIO Time Key - свет выключается, и есть ли движение в данный момент или нет, не важно, выключился и через секунду загорелось, то есть в самой прошивке не заложен перезапуск таймера по движению и это дико раздражало, особенно когда такая же копия перебралась в ванну, стоишь в ванне и свет потух ... Потом надоело и разобрался в прошивке через ARduino IDE, как оказалось? там все очень просто и за вечер написал код, который нужен именно мне и именно для этой комнаты.
Вот поэтому и нет счастья за 100 рублей, хоть и офигенная, и главное, стабильная прошивка

Re: ESPEasy
Добавлено: Вс апр 24, 2016 10:46 am
Amarok
devoff писал(а):Amarok - это когда ты одну бутылку пьешь, а я уже ящик купил *)
А я совсем не пью)))
devoff писал(а):разобрался в прошивке через ARduino IDE, как оказалось? там все очень просто и за вечер написал код, который нужен именно мне и именно для этой комнаты.
Поделись?
Re: ESPEasy
Добавлено: Вс апр 24, 2016 11:16 am
devoff
причесать бы его, но посмотри, я думаю разберешься, я планировал отдельную тему по нему и уже для нее сделать нормальный код.
Код: Выделить всё
#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 включен автосвет)
как то так.