RSS блога
Подписка
Доработка розетки SONOFF® S20. Используется для перезагрузки роутера.
- Цена: 9.34 $
- Перейти в магазин
Я расскажу о нестандартном применении управляемой розетки. Она будет автоматически перезагружать роутер при пропадании интернета.
Как известно лень — двигатель прогресса… Я живу в частном доме и иногда пропадает интернет, а потом то ли роутер зависает, то ли не обновляет подключение к сети, но главное без перезагрузки интернет не восстанавливается. Все бы и не страшно, но надо надо лезть к роутеру, а он не на видном месте стоит, так я еще и с соседом делюсь интернетом, а по закону подлости когда пропадает интернет и меня нет дома. Решение вопроса описано в статье…
Вот и появилась идея сделать автоматическую перезагрузку роутера. Я для этого даже купил плату ESP8266 и реле, но вот все это собрать в готовое изделие руки не доходили, хотя у меня и 3D принтер есть. Правда больше на заказ печатаю, а для себя уже и руки не доходят.
Случайно увидел распродажу розеток SONOFF® S20 и понял, что не стоит самому мучится, что-то паять и конструировать, когда уже все готовое есть только прошивку осталось написать, ну это уже проще :)
Правда еще 2 месяца ждал когда пришлют, видимо не хотели со скидкой продавать, но я то не тороплюсь…
Прислали розетку, поигрался я с родной прошивкой, обзоры в сети есть, но что-то постоянно отваливается она от моего роутера и решил я ее перепрошить.
Фото розетки:
Разобрал розетку.
Для первой перепрошивки необходимо необходимо припаять разъем для подключения адаптера. Адаптер у меня уже был.
Припаял разъем. Распиновка разъема с лева на право: +3.3в, RХ, TX, GND.
Подключил адаптер
Прошивку я писал в среде Arduino ide 1.8.5
Для правильной прошивки данной розетки необходимо установить следующие настройки платы:
Для перевода розетки в режим прошивки надо нажать кнопку на плате розетки и не отпуская подключить адаптер в USB компьютера, подождать не менее 3 сек, затем отпустить. При прошивке подавать 220в на розетку нельзя! Питание берется с платы адаптера.
В программе использовал библиотеку ESP8266Ping.
Для тех у кого не правильно отображается скетч, можно скачать его тут yadi.sk/d/clFbY0LH3QysJ7
Суть работы заключается в следующем. Розетка подключается к домашней сети WiFi и с периодом 5 минут пингует сервер яндекса. При отсутствии пинга более двух периодов по 5 минут розетка отключает питание на 5 секунд, далее ждет 1 минуту для загрузки роутера и пытается пинговать опять. При отсутствии подключения к WiFi, так же перезагружает роутер.
При нажатии на кнопку, так же происходит отключение питания на 5 секунд для ручной перезагрузки роутера.
Все временные интервалы можно поменять на нужные вам.Текст программы хорошо прокомментирован, думаю кому надо разберутся. В крайнем случае обращайтесь в личку, помогу подправить текст программы.
В данный момент еще тестирую розетку на столе, а затем поставлю в работу. За несколько дней проблем в работе не заметил.
Для мониторинга работы хотел отправлять количество перезагрузок роутера на сайт народного мониторинга. Как сделаю, то дополню обзор.
А какое не стандартное применение розетки нашли вы?
Как известно лень — двигатель прогресса… Я живу в частном доме и иногда пропадает интернет, а потом то ли роутер зависает, то ли не обновляет подключение к сети, но главное без перезагрузки интернет не восстанавливается. Все бы и не страшно, но надо надо лезть к роутеру, а он не на видном месте стоит, так я еще и с соседом делюсь интернетом, а по закону подлости когда пропадает интернет и меня нет дома. Решение вопроса описано в статье…
Вот и появилась идея сделать автоматическую перезагрузку роутера. Я для этого даже купил плату ESP8266 и реле, но вот все это собрать в готовое изделие руки не доходили, хотя у меня и 3D принтер есть. Правда больше на заказ печатаю, а для себя уже и руки не доходят.
Случайно увидел распродажу розеток SONOFF® S20 и понял, что не стоит самому мучится, что-то паять и конструировать, когда уже все готовое есть только прошивку осталось написать, ну это уже проще :)
Правда еще 2 месяца ждал когда пришлют, видимо не хотели со скидкой продавать, но я то не тороплюсь…
Прислали розетку, поигрался я с родной прошивкой, обзоры в сети есть, но что-то постоянно отваливается она от моего роутера и решил я ее перепрошить.
Фото розетки:
Разобрал розетку.
Для первой перепрошивки необходимо необходимо припаять разъем для подключения адаптера. Адаптер у меня уже был.
Припаял разъем. Распиновка разъема с лева на право: +3.3в, RХ, TX, GND.
Подключил адаптер
Прошивку я писал в среде Arduino ide 1.8.5
Для правильной прошивки данной розетки необходимо установить следующие настройки платы:
Для перевода розетки в режим прошивки надо нажать кнопку на плате розетки и не отпуская подключить адаптер в USB компьютера, подождать не менее 3 сек, затем отпустить. При прошивке подавать 220в на розетку нельзя! Питание берется с платы адаптера.
В программе использовал библиотеку ESP8266Ping.
Текст программы
#include <ESP8266WiFi.h>
#include <ESP8266Ping.h>
const char* ssid = «ssid»; // подставить название своей сети WiFi
const char* password = «password»; //подставить пароль свой сети WiFi
//IPAddress ip(192, 168, 1, 70); //Node static IP
//IPAddress gateway(192, 168, 0, 1);
//IPAddress subnet(255, 255, 255, 0);
//const char* remote_host = «www.ya.ru»; //адрес для пинга
const IPAddress remote_ip(87, 250, 250, 242); // адрес для пинга
unsigned long previousMillis = 0;
const long interval = 300; //интервал между пингами в сек
const long T_ROUTER = 60; // время ожидания загрузки роутера в сек
const long T_RELAY = 5; // задержка от выключения реле до включения в сек
int PIN_RELAY = 12;
int PIN_LED = 13;
int PIN_BUTTON = 0;
int COUNT_PING = 0; //количество попыток при отсутствии пинга (не задается)
int COUNT_PING_MAX = 2; //максимальное количество отсутствия пинга до перезагрузки роутера
int COUNT_WIFI = 0; //счетчик попыток подключения к WiFi
int COUNT_WIFI_MAX = 60; //300; // Таймаут до перезагрузки роутера при отсутствии WiFi в сек
void setup()
{
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_RELAY, OUTPUT);
pinMode(PIN_BUTTON, INPUT);
digitalWrite(PIN_RELAY, HIGH);
digitalWrite(PIN_LED, LOW);
Serial.begin(115200);
delay(10);
attachInterrupt(PIN_BUTTON, Click, FALLING);
}
void ConnectWIFI()
{
Serial.println(«Подключаюсь к WiFi»);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
// WiFi.config(ip, gateway, subnet);
while (WiFi.status() != WL_CONNECTED)
{
if (COUNT_WIFI <= COUNT_WIFI_MAX)
{
COUNT_WIFI++;
}
else
{
Serial.println();
Relay(); //перезагружаемся так как нет подключения к WiFi
Serial.println(«Подключаюсь к WiFi»);
}
//Serial.println(WiFi.status());
digitalWrite(PIN_LED, !digitalRead(PIN_LED)); //моргаем зеленым светодиодом
delay(1000);
Serial.print(".");
}
COUNT_WIFI = 0; // сбрасываем счетчик попыток подключения к WiFi
Serial.println();
Serial.print(«WiFi подключен, ip: „);
Serial.println(WiFi.localIP());
//Serial.println(WiFi.status());
digitalWrite(PIN_LED, LOW); // зажигаем зеленый светодиод
COUNT_PING = 0; // сбрасываем счетчик неуспешных пингов
}
void Relay()
{
if (digitalRead(PIN_RELAY) == HIGH)
{
digitalWrite(PIN_RELAY, LOW); //отключаем питание на розетке
Serial.println(“Реле ВЫключено»);
}
delay(T_RELAY*1000);
digitalWrite(PIN_RELAY, HIGH); //включаем питание на розетке
Serial.println(«Реле Включено, ждем загрузки роутера»);
delay(T_ROUTER*1000); // ждем загрузки роутера
COUNT_PING = 0; // сбрасываем счетчик неуспешных пингов
COUNT_WIFI = 0; // сбрасываем счетчик попыток подключения к WiFi
previousMillis = 0;
}
void Click()
{
digitalWrite(PIN_RELAY, LOW); //отключаем питание на розетке
Serial.println(«Реле выключено кнопкой»);
}
void loop()
{
if (WiFi.status() != WL_CONNECTED) // нет подключения к WiFi
{
ConnectWIFI(); //подключаемся к WiFi
}
unsigned long currentMillis = millis();
if (((currentMillis — previousMillis) >= interval*1000) && (digitalRead(PIN_RELAY) == HIGH) && (WiFi.status() == WL_CONNECTED))
{
previousMillis = currentMillis;
Serial.print(«Попытка пинга: „);
//Serial.println(remote_host);
Serial.println(remote_ip);
//if(Ping.ping(remote_host))
if (Ping.ping(remote_ip))
{ //пинг есть
Serial.println(“Пинг есть!!»);
COUNT_PING = 0;// сбрасываем счетчик неуспешных пингов
} else
{ // пинга нет
Serial.print(«Пинг отсутствует :( „);
COUNT_PING ++;
Serial.println(COUNT_PING);
}
}
if (COUNT_PING >= COUNT_PING_MAX) // если превышено количество попыток пинга перезагружаем роутер
{
Relay();
}
if (digitalRead(PIN_RELAY) == LOW) // нажата кнопка, перезагружаем роутер
{
Relay();
}
}
#include <ESP8266Ping.h>
const char* ssid = «ssid»; // подставить название своей сети WiFi
const char* password = «password»; //подставить пароль свой сети WiFi
//IPAddress ip(192, 168, 1, 70); //Node static IP
//IPAddress gateway(192, 168, 0, 1);
//IPAddress subnet(255, 255, 255, 0);
//const char* remote_host = «www.ya.ru»; //адрес для пинга
const IPAddress remote_ip(87, 250, 250, 242); // адрес для пинга
unsigned long previousMillis = 0;
const long interval = 300; //интервал между пингами в сек
const long T_ROUTER = 60; // время ожидания загрузки роутера в сек
const long T_RELAY = 5; // задержка от выключения реле до включения в сек
int PIN_RELAY = 12;
int PIN_LED = 13;
int PIN_BUTTON = 0;
int COUNT_PING = 0; //количество попыток при отсутствии пинга (не задается)
int COUNT_PING_MAX = 2; //максимальное количество отсутствия пинга до перезагрузки роутера
int COUNT_WIFI = 0; //счетчик попыток подключения к WiFi
int COUNT_WIFI_MAX = 60; //300; // Таймаут до перезагрузки роутера при отсутствии WiFi в сек
void setup()
{
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_RELAY, OUTPUT);
pinMode(PIN_BUTTON, INPUT);
digitalWrite(PIN_RELAY, HIGH);
digitalWrite(PIN_LED, LOW);
Serial.begin(115200);
delay(10);
attachInterrupt(PIN_BUTTON, Click, FALLING);
}
void ConnectWIFI()
{
Serial.println(«Подключаюсь к WiFi»);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
// WiFi.config(ip, gateway, subnet);
while (WiFi.status() != WL_CONNECTED)
{
if (COUNT_WIFI <= COUNT_WIFI_MAX)
{
COUNT_WIFI++;
}
else
{
Serial.println();
Relay(); //перезагружаемся так как нет подключения к WiFi
Serial.println(«Подключаюсь к WiFi»);
}
//Serial.println(WiFi.status());
digitalWrite(PIN_LED, !digitalRead(PIN_LED)); //моргаем зеленым светодиодом
delay(1000);
Serial.print(".");
}
COUNT_WIFI = 0; // сбрасываем счетчик попыток подключения к WiFi
Serial.println();
Serial.print(«WiFi подключен, ip: „);
Serial.println(WiFi.localIP());
//Serial.println(WiFi.status());
digitalWrite(PIN_LED, LOW); // зажигаем зеленый светодиод
COUNT_PING = 0; // сбрасываем счетчик неуспешных пингов
}
void Relay()
{
if (digitalRead(PIN_RELAY) == HIGH)
{
digitalWrite(PIN_RELAY, LOW); //отключаем питание на розетке
Serial.println(“Реле ВЫключено»);
}
delay(T_RELAY*1000);
digitalWrite(PIN_RELAY, HIGH); //включаем питание на розетке
Serial.println(«Реле Включено, ждем загрузки роутера»);
delay(T_ROUTER*1000); // ждем загрузки роутера
COUNT_PING = 0; // сбрасываем счетчик неуспешных пингов
COUNT_WIFI = 0; // сбрасываем счетчик попыток подключения к WiFi
previousMillis = 0;
}
void Click()
{
digitalWrite(PIN_RELAY, LOW); //отключаем питание на розетке
Serial.println(«Реле выключено кнопкой»);
}
void loop()
{
if (WiFi.status() != WL_CONNECTED) // нет подключения к WiFi
{
ConnectWIFI(); //подключаемся к WiFi
}
unsigned long currentMillis = millis();
if (((currentMillis — previousMillis) >= interval*1000) && (digitalRead(PIN_RELAY) == HIGH) && (WiFi.status() == WL_CONNECTED))
{
previousMillis = currentMillis;
Serial.print(«Попытка пинга: „);
//Serial.println(remote_host);
Serial.println(remote_ip);
//if(Ping.ping(remote_host))
if (Ping.ping(remote_ip))
{ //пинг есть
Serial.println(“Пинг есть!!»);
COUNT_PING = 0;// сбрасываем счетчик неуспешных пингов
} else
{ // пинга нет
Serial.print(«Пинг отсутствует :( „);
COUNT_PING ++;
Serial.println(COUNT_PING);
}
}
if (COUNT_PING >= COUNT_PING_MAX) // если превышено количество попыток пинга перезагружаем роутер
{
Relay();
}
if (digitalRead(PIN_RELAY) == LOW) // нажата кнопка, перезагружаем роутер
{
Relay();
}
}
Для тех у кого не правильно отображается скетч, можно скачать его тут yadi.sk/d/clFbY0LH3QysJ7
Суть работы заключается в следующем. Розетка подключается к домашней сети WiFi и с периодом 5 минут пингует сервер яндекса. При отсутствии пинга более двух периодов по 5 минут розетка отключает питание на 5 секунд, далее ждет 1 минуту для загрузки роутера и пытается пинговать опять. При отсутствии подключения к WiFi, так же перезагружает роутер.
При нажатии на кнопку, так же происходит отключение питания на 5 секунд для ручной перезагрузки роутера.
Все временные интервалы можно поменять на нужные вам.Текст программы хорошо прокомментирован, думаю кому надо разберутся. В крайнем случае обращайтесь в личку, помогу подправить текст программы.
В данный момент еще тестирую розетку на столе, а затем поставлю в работу. За несколько дней проблем в работе не заметил.
Для мониторинга работы хотел отправлять количество перезагрузок роутера на сайт народного мониторинга. Как сделаю, то дополню обзор.
А какое не стандартное применение розетки нашли вы?
Самые обсуждаемые обзоры
+77 |
4077
147
|
+58 |
4237
73
|
Я же правильно понимаю, что прошивка подойдёт не только для розетки, но и для Sonoff Basic?
int PIN_RELAY = D6;
int PIN_LED = D7;
int PIN_BUTTON = D0;
int COUNT_PING = 0; //количество попыток при отсутствии пинга (не задается)
int COUNT_PING_MAX = 2; //максимальное количество отсутствия пинга до перезагрузки роутера
int COUNT_WIFI = 0; //счетчик попыток подключения к WiFi
int COUNT_WIFI_MAX = 60; //300; // Таймаут до перезагрузки роутера при отсутствии WiFi в сек
Реле управляется низким уровнем или высоким?
Открой распиновку обоих и сравни.
Я по чем знаю? Открой код и посмотри.
Не заметно что смотрел.
Сам мучаюсь. У меня в магазине установлена система видеонаблюдения. Иногда захожу удаленно, посматриваю что там да как… Но периодически интернет отваливается. Просто пропадает соединение, ничего не грузит и не передает. (Роутер менял, переспрашивал, провайдера звонками мучал, но так и не решил проблему)
Помогает только перезагрузка роутера. Ваше решение вполне себе может мне помочь. У меня имеется в хозяйстве несколько подобных управляемых розеток от Broadlink, но видимо придется еще и такую заказать. А то я совсем далек от программирования и подобных перепрошивок. Для того что бы разобраться самому потребуется очень много времени. Так что я уж лучше по вашим следам, по протоптанным дорожкам))
я к тому, что может вместо костылей из розеток — поменять роутер?
три таких розетки = один роутер))
или сменить провайдера…
на работе сякие разные зухели стоят лохматых годов, дома кинетик лайт лет шесть уже без принудительных перезагрузок…
наверное, вопрос решается просто…
И хочу уточнить, вы хотите сказать, что если пропадет электричество на три -4 часа, то вашему кинетику пофигу и перезагружать его совсем ни разу не надо?
А в чем же секрет этого производителя, что все остальные требуют перезагрузку, а этому все по барабану?
Очень даже интересно, т.к. у нас на сельпо такая болезнь яро присутствует и не знали чем лечить, оказывается надо срочно закупить партию Zyxel Keenetic Lite и все забудут эту проблему?
Я прав?
например?
Одна из самых простых, и ватчдог присутствует. Думаю, что в остальных тоже есть.
www.123.ru/communication-equipment/tochki_dosutpa/brand-mikrotik/besprovodnoy_marshrutizator_mikrotik_hap_ac_lite_beliy_art8839321/?utm_medium=cpc&pr=2600&utm_content=8839321&utm_campaign=market_msk&utm_source=yandexmarket&utm_term=unk_MikroTik_chAPAClite80211ac&frommarket=https%3A//market.yandex.ru/api/geo/getShops%3Fgeo-location%3D38.09482067706299%2C55.60331984547642%26geo_bounds_lb%3D38.05778&ymclid=149953219569296138400001
разница в 2 буквах, а цене значительная.
мне важно чтобы был Watchdog
Во-вторых: если перегружен диапазон 2.4;
Ну и в третьих — это, возможно, скорость. Но не думаю что так существенно в домашнем хозяйстве. У меня 2.4 версия. Проблем нет (точнее чуть подглючивал до обновления). Настроил с телефона за 5 минут (вопреки сложившемуся мнению, вполне работает из коробки, если не требуются специфические настройки)
Отличная идея.
Из той же оперы, был у нас псевдо сервер на freebsd 5, в общем плохо ему было иногда, зависал на кёрнелл паник и не перезагружался сам пока на клавиатуре любую кнопку не нажмёшь. В общем поставили мы клавиатуру вертикально на скотч, на втором сервере накатали скрипт который при отсутствии пинга сервера фриибсд выезжал сидюком и бил по клавиатуре отправляя сервер в перезагрузку. Сменился как-то внутренний айпишник у этого псевдосервера, приходим в серверную смотрим и плачем — один сервер лупит другой сидюком по клавиатуре, прямо в кнопку Enter, а тот ему отвечает: «Ligin incorrect». Восстание машин, блин.
когда у северов айпишники на пустом месте меняются
а когда единственный интернет это adsl от ростелекома с его глючными роутерами/модемами, гнилыми проводами и просто залипающем интернете, когда коннект есть, а трафика нет, то такая пинговалка вполне себе решение.
я сделал на esp+реле. пингую 8.8.8.8. все работает как часы
крч надо 220В отрубать. а пинговать 4, 6, 8 камер.
«умный » коммутатор весело мигает у каждого ethernet коннектора, но это ничего не значит. видеорегистратор не видит, камеру по сети не отпинговать)
сейчас пусть кто-ниб из монтажников из компании (за биг прайс и еще на гарантии) поправляют. а потом уже как-ниб сам. м.быть хватит коммутатор просто поменять. или камеру.
внешне одинаковые с данным экземпляром.
забыл добавить эта штука если вырубали питание сообщает об этом смской чтобы вы включили там всё. выручает эта смска очень сильно!
… блин и не реклама, потомучто на маркете как-то грустно с предложениями… скорее всего новее что-то вышло
У самого подобным gsm сигнализация занимается. Коммутирует дозвоном нагрузку (можно СМС). Видео ( sova900.ru/gsm_rele.html ) на офф. сайте… своё видео позже сделаю. цена от 1800 руб. может даже баланс показывать.!
сейчас обмазываюсь роликами про микротики, в новом году куплю набор для обучения и ubiquiti тоже
менять то на что? он провайдерский. и вместо него дадут такой же. уже меняли
линия дерьмовая. провода гнилые. техники провайдера приезжают раз в неделю.
и вы предлагаете вместо одного устройства два. причем второе явно дороже розетки которая умеет ребутить.
Если при висяке на админку модема зайти возможно, то в Вашем случае, возможно, после отваливания ATM и реконнекта оного провайдерский модем не переустанавливает pppoe соединение.
Попробую объяснить еще раз. Переключите провайдерский модем в режим бриджа, а PPPOE соединение настройте на компьютере, с галочкой автореконнекта. Если после этого модем «виснуть» перестанет и не будет требовать передергивания, то мои слова, написанные выше, имеют смысл.
И не обязательно микротик. Можно любой роутер, умеющий делать корректно PPPoE.
Но после перевода в режим — тупо модем и подключению к Микротику уже три года ни одного зависания.
Но поражаюсь насколько у некоторых работает ум и имеются прямые руки)
Плюс заслуженный, обзор многим будет полезен.
К чему вопрос то?
Роутер как-то по другому перезагружается софтово, нежели его физически через реле перезапускать.
При потере соединения и звонке в техсуппорт слышу следующее:
— Меееедленно вытащите роутер из розееетки… Выыыыыыждите 60 секуууунд… И так же мееееедленно включите его обратно. Повторите.
— ^*&%&^%!!!
— Софт ребут?.. Не, не слышали.
1 power off router
2 delay 60s
3 power on router
4 goto 1
?
1
2
3
} until ( internet )
:)
Поэтому и забивают микроскопом гвозди.
Часто и густо подобное помогает.
— 3 раза. Не помогает.
— Как вы это делали?
— Софтово.
— Не. Не катит. Его надо выдернуть из розетки.
И где я тут не так позвонил? :)
И что, раз юзера — дебилы, в ТП надо брать точно таких же?
ну и железке нужно не виснуть наглухо совсем)
зависания могут быть от старого бп или от кривого сетевого кабеля, который таджики скрутили из огрызков
еще могут влиять какие-то мощные потребители, которые генерируют электромагнитные выбросы
довелось видеть. как рядом стоящий сканер бумаг наводил такие помехи на монитор, что там процессор перезагружался
я думал это компутер или видеокарта так глючит от драйвера сканера, но никогда бы не подумал, что движок сканера может создавать такие сильные помехи
за полчаса поменял и дальше работает
у нас в основном фрицбоксы юзают, работают годами, пока не устареют морально
один у меня молния спалила по дсл порту, сейчас купил кабельный фрицбокс и даже обзор написал на него
корявость прова.
А так годно. У меня есть подобное, но обратно. Некоторое железо в некоторые момерты надо выключать и долго не включать и что бы посторонние ни чего не поняли )))
Объясняю на пальцах. Поднимается ось (частный пример, pfsense). Первым дело поднимаются аппаратные сетевые интерфейсы. На будущем wan интерфейсе физическом поднимается ip4. Выдается ip клиента, бла и бла. После этого доходит очередь до поднятия pppoe. И вот именно когда он поднялся, он сообщил системе что основной шлюз такой-то. И все становится прекрасно. Но вот проверяльщик поднялся мальца раньше него и для него основной шлюз тот который был в локальной сети прова до pppoe. И такое у меня было в том числе и на бытовых роутерах.
P.S. в сети два стационарных компа, СХД, три телека на последний порт по пауэрлинку, два ноута и четыре смарта по вифи. Бывает все работает одновременно.
TP-Link Archer C7 разогнанный + LEDE + updxy + OpenVPN + DDNS + мониторинг — работает месяцами, перегружается только при пропадании питания.
И этот человек ничего не знал про GPL, Open source… Конечно, я ему разжевал, какую чушь он несёт и чем им грозят такие заявления, но… Их подход (тогдашний, как минимум), заключавшийся в том, что они берут GPL-код (потом, правда, BSD), пилят прошивку и не выкладывают исходники (а в версии 2.0 в прошивке вообще только один бинарник, по сути, т. е. всё собрано в один код, чтобы народ не разбирал прошивки, не патчил, и т. д.), отталкивает от себя. Да ещё и «ловушки» ставят (или ставили, не слежу за ними больше), чтобы народ не лил их прошивки на другие устройства.
А вот ответ Asus на вопрос, могу ли я распространять (в узком кругу, на самом деле) патченную их прошивку вместе с их лого, графикой, интерфейсом, и т. д.:
Вот так вот. «Нет и не может быть». Т. е. даже техподдержка знает это.
При этом есть исходники (но не всегда последней версии) и все необходимые для сборки компоненты.
Так что никаких Zyxel лично у меня больше не будет.
Так что всё индивидуально, всё зависит от поставленных задач.
роутер в шкафу 19" с вентиляцией. Модем на подобранном хорошем кабеле за стеной от шкафа в пластиковом коробке IP55 на наружней стене.
модем ребутится watchdog-ом роуетера от пары раз в день до десятка. Сам роутер зависал в случайном порядке — мог месяц работать без сбоев, а мог через день терять связь. поставил ежесуточной ребут на розетке-таймере на ранее утро (когда ни кому не нужен).
Так что зухель не панацея. Хорошо, когда его достаточно, но так бывает не всегда.
для переинициализации линка или 3г модема надо питание усб дергать или выполнять команды, а такие плюшки есть только в профи роутерах типа микротика или же всякие опен врт
lede-project.org/toh/hwdata/asus/asus_rt-n10u
Тем более, что несколько аппаратных версий было.
wifi-iot.com/p/wiki/177/
раз в сутки роутер выкл на 1 минуту
Если роутер зависнет через несколько минут после запланированной перезагрузки, то сутки вы без интернета?
Субъективно:
В целом я думаю 90% подобных зависаний он решил, т.к. зачастую роутеры/свистки/аналогичные_девайсы вешаются как раз после продолжительной перманентной работы, и ребут решает утечки памяти, частично перегрев и другие причины из-за которых устройства зависают, но в любом случае это не гарант того что роутер словит какой-нидь битый пакет, или еще что из-за чего повиснет и будет сутки висеть мертвым, но такие случаи довольно редки.
На новых ядрах:
Есть утилиты для этого: uhubctl, hubpower
Так что это можно сделать и на других роутерах, был бы доступ к командной строке и скриптам.
А если после этого еще попробовать ребутнуть сам микротик, то тупо пропадает usb интерфейс и помогает только физическое перетыкание свистка.
Например Билайн в Питере свои роутреы реализует.
Их качество — это их песня, но у билайна всегда стоит туннель. Причем в Москву ;)
настроить этот тоннель на чужом (не их фирменном) роутре — это дикая боль /для понимания задачи можете посетить форумы билайна где спецы «шьют» роутеры других фирм под этот их поганый «туннель»/
Поэтому часто выбора по модели роутера нету.
Во вторых задачу автора можно было решить дешевле и иначе.
Но конечно его решение точно лучше. Хотя и сложнее.
Есть такие розетки с пультами. Пультики включают и выключают розетки. По радиоканалу.
В пульте батрейка.
Я так включил роутер в такую розетку (она копеечная продается в Леруамерлене)
Если роутер виснет — беру со стола пульт и не поднимая задницы с кресла вкл/выкл эту розетку.
Второй пульт из комплекта можно было отдать соседу (по тех задаче автора)
Далее, как все рекомендуют — взять блок питания на то же напряжение, что и родной, но с максимальным током в два раза больше родного. 50% висяков от плохого штатного питания. Авторский роутер сделан экономистами, кто их знает чего они наэкономили в родном БП.
Далее. Проверить что в нем вешается? Отпадает вифи модуль? Падает сам NAT? Или отваливается соединение WAN с сетью? Видел роутеры, которые не умели корректно отработать закончившийся DHCP lease, пока единожды не была изменена одна настройка. Тем не менее, если замена невозможна, то конкретно авторская модель перешивается в dd-wrt, в котором, возможно, глюков больше не будет. Моя история со сменой штатной прошивки DIR-825b1 на dd-wrt этому подтверждение. Аптаймы=6..14мес без перезагрузки и вмешательств. Проблема оказалась не аппаратной.
Пчелайн со своим туннелем как-бы не проблема вообще, особенно для любой коробки с dd-wrt
Еще раз, автору респект и уважение за решение! Всем добра
Не поделитесь скетчем?
Проблема бывает в основном только при первом в текущем дне включении компьютера. Иногда при выключении одного из компьютеров.
Короче заказал :). Не зря говориться: лень — двигатель прогресса.
Инфы конечно много по настройке микротика, но не всегда она проверена перед публикацией
Дополните обзор?
Спасибо!
я на нее прошил, пин реле gpio0. 4 штуки за цену соноффа
Либо провайдера поменяйте, если проблема из-за него и он на неё забил.
Есть такие уроды — роутер только их, интернет работает с проблемами, но им и так хорошо.
Подпилил под маленькую релюху на esp01 у которой 4 gpio выведено — (0,1,2,3), gpio 0 дергает реле… Использую для восстановления интернета на связке nexxt2030 (прошитый кенетиком+usb 4g huawey) раз в сутки /трое — тупо заканчивает интернет скотина, ещё на вайфай 4g модеме huawey, который на батарее, но при отсуствии розетки высаживает её, вырубается и больше не включается — висит эта зараза на столбе и раньше запускался пультом и реле на 433mh — теперь, когда всё потухло и затем появилось 220v — стартует esp с этим скетчем, ждет роутер, а его нет — зажимает питание на нем включая его, если инета нет то таким же макаром вырубает его, затем врубает! Короче всё супер, кроме неизвесной статистики… Автору респект, а меня не критикуйте, мне пофиг и я месяц как установил IDE.
PS конечно можно поговорить тут, почему бы и нет, но всё таки, нахрена столько учить автора этого топика не выложив своё решение и рекомендовать смену оборудования или провайдера… Всё верно, выход должен быть оптимальным… куча провайдеров — можно менять, куча бабла — ставь/ищи/пробуй/тестируй оборудование, или взял скетч этот на вооружение, положил его в аптечку и при проблеме — решил вопрос за 10 минут и 2$ — не думаю, что есть голос против. Ещё раз спасибо автору / как тут карму делать не знаю — ссорян.
ping_reley-WebUpdate
источник mysku.club/blog/china-stores/57097.html
между ////ot ping start//// и ////ot ping stop//// вставлены части скетча из источника в стандартный пример с IDE «WebUpdate»
для возможности заливки прошивки через WEB,
gpio заменены под плату esp01
To upload through terminal you can use: curl -F «image=@firmware.bin» esp8266-webupdate.local/update
*/
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <ESP8266Ping.h>
const char* host = «esp8266-webupdate-ping-ip»;
const char* ssid = "*****"; // подставить название своей сети WiFi
const char* password = "******"; //подставить пароль свой сети WiFi
const IPAddress remote_ip(192, 168, 88, 12); // адрес для пинга 87, 250, 250, 242 — (yandex) 192, 168, 88, 15 — (local)
unsigned long previousMillis = 0;
const long interval = 10; //интервал между пингами в сек 300 по умолчанию
const long T_ROUTER = 10; // время ожидания загрузки роутера в сек 60 по умолчанию
const long T_RELAY = 5; // задержка от выключения реле до включения в сек 5 по умолчанию
int PIN_RELAY = 0; //для esp01 — актуально/доступно — 0, 1, 2, 3,
int PIN_LED = 2; // не понял что это
int PIN_BUTTON = 3; // не повторяй от PIN_LED / PIN_RELAY
int COUNT_PING = 0; //количество попыток при отсутствия пинга (не задается)
int COUNT_PING_MAX = 2; //максимальное количество отсутствия пинга до перезагрузки роутера 2 по умолчанию
int COUNT_WIFI = 0; //счетчик попыток подключения к WiFi
int COUNT_WIFI_MAX = 60; //300; // Таймаут до перезагрузки роутера при отсутствии WiFi в сек
ESP8266WebServer server(80); //по умолчанию 80, а тут ли менять — хз
const char* serverIndex = "";
void setup(void){
///////////////ot ping start/////////////////////
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_RELAY, OUTPUT);
pinMode(PIN_BUTTON, INPUT);
digitalWrite(PIN_RELAY, HIGH); //HIGH при загрузке — по умолчанию
digitalWrite(PIN_LED, LOW); //LOW при загрузке — по умолчанию
delay(10);
attachInterrupt(PIN_BUTTON, Click, FALLING);
///////////////ot ping stop//////////////////////////
Serial.begin(115200);
Serial.println();
Serial.println(«Booting Sketch...»);
WiFi.mode(WIFI_AP_STA);
WiFi.begin(ssid, password);
if(WiFi.waitForConnectResult() == WL_CONNECTED){
MDNS.begin(host);
server.on("/", HTTP_GET, [](){
server.sendHeader(«Connection», «close»);
server.send(200, «text/html», serverIndex);
});
server.on("/update", HTTP_POST, [](){
server.sendHeader(«Connection», «close»);
server.send(200, «text/plain», (Update.hasError())?«FAIL»:«OK»);
ESP.restart();
},[](){
HTTPUpload& upload = server.upload();
if(upload.status == UPLOAD_FILE_START){
Serial.setDebugOutput(true);
WiFiUDP::stopAll();
Serial.printf(«Update: %s\n», upload.filename.c_str());
uint32_t maxSketchSpace = (ESP.getFreeSketchSpace() — 0x1000) & 0xFFFFF000;
if(!Update.begin(maxSketchSpace)){//start with max available size
Update.printError(Serial);
}
} else if(upload.status == UPLOAD_FILE_WRITE){
if(Update.write(upload.buf, upload.currentSize) != upload.currentSize){
Update.printError(Serial);
}
} else if(upload.status == UPLOAD_FILE_END){
if(Update.end(true)){ //true to set the size to the current progress
Serial.printf(«Update Success: %u\nRebooting...\n», upload.totalSize);
} else {
Update.printError(Serial);
}
Serial.setDebugOutput(false);
}
yield();
});
server.begin();
MDNS.addService(«http», «tcp», 80);
Serial.printf(«Ready! Open %s.local in your browser\n», host);
} else {
Serial.println(«WiFi Failed»);
}
}
////////////ot ping start//////////////////////////////////
void ConnectWIFI()
{
Serial.println(«Подключаюсь к WiFi»);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
// WiFi.config(ip, gateway, subnet);
while (WiFi.status() != WL_CONNECTED)
{
if (COUNT_WIFI <= COUNT_WIFI_MAX)
{
COUNT_WIFI++;
}
else
{
Serial.println();
Relay(); //перезагружаемся так как нет подключения к WiFi
Serial.println(«Подключаюсь к WiFi»);
}
//Serial.println(WiFi.status());
digitalWrite(PIN_LED, !digitalRead(PIN_LED)); //моргаем зеленым светодиодом
delay(1000);
Serial.print(".");
}
COUNT_WIFI = 0; // сбрасываем счетчик попыток подключения к WiFi
Serial.println();
Serial.print(«WiFi подключен, ip: „);
Serial.println(WiFi.localIP());
//Serial.println(WiFi.status());
digitalWrite(PIN_LED, LOW); // зажигаем зеленый светодиод
COUNT_PING = 0; // сбрасываем счетчик неуспешных пингов
}
void Relay()
{
if (digitalRead(PIN_RELAY) == HIGH)
{
digitalWrite(PIN_RELAY, LOW); //отключаем питание на розетке
Serial.println(“Реле ВЫключено»);
}
delay(T_RELAY*1000);
digitalWrite(PIN_RELAY, HIGH); //включаем питание на розетке
Serial.println(«Реле Включено, ждем загрузки роутера»);
delay(T_ROUTER*1000); // ждем загрузки роутера
COUNT_PING = 0; // сбрасываем счетчик неуспешных пингов
COUNT_WIFI = 0; // сбрасываем счетчик попыток подключения к WiFi
previousMillis = 0;
}
void Click()
{
digitalWrite(PIN_RELAY, LOW); //отключаем питание на розетке
Serial.println(«Реле выключено кнопкой»);
}
/////////////////ot ping stop/////////////////////////////
void loop(void){
/////////////////ot ping start///////////////
if (WiFi.status() != WL_CONNECTED) // нет подключения к WiFi
{
ConnectWIFI(); //подключаемся к WiFi
}
unsigned long currentMillis = millis();
if (((currentMillis — previousMillis) >= interval*1000) && (digitalRead(PIN_RELAY) == HIGH) && (WiFi.status() == WL_CONNECTED))
{
previousMillis = currentMillis;
Serial.print(«Попытка пинга: „);
//Serial.println(remote_host);
Serial.println(remote_ip);
//if(Ping.ping(remote_host))
if (Ping.ping(remote_ip))
{ //пинг есть
Serial.println(“Пинг есть!!! internet работает»);
COUNT_PING = 0;// сбрасываем счетчик неуспешных пингов
} else
{ // пинга нет
Serial.print(«Пинг отсутствует :( internet выключен»);
COUNT_PING ++;
Serial.println(COUNT_PING);
}
}
if (COUNT_PING >= COUNT_PING_MAX) // если превышено количество попыток пинга перезагружаем роутер
{
Relay();
}
if (digitalRead(PIN_RELAY) == LOW) // нажата кнопка, перезагружаем роутер
{
Relay();
}
////////////////ot ping stop///////////////
server.handleClient();
delay(1);
}
Подскажите, Sonoff Basic, может включить/выключить роутер (перезагрузился что бы)?
А то так понимаю -без инета не работает, то есть выключить то выключится, но включить уже с телефона нельзя будет, тк инета то нет.
Или есть некий «сценарий» или команда, при которой все заработает?
— CUT HERE FOR EXCEPTION DECODER — ets Jan 8 2013,rst cause:1, boot mode:(3,6)
load 0x4010f000, len 3584, room 16
tail 0
chksum 0xb0
csum 0xb0
v5d3af165
~ld
ISR not in IRAM!
User exception (panic/abort/assert)
— CUT HERE FOR EXCEPTION DECODER — Abort called
>>>stack>>>
ctx: cont
sp: 3ffffef0 end: 3fffffc0 offset: 0000
3ffffef0: feefeffe feefeffe feefeffe 00000100
3fffff00: 000000fe 00000000 00000000 00000000
3fffff10: 00000000 00000000 00000000 00ff0000
3fffff20: 5ffffe00 5ffffe00 3ffef1b4 00000000
3fffff30: 00000002 00000000 3ffee450 40202d8a
3fffff40: 4010046a 9202c7c0 00003b00 40202d9c
3fffff50: 40105395 00003bae 3ffee450 402032a5
3fffff60: 00000000 3ffee594 0000000a 3ffee538
3fffff70: 3ffe84d8 3ffee594 0000000a 3ffee538
3fffff80: 3ffe84d8 3ffe84d4 3ffee450 40203354
3fffff90: 3ffe84d8 3ffe84d4 3ffee450 402011f6
3fffffa0: 3fffdad0 00000000 3ffee4f8 40202998
3fffffb0: feefeffe feefeffe 3ffe84fc 40100d65
<<<stack<<<
Пытаюсь прошить соноф бейсик.
прошивка компилируется прошивается, настройки платы как на картинке.
Но при подаче питания горит светодиод но плата не работает.
В порт сыпятся ошибки:
При прошивке видно что плата определяется как ESP8285.
В настройках изменил плату, но ничего не изменилось.
Подскажите пожалуйста в чем ошибка?
У меня розетка с модулем ty_wb2s
Вот информация по нему
developer.tuya.com/en/docs/iot/wb2s-module-datasheet?id=K9ghecl7kc479
Можно ли прошить прошивкой выше?
С распиновкой разобрался.
На фото, как выглядит розетка и программатор (usb-ttl_ch340)
Если нет, может кто поможет написать аналогичный софт?
fork/exec C:\Program Files (x86)\Arduino\tools-builder\ctags\5.8-arduino11/ctags.exe: The file or directory is corrupted and unreadable.
Как решить? Использую Arduino 1.8.5
Недавно, с разницей в те же полгода перестали работать: не подключались к Wi-Fi. Причину в первом случае пришлось поискать, второй случай подтвердил диагноз: деградировал конденсатор 16В 330мкФ, в нём осталось 290мкФ, но этого уже не хватает. Видимо, установлен без запаса. В обоих случаях установил на 470мкФ, больше не позволяют габариты. Сегодня воскресил вторую розетка, первая работает полгода нормально. Похоже, что это системная проблема.
A fatal esptool.py error occurred: Failed to connect to ESP8266: Timed out waiting for packet header
Подскажите как исправить?