ESP8266

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

Модератор: immortal

Alex77
Сообщения: 215
Зарегистрирован: Вс мар 05, 2017 2:18 pm
Благодарил (а): 21 раз
Поблагодарили: 6 раз

Re: ESP8266

Сообщение Alex77 » Ср май 17, 2017 7:50 pm

Во, это уже то что нужно. Если не секрет, а как дела обстоят если два и три источника света, на каждый подаёте свой проходной выключатель? Допустим говорим об одном помещении .
Jilber
Сообщения: 718
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 117 раз
Поблагодарили: 113 раз

Re: ESP8266

Сообщение Jilber » Ср май 17, 2017 7:58 pm

У меня пока задействована только одна ESP, я только начал приобщаться к "умному дому". :-)
А на 2 или 3 источника света можно поставить 2 или 3 трёхпозиционных клавиши, вроде тех, что я выложил выше.
madbob
Сообщения: 24
Зарегистрирован: Пт ноя 25, 2016 11:50 am
Откуда: Москва
Благодарил (а): 10 раз
Поблагодарили: 3 раза

Re: ESP8266

Сообщение madbob » Ср май 17, 2017 8:43 pm

Alex77 писал(а): если на есп зависнет включенная фаза
Больше полгода работают 4 ESP c прошивкой от Макса и ни разу не зависали ESP и не залипали КИТАЙСКИЕ реле, правда нагрузки минимальные ( дежурный LED свет и т.д.). Но каждый решает сам...
Raspberry Pi 3 образ 3.31+GUI ESP12(IoT)кучка+ESP32
eygen
Сообщения: 393
Зарегистрирован: Чт сен 25, 2014 5:37 pm
Откуда: Екатеринбург
Благодарил (а): 25 раз
Поблагодарили: 52 раза

Re: ESP8266

Сообщение eygen » Ср май 17, 2017 8:50 pm

Alex77 писал(а):Да я так и думал, получается если на есп зависнет включенная фаза, то выключить свет не получиться
Устройства достаточно надежны... А если залипнет чего тут думать не выключателем жамкать надо а идти "разлеплять" :)
Alex77
Сообщения: 215
Зарегистрирован: Вс мар 05, 2017 2:18 pm
Благодарил (а): 21 раз
Поблагодарили: 6 раз

Re: ESP8266

Сообщение Alex77 » Чт май 18, 2017 8:02 am

eygen писал(а):
Alex77 писал(а):Да я так и думал, получается если на есп зависнет включенная фаза, то выключить свет не получиться
Устройства достаточно надежны... А если залипнет чего тут думать не выключателем жамкать надо а идти "разлеплять" :)
Это на случай когда меня нет дома, а только члены семьи.
Аватара пользователя
shemnik69
Сообщения: 590
Зарегистрирован: Пн дек 24, 2012 3:01 pm
Откуда: Саратов Saratov
Благодарил (а): 67 раз
Поблагодарили: 63 раза

Re: ESP8266

Сообщение shemnik69 » Пт май 19, 2017 3:17 pm

Нашел случайно (попал на него через NarodMon) интресный форум. http://u-m.biz/phpBB3/viewforum.php?f=2
Очень много интресных идей реализовано. Именно в использовании ESP 8266
Понравились и сами идеи (например один только "показометр" на основе 4 матриц 8*8 LED чего стоит!!.
Недавно такие матрицы держал в руках ..(65 р шт) теперь знаю что на них можно реализовать)
а то готов модуль а "табло" отстутствует...

Обращет также внимание что очень грамотно выполнены схемы согласования уровней напряжения, защита и пр. короче схемы можно с успехом использовать для проектов с MySensors, а также и других.
Аватара пользователя
woow
Сообщения: 821
Зарегистрирован: Пн июл 04, 2016 8:46 am
Откуда: Mazeikiai
Благодарил (а): 125 раз
Поблагодарили: 46 раз

Re: ESP8266

Сообщение woow » Пн май 22, 2017 12:43 am

Тут меня код двухканального диммера по mqtt. Выкладываю весь код может кому будет полезен.Всё с ним в порядке, каждый по отдельности управляется вкл/откл и регулятор больше- меньше, но мне так не нравится, потому что включаю его в месте с блоком питания, то есть после включения выключателя стартует сетап и на короткое время загорается леды и гаснут, и ждут команды.
Я хочу, чтобы при подаче питания программа стартовала уже включенными ледами то-есть состояние pin out была наоборот. Если не сложно дайте наводку, Кажется так просто но вот что-то не получается.
СпойлерПоказать

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


#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#define MQTT_VERSION MQTT_VERSION_3_1_1

// Wifi: SSID and password
const char*             WIFI_SSID         = "*****************";
const char*             WIFI_PASSWORD     = "***************";

