ESP-01S Relay v.1.0

Тема в разделе "ESP8266, ESP32", создана пользователем Memfis09, 3 янв 2020.

  1. Dron2154

    Dron2154 Нуб

    Если можно, то на почту: 9061870011@mail.ru
     
  2. Airbus

    Airbus Радиохулиган Модератор

    Отправил
     
  3. Dron2154

    Dron2154 Нуб

    А резисторы, тусклым показанные, нужны?
     
  4. Airbus

    Airbus Радиохулиган Модератор

    Нет не нужны. Для одноканалки так точно не нужны.Это на всякий Пожарный.Но если есть esp8266-01s то можно попробовать подключаться к двум другим выводам кроме TX. Я не проверял не знаю будет ли работать но проверю. Это GPIO2 и RX. На esp8266-01 без s не работают. Они должны быть притянуты к Плюсу. Лучше если через оптопару как сделано у кЕтайцев в реле v4.ТХ это GPIO1 если что.
     
    Последнее редактирование: 12 янв 2021
  5. Catbear

    Catbear Гик

    А чем все это вышеописанное можно переключать извне? Через MQTT?:rolleyes:
     
  6. Airbus

    Airbus Радиохулиган Модератор

    MQTT или Blynk или назначить ему статический адрес в сети и через вебморду.
     
  7. Catbear

    Catbear Гик

    С Blynk работает, с MQTT-буду разбираться, тк не пробовал еще сам протокол этот:oops:.
    Для своего понимания, еще, интересно, через подобный модуль что-то "некритичное" подключают обычно люди?
     
  8. Airbus

    Airbus Радиохулиган Модератор

    Да что угодно! Пусть релюха комутирует розетку 220 вольт. А что туда присобачить решать только Вам
    Я про вот это еще говорил

     
  9. Airbus

    Airbus Радиохулиган Модератор

    У Пушного Звера на канале есть хорошие виде про MQTT. И ИгорьК расписывал подробно с ноля. Так что ищите смотрите
     
  10. Catbear

    Catbear Гик

    Спасибо за "наводки"!:rolleyes: Посмотрю!
     
  11. Airbus

    Airbus Радиохулиган Модератор

    МАС сниффер онже WiFi реле. Есть у Alex666 да и в инете примеров полно. Может открывать замок когда находит рядом с собой телефон со "своим" МАС. У меня в прихожке свет включает. Короче включайте фантазию!
     
  12. Catbear

    Catbear Гик

    Да, интересная идея! А, то, прошил, валяется где то в коробке, тк лицензия на большее кол-во MAC, по мне слишком дорогая.
     
  13. Airbus

    Airbus Радиохулиган Модератор

    А он мне ее бесплатно дал. Нашим Форумчанам бсплатно. Напишите ему в личку если надо. Но у меня другой код—нашел в инете и немного подправил. Конечно он проще там параметры WiFi и МАС зашиты в коде наглухо.
     
  14. Catbear

    Catbear Гик

    Интересно, попробую.
     
  15. Catbear

    Catbear Гик

    А Ваш код, правленый "секретный" или можете поделиться?
     
  16. Airbus

    Airbus Радиохулиган Модератор

    Нет не секретный но не уверен что я его сохранил но если найду выложу. И оригинал тоже он точно есть. Там чуть подправить надо. Вечером буду дома—посмотрю что есть
     
  17. Airbus

    Airbus Радиохулиган Модератор

    Взято отсюда.Для понимания идеи.Скетч не именно отсюда уже точно не помню но тоже должен работать.
    Код (Text):
    #include "./esppl_functions.h"
    #include <ESP8266WiFi.h>
    #define LIST_SIZE 4
    /*
       This is your friend's MAC address list
      Format it by taking the mac address aa:bb:cc:dd:ee:ff
      and converting it to 0xaa,0xbb,0xcc,0xdd,0xee,0xff
    */
    uint8_t friendmac[LIST_SIZE][ESPPL_MAC_LEN] = {
      {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA} //blue
      , {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA} //green
      , {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA} //red
      , {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA} //yelow
    };
    /*
       This is your friend's name list
       put them in the same order as the MAC addresses
    */
    String friendname[LIST_SIZE] = {
      "Sharp aquos s2" //blue
      , "Nexus 5" //green
      , "HTC" //red
      , "Onda" //red
    };

    // start variables package - Skickar 2018 hardware LED for NodeMCU on mini breadboard //
    void setup() {
      delay(500);
      pinMode(D5, OUTPUT); // sets the pins to output mode
      pinMode(D6, OUTPUT);
      pinMode(D7, OUTPUT);
      pinMode(D8, OUTPUT);
      Serial.begin(115200);
      esppl_init(cb);
    }

    /* You cannot use a time delay here to keep the LED on, so will need to use ratio of
      detected packets to overall packets to keep LED on for longer. If you try to use a
      delay to keep the light on for long enough to be useful, the watchdog timer kills the
      process and it dies */
    int TimerBlue = 0;
    int TimerGreen = 0;
    int TimerRed = 0;
    int TimerYellow = 0;

    void red() {
      digitalWrite(D7, HIGH);
    }  // Turn ON the red LED
    void blue() {
      digitalWrite(D5, HIGH);
    } // Turn ON the blue LED
    void green() {
      digitalWrite(D6, HIGH);
    } // Turn ON the green LED
    void yellow(){
      digitalWrite(D8, HIGH);
    }
    void turnoff() {
      digitalWrite(D7, LOW), digitalWrite(D5, LOW), digitalWrite(D6, LOW), digitalWrite(D8, LOW);
    }

    /* end exparimental variable package */

    bool maccmp(uint8_t *mac1, uint8_t *mac2) {
      for (int i = 0; i < ESPPL_MAC_LEN; i++) {
        if (mac1[i] != mac2[i]) {
          return false;
        }
      }
      return true;
    }

    void check(){
      if (TimerBlue > 0) {
        TimerBlue--;
      }
      if (TimerGreen > 0) {
        TimerGreen--;
      }
      if (TimerRed > 0){
        TimerRed--;
      }
      if (TimerYellow > 0){
        TimerYellow--;
      }
      if (TimerBlue <= 0){
        digitalWrite(D5, LOW);
      }
      if (TimerGreen <= 0){
        digitalWrite(D6, LOW);
      }
      if (TimerRed <= 0){
        digitalWrite(D7, LOW);
      }
      if (TimerYellow <= 0){
        digitalWrite(D8, LOW);
      }
    }

    void cb(esppl_frame_info *info) {
      for (int i = 0; i < LIST_SIZE; i++) {
        if (maccmp(info->sourceaddr, friendmac[i]) || maccmp(info->receiveraddr, friendmac[i])) {
          Serial.printf("\n%s is here! :)", friendname[i].c_str());
          if (i == 0) {
            TimerBlue = 1000;
            TimerGreen--;
            TimerRed--;
            TimerYellow--;
            blue();
            check();
          } // Here we turn on the blue LED until turnoff() is called
          else if(i == 1){
            TimerGreen = 1000;
            TimerBlue--;
            TimerRed--;
            TimerYellow--;
            green();
            check();
          }else if(i == 2){
            TimerRed = 1000;
            TimerBlue--;
            TimerGreen--;
            TimerYellow--;
            red();
            check();
          }else if (i ==3){
            TimerYellow = 1000;
            TimerBlue--;
            TimerGreen--;
            TimerRed--;
            yellow();
            check();
          }
        }else{
          check();
        }
      }
    }


    void loop() { // I didn't write this part but it sure looks fancy.
      esppl_sniffing_start();
      while (true) {
        for (int i = ESPPL_CHANNEL_MIN; i <= ESPPL_CHANNEL_MAX; i++ ) {
          esppl_set_channel(i);
          while (esppl_process_frames()) {
            //
          }
        }
      }
    }
     
  18. Airbus

    Airbus Радиохулиган Модератор

    А вот этот мой.Сделано на коленке-можно было еще подчистить и вылизать но и так работает поэтому меня всё устраивает. Железо-Lolin реле подключено к GPIO12 (D6 на плате) можно подключить к любому поправив код. Можно также сделать на esp8266-01 но у меня их пока нет.
    Код (Text):
    #include "./esppl_functions.h"

    /*  Здесь будет лист друзей
        Сколько МАС нужно отследить?
        Можно напихать сколько надо
         У нас будет 2 нам больше не надо*/

    #define LIST_SIZE 2

    //преобразуем МАС адрес из aa:bb:cc:dd:ee:ff
    //           в 0xaa,0xbb,0xcc,0xdd,0xee,0xff

    uint8_t friendmac[LIST_SIZE][ESPPL_MAC_LEN] = {
       {0xc4, 0xb3, 0x01, 0x5a, 0xb7, 0xd8}
      ,{0x88, 0xe9, 0xfe, 0xf1, 0x91, 0x41}
      };
    /*
    Это лист с именами друзей
    для Serial - необязательно но пусть будет
    */
    String friendname[LIST_SIZE] = {
        "Alex i-Phone SE"
       ,"Luci i-Phone 8 "
      };

    // Сетап ничего интересного

    void setup()
    {
      delay(500);
      pinMode(12, OUTPUT); //Реле 1
      digitalWrite(12, LOW); //выключено
      Serial.begin(115200); //ненадо!Можно закоментить
      esppl_init(cb);
    }

    int cooldown = 0;
    void red()
    {
    digitalWrite(12, HIGH); }  // Включим реле1 PIN12
    void blue() {
    digitalWrite(12, HIGH); } // Включим реле1 PIN12

    void turnoff() {
        digitalWrite(12, LOW); // Пусть так будет
                   }

    bool maccmp(uint8_t *mac1, uint8_t *mac2) {
      for (int i=0; i < ESPPL_MAC_LEN; i++) {
        if (mac1[i] != mac2[i]) {
          return false;
        }
      }
      return true;
    }

    void cb(esppl_frame_info *info) {
      for (int i=0; i<LIST_SIZE; i++) {
        if (maccmp(info->sourceaddr, friendmac[i]) || maccmp(info->receiveraddr, friendmac[i])) {
          Serial.printf("\n%s is here! :)", friendname[i].c_str());//тоже необязательно
          cooldown = 1000; // here we set it to 1000 if we detect a packet that matches our list
          if (i == 1){
            blue();} // Here we turn on the blue LED until turnoff() is called
            else {
              red();} // Here we turn on the RED LED until turnoff is called. We can also use if i == 0, or another index
        }

          else { // this is for if the packet does not match any we are tracking
            if (cooldown > 0) {
              cooldown--; } //subtract one from the cooldown timer if the value of "cooldown" is more than one
              else { // If the timer is at zero, then run the turnoff function to turn off any LED's that are on.
         
            turnoff(); } } } }

    void loop() {
      esppl_sniffing_start();
      while (true) {
        for (int i = ESPPL_CHANNEL_MIN; i <= ESPPL_CHANNEL_MAX; i++ ) {
          esppl_set_channel(i);
          while (esppl_process_frames()) {
            //
          }
        }
      }
    }
     
    Последнее редактирование: 24 фев 2021
  19. Catbear

    Catbear Гик

    Спасибо большое Airbus, попробую повторить. По крайней мере компилируется.
     
    Последнее редактирование: 25 фев 2021
  20. Catbear

    Catbear Гик

    Для 2 MAC адресов компилируется. Если больше-пишет:
    exit status 1

    too many initializers for 'uint8_t [2][6] {aka unsigned char [2][6]}'