ESP8266: Автоматическая перезагрузка роутера. Бюджетный вариант.

http://forum.amperka.ru/attachments/drawing4-png.2556/

вариант прошивки здесь.

Мы видим устройство с белым огоньком: оно трудится и потеет. Сеть мониторится через WiFi, провода там лишь для доставки электронов с размахом 3,3 вольта.
Перегружаем компьютером роутер: интернет, естественно, теряется. Как следствие, на устройстве гаснет фара, зато срабатывает реле на размыкание (типа роутер отключили от сети чтобы перезагрузить), на нем загорается светодиод - смотрите внимательно, видно его. Через некоторое время устройство заново входит в режим надзора за сетью, что означает подачу питания на роутер и возобновление проверки через установленное время.

http://forum.amperka.ru/attachments/205-jpg.2646/

http://forum.amperka.ru/attachments/284-jpg.2647/

Краткое описание логики работы, для тех, кому необходимо.

1. После включения, модуль запускает скрипт init.lua. Его задача - затормозить деятельность на 20 секунд, за которые через Esplorer на модуль можно послать команду на остановку Таймера 0. Если она послана за это время - устройство останавливается, если нет - запускается основной скрипт, в данном случае netCheck02003.lua.

2. Реле устройства работает на размыкание. То есть, после старта устройства, оно не срабатывает! Реле сработает только в том случае, если нет Интернета или WiFi - разомкнет розетку, в которую включен роутер и модем, у кого он есть.

3. При старте основного скрипта число попыток проверки устанавливается в - (минус!)14. Проверка соединения осуществляется сразу, каждый раз через 30 секунд, причем, если Интернет уже есть (то есть мы запустили устройство, а Интерент работал) счетчик проверок сразу обнуляется. В ином случае, модуль при каждой неудачной проверке увеличивает количество на единицу. Как только число неудачных проверок достигнет трех - реле получает команду на 10 секундное размыкание.
Таким образом, при общем старте, когда интернет соединения нет, размыкание произойдет ((14 + 3) х 30 секунд)/60сек = 8,5 минут. Если за это время Интренет появится - счетчик будет сброшен в 0.

4. При каждой проверке (через 30 секунд) счетчик устанавливается в единицу. Удачная проверка его сбрасывает.

5. При неудачной проверке - счетчик увеличивается, 3 проверки - перезагрузка. При перезагрузке увеличивается на единицу счетчик перезагрузок. После первой перезагрузки счетчик проверок устанавливается в -14, чтобы очередная перезагрузка прошла через 8,5 минут. Если она оказывается неудачной - счетчик проверок устанавливается в -28. То есть следующая перезагрузка произойдет через 17 минут. Если и она окажется неудачной, счетчик устанавливается в -120, что будет вызывать перезагрузку каждый час.
Любое удачное соединение с Интернетом обнуляет счетчик проверок и счетчик перезагрузок.

6. При старте основного скрипта, нога светодиода устанавливается в ноль, в этом случае диод должен загореться. Потому ка плюсом он соединен (через резистор) к шине питания, а минусом - к ноге модуля. При срабатывании реле этот диод гаснет на время срабатывания.

7. Работу модуля можно проверять не вставляя его в устройство - в UART порт он выдает некоторую информацию. "time is money" - проверка сети прошла успешно. "Restart No...(количество рестартов подряд) " - когда подается команда на реле. "Exit Restart Router!" - выключение реле. "Trying: (номер проверки), нормально - 1" - перед каждой проверкой, предыдущая была удачной. В ином случае число проверок будет другим. "No Time" - проверка прошла, удачная или неудачная. Модуль будет ожидать 30 секунд до следующей.

Источник: Тут