// MQTT: ID, server IP, port, username and password
const PROGMEM char*     MQTT_CLIENT_ID    = "LED line";
const PROGMEM char*     MQTT_SERVER_IP    = "192.168.1.244";
const PROGMEM uint16_t  MQTT_SERVER_PORT  = 1883;
const PROGMEM char*     MQTT_USER         = "**********";
const PROGMEM char*     MQTT_PASSWORD     = "************";

// MQTT: topics
// state
const PROGMEM char*     MQTT_LINE_STATE_TOPIC               = "LED/line";
const PROGMEM char*     MQTT_LINE_COMMAND_TOPIC          = "LED/line/switch";
const PROGMEM char*     MQTT_LINE2_STATE_TOPIC              = "LED/line2";
const PROGMEM char*     MQTT_LINE2_COMMAND_TOPIC         = "LED/line2/switch";

// brightness
const PROGMEM char*     MQTT_LINE_BRIGHTNESS_STATE_TOPIC       = "LED/line/brightness";
const PROGMEM char*     MQTT_LINE_BRIGHTNESS_COMMAND_TOPIC = "LED/line/brightness/set";
const PROGMEM char*     MQTT_LINE2_BRIGHTNESS_STATE_TOPIC      = "LED/line2/brightness";
const PROGMEM char*     MQTT_LINE2_BRIGHTNESS_COMMAND_TOPIC = "LED/line2/brightness/set";

// payloads by default (on/off)
const PROGMEM char*     LINE_ON         = "1";
const PROGMEM char*     LINE_OFF        = "0";
const PROGMEM char*     LINE2_ON        = "1";
const PROGMEM char*     LINE2_OFF       = "0";

// variables used to store the state and the brightness of the line

boolean   m_line_state       = false;
uint8_t   m_line_brightness  = 255;
boolean   m_line2_state       = false;
uint8_t   m_line2_brightness  = 255;

// pin used for the led (PWM)
const PROGMEM uint8_t LINE_PIN = 4;
const PROGMEM uint8_t LINE2_PIN = 14;

// buffer used to send/receive data with MQTT
const uint8_t MSG_BUFFER_SIZE = 20;
char m_msg_buffer[MSG_BUFFER_SIZE]; 

WiFiClient wifiClient;
PubSubClient client(wifiClient);

// function called to adapt the brightness and the state of the led
void setLineState() {
  if (m_line_state){

    analogWrite(LINE_PIN, m_line_brightness);
    Serial.print("INFO: Brightness: ");
    Serial.println(m_line_brightness);
  } else {
    analogWrite(LINE_PIN, 0); 
    Serial.println("INFO: Turn line off");
  }
}

// function called to publish the state of the led (on/off)
void publishLineState(){

  if (m_line_state){

    client.publish(MQTT_LINE_STATE_TOPIC, LINE_ON, true);
  } else {
    client.publish(MQTT_LINE_STATE_TOPIC, LINE_OFF, true);
  }
}

// function called to publish the brightness of the led
void publishLineBrightness(){

  snprintf(m_msg_buffer, MSG_BUFFER_SIZE, "%d", m_line_brightness);
  client.publish(MQTT_LINE_BRIGHTNESS_STATE_TOPIC, m_msg_buffer, true);
}

// function called to adapt the brightness and the state of the led
void setLine2State(){

  if (m_line2_state){
    analogWrite(LINE2_PIN, m_line2_brightness);
    Serial.print("INFO: Brightness: ");
    Serial.println(m_line2_brightness);
  } else {
    analogWrite(LINE2_PIN, 0);
    Serial.println("INFO: Turn line2 off");
  }
}

// function called to publish the state of the led (on/off)
void publishLine2State(){

  if (m_line2_state) {
    client.publish(MQTT_LINE2_STATE_TOPIC, LINE2_ON, true);
  } else {
    client.publish(MQTT_LINE2_STATE_TOPIC, LINE2_OFF, true);
  }
}

// function called to publish the brightness of the led
void publishLine2Brightness(){
  snprintf(m_msg_buffer, MSG_BUFFER_SIZE, "%d", m_line2_brightness);
  client.publish(MQTT_LINE2_BRIGHTNESS_STATE_TOPIC, m_msg_buffer, true);
}

