Нет не нужны. Для одноканалки так точно не нужны.Это на всякий Пожарный.Но если есть esp8266-01s то можно попробовать подключаться к двум другим выводам кроме TX. Я не проверял не знаю будет ли работать но проверю. Это GPIO2 и RX. На esp8266-01 без s не работают. Они должны быть притянуты к Плюсу. Лучше если через оптопару как сделано у кЕтайцев в реле v4.ТХ это GPIO1 если что.
С Blynk работает, с MQTT-буду разбираться, тк не пробовал еще сам протокол этот. Для своего понимания, еще, интересно, через подобный модуль что-то "некритичное" подключают обычно люди?
Да что угодно! Пусть релюха комутирует розетку 220 вольт. А что туда присобачить решать только Вам Я про вот это еще говорил
У Пушного Звера на канале есть хорошие виде про MQTT. И ИгорьК расписывал подробно с ноля. Так что ищите смотрите
МАС сниффер онже WiFi реле. Есть у Alex666 да и в инете примеров полно. Может открывать замок когда находит рядом с собой телефон со "своим" МАС. У меня в прихожке свет включает. Короче включайте фантазию!
Да, интересная идея! А, то, прошил, валяется где то в коробке, тк лицензия на большее кол-во MAC, по мне слишком дорогая.
А он мне ее бесплатно дал. Нашим Форумчанам бсплатно. Напишите ему в личку если надо. Но у меня другой код—нашел в инете и немного подправил. Конечно он проще там параметры WiFi и МАС зашиты в коде наглухо.
Нет не секретный но не уверен что я его сохранил но если найду выложу. И оригинал тоже он точно есть. Там чуть подправить надо. Вечером буду дома—посмотрю что есть
Взято отсюда.Для понимания идеи.Скетч не именно отсюда уже точно не помню но тоже должен работать. Код (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()) { // } } } }
А вот этот мой.Сделано на коленке-можно было еще подчистить и вылизать но и так работает поэтому меня всё устраивает. Железо-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()) { // } } } }
Для 2 MAC адресов компилируется. Если больше-пишет: exit status 1 too many initializers for 'uint8_t [2][6] {aka unsigned char [2][6]}'