ESP8266
Модератор: immortal
-
- Сообщения: 422
- Зарегистрирован: Ср сен 05, 2012 7:30 am
- Откуда: Киров
- Благодарил (а): 0
- Поблагодарили: 70 раз
- Контактная информация:
Re: ESP8266
Гляньте логи веб сервера - есть ли там сообщения от модуля. если есть, то тут уже нужно ковырять саму настройку можордомо.
- Рейтинг: 1.16%
-
- Сообщения: 116
- Зарегистрирован: Чт май 28, 2015 9:40 pm
- Откуда: Вёска пад Мiнскам
- Благодарил (а): 60 раз
- Поблагодарили: 7 раз
Re: ESP8266
Спасибо! Я, правда, не силен в просмотре логов, но Яндекс мне в помощь.MaksMS82 писал(а):Гляньте логи веб сервера
россыпь датчиков и серв <-> 20+ ESP8266(WiFi-IoT) <-> Malinka Pi3
-
- Сообщения: 26
- Зарегистрирован: Чт янв 08, 2015 10:05 am
- Благодарил (а): 5 раз
- Поблагодарили: 10 раз
Re: ESP8266
День добрый форумчане! Может кто подскажет как в Majordomo настроить регулировку ШИМ (pwm) для ESP8266, извините если уже не раз описывалось, или дайте ссылку.
-
- Сообщения: 100
- Зарегистрирован: Вт ноя 11, 2014 5:16 pm
- Откуда: Шатура
- Благодарил (а): 4 раза
- Поблагодарили: 8 раз
Re: ESP8266
а какие настройки на стороне МЖД?polunds писал(а):внесу свои 5 копеек в тему... надеюсь будет полезно сообществу.
скетч продвинутого выключателя, работает с МДМ, управляется по HTTP
у выключателя две функции:
1.короткое нажатие - обычное включение выключение света с отправкой запроса на изменение статуса в МДМ для отображения на сцене
2.длинное нажатие - просто отправка запроса в МДМ на выполнение скрипта, скрипт можно написать любой, соответственно и выполнить любое действие
у меня например один выключатель коротким нажатием управляет светом в своей комнате, а длинным - светом в прихожей, т.к. до выключателя в прихожей нужно идти к входной двери. (аналог проходного)
скетч для ардуино IDE....
осторожно, код не идеален, сам я не программист, собирал по кусочкам, оптимизировал под себя.
сейчас дома работает уже 4 шт, нареканий не заметил.
скриншот сцены:
http://prntscr.com/7o98hp
Зеленые индикаторы под лампочкой - статус доступности хоста (пингуется - зеленый, не пингуется - красный) для отслеживания доступности ESP8266
СпойлерПоказатьКод: Выделить всё
#include <ESP8266WiFi.h> const int buttonPin = 14; // really - 14 const int ledPin = 4; // actually - 5 bool ledState = LOW; // the current state of the output pin bool led2State = LOW; bool buttonState; // the current reading from the input pin bool lastButtonState = HIGH; bool countStart = 0; bool ignoreUp = 0; #define holdTime 1000 long btnDnTime; // time the button was pressed down long lastDebounceTime = 0; // the last time the output pin was toggled long debounceDelay = 50; String sensor_id = "kitchen-light-switch"; const char* ssid = "net1"; const char* password = "passpass"; const char* host = "192.168.10.200"; WiFiServer server(80); void setup() { WiFi.mode(WIFI_STA); // initialize digital pin 13 as an output. pinMode(ledPin, OUTPUT); Serial.begin(57600); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); server.begin(); Serial.println("Server started"); digitalWrite(ledPin, 1); } // the loop function runs over and over again forever void loop() { // read the state of the switch into a local variable: int reading = digitalRead(buttonPin); if (reading != lastButtonState) { // reset the debouncing timer lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { if (reading == LOW && countStart && (millis() - btnDnTime) > long(holdTime)) { Serial.println("tringger down"); led2State = !led2State; String url = String("/objects/?script=holdbutton&name=")+sensor_id+"&type=remoteswitch&action="+led2State; //запрос на долгое нажатие send_switch(url); btnDnTime = millis(); ignoreUp = 1; } if (reading != buttonState) { buttonState = reading; if (buttonState == LOW){ countStart = 1; btnDnTime = millis(); } // only toggle the LED if the new button state is HIGH if (buttonState == HIGH) { countStart = 0; if (!ignoreUp){ // if (led2State){ // led2State = !led2State; // String url = String("/objects/?script=holdbutton&name=")+sensor_id+"&type=remoteswitch&action="+led2State; // send_switch(url); // } // else{ digitalWrite(ledPin, ledState); ledState = !ledState; String url = String("/objects/?object=")+sensor_id+"&op=set&p=status&v="+!ledState; send_switch(url); // } } ignoreUp = 0; } } } lastButtonState = reading; ///####################################### WiFiClient client = server.available(); if (!client) { return; } // Wait until the client sends some data Serial.println("new client"); while(!client.available()){ delay(1); } // Read the first line of the request String req = client.readStringUntil('\r'); Serial.println(req); client.flush(); // Match the request int val; if (req.indexOf("/?pin=off") != -1){ val = 0; lastButtonState = 0; ledState = 0; digitalWrite(ledPin, val); // String url = String("/objects/?object=")+sensor_id+"&op=set&p=status&v="+ledState; // send_switch(url); } else if (req.indexOf("/?pin=on") != -1){ val = 1; lastButtonState = 1; ledState = 1; digitalWrite(ledPin, val); // String url = String("/objects/?object=")+sensor_id+"&op=set&p=status&v="+ledState; // send_switch(url); } else if (req.indexOf("/?status") != -1){ //fg } else { //Serial.println("invalid request"); client.stop(); return; } // Set GPIO2 according to the request // digitalWrite(ledPin, val); client.flush(); // Prepare the response String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\n"; s += ledState; s += "</html>\n"; // Send the response to the client client.print(s); delay(1); Serial.println("Client disonnected"); //######################### } void send_switch(String turl){ WiFiClient client; const int httpPort = 80; if (!client.connect(host, httpPort)) { Serial.println("connection failed"); return; } //String url = String("/objects/?script=tempsensor&name=")+sensor_id+"&temp="+t+"&hum="+h+"&freemem="+freemem+"&moving="+moving_detected; String url = turl; Serial.print("Requesting URL: "); Serial.println(url); client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); delay(50); while(client.available()){ String line = client.readStringUntil('\r'); Serial.print(line); } Serial.println(); Serial.println("closing connection"); client.stop(); }
- Рейтинг: 1.16%
Windows, Debian 8, 1-Wire
Connect
Connect
-
- Сообщения: 117
- Зарегистрирован: Сб апр 26, 2014 5:06 pm
- Откуда: Новосибирск
- Благодарил (а): 21 раз
- Поблагодарили: 11 раз
Re: ESP8266
Друзья вот наконец то добрался до есп 4 датчика работают на ура вся информация скидывается нормально влажность давление температура. время работы около 4 месяцев. задался целью подключить датчик открытия двери сухой контакт. купил ключик подключил но тут не получается как теперь сделать чтоб алиса оповешала say("Дверь открыта ",2); и say("Дверь закрыта",2); на ардуино все работало теперь отказываюсь от проводов . помогите пожалуйста что то уж совсем запутался)) спасибо всем откликнувшимся
- Ubuntu Server .Esp8266)
-
- Сообщения: 181
- Зарегистрирован: Пт апр 04, 2014 10:17 pm
- Благодарил (а): 37 раз
- Поблагодарили: 54 раза
Re: ESP8266
Подскажите пжл, собрал из соседней темы POWER MONITOR, все работает, но хотел бы передавать полученные данные с него в МЖД через esp8266, что то ковыряю библиотеки, но никак не пойму какую лучше всего использовать.
Есть ли уже у кого то решения ? Отправка любых данных в МЖД, а дальше я уже подставлю все.
Есть ли уже у кого то решения ? Отправка любых данных в МЖД, а дальше я уже подставлю все.
Re: ESP8266
добрый день.
подскажите по прошивке homes-smart - как организовать обновление параметров ESP в МДМ, если МДМ расположено не в корне /var/www а в папке /var/www/majordomo?
подскажите по прошивке homes-smart - как организовать обновление параметров ESP в МДМ, если МДМ расположено не в корне /var/www а в папке /var/www/majordomo?
-
- Сообщения: 21
- Зарегистрирован: Пт июл 03, 2015 10:27 am
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
Re: ESP8266
создал объект, в свойстве ipaddress прописал айпишник ESP. Создал метод switch-on:SergeyM писал(а):а какие настройки на стороне МЖД?polunds писал(а):внесу свои 5 копеек в тему... надеюсь будет полезно сообществу.
скетч продвинутого выключателя, работает с МДМ, управляется по HTTP
у выключателя две функции:
1.короткое нажатие - обычное включение выключение света с отправкой запроса на изменение статуса в МДМ для отображения на сцене
2.длинное нажатие - просто отправка запроса в МДМ на выполнение скрипта, скрипт можно написать любой, соответственно и выполнить любое действие
у меня например один выключатель коротким нажатием управляет светом в своей комнате, а длинным - светом в прихожей, т.к. до выключателя в прихожей нужно идти к входной двери. (аналог проходного)
скетч для ардуино IDE....
осторожно, код не идеален, сам я не программист, собирал по кусочкам, оптимизировал под себя.
сейчас дома работает уже 4 шт, нареканий не заметил.
скриншот сцены:
http://prntscr.com/7o98hp
Зеленые индикаторы под лампочкой - статус доступности хоста (пингуется - зеленый, не пингуется - красный) для отслеживания доступности ESP8266
СпойлерПоказатьКод: Выделить всё
#include <ESP8266WiFi.h> const int buttonPin = 14; // really - 14 const int ledPin = 4; // actually - 5 bool ledState = LOW; // the current state of the output pin bool led2State = LOW; bool buttonState; // the current reading from the input pin bool lastButtonState = HIGH; bool countStart = 0; bool ignoreUp = 0; #define holdTime 1000 long btnDnTime; // time the button was pressed down long lastDebounceTime = 0; // the last time the output pin was toggled long debounceDelay = 50; String sensor_id = "kitchen-light-switch"; const char* ssid = "net1"; const char* password = "passpass"; const char* host = "192.168.10.200"; WiFiServer server(80); void setup() { WiFi.mode(WIFI_STA); // initialize digital pin 13 as an output. pinMode(ledPin, OUTPUT); Serial.begin(57600); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); server.begin(); Serial.println("Server started"); digitalWrite(ledPin, 1); } // the loop function runs over and over again forever void loop() { // read the state of the switch into a local variable: int reading = digitalRead(buttonPin); if (reading != lastButtonState) { // reset the debouncing timer lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { if (reading == LOW && countStart && (millis() - btnDnTime) > long(holdTime)) { Serial.println("tringger down"); led2State = !led2State; String url = String("/objects/?script=holdbutton&name=")+sensor_id+"&type=remoteswitch&action="+led2State; //запрос на долгое нажатие send_switch(url); btnDnTime = millis(); ignoreUp = 1; } if (reading != buttonState) { buttonState = reading; if (buttonState == LOW){ countStart = 1; btnDnTime = millis(); } // only toggle the LED if the new button state is HIGH if (buttonState == HIGH) { countStart = 0; if (!ignoreUp){ // if (led2State){ // led2State = !led2State; // String url = String("/objects/?script=holdbutton&name=")+sensor_id+"&type=remoteswitch&action="+led2State; // send_switch(url); // } // else{ digitalWrite(ledPin, ledState); ledState = !ledState; String url = String("/objects/?object=")+sensor_id+"&op=set&p=status&v="+!ledState; send_switch(url); // } } ignoreUp = 0; } } } lastButtonState = reading; ///####################################### WiFiClient client = server.available(); if (!client) { return; } // Wait until the client sends some data Serial.println("new client"); while(!client.available()){ delay(1); } // Read the first line of the request String req = client.readStringUntil('\r'); Serial.println(req); client.flush(); // Match the request int val; if (req.indexOf("/?pin=off") != -1){ val = 0; lastButtonState = 0; ledState = 0; digitalWrite(ledPin, val); // String url = String("/objects/?object=")+sensor_id+"&op=set&p=status&v="+ledState; // send_switch(url); } else if (req.indexOf("/?pin=on") != -1){ val = 1; lastButtonState = 1; ledState = 1; digitalWrite(ledPin, val); // String url = String("/objects/?object=")+sensor_id+"&op=set&p=status&v="+ledState; // send_switch(url); } else if (req.indexOf("/?status") != -1){ //fg } else { //Serial.println("invalid request"); client.stop(); return; } // Set GPIO2 according to the request // digitalWrite(ledPin, val); client.flush(); // Prepare the response String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\n"; s += ledState; s += "</html>\n"; // Send the response to the client client.print(s); delay(1); Serial.println("Client disonnected"); //######################### } void send_switch(String turl){ WiFiClient client; const int httpPort = 80; if (!client.connect(host, httpPort)) { Serial.println("connection failed"); return; } //String url = String("/objects/?script=tempsensor&name=")+sensor_id+"&temp="+t+"&hum="+h+"&freemem="+freemem+"&moving="+moving_detected; String url = turl; Serial.print("Requesting URL: "); Serial.println(url); client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); delay(50); while(client.available()){ String line = client.readStringUntil('\r'); Serial.print(line); } Serial.println(); Serial.println("closing connection"); client.stop(); }
Код: Выделить всё
$ipaddress=$this->getProperty("ipaddress");
$url='http://'.$ipaddress.'/?pin=on';
getURL($url,0);
$this->setProperty("status", '1');
еще есть метод switch-toggle который просто меняет состояние в зависимости от текущего
Код: Выделить всё
$status1=$this->getProperty("status");
if($status1 == 1)
{
$ipaddress=$this->getProperty("ipaddress");
$url='http://'.$ipaddress.'/?pin=on';
getURL($url,0);
$this->setProperty("status", '1');
}
else{
$ipaddress=$this->getProperty("ipaddress");
$url='http://'.$ipaddress.'/?pin=off';
getURL($url,0);
$this->setProperty("status", '0');
}
-
- Сообщения: 116
- Зарегистрирован: Чт май 28, 2015 9:40 pm
- Откуда: Вёска пад Мiнскам
- Благодарил (а): 60 раз
- Поблагодарили: 7 раз
Re: ESP8266
Опять перестали приходить сообщения от ESP. Я только разрабатываю систему и комп включен не постоянно. Бывает, включишь комп, запустишь МЖД - и всё прекрасно: приходят сообщения от ESP и в логах соответственно эти сообщения видны. А бывает включишь - циклы прокручиваются, а сообщения не проходят. Хотя ESP функционирует - это видно через веб-морду.MaksMS82 писал(а):Гляньте логи веб сервера - есть ли там сообщения от модуля. если есть, то тут уже нужно ковырять саму настройку можордомо.
Не могу вычислить закономерность, когда сообщения проходят, а когда нет.
Что подскажете?
Заранее спасибо.
россыпь датчиков и серв <-> 20+ ESP8266(WiFi-IoT) <-> Malinka Pi3
-
- Сообщения: 113
- Зарегистрирован: Вт июн 09, 2015 9:41 pm
- Откуда: Moscow
- Благодарил (а): 15 раз
- Поблагодарили: 9 раз
Re: ESP8266
Pacific писал(а):Перестали приходить сообщения с ESP с прошивкой от homes-smart.ru.
Всё работало отлично. Отложил проект на недельку, вернулся - и не приходят сообщения. В настройках ничего не менял. Веб-морда работает. Порты работают, датчики и i2c работает, а посылки не приходят. Грешу, что в компе что-то с настройками. Подскажите, куда копнуть.
Приход сообщений отлавливаю так:
а скрипт espdata запускается??? посмотри в {-ray , фильтр на espdata поставь, возьми пивка и гляди. если нет, проверь сетевые проблемы
мой такой
$idesp=$params['idesp'];
$dhtt1=$params['dhtt1'];
$dhth1=$params['dhth1'];
$bmpt=$params['bmpt'];
$bmpp=$params['bmpp'];
if($params['hostname'] == 'ESPMETEO02') {
sg('esp02.atmpressure',$params['bmpp']);
sg('esp02.t01',$params['dhtt1']);
sg('esp02.dhtt2',$params['dhtt2']);
sg('esp02.hum01',$params['dhth1']);
sg('esp02.dhth2',$params['dhth2']);
}
//say($idesp);
//say($dhtt1);
//say($dhth1);
//say($bmpt);
//say($bmpp);