// function called when a MQTT message arrived
void callback(char* p_topic, byte* p_payload, unsigned int p_length){
  // concat the payload into a string
  String payload;
  for (uint8_t i = 0; i < p_length; i++){
    payload.concat((char)p_payload[i]);
  }

  // handle message topic

  if (String(MQTT_LINE_COMMAND_TOPIC).equals(p_topic)){

    // test if the payload is equal to "ON" or "OFF"
    if (payload.equals(String(LINE_ON))){
      if (m_line_state != true){
        m_line_state = true;
        setLineState();
        publishLineState();
      }
    } else if (payload.equals(String(LINE_OFF))){
      if (m_line_state != false){

        m_line_state = false;
        setLineState();
        publishLineState();
      }
    }
  } else if (String(MQTT_LINE_BRIGHTNESS_COMMAND_TOPIC).equals(p_topic)){

    uint8_t brightness = payload.toInt();
    if (brightness < 0 || brightness > 255){
      // do nothing...
      return;
    }else{
      m_line_brightness = brightness;
      setLineState();
      publishLineBrightness();
    }
  }
  if (String(MQTT_LINE2_COMMAND_TOPIC).equals(p_topic)){

    // test if the payload is equal to "ON" or "OFF"
    if (payload.equals(String(LINE2_ON))){

      if (m_line2_state != true){

        m_line2_state = true;
        setLine2State();
        publishLine2State();
      }
    } else if (payload.equals(String(LINE2_OFF))){

      if (m_line2_state != false){

        m_line2_state = false;
        setLine2State();
        publishLine2State();
      }
    }
  } else if (String(MQTT_LINE2_BRIGHTNESS_COMMAND_TOPIC).equals(p_topic)){

     uint8_t brightness = payload.toInt();
    if (brightness < 0 || brightness > 255) 
{    

// do nothing...
      return;
    }else{
      m_line2_brightness = brightness;
      setLine2State();
      publishLine2Brightness();
    }
  }
}

void reconnect(){

  // Loop until we're reconnected
  while (!client.connected()){

    Serial.print("INFO: Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect(MQTT_CLIENT_ID, MQTT_USER, MQTT_PASSWORD)){

      Serial.println("\nINFO: connected");

      // Once connected, publish an announcement...
      // publish the initial values
      publishLineState();
      publishLineBrightness();
      publishLine2State();
      publishLine2Brightness();

// ... and resubscribe
      client.subscribe(MQTT_LINE_COMMAND_TOPIC);
      client.subscribe(MQTT_LINE_BRIGHTNESS_COMMAND_TOPIC);
      client.subscribe(MQTT_LINE2_COMMAND_TOPIC);
      client.subscribe(MQTT_LINE2_BRIGHTNESS_COMMAND_TOPIC);

} else {
      Serial.print("ERROR: failed, rc=");
      Serial.print(client.state());
      Serial.println("DEBUG: try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}

void setup(){

  // init the serial
  Serial.begin(115200);

  // init the led
  pinMode(LINE_PIN, OUTPUT);
  analogWriteRange(255);
  setLineState();
  
 pinMode(LINE2_PIN, OUTPUT);
  analogWriteRange(255);
  setLine2State();

// init the WiFi connection
  Serial.println();
  Serial.println();
  Serial.print("INFO: Connecting to ");
  WiFi.mode(WIFI_STA);
  Serial.println(WIFI_SSID);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

  while (WiFi.status() != WL_CONNECTED){
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("INFO: WiFi connected");
  Serial.print("INFO: IP address: ");
  Serial.println(WiFi.localIP());

// init the MQTT connection
  client.setServer(MQTT_SERVER_IP, MQTT_SERVER_PORT);
  client.setCallback(callback);
}
 
void loop(){

  if (!client.connected()){
    reconnect();
  }
  client.loop();
}

 
Raspberry Pi 3B+
Alex77
Сообщения: 215
Зарегистрирован: Вс мар 05, 2017 2:18 pm
Благодарил (а): 21 раз
Поблагодарили: 6 раз

Re: ESP8266

Сообщение Alex77 » Ср май 24, 2017 10:44 pm

Добрый ночи, подскажите пожалуйста прошиваю ESP по OTA #include <ArduinoOTA.h> при открытии порта он просит пароль, но не какого пороля я не задавал на порт и не знаю какой пароль платы, кто знает что за пароль он хочет?
Вложения
Снимок экрана 2017-05-24 в 22.40.53.png
Снимок экрана 2017-05-24 в 22.40.53.png (17.61 КБ) 11826 просмотров
immortal
Сообщения: 1138
Зарегистрирован: Вт янв 29, 2013 9:16 am
Откуда: Белозерск
Благодарил (а): 16 раз
Поблагодарили: 402 раза
Контактная информация:

Re: ESP8266

Сообщение immortal » Ср май 24, 2017 10:52 pm

Alex77 писал(а):Добрый ночи, подскажите пожалуйста прошиваю ESP по OTA #include <ArduinoOTA.h> при открытии порта он просит пароль, но не какого пороля я не задавал на порт и не знаю какой пароль платы, кто знает что за пароль он хочет?
на сколько я помню arduinoOTA должен задаваться пароль, надо в скетче указывать пароль
Lubuntu на cubieboard2 + ds9490R
DietPi на Orange Pi PC + 1wire на esp8266 с прошивкой Homes-smart.ru
Alex77
Сообщения: 215
Зарегистрирован: Вс мар 05, 2017 2:18 pm
Благодарил (а): 21 раз
Поблагодарили: 6 раз

Re: ESP8266

Сообщение Alex77 » Ср май 24, 2017 11:06 pm

там тока на перепрошивку пароль

ArduinoOTA.setPort(8266);
// Hostname defaults to esp8266-[ChipID]
ArduinoOTA.setHostname("myesp8266");
// No authentication by default
ArduinoOTA.setPassword("123");
Ответить