ESP8266

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

Модератор: immortal

Аватара пользователя
xor
Сообщения: 1679
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 184 раза
Поблагодарили: 490 раз

Re: ESP8266

Сообщение xor » Чт июн 11, 2015 2:06 pm

Лет 4-5 назад купил солнечную панель для поддержания зарядки в авто на длит. Стоянке типа
http://www.solarhome.ru/catalog/product ... cts_id=299

Панель на текстолите ламинированная размер где-то 50 смх20 см, с диодом и штырём в прикуриватель.
За 3 солнечных дня полностью заряжала разряженный за зиму стартерный аккум 55 Ач.
Тогда стоило меньше 2 тыс руб., сейчас уже другие технологии и ценник~2,5 тыс
ignat99
Сообщения: 206
Зарегистрирован: Сб дек 21, 2013 9:21 pm
Откуда: Spain
Благодарил (а): 1 раз
Поблагодарили: 22 раза

Re: ESP8266

Сообщение ignat99 » Чт июн 11, 2015 2:17 pm

http://ru.aliexpress.com/store/product/ ... 15500.html

Та же цена 44 Евро но для 20 Вт, токи то же около 1 А, думаю зарядит за 1 солнечный день или да же быстрее. Зарядка за 1 день очень важна, так как автопилотом или другими устройствами приходиться пользоваться каждый день а не раз в 3 дня.
ignat99
Сообщения: 206
Зарегистрирован: Сб дек 21, 2013 9:21 pm
Откуда: Spain
Благодарил (а): 1 раз
Поблагодарили: 22 раза

Re: ESP8266

Сообщение ignat99 » Вт июн 30, 2015 6:35 pm

http://forum.katera.ru/index.php?/topic ... ?p=1780449

Вот теперь можно прямо к ESP8266 подключать и аккумуляторы и солнечные панели в качестве источника питания.

Изображение
Изображение
За это сообщение автора ignat99 поблагодарил:
mirsum (Пн авг 17, 2015 12:18 pm)
Рейтинг: 1.23%
Pacific
Сообщения: 113
Зарегистрирован: Чт май 28, 2015 9:40 pm
Откуда: Вёска пад Мiнскам
Благодарил (а): 60 раз
Поблагодарили: 7 раз

Re: ESP8266

Сообщение Pacific » Пт июл 03, 2015 8:25 am

Перестали приходить сообщения с ESP с прошивкой от homes-smart.ru.
Всё работало отлично. Отложил проект на недельку, вернулся - и не приходят сообщения. В настройках ничего не менял. Веб-морда работает. Порты работают, датчики и i2c работает, а посылки не приходят. Грешу, что в компе что-то с настройками. Подскажите, куда копнуть.
Приход сообщений отлавливаю так:
Изображение
россыпь датчиков и серв <-> дюжина ESP8266(WiFi-IoT) <-> Malinka Pi2 :)
polunds
Сообщения: 21
Зарегистрирован: Пт июл 03, 2015 10:27 am
Благодарил (а): 4 раза
Поблагодарили: 7 раз

Re: ESP8266

Сообщение polunds » Пт июл 03, 2015 10:51 am

внесу свои 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();

}
За это сообщение автора polunds поблагодарили (всего 3):
cabat (Пт июл 03, 2015 11:46 am) • mirsum (Ср июл 15, 2015 8:04 am) • SergeyM (Пн авг 17, 2015 10:40 am)
Рейтинг: 3.7%
binladin
Сообщения: 143
Зарегистрирован: Чт фев 06, 2014 9:32 pm
Благодарил (а): 0
Поблагодарили: 5 раз

Re: ESP8266

Сообщение binladin » Сб июл 04, 2015 12:20 am

polunds писал(а):внесу свои 5 копеек в тему... надеюсь будет полезно сообществу.
скетч продвинутого выключателя, работает с МДМ, управляется по HTTP
Можно подробности по аппаратной схеме, откуда питание берешь ?
polunds
Сообщения: 21
Зарегистрирован: Пт июл 03, 2015 10:27 am
Благодарил (а): 4 раза
Поблагодарили: 7 раз

Re: ESP8266

Сообщение polunds » Сб июл 04, 2015 2:00 pm

binladin писал(а):
polunds писал(а):внесу свои 5 копеек в тему... надеюсь будет полезно сообществу.
скетч продвинутого выключателя, работает с МДМ, управляется по HTTP
Можно подробности по аппаратной схеме, откуда питание берешь ?
к выключателям у меня приходит 3 провода, соединяю неиспользуемый провод с фазой в монтажной коробке у потолка, в итоге получаю 220 в коробке выключателя.
беру зарядник для телефона 5в, 800ма, припаиваю к выходу стабилизатор ams1117 3.3, на ЕСП забираю 3.3 в на реле беру 5в.
Встраиваю все это прямо в монтажную коробку выключателя. получается тесновато, но приемлемо, все влазит.
binladin
Сообщения: 143
Зарегистрирован: Чт фев 06, 2014 9:32 pm
Благодарил (а): 0
Поблагодарили: 5 раз

Re: ESP8266

Сообщение binladin » Сб июл 04, 2015 3:14 pm

polunds писал(а):
binladin писал(а):
polunds писал(а):внесу свои 5 копеек в тему... надеюсь будет полезно сообществу.
скетч продвинутого выключателя, работает с МДМ, управляется по HTTP
Можно подробности по аппаратной схеме, откуда питание берешь ?
к выключателям у меня приходит 3 провода, соединяю неиспользуемый провод с фазой в монтажной коробке у потолка, в итоге получаю 220 в коробке выключателя.
беру зарядник для телефона 5в, 800ма, припаиваю к выходу стабилизатор ams1117 3.3, на ЕСП забираю 3.3 в на реле беру 5в.
Встраиваю все это прямо в монтажную коробку выключателя. получается тесновато, но приемлемо, все влазит.
А ЕСП через ардуино используешь ?
polunds
Сообщения: 21
Зарегистрирован: Пт июл 03, 2015 10:27 am
Благодарил (а): 4 раза
Поблагодарили: 7 раз

Re: ESP8266

Сообщение polunds » Сб июл 04, 2015 5:09 pm

binladin писал(а): А ЕСП через ардуино используешь ?
без ардуино..
Pacific
Сообщения: 113
Зарегистрирован: Чт май 28, 2015 9:40 pm
Откуда: Вёска пад Мiнскам
Благодарил (а): 60 раз
Поблагодарили: 7 раз

Re: ESP8266

Сообщение Pacific » Пт июл 10, 2015 1:26 pm

Ребята, подскажите по моему вопросу от 3 июля, пожалуйста. Проект стал колом :(
"Перестали приходить сообщения с ESP с прошивкой от homes-smart.ru...."
россыпь датчиков и серв <-> дюжина ESP8266(WiFi-IoT) <-> Malinka Pi2 :)
Ответить