Отвисатор роутеров с 3g/4g usb-модемом.

  • Цена: $4.99+$1.55

Данный обзор заинтересует, в первую очередь, тех, кто использует популярное для дач, сельских домов и маленьких офисов решение: раздавать мобильный интернет от usb-модема с симкой через бытовой wi-fi-роутер. Парк таких роутеров сейчас обширен, мобильный интернет достаточно доступен, вот и трудятся по дачам Асусы, Зикселы и прочие тп-линки с воткнутыми в них Хуавеями и ЗТЕ.
Одна проблема — всё это периодически подвисает.
Да оно бы и не беда: казалось бы, ну что тут такого, — зависло, — современная прошивка любого роутера имеет различные ватчдоги. И в dd-wrt, и в open-wrt, да и в стоковых прошивках есть различные keep-alive инструменты: ребут по отсутствию пингов до указанного ресурса, ребут по расписанию, разрыв сессии модема и т.д.
Но на практике всё оказывается гораздо неприятнее. Зависают, чаще всего, именно сами usb-модемы. А программная перезагрузка роутера никак не спасает ситуацию: напряжение с usb-порта роутера при таком ребуте не снимается. Т.е. роутер честно обнаруживает зависание, честно перезагружается, но сам модем так и остаётся зависшим. Помогает только физическое обесточивание системы «роутер-модем».
Столкнувшись со всем вышеописанным, решил сделать универсальный отвисатор бытовых роутеров, который поможет в подобных ситуациях. Нисколько не претендую на оригинальность идеи. Более того, я даже уверен, что такое уже есть. Наверняка такое реализовывалось многими людьми и многими способами. Но, потратив полдня, вот так «слёту» найти готовое решение я не сумел. Понял, что самому сделать проще и сподручнее.
Обозреваемый девайс включается в разрыв линии питания роутера, между низковольтным штекером блока питания и гнездом питания самого роутера. Также отвисатору потребуется от роутера один lan-порт. Смысл прост. Девайс раз в несколько минут пингует последовательно несколько заведомо живых ресурсов (в моём случае это публичные DNS-серверы Яндекса и Гугля). И, если с нескольких попыток не допингуется ни до одного, он разрывает линию питания роутера на несколько секунд, физически перезагружая всю систему.
К конструкции. Главным узлом является сетевой модуль. У меня в тумбочке нашёлся модуль на W5500 от RobotDyn, поэтому он и вынесен в заголовок. Но модули на этом чипе делают все, кому не лень (и, уж конечно, дешевле, чем $5). Так что воспользовавшись поиском по Aliexpress, каждый найдёт лот, подходящий именно ему. Справедливости ради, отмечу, что вся продукция RobotDyn, которую я держал в руках, оставляла самые приятные впечатления — качественный монтаж, отличное качество изготовления плат, продуманность конструкции. Я не рекламирую, — думаю, многие подтвердят мои слова.
Мозгом отвисатора выступает ардуина, — работа как раз для неё. У меня нашлась Pro Mini. Но подойдёт любая, хоть Nano, хоть Uno. Я люблю ProMini за то, что их не жалко оставлять в готовых конструкциях, это самая бюджетная модель из линейки ардуино. Покупаю их сразу пригоршню и всегда имею запас «в тумбочке». Новичкам же, наверное, больше подойдёт упомянутые выше Nano или Uno, потому что они сразу, без переходников и сложностей, умеют подключаться к USB «большого брата».
Ещё конструкция должна содержать ключевой элемент, чтобы разрывать питание роутера. Я, каюсь, применил модуль реле, но это исключительно от лени. n-канальный MOSFET был бы и дешевле, и надёжнее. Можно и твердотельное реле (хоть то же Омроновское), но это уже если шиковать.
Для того, чтобы схема успешно работала в широком диапазоне питающих напряжений (наш отвисатор универсален), используется миниатюрный dc-dc преобразователь, настроенный на выходные 5 вольт.
Вот всё, что потребуется для постройки девайса:


Немного о сетевом модуле, как о центральном в этой конструкции.
Человеку, который впервые выбирает сетевой модуль для своей ардуино-самоделки, приходится делать нелёгкий выбор. Даже если за скобками оставить Wi-Fi, и предположить, что требуется именно коммуникация витой парой, то спектр таких модулей весьма широк. С одной стороны, это семейство шилдов на различных вариациях ENC28J60 и CP2200. Главное, что в них подкупает новичка — это стоимость таких модулей. Они действительно довольно дёшевы. А вот дальше начинаются трудности. Ведь это, в прямом смысле, контролеры Ethernet, которые работают на довольно низком уровне ОСИ. Они работают с Ethernet-фреймами, и не более того. Это значит, что весь стек TCP/IP и всё, что выше, придётся делать ручками и программно. А для новичка, даже при наличии готовых библиотек, это, зачастую, является довольно сложной задачей.
А далее, всем известный визнетовский чип W5100. Готовых модулей на клонах этого чипа — превеликое множество. W5100 — это уже настоящий TCP/IP сопроцессор. Т.е. от низкоуровневой рутины пользователь становится освобождён. Чип стал очень популярен. Но он не лишён кучи недостатков. Главные: работа на скорости 10 Mbit/s, жуткий нагрев, ряд глюков (документированных). Но, W5100 — до сих пор стандарт для официальной ардуины, и все версии библиотеки Ethernet поддерживают именно его.
Последующая эволюция — это появление чипа W5200 (это уже 10/100 Mbit/s, это более стабильная работа). И, наконец, дальнейшее развитие — чип W5500 (от 5200 он отличается меньшим энергопотреблением, (из-за улучшения технологического процесса, 0.13µm против 0.18µm), меньшим допустимым порогом питающего напряжения (1,2V-3.3V против 1,8V-3.3V), изменением формата SPI-фрейма, способностью программно уходить в сон, умением WOL от UDP-пакета и рядом других улучшений).
Многие ардуинщики недолюбливают W5500. Главным образом потому, что официальной поддержки этого чипа стандартной библиотекой Ethernet всё ещё до сих порт нет. А почти четыре года прошло. По ардуиноориентированным форумам полно сообщений, типа «купил модуль на W5500, открыл стандартный пример, ничего не заработало, модуль плохой, буду возвращать». Да, всё это печально, но официальным релизерам библиотек должно икаться по многим поводам, не только по этому. Увы.
Путей решения проблемы несколько.
Во-первых, можно использовать стороннюю библиотеку Ethernet2. Способ хорош, если в вашем проекте не будет использоваться других библиотек, ссылающихся на оригинальную Ethernet. В одном проекте совместить обе библиотеки не получится.
Во-вторых, написать всё самому. Если задачи просты, то вполне возможно.
В-третьих, можно модифицировать стандартную библиотеку Ethernet, чтобы она научилась работать с чипом W5500. Минус в том, что при смене IDE на новую версию, библиотеку придётся модифицировать заново. Или носить модифицированную библиотеку вместе со своим проектом.
Я пошёл по третьему пути. Всё подробно вот тут. Ничего сложного, надо просто по шагам сделать то, что там расписано. Скачиваем архив, заменяем им стандартную библиотеку, раскомментируем ту строку, которая соответствует нашему чипу, наслаждаемся.

Для тех, кто решит повторить описанную тут конструкцию, я приготовил архив с исходником и всеми необходимыми библиотеками, включая уже модифицированную и настроенную библиотеку Ethernet. Её остаётся лишь перенести в папку «libraries» туда, где установлено ArduinoIDE, заменив стандартную библиотеку Ethernet.

В константах, при необходимости, нужно установить IP-адрес отвисатора, соответствующий диапазону контролируемой сети.

Схема устройства предельно проста и очевидна:


Перед началом сборки, надо не забыть выставить выходное напряжение на преобразователе, равное пяти вольтам. Это единственная регулировка в устройстве. Движок подстроечного резистора после этого целесообразно зафиксировать капелькой подходящего лака. У кого нет цапона, подойдёт лак для ногтей, отобранный у жены.

Собираем всю конструкцию в подходящем корпусе:


Вливаем в ардуину код.
Проверяем работоспособность отвисатора.
Окончательно крепим плату ардуины (на двусторонний скотч или капельками термоклея по углам), но, желательно, так, чтобы при необходимости было возможно подключиться TTL-конвертером для перепрограммирования.
Закрываем корпус.

Готово.

Плюсы конструкции:
— Универсальность алгоритма. Конструкция пингует по нескольку раз и сразу несколько ресурсов. И только в случае полной неудачи перезагружает нагрузку.
— Универсальность адресов и протоколов. Можно пинговать любые ресурсы. Например, мониторить собственный сайт на собственном веб-сервере. Можно заменить ICMP-пинги на что-то другое. Например, на подключение к контрольным ресурсам в качестве web-клиента или, скажем, по ftp-протоколу. Аппаратно конструкция никак не изменится.
— Развязанность контролируемой сети и контролируемого устройства. Отвисатор может сидеть во внутренней офисной сети за офисным прокси-сервером или НАТом и, при этом, допустим, перезагружать какой-нибудь старенький аппаратный файервол, который стоит намного раньше и, соответственно, в другой сети.
— Универсальность подконтрольной нагрузки. Уже в существующем виде конструкция будет работать с любой низковольтной DC-нагрузкой, оснащённой разъёмом 5,5x2.1, в широком диапазоне питающих напряжений. Но заменив ключевой элемент на хорошее реле или каскад из оптосимистора (желательно с контролем перехода нуля) и силового симистора, мы без проблем сможем управлять любой рабочей станцией, сервером или фермой. А хороший электромагнитный пускатель сможет обеспечивать аппаратную перезагрузку целой вычислительной стойки или небольшого машинного зала :)

Минусы конструкции:
— DIY. Надо найти время, силы и желание, чтобы сесть и это сделать.
— Аскетичность конструкции. И внешне, и внутренне, отвисатор суров, аскетичен и неаляпист. Нет собственного веб-интрфейса, нет рюшечек, нет модного управления от смартфона, нет блестящих элементов, обтекаемого корпуса, китайского облака, нет логотипов «Mi», «зелёного робота» или «яблока», даже нет никаких мигающих лампочек. Чёрная коробочка, которая молча делает свою работу. Мной подразумевается, что на эту коробочку годами никто не будет смотреть и она явно будет не на виду, — скорее всего, где-то на пыльном чердаке или на дальней антресоли.


PS: Никто ничего для обзора не предоставлял и не спонсировал. Всё, что описано в конструкции, покупалось в разное время за свои собственные деньги или было найдено в собственных закромах.
Планирую купить +133 Добавить в избранное +138 +265
+
avatar
+13
даже нет никаких мигающих лампочек
но как же…
+
avatar
  • Dimon_
  • 14 июля 2017, 19:49
+1
Верно :)
Но это не мои, это роботдиновские :)
+
avatar
0
Zyxel на стоке уже почти 2 прекрасно ребутит их через выкл/вкл питание при зависании.
+
avatar
  • katran
  • 15 июля 2017, 18:19
0
ну мы же незнаем какая у него модель
тоже кстати зухель кинетик вива всё прекрасно работает
+
avatar
  • IRAKLI
  • 04 июля 2019, 08:41
0
А как так аккуратно выпилить квадратное отверстие под изернет разъем?
+
avatar
+4
Лампочки… лампочки… Доколе? Этож светоидиоты)))
Ну есть же разница ;-)
+
avatar
  • Dimon_
  • 14 июля 2017, 23:27
+31
Доколе? Этож светоидиоты)))
А вот и неправда.
Смотрите:
Лампа.
Заимств. в Петровскую эпоху из нем. яз., где Lampe < франц. lampe, которое восходит к греч. lampas, род. п. lampados, суф. производному от lampein «светить», «светильник»
Светодиод светит. Т.е. излучает свет. Значит, он «lampados». Значение «лампа», ведь даже и в русском языке, никак не привязано ни к накаливанию, ни к огню. Так что употребление «лампочка» вполне себе уместно, согласитесь теперь.
+
avatar
-3
Вот давайте не стоит оперировать древностями. Мы живем в обществе с далеко шогнувшим прогрессом, многое изменилось и многое стало другим. Никто в здравом уме не станет называть лампой свечку, как и инженер никогда не скажет в магазине «Дайте мне вон тех smd лампочек красного свечения».
+
avatar
  • urfin
  • 15 июля 2017, 10:37
+6
Есть лампы накаливания, светодиодные лампы и лампы энергосберегающие — все это лампы.

По моему мы нарушаем уже правила сайта.
+
avatar
+1
Светодиодная лампа и светодиод одно и тоже по вашему?
+
avatar
+2
вот вы за какую такую правду боретесь?

почему это касается меня:: вижу новый коммент в интересной мне статье, отвлекаюсь, открываю, читаю((
+
avatar
  • Stabir
  • 15 июля 2017, 15:58
0
Только из-за формы. Ромашка для освещения большой площади уже светодиодный светильник, а не лампа.
+
avatar
0
Нарушать, так нарушать :)
Еще добавлю лампы керосиновые (всем известная «летучая мышь»), масляные, карбидные.
+
avatar
0
далеко шОгнувшим прогрессом
судя по Вашей орфографии грамотность точно не шагнула.
+
avatar
+5
Хм… может термин «индикатор» прекратит войну лампочников и светодиодников.
+
avatar
0
«а унутре у ней неонка»
+
avatar
0
Для чайников как то все слишком сложно и много деталюшек, а остальные и так знают что делать
+
avatar
  • Dimon_
  • 14 июля 2017, 19:31
+7
Шутите? В конструкции всего три готовых деталюшки: ардуина, сетевая карта и dc-преобразователь. Чего ж сложного? :)
Но, да, развешивать дачный роутер можно и лазая на чердак, обычно они там располагаются — там «берёт лучше» :)
+
avatar
+1
В роутерах как правило всегда есть свободные 1-2 GPIO которые можно завести на ключ питания USB модема по сути полевой транзистор и скриптом дёргать питание тогда когда роутер перегружается. Делали так на «народных» Nexx прекрасно работает.
+
avatar
+3
Не слушайте! Я вот чайник, и для меня все отлично описано. Спасибо. Буду делать. Есть один роутер, к которому надо применить «жесткие» меры.
+
avatar
  • MrSAV
  • 14 июля 2017, 21:12
+3
Питание на чердак всё равно через удлиннитель, «ленивые» из розетки передернут )))
+
avatar
+3
А совсем ленивые
+
avatar
  • katran
  • 15 июля 2017, 18:21
0
сылка есть?
+
avatar
+1
1
2
3
+
avatar
  • Stiva
  • 16 июля 2017, 00:02
0
Вряд ли удлинитель или пульт помогут передёрнуть питание роутера на даче.
+
avatar
0
можно настроить ежесуточную перезагрузку модема. как минимум к утру он точно отвиснет.
+
avatar
0
аналогичны дивайс ставил для перезагрузки свича в супермаркете под потолком, где-то метров 10-12 над высотой пола
+
avatar
+1
А может проще в таком случае свисток перешить в другой режим)
+
avatar
+13
вспомнилось с bash

В одном отдалённом посёлке на электроподстанции стоит древний компьютер, который снимает и отправляет показания с приборов на центральную.

Бывает, он зависает.
Так, чтобы не посылать человека за несколько десятков км. для перезагрузки компа, они удалённо вырубают на несколько секунд свет во всём посёлке.
+
avatar
+1
В одном отдалённом посёлке
их таких похоже сотни:|
+
avatar
0
Да это и в городе в частнике есть, по ночам дергают рубильник))
+
avatar
  • stasv
  • 15 июля 2017, 13:46
+4
Старая фидошная байка, хабодержатель уезжает, ресет выведен на дневной звонок. Если хаб завис, нажмите.
+
avatar
  • uZver
  • 15 июля 2017, 14:47
0
Оно только выглядит страшно, а так купил наборчик, несколько вечеров поигрался с ним и понимаешь, что ничего особо сложного.
+
avatar
  • HUB107
  • 14 июля 2017, 19:30
+6
А так верилось что будет готовое копеечное решение :( Может кто встречал подобное?
+
avatar
  • Dimon_
  • 14 июля 2017, 19:40
+2
Ну вот ниже предложили реле включать от ног GPIO или от лампочек роутера. А ими управлять изнутри роутера. Это копеечное решение в смысле средств, но тут уже время на ковыряние операционки роутера + написание скриптов.
Но — тоже решение, почему нет.
+
avatar
  • HUB107
  • 14 июля 2017, 19:47
+1
Всё не то. Нужно красивое готовое копеечное решени без куроченья.
+
avatar
+1
Коммутатор питания модема на Attiny13 который в любом случае перегружает его раз в 2 часа к примеру. Но тогда может сработать ограничение на количество регистраций SIM карты в сети и оператор её отключит.
+
avatar
0
Нужно красивое готовое копеечное решение
не-виснущая прошивка для модема?)
или отрыть в нём закладку «для DDOS» и использовать её в своих мирных целях))
+
avatar
+1
Ноут с 4g модемом. Или 4g модем в виде платы внутрь ноута.
+
avatar
+10
Готовое решение — Zyxel Keenetic 4G — аппаратное отключение модема от питания с последующим включением, если модем не отвечает.
+
avatar
0
Готовые решения всегда дорогие.
+
avatar
+1
Да вобщем за какой нибудь zyxle keenetic III — 2200р. Цены не заоблачные
+
avatar
0
А зачем если можно дешевле и функциональней?
Именно в этом и заключается рациональность…
Да и среди готовых, мной предложено решение дешевле для своей задачи.
+
avatar
+1
Характеристики у девайса хорошие.
А вот про поддержку я что-то не нашел.
У того же кинетика даже на старые аппараты zyxel регулярно выпускает обновления.
+
avatar
0
С ней тоже вполне неплохо, и если уж чувства к продукции zyxel так глубоки то ничего не мешает поставить их прошивку на это идентичное (soc) железо +))) или любую другую ;)
+
avatar
0
Есть такой (nexx 3020)
У прошивок кинетика есть пакостная защита, затирающая по-моему boot. Срабатывает рандомно. Так что лучше openwrt туда ставить.
Внутри кстати нет распаянных gpio, так что ценность его в плане пощелкать релюшкой минимальна. И до сих пор непонятно — может ли он отключать usb порт по питанию.
Короче, я за zyxel- за разницу в 1000р получаю гарантию, неплохую прошивку и ее обновление. Быстро настроил и забыл. Все остальное — openwrt на разном железе, микротик — это настроил и начал писать скрипты.
+
avatar
0
Речь шла про это в нем openwrt из коробки uart и 4 gpio распаянных +2 на переключателе сейчас задействованны в прошивке вкл/выкл tor или vpn но можно использовать иначе, короче похоже нужен обзор на это если найду время напишу, а так хозяин -барин и на вкус и цвет как известно…
+
avatar
0
Обзор — это было бы интересно.
+
avatar
  • SBVF
  • 25 января 2020, 11:29
0
Для Keenetic 4g III rev. A после прошивки 2.08 уже давно не выпускает, но даже так хороший аппарат.
+
avatar
+5
Купить Зуксель, черный. В них с завода есть отключение питания для модемов.
+
avatar
0
Уже было, вам персонально отвечу так же:
А зачем если можно дешевле и функциональней?
Именно в этом и заключается рациональность…
Да и среди готовых мной предложено решение дешевле для своей задачи.
+
avatar
+1
Выбирайте роутер с поддержкой сброса питания USB -это стандартная опция.
К сожалению указанная схема не подойдет если питание poe, но в таком случае там обычно бывает сброс usb и вочдог.
Я себе для таких целей взял gl-mt300n с POE и повербанком ;) вход выход 1 микро usb
+
avatar
0
И где их искать с опцией сброса питания?
А то у меня роутер Upvel, при воткнутом модеме включаю в розетку не подхватывает интернет-сеть, приходится вытаскивать модем из роутера.
+
avatar
+1
ну, я тут брал (Есть уже v2), а вот проверенный ижектор POE по стандарту IEEE802.3af
Данное решение ТС вполне изящно и имеет право на жизнь для старых моделей роутеров не поддерживающих USB Power Control и с глюками при работе с модемами. Видимо прошивки для этой модели с исправлениями уже не выпускают, тогда только изящные костыли…
+
avatar
0
Спасибо за ссылку.
Хочу все вынести на улицу в небольшой шкаф, к модему антенну приколхозить, искал что то маленькое, нашел на Kroks минироутер, но по цене, да еще бп и шнурок покупать.
+
avatar
  • emusic
  • 24 июля 2017, 16:22
0
Поддерживаю, GL-Inet делает отличные устройства. Я для поездок купил простейший AR150 — никаких нареканий. Когда дома перестанет хватать старого TL-MR3220 — куплю у них какую-нибудь мощную модель с MIMO. :)
+
avatar
  • emusic
  • 24 июля 2017, 16:20
0
Можно посмотреть в документации на openwrt.org. Я уже давно предпочитаю покупать маршрутизаторы, в которые без проблем ставятся OpenWRT/LEDE — там и аппаратные проблемы обычно рано выявляются/исправляются, и управление унифицированное. А родные web-оболочки все разные, приходилось помнить, где какие параметры, и поддерживается ли что-то вообще.
+
avatar
  • artvio
  • 17 июля 2017, 11:40
+2
Считал, что только мне с роутером не повезло и он только у меня зависает (у меня сразу со встроенной GSM частью). Мой роутер зависал не чаще чем раз в сутки. Решил проблему просто, быстро и дешево: подключил в разрыв электропитания давно не используемый таймер электромеханический отключения/включения электричества из ИКЕА. Настроил 2 диапазона: выключение на ночное время и днём в обед перезагрузка на всякий случай. В таком режиме уже несколько лет, полёт отличный.
PS в ночном отключении есть побочный плюс, иногда засиживаешься и бац сети нет, а т.к. всё в облаке, нужно идти спать до утра. А если очень нужно продолжить работу – на таймере ползунок перевести в режим без таймера и можно продолжать работать дальше.
+
avatar
+7
Собрал аналогичное устройство на ESP8266. Работает уже месяца три, ни разу не подводило. Из плюсов — цена, простота и отслеживание зависания wifi в роутере.
+
avatar
  • Dimon_
  • 14 июля 2017, 19:33
0
Да я и не сомневался, что такое много кто делал. Идея действительно на поверхности. Но мне нужно было контролировать именно сетку, не Wi-Fi.
+
avatar
+1
Так оно контролирует наличие выхода в интернет через wifi. И перегружает его если нет соединения.
+
avatar
+1
Доброго времени суток всем! Помогите пожалуйста решить такую задачу, есть роутер с проводным интернетом- хочется сделать резервную линию интернета через 3/4 G модем, в идеале так: отрубается проводной интернет и система автоматом переходит на 3g модем.Подскажите пожалуйста, где можно почитать про подобное? Сложно ли это реализовать?
+
avatar
  • newcss
  • 14 июля 2017, 23:08
+4
Да, можно. Насколько мне известно
— роутеры Zyxel Keenetik поддерживают данную функцию
— роутеры Mikrotik это позволяют — статья на Хабре
— третье что приходит на ум — сделать устройство аналогичное как в статье. Коробочка, что-то пингует с заданным интервалом, если соединение пропадает, то по ssh\telnet подключается к роутеру, гасит проводной интерфейс, активирует интерфейс свистка…
+
avatar
+4
Еще вариант:
У меня роутер TP-Link MR3220 перепрошит в Open-WRT. Самописный скрипт пингует яндекс и гугл раз в минуту, если пинг не проходит 3 раза, сначала перегружает роутер, затем меняет конфиг с проводного интернета на 3G.
И имеется возможность управлять пинанием УСБ свистка:
echo 0 > /sys/class/gpio/gpio8/value # Отключить питание USB
echo 1 > /sys/class/gpio/gpio8/value # Включить питание USB
+
avatar
  • AFCrio
  • 17 июля 2017, 13:05
0
Думаю еще надо обратно переходить с 3G на проводной при восстановлении связи.
+
avatar
0
Да, конечно, и обратно переходит и еще куча всего, там логики… самому страшно вспоминать :)
+
avatar
  • emusic
  • 24 июля 2017, 16:26
0
Есть сборки OpenWRT/LEDE под названием ROOter — там все это уже есть, плюс вполне работоспособная работа с SMS (например, чтобы смотреть баланс).
+
avatar
  • newcss
  • 14 июля 2017, 22:59
0
Читал обзор и думал тоже о esp8266 ну или проще говоря — NodeMCU. Причем можно взять как обычную так и твердотельную релюшку. Собрать (если все компоненты есть) и запрограммить black-box — максимум день, и ненужно ни каких протоколов низкого уровня реализовывать, все из коробки, еще дня за 2-3 можно и веб-морду красивую прикрутить)
+
avatar
+3
вы знаете, совет использовать легендарно стабильную esp° натолкнул меня на ±новое направление мыслей: роутер проверяет состояние модема, модем мониторит состояние роутера., этакий нищенский софт-кластер:)
+
avatar
+1
Все давно придумали за нас — sonoff itead на esp8266 — и реле, и блок питания, и низкая цена.
+
avatar
0
Именно так. У меня уж год Sonoff как пашет.
+
avatar
  • manatu
  • 14 июля 2017, 23:23
+1
Большое спасибо за реализацию отслеживания зависания wifi в роутере!!! А автору за поднятую тему!
+
avatar
  • stasv
  • 15 июля 2017, 13:49
0
Для нас, лохов отчет бы. Серьезно. С обязательной распаковкой 8266 на видео. Несерьезно.
+
avatar
0
...-wrt, gpio, реле.
mikrotik, poe, реле.
+
avatar
  • Dimon_
  • 14 июля 2017, 19:35
+2
Да. Есть такое решение. Ещё реле подключают вместо светодиодов и на *wrt ими управляют. Но это курочить роутер. А он может быть не твой, а казённый.
+
avatar
+1
светодиод как раз висит на gpio.
если нет желания курочить железячно роутер, то можно организовать сьем с них оптическими датчиками. и, возможно, программная настройка роутера тоже не понадобится.
+
avatar
0
С микротиком все гораздо проще: он умеет делать power cycle не только на PoE, но и на USB.
Так что — «просто микротик», и задача уже сразу решена.
+
avatar
  • konst
  • 14 июля 2017, 19:36
0
А чем не устраивают готовые решения типа «Выключатель дистанционный на радиочастоте Радио КИТ RMC002»?
Паять не надо, действует на 100 метров.
+
avatar
  • Dimon_
  • 14 июля 2017, 19:41
+5
Как «Выключатель дистанционный» узнает, что инет отвалился? А если ночью, а вы торренты качать поставили или на iVideon камеры пишут?
+
avatar
+1
USB detach умеют почти все чипсеты.
+
avatar
0
detach не помогает модему нужно именно дёрнуть питание. В дешёвых роутерах ключей по питанию не ставят и соответственно программный detach не может дёрнуть питание поэтому приходится доколхозивать коммутатор.
+
avatar
0
Помогает. Потому что управляет питанием USB.
+
avatar
0
Ну и как он управляет питанием USB где вместо коммутатора впаяна перемычка?
+
avatar
0
вот я бы не отказался от USB переходника с функцией «полного» USB detach, а то иногда подвисает одно устройство и в системе отображается как unknown device, удаленно есть возможность только перезагрузить всю систему, что конечно же не решает проблему, по линиям питания переподключение происходит только после извлечения и вставки устройства назад в USB разъем.
+
avatar
0
программное отключение/включение устройства или хаба обычно спасает ситуацию.
+
avatar
0
Чтобы я здесь долго не писал что и как у меня подключено, то просто дам ссылку на видео, где как раз его автор объясняет почему программно полностью невозможно сделать переподключение устройства. Возможно в новых материнках это по другому сейчас, но в моей именно так.

Вот поэтому мне и нужно устройство, некий USB хаб, чтобы после подачи команды на него он смог «сымитировать» переподключение путем разъединения всех контактов — не только дата линий, но и питание в 5В…
+
avatar
0
usb_modeswitch -R поможет в большинстве случаев
+
avatar
0
выше ответил, здесь могу добавить то же самое.

В моем случае, если подключенное устройство зависло и получает питание 5В, то как бы я его не удалял из системы, оно так и будет оставаться «unknown device», до полного физического извлечения…
+
avatar
0
Еще раз: нормальные контроллеры умеют управлять питанием USB. Даже фонарик гаснет.
+
avatar
+1
Извини, но то, что они существуют и умеют выполнять полноценное отключения устройства еще не значит, что нужно менять существующую систему (которая работает в общем-то нормально), но в которой разводка USB разъемов осуществлена «некорректно»… думаю в таком случае лучше использовать переходник-отвисатор для этих целей. Конечно это костыль, но я за то, чтобы решать проблемы малой кровью…
+
avatar
+3
идея интересная, но если дело не в модеме, а что-то случилось на стороне оператора, отвисатор будет «ребутить» до победного…
+
avatar
  • Dimon_
  • 14 июля 2017, 19:43
0
Это да. Но бывают случаи, когда даже после того, как провайдер починит проблему, надо всё равно перезагрузить своё оборудование. Тут поможет.
+
avatar
  • CuMr
  • 14 июля 2017, 19:43
0
кому от этого плохо?
+
avatar
  • Qyix7z
  • 15 июля 2017, 08:35
+1
Предположу, что локальной сети, в которой могут гонятся задачи, не связанные с инетом.
Непрерывная перезагрузка роутера не даст работать этой локалке.
+
avatar
  • newcss
  • 14 июля 2017, 23:10
0
так в чем проблема отправить SMS с того же свистка хозяину с содержимым — Ахтунг!?
+
avatar
  • Qyix7z
  • 15 июля 2017, 08:39
0
Если проблемы у оператора, то смс тоже может не уйти.
+
avatar
  • Qyix7z
  • 15 июля 2017, 08:38
0
Дополнительно пинговать узел провайдера, через который идет трафик. И если яндекс с гуглом не пингуются, а узел — да, то дело было не в модеме.
+
avatar
  • char
  • 15 июля 2017, 16:00
0
Узел может измениться. 8.8.8.8 в этом плане надежнее.
+
avatar
+1
Ну, ряд российских провайдеров роутит трафик на 8.8.8.8 в /dev/null, в этом смысле надежней пинговать что-то такое, что точно не попадет в подзорную трубу Росцензуры или самодурства провайдеров, при наличии собственного сервера в иностранных ДЦ или виртуалки у приличного хостера свой IPшник — идеальный вариант.
+
avatar
  • Qyix7z
  • 15 июля 2017, 22:30
0
Ну да, а узнать к какому узлу сейчас подключились нельзя, тайна сия великая есть.
+
avatar
  • CuMr
  • 14 июля 2017, 19:42
+1
Как то сильно сложно все. Усли есть уарт у роутера, можно обойтись только ключем на питании 555 таймером. Пусть роутер и занимается проверкой живости коннекта, но при этом еще и периодически спамит в уарт. А таймер это слушает, и если спам закончился, на N (нет, n мало, возьмем M) секунд тушит питание.
Хотя конечно подпадает под «курочить роутер», да. Но если USB портов у роутера больше одного, можно во второй копеечную СР2102 пихнуть на эту роль.
+
avatar
  • Dimon_
  • 14 июля 2017, 19:45
-1
Нет. Ваше решение не решит проблему, описанную в заголовке: завис USB-модем.
Т.е. вы описали классическую собаку. Ваше решение спасёт от зависания роутера, но не от зависания модема, он останется зависшим.
+
avatar
  • CuMr
  • 14 июля 2017, 20:04
0
Почему это? Роутер пингует гугл с яндексом и видит что ни один из них недоступен и перестает спамить в уарт. Таймер дотикивает и рубит питание.
+
avatar
  • Dimon_
  • 14 июля 2017, 20:13
+1
Ну да. Можно, но сложно. Только питание 555 надо забирать до роутера, иначе выключившийся роутер некому будет включать. Логично.
И нужна будет ещё одна задержка, чтобы выключинным роутер хоть несколько секунд подержала, а потом включила.
Собаки на 555-х были популярны, и они работают до сих пор, но их остаётся всё меньше, это решение стабильно теряет популярность. Главный времязадающий элемент там — электролит большой ёмкости. А это очень нестабильный элемент, со временем у такой собаки гарантированно поплывут все параметры.
Да, ваше решение жизнеспособно, согласен. Но, если честно, мне кажется, по трудозатратам и по затратам времени оно намного дороже, чем описанное. А материально — нет, — очень вероятно всё найти бесплатно в своей тумбочке. Почему бы и нет.
+
avatar
-1
я бы не сказал, что оно трудозатратно и вместо 555 можно поставить тини13

сделать скрипт, чтобы мигал светодиодом каким и сбрасывал таймер в тиньке или опрашивал модем и при ответе тоже сбрасывал

а тут у тебя 2 контроллера и куча сложного кода, который тоже может зависнуть или пинг пропадет не по причине зависания модема

я сейчас делаю ручной дергатель питания видеокамер на есп8266
3 штуки будет
потом еще скрипт мониторинга напишу, видеорегистратор должен выдавать какие-то данные срабатывания датчиков или событий типа потери сигнала на сервер какой-то, в доках ничего не говорится про это
вот было бы интересно расковырять и чтобы перезапускал камеры при пропадании потока, а то они виснут не полностью
+
avatar
  • troff
  • 15 июля 2017, 13:36
0
емкость с ограничителем тока для питания девайса. реле отключает питание, емкость разряжается, включается обратно питание. профит! )
+
avatar
  • porno
  • 14 июля 2017, 19:46
+5
сам «Отвисатор» ведь тоже зависнуть может…
тогда «Отвисатор отвисатора» потребуется?
+
avatar
  • Dimon_
  • 14 июля 2017, 19:57
+2
Угу. Я это оставил за скобками, даже заикаться не стал.
Но этого комментария очень ждал.
На самом деле описанная в обзоре про-мини прошивается optiboot-загрузчиком и тогда внутренняя собака не окирпичивает ардуину. А далее в скетче работает собака. Которая и следит.
И даже более того. Когда обнаруживается отвал интернета, то сначала реле щёлкает и перезагружает нагрузку, потом сознательно собака не дёргается дольше положенного срока и ардуина сама аппаратно также перезагружается, вместе с подконтрольной нагрузкой. Реальный аппаратный ресет всей системы, и подконтрольной и следящей.
+
avatar
  • porno
  • 14 июля 2017, 20:11
+4
я бы сначала попытался найти и устранить причину зависаний, а не наколхаживать «Отвисаторы» )

а если уж припёрло, то можно через лампочку сделать — поставить ssr реле в разрыв usb питания, наверное даже в корпус роутера всё уместится…
+
avatar
0
За ардуину-то как раз можно быть спокойным — в отличие от сетевухи. А ее аппаратнвя перезагрузка у вас не предусмотрена…
+
avatar
  • Dimon_
  • 16 июля 2017, 12:20
0
Нет-нет. Посмотрите схему и скетч. Я задействовал ногу RST сетевухи, она на 9 пине. И при отрабатывании процедуры Setup, сетевой модуль перезагружается. Так что у меня происходит реальная аппаратная перезагрузка действительно всего.
+
avatar
0
Кстати, не логичнее для «совершенно полной перезагрузки» запитать схему после реле, а не до?
+
avatar
0
Тп линк M5350, работает без зависаний. Батарея сдохла давно от постоянного заряда. Вкорячил обманку на резисторе и конденсаторе. Все работает уже года три. рекомендую
+
avatar
0
вот так всегда — либо цапон, либо жена
+
avatar
-5
+
avatar
+4
у вас не рано пятница началась?
+
avatar
+2
Zyxel keenetic 4g II + E3276 (Мегафон) уже больше года работают круглосуточно и не зависают. Что я делаю не так?
+
avatar
  • porno
  • 14 июля 2017, 20:18
0
всё так делаешь, твой подход мне нравится — он правильный, верный
+
avatar
  • Dimon_
  • 14 июля 2017, 20:19
0
Да нет, всё так. Но «случаи-то, они разные бывают» ©
У народа, вон, и мегафон e392 зависает. Разное случается…
+
avatar
  • Qyix7z
  • 15 июля 2017, 08:48
0
Просто повезло.
Йопта + микромах (купленный за 145 р. по ссылке с муськи) на даче у тещи работает как часы, а на даче у родителей йопта регулярно виснет.
И метод с отвисатором мне не поможет, у роутера встроены 2Х18650 — жди пока разрядятся? :)
+
avatar
  • katran
  • 15 июля 2017, 18:29
0
ты просто купил роутер который тех поддержка поддерживает…
а не тот где прошивка раз в год и то в момент выпуска ;)
+
avatar
  • u3712
  • 14 июля 2017, 20:07
+1
У кого нет цапона, подойдёт лак для ногтей, отобранный у жены.
IMHO, плохое решение. Придется тратится на йод и парикмахерскую. Расцарапаное лицо и выдранные последние волосинки не стоят того. ))
+
avatar
  • ploop
  • 14 июля 2017, 20:16
+5
Плохое, согласен. Многим жениться ради него придётся…
+
avatar
-2
баборабы женятся

я лак у мамаши взял давно и уже не первый год он стоит и даже вот недавно конверт заклеивал, а то там эта клейкая полоска давно высохла, а клея обычного нет
+
avatar
+2
попросите «на время» лак, зеркальце и помаду — вы (возможно;) будете приятно удивлены весь ближайший месяц, в качестве бонуса…
+
avatar
  • DeGun
  • 14 июля 2017, 20:24
+1
Ну можно и так, а можно на дачу купить какой-нибудь грошовый микротик — у них есть возможность ресетить юсб порт отключением питания порта. А дальше простой скрипт по пингу «восьмёрок» и при зависании модема — ресет питания порта. Все просто, все из коробки.

Однако для многих роутеров ваше решение очень жизнеспособно. Было интересно прочитать ваш обзор. Спасибо за интересное решение.
+
avatar
  • DeGun
  • 14 июля 2017, 20:43
+1
А ещё есть мега зверёк mikrotik sxt lte там вообще: вставляешь внутрь симку, крепишь к штанге, ставишь по выше и все — антена сразу с усилением, питание по Poe, корпус герметичный. Все здорово кроме одного — чем думали латвийские разработчики выпуская это решение непонятно: работает эта крутейшая штука только в сетях лте. Там где есть сети 4г особо нужды в таком решении нет, а там где нужно бы ее поставить она работать не будет. Видно о вся Латвия покрыта 4г на 100%

До сих пор жалею что не могу поставить в деревню такое элегантное решение — у меня там до введения 4г лет 15 или 20 ждать осталось :(
+
avatar
0
у меня там до введения 4г лет 15 или 20 ждать осталось
конкретно «4» можете и вовсе не дождаться, а вот «6»-«7» с высокой вероятностью придёт:|

[с подмосковным приветом, первому WiMax в европе]
+
avatar
0
т.е.
mikrotik sxt lte
работает только с LTE?
+
avatar
  • DeGun
  • 15 июля 2017, 13:58
+1
К великому сожалению да — поддерживает только LTE
+
avatar
0
Вот я размечтался. Тогда будем обходится обычным usb модемом. Спасибо.
+
avatar
+7
нафиг.
микротики RB951 сейчас полторы две тысячи стоят, один вечер чтобы написать скрипт мониторинга соединения, туннеля и забыть навсегда то место где он стоит.

для ленивых кинетики умеют при потере пинга перегружать свисток по питанию.
+
avatar
  • Dimon_
  • 14 июля 2017, 20:35
0
RB951 сейчас полторы две тысячи стоят
Это, мягко говоря, не очень так. Либо модель без USB-порта (а зачем он нам, если нам модем нужен), либо дороже. Даже б/у на авито.
Хотя, да, микротики я тоже очень люблю. Но тут задача другая. Население, в основном, «на дачу» отправляет трудиться как раз то, что уже дома не надо. А вот, сослав на дачу что-то старое, домой покупать микротик — это да. Отличное решение. Один раз настроил и забыл, где он.
+
avatar
0
свои покупал за 1500 и 1800
комментарий скрыт

комментарий скрыт

+
avatar
0


особенность микротиков в том, что не надо торопиться, на них цены волнами с разницей чуть ли не вдвое.
оно и понятно, когда частник свой аппарат продает у него одна цена, когда контора сливает, там важнее быстро продать пару десятков.
+
avatar
  • Dimon_
  • 14 июля 2017, 23:52
0
Да, лучше.
Это hAP, он и на маркете недалеко ушёл. Но, да, условиям, в общем, отвечает.
+
avatar
  • porno
  • 14 июля 2017, 20:36
-5
+
avatar
+3
ну а чо сразу минус то? :))

кинетик примитивно делает вкл-выкл, ну а на микротике сценарии отлично пишутся. у меня помимо свистка еще надо мониторить туннели и если он завис со стороны сервиса, то хорошо бы на резервный туннель преключиться, а когда основной оживет вернуться обратно. что микротик собственно и делает :)

з.ы. в микротиках вообще не бумбум. тупо купил, полистал интернет с базовыми настройками, ну и скрипты по чужему образу и подобию склеил. ровно один вечер.

з.ы.ы. с чердака сообщают :)
+
avatar
  • porno
  • 14 июля 2017, 22:05
-6
+
avatar
0
я себя рассматриваю как абсолютного чайника, который получил доступ к легко осваиваемому функционалу за более чем вменяемую цену.
+
avatar
  • porno
  • 14 июля 2017, 22:36
-2
лучше инвестируй свой чайник в openwrt
+
avatar
+3
примерно такой же совет мачеха давала золушке)

вообще не бумбум… и скрипты по чужему образу и подобию склеил. ровно один вечер.
— вот всё, что потребовалось для решения задачи
+
avatar
0
в микротике хорош софт для виндовса, который настраивает все без красноглазия
в опенврт глюки бывают в вебморде, я отказался от него в пользу ubiquiti и скоро возьму микротик для изучения

дизайн у них хороший еще
+
avatar
0
Если нет желания заниматься технодрочерством — меньше опенсорса, меньше проблем :)
+
avatar
+1
Microtik работают у меня в 3-х конторах и дома. Настроил и забыл. Отличные аппараты.

>>уверен, что этих клоунов заблокируют на законодательном уровне
>>mikrotik не нужен

Хотелось бы услышать аргументы.
+
avatar
+2
Отвисатор роутеров
Браво еще и за терминологию ))
+
avatar
0
а то, «пингующий ребутчик-отрубатель» хоть и выражает, но малость тяжеловесно;)
+
avatar
+1
мой asus n66 перестал работать в режиме failover с dual wan — просто не видит падения первичного wan, чтобы переключиться на резервный канал (тоже кабель). Вот теперь ищу готовое устройство, которое при пропадании пинга отключало бы питание на розетке (падал бы провайдерский конвертер из оптоволокна в витуху), в этом случае асус штатно без проблем переключается на резервный канал.
А вот как сделать переключение обратно, да и какое устройство для этого поможет при том, что паяльник я в руках не держал — вот это я придумать не могу. Или надо на ifttt как-то придумать, но тоже не думается. У кого есть идеи — буду рад.
+
avatar
  • porno
  • 14 июля 2017, 20:56
0
Tomato by Shibby это «устройство» называется )
+
avatar
0
Это да, но мне так Мерлин нравится…
Если брать хардовое решение — то я пока на EdgeRouter X вырулил…
+
avatar
  • nick23
  • 14 июля 2017, 20:38
0
Не специалист и не смотрел архив и код. Вопрос: Девайс может логи вести? Послать на почту сообщение о перезагрузке(постфактум) или при загрузке? Как реагирует на временное обесточивание системы(может ли отслеживать)? Может ли работать с миникомпьютерами и серверами? ИМХО конструкции есть куда расти.
+
avatar
  • Dimon_
  • 14 июля 2017, 20:52
+2
1. Девайс может вести лог в консоль. В смысле в свой UART-порт. Который можно подключить к ком-порту компьютера. Как и чем собирать и записывать этот текстовой поток — вопрос открытый, да хоть путти, но да, может. Если надо — напишите ПМ, пришлю исходник варианта, который пишет события в консоль.
2. Сейчас этого в коде нет, но почту может оправлять по SMTP, только прописать код в скетч и адрес почтового сервера.
3. Нет специально не отслеживает, ей попросту незачем. Но без малейших проблем и безболезненно переживает любые отключения питания. Можно в логи писать факт начала работы, это будет либо плановое включение, либо перезагрузка после пропадания. После подачи питания снова начнётся отсчёт времени до контрольного пингования ресурсов, только и всего — это единственное неудобство от броска по питанию. Другой вопрос, как переживёт броски по питанию стоящая за ним подконтрольная нагрузка.
4. Ей всё равно, с чем работать. Абсолютно. Она ничего не знает о характере подконтрольной нагрузки. Ей лишь бы коммутирующий элемент справился.
+
avatar
0
> Послать на почту сообщение о перезагрузке(постфактум) или при загрузке?

crontab -e

[email protected]
[email protected]

@reboot echo "`hostname -f` was rebooted"|mail -s "`hostname -f` booted at `date`" $EMAIL — -f $FEMAIL

Можно аналогично использовать тот же zbxtg.py(или его брата zbxtg.sh) для того, что бы отправлять сообщение в телеграм, либо sendxmpp для отправки в джаббер и так далее.
+
avatar
+1
> ависают, чаще всего, именно сами usb-модемы. А программная перезагрузка роутера никак не спасает ситуацию: напряжение с usb-порта роутера при таком ребуте не снимается. Т.е. роутер честно обнаруживает зависание, честно перезагружается, но сам модем так и остаётся зависшим. Помогает только физическое обесточивание системы «роутер-модем».

Вы пишите чушь. Ребута по команде reboot(или init 6) хватает, что бы модем отвис. Более того, хватает даже rmmod cdc_acm(cdc_ether) && modprobe cdc_acm(cdc_ether). При выгрузке модуля происходит полный сброс модема и инициализация при загрузке модуля, никакие сторонние железные вотч-доги не нужны.

С вами поделиться скриптом который достаточно повесить в крон и который будет пинговать какой-нибудь заведомо отвечающий IPшник(8.8.4.4 или что-то еще), а при отсутствии ответов будет ребутить роутер или передергивать модуль? Или сам можете пяток строчек на баше написать?

И, да, правильный вариант — передергивать модуль, а не ребутить.
+
avatar
+1
правильный вариант — передергивать модуль, а не ребутить.
Расскажите это тем, кто использует Asterisk с chan_dongle.
+
avatar
  • rm_
  • 14 июля 2017, 21:05
+1
На некоторых роутерах есть возможность программно, через обращение к пинам выведенным в OS как GPIO, отключать и включать питание на USB-порту. Пример — TP-Link WR703N (да и наверное многие другие TP-Link'и, железо у них всех похожее). Таким образом перезагружал виснущий 3G-модем, работало на ура.

В данное время использую x86-роутер на базе обычного компа, там помогает удалённо отправить комп в спящий режим, с пробуждением по расписанию через 15 секунд:
rtcwake -s 15 -m mem

Тоже успешно вырубает USB-порты и включает их обратно.

Это кстати не только при зависаниях полезно, а и когда «что-то странное со скоростью, а давайте-ка попробуем перерегистрироваться в сети, может на другую БС кинет».
+
avatar
+1
Для полной реинициализации модема достаточно выгрузить и загрузить обратно модуль cdc_acm(или cdc_ether, зависит от того, что это за модем).
+
avatar
  • rm_
  • 14 июля 2017, 21:20
+1
Для полной реинициализации модема достаточно выгрузить и загрузить обратно модуль cdc_acm(или cdc_ether, зависит от того, что это за модем).
Похоже у нас в треде профессиональный теоретик. Ну-ну. «Зависло» по определению не является штатной ситуацией, и по сути может быть много самых разных видов зависаний — вы не можете гарантировать что все они абсолютно точно решаются без полного убирания питания с порта — а ещё ведь бывают 3G и 4G модемы, а последние являют внутри себя целый компьютер (роутер)…
Может быть часть зависаний ваше наивное «передёрнуть модуль» решит, но ту часть которую нет, надеюсь вы будете рады лично поехать за 20-50 КМ перезагружать.
+
avatar
0
У вас в треде человек работающий с GNU/Linux 17 лет, а вообще с *nix-системами 20 лет. То есть я начал работать еще до вашего рождения.

> а ещё ведь бывают 3G и 4G модемы

Да. 3G представляют из себя модемы в 99% случаев и поддерживаются cdc_acm, многие 4G представляют из себя роутеры с андроидом на борту(да-да, с андроид линукс, просто обычно у него нет доступа по adb или ssh) и поддерживаются cdc_ether.
Но вы не знаете что такое модули ядра Linux, не знаете что такое их выгрузка и потому написали отборную чушь.
Вы бы лучше читали что пишут люди умнее вас, может научились бы чему-то.
+
avatar
  • rm_
  • 14 июля 2017, 21:37
0
многие 4G представляют из себя роутеры с андроидом на борту(да-да, с андроид линукс, просто обычно у него нет доступа по adb или ssh)
Зато по telnet есть, причём без пароля, бугога.
по крайней мере у хуавея.

Но вы не знаете что такое модули ядра Linux, не знаете что такое их выгрузка
Да уж откуда мне, it's not like моё ФИО не раз и не два встречается в чейнджлоге того самого ядра о котором я ничего не знаю.
+
avatar
+1
тогда у вас несколько шокирующий ник)
+
avatar
  • porno
  • 14 июля 2017, 22:22
0
надеюсь вы будете рады лично поехать за 20-50 КМ перезагружать
грамотный спец такого не допустит впринципе
в норм системах никто никуда не ездит, это сразу заложено
+
avatar
  • IIIap
  • 14 июля 2017, 22:05
0
В данное время использую x86-роутер на базе обычного компа, там помогает удалённо отправить комп в спящий режим, с пробуждением по расписанию через 15 секунд:

rtcwake -s 15 -m mem

Тоже успешно вырубает USB-порты и включает их обратно.
Разве нельзя обойтись «devcon disable» / «devcon enable» для нужного устройства?
Я таким образом мышь «переподключаю». Иногда почему-то перестают работать настройки дополнительных кнопок, чтобы не перетыкать каждый раз — написал батник из 2 строк и положил на рабочий стол.
+
avatar
  • rm_
  • 14 июля 2017, 22:15
+1
Похоже вы говорите про Windows, а в моём сообщении речь шла про Linux. Там нет такой утилиты. И среди родных инструментов тоже, другого способа именно целиком отключить USB-порт (обязательно с прекращением подачи питания) я на том железе не нашёл (возможно на других чипсетах и USB-контроллерах будет иначе), пришлось вот так, сном всего компа.
+
avatar
-1
Человек врущий, что хоть что-то знающий про ядро и модули, покури еще про выгрузку uhci/ohci/ehci-модуля. Гугл тебе поможет.
+
avatar
  • rm_
  • 14 июля 2017, 23:18
+1
выгрузку uhci/ohci/ehci-модуля
Ничего не помогало, емнип всё это выгружал. Возможно чипсет такой.
+
avatar
-1
Вы бы их не смогли выгрузить не выгрузив предварительно модули которые их используют(ну или попробовать -f, но вот так точно делать не нужно). Судя по тону вашего ответа вы не знали о возможности выгрузить модули. Попробуйте. Поможет.
+
avatar
  • rm_
  • 15 июля 2017, 10:48
0
Охохо, ну давайте раз модеры не пропустили тот ответ, давайте напишем более предметно. Я разумеется в курсе возможности выгрузить модули, и то что это получается сделать не всегда, и как действовать в таких случаях.

К вам же вопрос, вы почему так уверены что выгрузка модулей модема или там выгрузка ohci/ehci/uchi абсолютно точно аппаратно полностью обесточивает USB-порты? абсолютно на всех существующих моделях чипсетов материнок и USB-контроллеров? «Судя по тону вашего ответа» вы и сейчас скажете что я вам вру или не был в курсе чего-то. Вы точно считаете что с вами можно в таких условиях продолжать цивилизованную беседу?

Дальше. Ваши 17 лет с линуксом я под сомнение ставить не стал, но вот вопрос, а сколько моделей 3G/4G моделей вы лично щупали? Хотя бы штук 5-7 будет, от всех трёх основных производителей? Соотв-но здесь же вопрос, есть ли у вас достаточные основания утверждать что выгрузка/загрузка модулей без ребута по питанию абсолютно всегда решает все варианты возникающих в реальной жизни их зависаний. (хинт: nope)

Отсюда собсна мой изначальный посыл: вы говорите всё в теории верно, так должно работать, и это всё должно помогать, но вот на практике весьма часто и того и другого оказывается недостаточно.
+
avatar
  • rm_
  • 15 июля 2017, 13:09
0
3G/4G модемов*
+
avatar
  • IIIap
  • 15 июля 2017, 00:30
0
Да, про Linux я как-то не подумал.
+
avatar
-2
В теме же не про запускалки для игр, а про реальную работу, а значит про ОС на базе ядра Linux.
+
avatar
  • alamer
  • 16 июля 2017, 08:20
0
И чем же реальная работа на линуксе отличается от работы на любой другой ос?
Объясните мне, ентерпрайзнику с 7 летним стажем?
+
avatar
+2
Столкнулся с такой же проблемой, когда дела ip-видеонаблюдение на удаленных объектах. Проводной интернет туда подвести оказалось можно, но цену залупили такую, что глаза на лоб полезли) Поэтому ставил роутер+USB 3G modem. Но я решил проблему проще. Купил таймер-розетку, и раз в сутки она принудительно отключает питание роутера на минуту с последующим включением. Цена таймера около 7$. Продаются у нас в Эпицентре и Леруа. Кстати, со старым смартфоном таких проблем нет.
+
avatar
+1
Купил бы такую штуку готовую, самому возиться лень :( Когда уже китайцы сообразят? :)
+
avatar
0
есть такие устройства готовые, пинговалка называется
стоит где-то баксов под 100
+
avatar
0
в pc-1.ru такие видел бу рублей по 500, но очень давно, хотел купить, но потом подумал — я не лазил не перезагружал ничего уже лет 8 на тот момент) так и не перезагружаю до сих пор, только софтово регик и сип-гейт по ночам, в профилактических целях
+
avatar
  • Sanja
  • 14 июля 2017, 21:24
+2
Раз пошла речь про ватчдоги, попробую спросить. Решил освоить разведение плат на примере таймера с 555. Взял за основу схему с github.com/mattbornski/Arduino-Watchdog-Circuit Она ждёт «пульса» от Ардуины на входе, и если 2 минуты не дожидается, дёргает её за Reset.

Это схема:



а вот так я её развёл:


(белая черта — на месте перемычки, спрятанной под корпусом NE555).

Товарищи гуру, подскажите — разведено правильно? Спасибо
+
avatar
  • IIIap
  • 14 июля 2017, 22:11
0
Я бы добавил мелкий электролит + керамику плёнку по питанию. Место как раз есть — немного сдвинуть вниз корпус 555.

(не гуру :) )
+
avatar
0
Плата односторонняя. Правильней было бы размещать элементы с одной стороны, а паять — с другой. 555 или электролит крайне неудобно запаивать со стороны монтажа
Также «на отрыв» выше прочность
+
avatar
0
Да ведь многие роутеры умеют это делать сами. Зухель Кинетик 4G и выше. Так же проверяют пинг, и если нет его — перезагружают модем.
+
avatar
+2
Для чайников + самый бюджетный вариант: розетка с таймером. Ставим таймер на отключение каждые 12 часов(например) и включение через 5 минут. На даче теперь обрывы связи бывают только из-за провайдера или отстутствия электричества.
+
avatar
0
Мне хватает на через день поставить :)
Все хочу намутить такой отвисатор со сбросом нагрузки, но я думал сделать сложнее — со встроенной розеткой. Теперь думаю, что проходной сбрасыватель нагрузки проще и компактнее. Спасибо за обзор +.
+
avatar
0
у меня недавно аптайм был несколько месяцев( ну как несколько… чуть не пол-года аптайм был) — не висло.
кинетик + хуавей е3320(емнип) + йота
вачдогом стали электросети — рубанули гады на часок ))))
+
avatar
0
У меня был ZTE MF823 + Zyxel Keenetic (первый самый, древний) + Билайн. Все это сбрасывалось через день. Купил новый роутер Zyxel Keenetic III с тем же модемом и тем же опсосом. Стало идеально, ни единого разрыва месяца два. Потом опять стал раз в день-два виснуть инет(( Подключил опять через таймер((
+
avatar
  • porno
  • 14 июля 2017, 22:29
-1
передача «Колхозное видение» — «О пользе и вреде костылей»
+
avatar
+6
Я может быть немного туповат и ленив. Но вся это ардуиномания не стоит того, что с ней творят. На всех роутерах есть лампа сигнальная, которая горит, когда поднят wifi. Два проводка к ней от БИПОЛЯРНОГО транзистора, который нашелся в квартире, и через него плюс на usb внешнего свистка. Можно еще кондюком с резистором в базе изобразить delay(100) как ардуинщики любят.
Вуаля — внутренний вачдог роутера ресетит и управляет внешним вистком…

И ни одна ардуина не пострадает ;)
+
avatar
  • Dimon_
  • 14 июля 2017, 23:21
+1
Не пытайтесь это реализовать на практике. Пусть так только останется в виде текста :)
Ваша система выключит модем. Но включить его будет некому — лампочка сама по себе не зажжётся никогда :)
+
avatar
0
Обоснуй. Или набери 192.168.0.1 у себя. И понаблюдай за лампочкой…
+
avatar
+1
Где набрать-то?
А если я дома использую сеть 10.7.32.0/23? Что даст от набора где-то 192.168.0.1? :-D
+
avatar
+1
Ты понял, что я имел ввиду. Набери свой адрес роутера. Какая разница? Не стоит дальше продолжать. Роутер поднимает локалку и зажигает лампочку вне зависимости от того — есть у него конект к внешним адресам или нет. Это и используй.
+
avatar
0
Набрал адрес своего роутера. А там на 80ом порту мне отвечает nginx у которого в конфиге написано

location / {
proxy_pass natribu.org
}

Увидел содержимое сайта natribu.org.
Что же делать? У моего роутера нет веб-интерфейса. Вообще. И что с твоими советами делать?
+
avatar
  • gugol
  • 18 июля 2017, 15:50
-1
Вас кто-то обидел? Чего Вы такой агрессивный?
+
avatar
0
Терпеть не могу, когда мальчики-попингуи пишут откровенную чушь.
+
avatar
  • newcss
  • 14 июля 2017, 23:23
0
Когда все просто — это не интересно. А тут черная коробочка, к которой можно прикрутить логи, веб-морду, блутус соединение, мини-майнинг ферму с кофеваркой).
+
avatar
  • newcss
  • 14 июля 2017, 23:24
+2
Отличная статья, уважаю людей с руками, способных создавать отказоустойчивые решения. Да, решение не идеальное, но главное — оно работает, выглядит красиво, и себестоимость его низка.
Позвольте вопрос, а где вы взяли такую красивую коробочку? У самого много вкусняшек разных в виде ардуин, espешек, датчиков и прочего барахла, но обычно собранное мною устройство больше похоже на бомбу — с кучей торчащих проводков в разные стороны, чем на безопасную красивую штуковину)
+
avatar
  • Dimon_
  • 14 июля 2017, 23:59
+2
а где вы взяли такую красивую коробочку?
www.brownbear.ru/goods/16789.html

Хотя, оно и в Вольтмастере есть, и в Чипе-Дипе.
+
avatar
0
А можно для тех у кого mail.ru не работает скетч выложить куда-то за бугор? Гитхаб например )
+
avatar
+2
tor browser решение
+
avatar
0
Ну нет так нет(
+
avatar
  • IIIap
  • 16 июля 2017, 01:32
+1
rgho.st/7pcwZLzyd
+
avatar
+8
Не флейма ради. Помню еще с времен 1550-х и e173-х вытье доморощенных voip-щиков по поводу того что они виснут. Так умные люди подсказывали — питайте модемы хорошо, обеспечьте хороший пиковый ток им и виснуть не будут. Я сам то не верил, но проверил, и да, 1550й и 173й с нормальным питанием работают годами не выключаясь. Может стоит начать с этого?
+
avatar
-1
Автор обзора «поднял» очень хорошую и полезную тему!-лично я, не будучи докой во многих вопросах и программирования, и Линуксе, получил(и получаю!)очень много полезной информации в данном вопросе… И, думаю, большинство тех, кто читает подобные обзоры(-включая и здравые комментарии!) мотают на ус полезную информацию.
Маленькую ложку дёгтя в эту бочку мёда вносит лишь одно...-показушная(или явная??) неграмотность изложения некоторых комментариев, порой переходящая на личности. Лично я приношу свои извинения тем, кого ненароком обидел-право, я этого абсолютно не хотел, и просто сорвался, как любой живой «организЬмЬ», который не терпит хаоса и безграмотности даже в простых мелочах… Спасибо тем, кто делится своими наработками, опытом и практикой, учитывая то, что не все оппоненты-профи, и не чурается объяснять всё простым, грамотным РУССКИМ языком.
+
avatar
+3
а нельзя разве просто взять поставить ключ транзисторный в цепь питания модема, а управление ключем зацепить на светодиод POWER роутера. Итог: роутер перезагружается, во время перезагрузки светодиод гаснет и зажигается снова, соответственно и модем выключится и включится.? всего один мосфет бы понадобился. ну или если хочется рулить именно из сети, то к любому другому светодиоду, вроде бы прошивки типа dd-wrt или open-wrt позволяют управлять диодами удаленно.
+
avatar
  • sav13
  • 15 июля 2017, 07:54
+2
+1
Автору статью + за труд, но нужно искать простые решения.
Еще лет 7 назад был DIR-320 — чудо прогресса своего времени.
У него был двухцветный светодиод, которым можно было управлять в кастомной прошивке. Садили на него ключ управления питанием всего роутера. Получался такой жесткий аппаратный ресет, восстанавливающий все )))
Ключ на диод питания тоже хорошо
+
avatar
+3
USB свистки в роутер — тупиковая ветвь эволюции. За последние 2 года на удаленные системы видеонаблюдения поставил более 50 роутеров Huawei B683. При цене на Али и ebay в районе $60 у этого роутера есть все, что нужно — вход для внешней антенны, WiFi, четыре стомегабитных порта, авто коннект после отключения питания. И он не виснет. За эти два года ни одного случая зависания роутера, пара дохлых БП и один трупик от близкого удара молнии, когда не спасла даже грозозащита у внешней антенны. И никаких отвисаторов…
+
avatar
+1
Все может изменится =) и им тоже отвисатор понадобится. С хуавеем такое уже бывало даже в ентерпрайс сегменте.
А да, в указанной моделе нет поддержки LTE? Да и цена высокая.
+
avatar
  • RaMan
  • 15 июля 2017, 10:45
0
Красава, по больше таких обзоров!!!
+
avatar
  • UWU
  • 15 июля 2017, 12:56
0
Для пинга предложенное решение будет работать. Но если нужен полноценный LAN, как пример, HTTP-файл сервер, то проще использовать младшие малинку или апельсинку. По цене выходит чуть дороже, зато полноценные 100мбит, на порядок больше RAM и готовые библиотеки есть подо всё.
+
avatar
  • Dimon_
  • 15 июля 2017, 14:00
0
Описанное устройство — это не файл-сервер. Это отвисатор, — устройство контроля.
Если же надо не пинги, а подключение как веб-клиента, как ftp-клиента или ка Telnet-клиента к контролируемым ресурсам, то это ровно одну строчку в коде поменять. Никакого усложнения.

PS: У обозреваемого девайса полноценные 100 мегабит, только зачем они ему, если он всего лишь раз N минут к серверам обращается…

Да и замена сторублёвой ардуины на любые фрукты резко увеличит стоимость девайса.
+
avatar
  • UWU
  • 15 июля 2017, 21:39
0
Никакого усложнения.
А если захочется собственный WEB сервер с HTTPS, да чтоб статистику вёл и графики пингов показывал? Ардуинка это уже не потянет.
У обозреваемого девайса полноценные 100 мегабит
100 мегабит интерфейс для ардуины не тянет скорость. Для пинга не критично, а для сервера очень даже критично.
Да и замена сторублёвой ардуины на любые фрукты резко увеличит стоимость девайса.
Ардуина сторублёвая требует совсем не дешёвый LAN модуль, а в апельсинке/малинке LAN по умолчанию есть. Так что фрукты по цене становятся сравнимы с ардуинкой с LAN. А возможности фруктов на порядок превосходят.
+
avatar
0
При строительстве «народных» сетей использовали для «дерганья» питания NetPinger. На nag. ru можно почитать. Сами разрабатывали, сами паяли. Схем было несколько. Сейчас такие устройства производятся на заводах. Ну и для знания ссылка habrahabr.ru/post/118817/
+
avatar
0
Красиво, функционально, не виснет.
Стоит только дофига.
А тут народ (и я в частности) собираем из хлама за 5 долл функциональное устройство.
+
avatar
  • alamer
  • 16 июля 2017, 18:26
0
Ой сколько у меня было решений в этих народных сетях на длинках, когда делал беспроводные мосты.
Лет 5 назад купил на все мосты Nanostation Loco M5 и с тех пор даже конфиги не правил, а все ватчдоги отправлены на свалку истории.
Может все же дело в железе?
+
avatar
0
Код лучше бы переписать.
1. Непонятно для чего процедура TickEvery1s(), если вызывается только из одного места в коде.
2. Лучше было бы использовать процедуру для пинга сервисов (Которая дублирует код для Гугл и Яндекс).
3. Вместо
while (Inactivity>0) {delay(1);}
использовать
if & return

4. Ну и последняя проверка
if (ErrorCont==8) {
    digitalWrite(POWERpin, LOW); delay(10000); digitalWrite(POWERpin, HIGH);}

лучше использовать
If (ErrorCont >= 8), т.к. нет гарантии что вы всегда будете попадать в 8ку.
+
avatar
0
Уф.
А подскажите, что делает
if & return

Я чего то такого вообще никогда не встречал.
+
avatar
0
Это я сократил)
Имел ввиду,
If (Inactivity == 0) {
// Выполняемый код
}

или
If (Inactivity > 0) {
  return;
}
// Выполняемый код

Честно говорят насчет последнего куска с ретурном не уверен, умеет ли арудиноИДЕ ретурн (не помню), но в целом это все для того что бы убрать и не использовать delay().
В идеале лучше для этих целей прерывания использовать.
+
avatar
+1
Хотим в статье описание включения софтового wathdog контролирующего саму ардуину, чтобы точно знать что ничего не зависло!!!
+
avatar
  • Dimon_
  • 16 июля 2017, 15:29
+1
Вкратце.

Нужно в ProMini влить загрузчик OptiBoot, взамен стандартному. Для начала ознакомиться вот с этим.

На практике.
1. Вливать надо программатором. Из Уны программатор мне оказался без надобности, программатор мне нужен постоянно зачем-нибудь. Поэтому я себе давно купил AVRASP. Чуть больше доллара — не те деньги. Обзор вот тут, читать надо, там много полезных ссылок. Его самого не прошивал, всё осталось так, как прислал китаец, — меня устраивает.
2. Драйвера к нему поставит Zadig. Запустить; в опциях поставить галку, чтобы отображал все девайсы; из выпадающего списка найти наш USBASP; Поставить ему драйвера WinUSB.
Для сомневающихся. Всё от начала и до конца работает на Windows 10 x64. Лично проверено.
3. Заливать загрузчик будем AVR-дудкой. Скачиваем и пользуемся. Дуду из стандартной поставки ArduinoIDE лучше не использовать, с ней что-то не так.
4. Распаиваем нашу ProMini по всем известной схеме. :) Только убедиться, что ноги программатора соответсвуют рисунку. Разные китайцы могут делать разную распайку колодки программатора, но на странице товара (или на самой плате программатора) написано точно.
5. Запускаем AVRDUDEPROG.exe, выбираем мегу328p, пробуем что-нибудь скачать из неё. Убеждаемся, что всё работает.
6. Что заливать? Заливаем только flash. Фьюзы не надо даже трогать, если нет уверенности и точных знаний. Указываем hex-файл.
Если будем лить optiboot загрузчик, то он находится в установленной ArduinoIDE в папке \hardware\arduino\avr\bootloaders\optiboot\optiboot_atmega328.hex
если нужен оригинальный загрузчик от ProMini, то он лежит \hardware\arduino\avr\bootloaders\atmega\ATmegaBOOT_168_atmega328.hex
Берём оттуда нужный hex и указываем нашей дуде. Прошиваем, верифицируем. Всё. Наша ардуина готова.
6. Допиливаем свой ArduinoIDE, чтобы он умел заливать скетчи в новые ардуины с оптибут -загрузчиками. Без этого будет Can't resync.
Идём сюда, берём файл «boards-1.6.txt» и его содержимое дописываем в конец файла \hardware\arduino\avr\boards.txt вашего IDE. Теперь в список добавятся [optiboot] платы. Выбирайте 32-ногую мегу, скорость соответствующую — и всё прошьётся.
7. В своё удовольствие используем собаку в собственных проектах.
+
avatar
  • IIIap
  • 16 июля 2017, 16:18
0
Если есть программатор на CH341A — им тоже можно. Сам так прошил nano (atmega328p).
(avrdude с поддержкой этой микры взял здесь: monitor.net.ru/forum/ch341-atmega-and-pic-info-570991.html#5280810)
+
avatar
0
Спасибо за обзор!

Выше уже разобрали множество альтернативных решений, добавлю в копилку еще одно, которым пользуюсь на практике.

Есть серьезное подозрение, что USB модемы зависают из-за проблем с питанием: жрут они прилично, характер потребления — импульсный, а USB порты в большинстве роутеров — хилые. В итоге, я взял следующее: кусок USB кабеля с разъемом-папой, USB-маму с планки на заднюю стенку компьютера, кусок провода с разъемом питания-папой, кусок провода с разъемом питания-мамой и платку на LM2596.

Разъемы питания соединяем вместе (это будет «проходной» переходник) и подключаем к 2596. У USB соединяем черный к черному, белый к белому, зеленый к зеленому. Красный с «папы» не используем", красный с «мамы» — к выходу 2596. Саму 2596 настраиваем на 5.1в

Все. Адаптер питания — в «маму» питания, «папу» питания — в роутер, «папу» USB — в роутер, модем — в «маму» USB. И месяцами — «ни одного разрыва» ©.
+
avatar
0
Помимо нестабильного питания еще причиной может быть перегрев. -Это что касается физики. Так же, проблемы могут быть и в прошивке.
Впринципе решения есть для всего +)
+
avatar
0
Немного не в тему… А есть усилитель антенны какой? Для айфона или модема? Суть: на даче инет ловит 3G, скорость так себе (2-3 мегабита, иногда больше). В 500 метрах от дачи уже ловит LTE, скоро естественно выше. Можно ли как-то улучшить условия инета на даче?
+
avatar
0
Ставьте направленную антену. Статей про них огромное количество, гугл вам в помощь.
+
avatar
+2
Автор молодец! Но я ленивый и не стал заморачиваться. Заказал вот эту фигню и накрутил ей выключать и включать роутер три раза в день! и всё!



aliexpress.com/item/MYLB-New-LCD-Digital-Control-Power-Programmable-Timer-DC-12V-16A-Time-Relay-Switch/32745865150.html
+
avatar
-1
А уж с таким подходом точно проще одну строчку в кронтабе, чем покупать какую-то фигню.

crontab -e
13 4,12,20 * * * /sbin/reboot

Собственно все. Никаких левых железок.
+
avatar
0
хорошая штукенция, как бы мне свой хуявей е5830 периодически в ребут отправлять, печаль.
+
avatar
  • IIIap
  • 17 июля 2017, 02:01
0
На гарантии, и со встроенным аккумулятором?:
+
avatar
0
c аккумом, без гарантиии
+
avatar
  • IIIap
  • 17 июля 2017, 22:22
0
Что же мешает тогда использовать описанное устройство?
+
avatar
0
то что работает от встроенного аккума при пропадании питания на юсб, при передергивании аккукма сам не стартует, или все таки есть способ, подскажите как замутить?
+
avatar
  • IIIap
  • 21 июля 2017, 01:30
0
или все таки есть способ, подскажите как замутить?
Я думал что достаточно аккум отключать… А раз не стартует — даже не знаю что предложить. На 4pda нет ничего по этому вопросу?
+
avatar
0
чтото коменты уважаемого lolipop не вижу неужели ему не интересен сей девайс
+
avatar
+1
а у меня всё работает, на программном уровне, на аппаратном вотчдог не требуется :)
+
avatar
  • PASAf
  • 16 июля 2017, 21:27
0
Меня немного ввело в заблуждение название статьи. Подумал, что в «отвисатор» встроен 3g/4g модем… эх, размечтался…
+
avatar
0
Реализация интересная, но можно было бы сделать компактнее и с меньшим количеством проводов и компонентов. Зачем там Ethernet? Можно взять ESP 8266 модуль и одну релюшку, коробочка получилась бы раза в 3 меньше и без всяких огонечков ))
+
avatar
  • Dimon_
  • 17 июля 2017, 11:04
+1
Мне нужен контроль интернета в сетке, а не вай-фая. Не во всех сетях есть wi-fi, даже если их обслуживает бытовой роутер. Предлагаемый девайс универсален.

PS. А вашу коробочку пришлось бы ещё привязывать к каждой конкретной беспроводной сети.
+
avatar
  • kiv69
  • 17 июля 2017, 20:41
0
Зачётный обзор, проплюсовал.
+
avatar
  • troff
  • 15 августа 2017, 13:08
+1
сберег кучу денег! )))
ebay.com/itm/191527413765
+
avatar
  • Thinker
  • 18 октября 2019, 21:02
0
Очень заинтересовал проект, но я в ардуино совсем не разбираюсь, сделал всё так, как описано, но не работает, помогите пожалуйста
+
avatar
  • Dimon_
  • 18 октября 2019, 21:47
0
Какого рода помощь вам нужна?

Поймите правильно. Сейчас ваш вопрос выглядит примерно так, как СМСка доктору на мобильник: «Доктор, у меня болит. Вылечите меня».

Чем и как вам помочь по переписке? Вам тут обязательно помогут (и я в том числе), с ответами на вопросы, на которые можно ответить письменно, а не телепатически.
Для начала расскажите, какая у вас ардуина? На каком чипе сетевая плата? Какая версия IDE? Библиотеки стандартные или из приложенного архива? Скетч скомпилироовался? Влился без ошибок? Напряжение питания сетевой карты и ардуины проверяли?
+
avatar
  • Thinker
  • 18 октября 2019, 22:18
0
Конечно понимаю как выглядит мой вопрос, иногда говорят, не получилось, ну извини. Вижу, что помочь вы готовы, заранее благодарю!

Изначально взял про мини, но через IDE она никак прошиваться не хотела, после компиляции я брал HEX и прошивал через AVR, после нескольких неудачных попыток, что бы было проще и быстрее прошивать я заказал ардуино нано, через IDE она нормально прошивается.
Чип сетевой карты W5500
Версия IDE 1.8.9
Библиотеки из архива, при чем если заменить в библиотеке Ethernet только файлы из архива, то скетч не компилируется, если полностью удалить папку Ethernet и вставить из архива, то компилируется, но в скетче в приложенных библиотеках Ethernet.h не выделен красным шрифтом
Напряжение не проверял, питаюсь от блока питания 5v
Проблема в том, что когда проходит 15мин и должна сработать реле, на ардуине загорается второй светодиод и дальше ничего не происходит.
В скетче я поменял только byte ip[ ] = {192,168,0,1}; прописал ip роутера
+
avatar
  • Dimon_
  • 18 октября 2019, 23:07
0
Так.
1. Библиотеку надо брать точно из архива. Её надо положить вместо стандартной. Идёте туда, где установлено IDE. Допустим, это «C:\Program Files\Arduino» и там тоже должна быть папка libraries. Вот то, что внутри libraries из архива надо положить в libraries того, где установлено ide. После этого запускать ide.

2. В byte ip[] = {} прописывается не адрес роутера, а адрес, который будет иметь сам отвисатор в вашей сетке. То есть для вашего случая должно быть что-то типа byte ip[] = {192,168,0,112}; при условии что сейчас этот адрес не занят в вашей сети. Проверте пингом (Win+R, cmd, в коммандной строке пишете ping 192.168.0.112, смотрите ответы. От этого адреса ответов не должно приходить)

Если после этих двух пунктов проблема не решилась, начинаем разбираться с «зажиганием второго светодиода»

3. В скетче нет ничего, что бы зажигало второй светодиод. Второй светодиод — это судя по всему, 13-й пин, как я понимаю? Он не используется в скетче. Попробуйте следующее. Уменьшите InactivityPeriod раз в десять, до 60. Влейте скетч. Светодиод станет зажигаться через минуту?
+
avatar
  • Thinker
  • 19 октября 2019, 20:23
0
Доброго времени суток. Сделал все так, как вы описали, второй светодиод это 13-й пин, после уменьшения времени зажигается через минуту
+
avatar
  • Dimon_
  • 19 октября 2019, 21:56
0
Так. Ещё раз. Чтобы я понял. Ip адресзаменили? Он был пустым? С бибдиотекой из архива скомпилировалось и залилось без ошибок?
+
avatar
  • Thinker
  • 19 октября 2019, 23:36
0
Ip заменил, прописал 192.168.1.112, он не пинговался через командную строку. Про библиотеку я писал, в стандартной библиотеке Ethernet файлов больше, чем в архиве, если заменить только файлы из архива, то выдаёт ошибку, если полностью удалить стандартную папку Ethernet и закинуть её из архиа то компилируется без ошибок, но в скетче в самом верху, где прописаны библиотеки 3 выделены красным, а библиотека Ethernet не выделена, просто черная надпись
+
avatar
  • Dimon_
  • 20 октября 2019, 02:08
0
Ок. Идём по третьему пути. Забыли про библиотеку Ethernet из прилагаемого архива. Оставили только родную которая была в поставке. Т.е. всё вернули в первоначальное положение.

1. Идёте вот сюда: github.com/Wiznet/WIZ_Ethernet_Library
2. Там же ниже в абзаце «Software» есть инструкция, что делать. В нашем случае всё, что для IDE 1.5.x
3. Скачиваете zip и распаковываете файлы по указанному там пути
4. правите файл \libraries\Ethernet\utility\w5100.h согласно инструкции, под чип W5500

Расскажите о результатах.
+
avatar
  • Thinker
  • 20 октября 2019, 11:06
0
сделал как описано, теперь в скетче подгруженные библиотеки все выделены красным, но компилируется с ошибкой ((
+
avatar
  • Thinker
  • 20 октября 2019, 12:00
0
Ошибку даёт как раз по библиотеке Ethernet. Может свяжемся с вами через какой нибудь мессенджер? Или может у вас есть возможность удалённо посмотреть в чём проблема? Через TeamViewer например
+
avatar
  • Dimon_
  • 20 октября 2019, 14:14
0
Чтобы не собирать неизвестное количество неизвестных глюков, откатываемся на более ранний чистый релиз.

1. Идёте сюда: www.arduino.cc/en/Main/OldSoftwareReleases
2. Качаете что-нибудь типа 1.6.12. или 1.6.5. Причём, не инсталлятор, а голый zip
3. Распаковываете в отдельную папку. Или на другой компьютер.
4. В его папку с распакованным из зипа IDE идёте в \libraries. И туда распаковываете всё, что в этом обзоре в архиве. Прямо удаляя и заменяя одноимённые библиотеки, если они есть.
5. В той же папке, куда вы распаковали старую версию, запускаете arduino.exe
6. Открываете проект из архива в обзоре. Ну, время можете уменьшить до 60 секунд. И ip должен быть не 192.168.1.112, а 192.168.0.112. У вас же роутер имеет адрес 192.168.0.1, верно? Я ничего не путаю? Убедитесь пингом.
7. Пробуете скомпилировать. И влить.
8. Рассказываете.
+
avatar
  • Thinker
  • 20 октября 2019, 15:41
0
связался первый раз с ардуиной… 8)

Сейчас попробую
+
avatar
  • Thinker
  • 20 октября 2019, 19:38
0
скачал версию 1.6.12.
У роутера адрес 192.168.0.1 Пингом проверил адрес 192.168.0.112 он почему то пишет ответ от 192.168.0.105: Заданный узел не доступен.
С архивами вроде сделал всё как описано, скетч скомпилировался и влился без ошибок, но 13-й пин всё равно загорается через минуту и ничего больше не происходит.
+
avatar
  • Thinker
  • 20 октября 2019, 20:44
0
всё таки мне кажется что то с библиотекой.
Вот здесь github.com/Wiznet/WIZ_Ethernet_Library
я правильно понял, что указан уже готовый пример, как должно быть? у меня небыло строчки #include <avr/pgmspace.h> я её дописал и так же как в примере раскомментировал строчки, после чего сохранил и заменил в библиотеке.
При этих действиях компилируется и заливается без ошибок. Время уменьшил до 60 секунд, я правильно понял, в таком случае через минуту если отвисатор не допинговался, то он должен сразу перезагрузить питание?
+
avatar
  • Dimon_
  • 20 октября 2019, 21:20
0
Ну у меня в библиотеке тоже не было этого инклюда. Но это не так важно.
Да, вы правильно поняли, если через InactivityPeriod секунд он не допингуется, то он должен передёрнуть нагрузку.

Вероятность глюков с библиотекой я бы посчитал сведённой к минимуму. Остаётся думать на аппаратные прогблемы.

Давайте разбираться, где и что конкретно у вас в скетче подвисает.

Допишите в скетч следующее.

В секцию void setup(), в конце, перед закрывающей фигурной скобкой, после строчки MsTimer2::start(); следующее:
Serial.begin(9600); Serial.println("Starting log");


А в основном цикле следующее логирование:
Перед строчкой ICMPEchoReply GoogleechoReply = ping(IPAddress (8,8,8,8), 2);
допишите
Serial.println("Trying to ping Google");

а сразу после этой строчки ICMPEchoReply GoogleechoReply = ping(IPAddress (8,8,8,8), 2);
допишите
Serial.println("Google pinged");


Аналогично со строчкой ICMPEchoReply YandexechoReply = ping(IPAddress (77,88,8,8), 2);
До неё напишите
Serial.println("Trying to ping Yandex");

а после неё
Serial.println("Yandex pinged");


Загружайте скетч. Открывайте Монитор порта в самой IDE. В нижнем угу окна монитора только проверьте, что он настроен на скорость 9600. Смотрите лог. Будет понятно, на каком этапе оно виснет. Должно быть по четыре попытки пингануть каждый ресурс.
+
avatar
  • Thinker
  • 24 октября 2019, 19:38
0
Доброго времени суток.
Появилось немного свободного времени, всё сделал по вашему описанию. Я правильно понял, что смотреть лог в мониторе порта можно не собирав всё, а просто на самой ардуине?
Открыв монитор порта пишет
Starting log
а ровно через минуту на ардуине загорается 13-й пин и появляется надпись
Trying to ping Google
И всё, больше ничего не происходит
+
avatar
  • Dimon_
  • 25 октября 2019, 22:38
0
Повторил всю вашу проблему у себя на столе.

Получил ровно ту же самую картину, что и у вас. Знаете как? Я не подключал к ардуине сетевую карту! :)

Потом распаял плату, попробовал с непатченой библиотекой. Та же самая картина.
Это значит, что описываемая вами картина может быть как от софтовых, так и от аппаратных проблем.

Потом в IDE 1.6.12 в библиотеки положил то, что из архива. И всё заработало.

Вот что.
Держите HEXы, это полный результат компиляции. Компилировал под Nano. Влить сможете в ардуину? Только правильно, чтобы загрузчик не убить. Попробуйте. Залитую ардуину так же подключайте в IDE. Ничего не компилируя и не заливая открывайте монитор порта и снова смотрите, что оно пишет. Рассказывайте о результатах.
+
avatar
  • Thinker
  • 26 октября 2019, 18:24
0
Может это прозвучит глупо, но всё же, а как правильно влить HEX, чтобы загрузчик не убить?:) Я ведь с ардуино не сталкивался раньше и всё это делаю впервые, благодарю за понимание:)
+
avatar
  • Thinker
  • 26 октября 2019, 20:00
0
У меня есть программатор USBAsp, взял его, подключил к NANO через ISP и через программу AVRDUDEPROG прошил файл AliveRouterTest.ino.with_bootloader.hex.
Подключил только NANO без реле и сетевых плат, в мониторе порта следующее:
Starting log
Trying to ping Google
Google pinged
Trying to ping Google
Google pinged
Trying to ping Google
Google pinged
Trying to ping Google
Google pinged
Trying to ping Yandex
Yandex pinged
Trying to ping Yandex
Yandex pinged
Trying to ping Yandex
Yandex pinged
Trying to ping Yandex
Yandex pinged
Я так понял, что всё таки видимо я накосячил в библиотеках?
+
avatar
  • Dimon_
  • 26 октября 2019, 23:12
0
Поздравляю. Это правильный результат!
Подождите до завтра, я скомпилирую ещё один HEX, но уже с интервалом в 10 минут и без вывода лога в порт, просто молчаливо делающего свою работу.

Да, это однозначно косяк с библиотеками. Но раз HEX влился, то и неважно. Мне не трудно…
+
avatar
  • Dimon_
  • 27 октября 2019, 19:10
0
Держите готовый боевой HEX. Ничего не выводит в порт. Молча пингует ресурсы каждые 10 минут.
+
avatar
  • Thinker
  • 27 октября 2019, 19:55
0
Большое благодарю:)
Завтра попробую залить и проверить.
Всё таки мне интересно, что я и где сделал неправильно. Получается у меня сейчас и исходника рабочего нет.
Ещё заметил, когда залил ваш готовый HEX и открыл монитор порта, сначала у меня была только одна попытка пинга Гугла, пошевелив usb провод у меня сразу стало дальше пинговаться, видимо ещё может быть проблема в этом проводе, попробую его заменить, или шить через isp.
И ещё вопросик, с выводом в порт вся сборка работать не должна? Я интереса ради всё подключил и не работало
+
avatar
  • Dimon_
  • 27 октября 2019, 20:10
0
пошевелив usb провод у меня сразу стало дальше
Usb-провод никак не влияет на обмен между сетевой картой и ардуиной. Он может влиять только на получение лога между ардуиной и вашим IDE.
с выводом в порт вся сборка работать не должна?
Почему не должна? В тестовой спборке только внесены изменения из этого поста. Т.е. дополнительно добавлен текстовой выод в консоль и уменьшен интервал ожидания между проверками с десяти до одной минуты. Во всём остальном всё одинаково.
Я интереса ради всё подключил и не работало
Тут уж вам никто не поможет :) Ищите ошибки в подключениях по схеме. Там путаться не в чем: семь проводов до сетевой карты и три до реле :)
Мерьте мультиметром уровень на 8-м пине. Он должен быть в высоком состоянии всё время, а на время после неудачных попыток пингования должен падать в ноль на 10 секунд.
+
avatar
  • Thinker
  • 28 октября 2019, 05:18
0
Именно лог и не шел в IDE пока я не пошевелил USB провод.
Если включить только ардуину, то по светодиодам видно, что она работает, подключаю всё остальное к ардуине и не работает.
И вот опять двадцать пять… Ровно такая же история и сейчас. В подключении уж точно нет ошибок, там мне кажется вообще не реально ошибиться:)
Замерил 8й пин, он всегда с напряжением, прошло 10 минут, загорелся 13й пин и с 8го пина напряжение не пропало.
Может дело в самой сетевой карте? Наш китайский друг отправил мне не такую сетевую, как у вас, мне пришла широкая, синего цвета, но на чипе 5500
+
avatar
  • Dimon_
  • 28 октября 2019, 19:41
0
И вот опять двадцать пять… Ровно такая же история и сейчас.
Я уже не могу вас понять.
Вливайте HEX, который с логированием и минутным интервалом. Он у вас работал. Вы же мне скопипастили результат сюда.

Он ничем не отличается от описываемого в обзоре, кроме как уменьшенным интервалом опроса. Он работает? Уровень на 8-й ноге после серии пингов, которые вы видите в логе, падает в ноль?
+
avatar
  • Thinker
  • 29 октября 2019, 04:07
0
В том то и дело, если к ардуине ничего не цеплять, то работает, только я подключаю реле и сетевую карту, работать перестает
+
avatar
  • Dimon_
  • 29 октября 2019, 08:00
0
1. А если подключить только реле?
2. А если только сетевую карту?
3. А если сетевую карту только по питанию?
+
avatar
  • Thinker
  • 29 октября 2019, 19:22
0
в общем подключил только реле, работает, добавил сетевую карту, не работает, убрал от ардуино только один провод MISO c 12го пина, так работает
+
avatar
  • Thinker
  • 24 января 2020, 12:02
0
Доброго времени суток!
Заказал сетевую карту как в этом описании и всё заработало. Есть ещё вопросик, а возможно сделать так, что бы этот отвисатор мог работать со всеми типами роутеров и как эти через usb и обычные роутеры с симками и без симок
+
avatar
  • Dimon_
  • 24 января 2020, 14:48
0
Если ваш роутер питается от USB и обесточивается при отключении от USB, то всё очень просто: делаете коротенький хвостик-удлинитель USB-папа — USB-мама. Ваш роутер включаете через него. И с помощью контактов реле из схемы в обзоре разрываете красный провод в этом удлинителе.
+
avatar
  • Thinker
  • 24 января 2020, 15:13
0
В том то и дело, что у каждого роутера своё питание от блока.
1й вариант это USB модем (свисток) работает со свичём. На нём отвисатор работает безупречно.
2й вариант это 4х портовый роутер с сим картой, питание от своего блока питания 12в, на нём отвисатор уже не срабатывает
+
avatar
  • Dimon_
  • 25 января 2020, 11:17
0
питание от своего блока питания 12в,
Не понимаю вас. Если у чего-либо есть свой блок питания, то с помощью контактов реле можно это питание разрывать.
+
avatar
  • Thinker
  • 25 января 2020, 15:02
0
Так я прекрасно понимаю, что при помощи реле можно разрывать любой контакт. Вопрос в другом, этот отвисатор универсален и работает со всеми модемами и роутерами? Просто у меня на USB модеме он работает отлично, а на 3g/4g роутере уже не работает, вот и решил это уточнить
+
avatar
  • Dimon_
  • 25 января 2020, 15:19
0
Я не понимаю, что значит «не работает» в аашем случае.
Давайте ещё раз. У коробочки есть сетевой интерыейс и реле. Если она по сетке не может пингануть Яндекс и Гугль, он щёлкпет релюшкой. Она ничего не знает про роутеры, коммутаторы, модемы, симки и прочую нагрузку. Универсальней некуда. Ей попросту всё равно. Нет пинга по сетке — размыкаются контакты реле. Откуда берётся интернет для её порта и что она там размыкает релюшкой, девайсу пофик. Хоть всю квартиру.
Что значит «не работает»? Реле не щёлкпет?
+
avatar
  • Thinker
  • 25 января 2020, 15:48
0
Наоборот, всегда срабатывает релюшкой, будто бы нет интернета, а он есть. У меня сейчас под рукой нет того роутера, на следующей неделе возьму его и снова проверю
+
avatar
  • Dimon_
  • 25 января 2020, 15:58
0
То есть он не может пропинговать?
Так надо разбираться с IP адресацией. У данного девайся же должен быть адрес, как и у любого сетеаого устройства, иначе не бывает. И в исходнике это есть. Возможно, у того роутера адресация в другом диапазоне. Проверьте и, соответственно, поправьтк в исходнике.
+
avatar
  • Thinker
  • 25 января 2020, 16:18
0
Да, хорошо, на следующей неделе всё перепроверю, благодарю за помощь ))
+
avatar
0
Я извиняюсь что так поздно… Но эта штука меня убивает )
Arduino IDE 1.6.12. Все файлы из архива скинул в папку libraries. Что просто с заменой, что удаляя родную библиотеку ethernet.
Уж глупости ради скачал все с нуля, букву в букву все скопировал:
Starting log
Trying to ping Google
И тишина.
Индикаторы на шилде все весело горят, моргают и прочее, но ip как я понимаю железяка не получает, ибо dhcp сервер сообщает что offline, да и пинги до устройства не идут.
Я уже видел Ваш bin, но мне жуть как не хватает функционала… как минимум не тот ip забит, не тот ip пингует )
+
avatar
  • Dimon_
  • 10 августа 2020, 22:04
-1
но ip как я понимаю железяка не получает, ибо dhcp сервер сообщает что offline,
Она не должна получать IP по DHCP.
IP надо выбирать самостоятельно и вписывать в исходнике. В строчке
byte ip[] = {192,168,1,112}; // ip-адрес устройста.
+
avatar
0
Можно и по dhcp. У библиотеки ethernet есть класс dhcp. Короче вообще не поднимается tcp ip стек с этими версиями w5100. Я нашёл рабочую библу как под v1.x, так и по v2.0. Завтра добью, скину тут. А то этот icmpping ни у кого кроме 2 человек не работает)
+
avatar
  • Dimon_
  • 10 августа 2020, 22:36
-1
с этими версиями w5100
Э-э-э. В статье, вообще-то, говорится про W5500 :)
+
avatar
0
Э-э-э… Вообще-то класс для 5500 построен на классе для 5100. Открой в utilites кажется 5500.cpp и удивись, но класс ссылается на 5100.
По делу и у 5200 такая же проблема. Все эти сетевые контроллеры — низкоуровневые. Грубо говоря — отправил-принял и все равно что. А вот что отправить и как и куда принять — все реализовывается уже программно.
+
avatar
0
Если вдруг кто-то окажется тут с такой же проблемой как и я.
Библа работает нормально с любой 1.х версией библиотеки ethernet из комплекта ArduinoIDE (со второй проблемы с сокетами): www.youtube.com/watch?v=-SM7HBJ49pk
Компилировал на 1.8.13 (1.8.8, 1.6.5).
У меня дома роутер на чердаке дома (так получилось что быстро прокинуть в коммутационный шкаф лапшу не выходило, оставил до лучших времен, ну а нет ни чего постоянее чем то что делается на время). В общем роутер (dsl модем выступает в роли bridge) уже год временами подвисает наглухо, даже пинги не принимает, да чего уж там, линк роняет. Ходить ногами до автомата надоело. Решил автоматизировать тем что было в наличии.
Физу разрываю реле через нормальнозамкнутый контакт. Т.е. включена ли ардуина, выключена в нормальном положении реле замкнуто и на роутере есть напряжение. Как только в моем случае 6 раз в течнии 60 секунд роутре не ответил на пинг с временм ожидания 100мс и одной попыткой, то на 10 секунд отключается питание, включается и 60 секунд ватчдог ждет загрузки роутера. После начинает пинговать. В моем случае хватило бы и EthernetStatus библиотеки Ethernet, но решено было сделать сразу более универсальным ватчдогом. На работе второй соберу. а то pfsense может загнаться когда у него multi_wan и оба основных шлюза down. Он тогда перестает вообще маршрутизировать весь трафик, даже по DHCP не выдает ip и пинги на себя не принимает.

Дополнительная информация
#include <SPI.h>
#include <Ethernet.h>
#include <MsTimer2.h>
#include «Ping.h»

// введите ниже MAC-адрес и IP-адрес вашего контроллера;
// IP-адрес будет зависеть от вашей локальной сети:
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {192,168,0,206}; // IP устройства
byte ds[] = {192,168,0,1}; // DNS
byte gw[] = {192,168,0,1}; // GW

//IPAddress TARGET = (192,168,0,1); // Какой ip пинговать
IPAddress TARGET = (172,26,0,1); // Какой ip пинговать

int TIME_PING = 0;

#define NC_RELAY HIGH//Уровень ноги чтобы роутер был включен
#define NO_RELAY LOW //Уровень ноги чтобы роутер был выключен

const int INTERVAL = 10; // Интервал через какое время пинговать в сек. В ping.h поменять для локлаьных ресурсов, для интернет ресурсов стоит увеличить PING_TIMEOUT:
// const uint8_t PING_TRY = 1;
// const uint32_t PING_TIMEOUT = 100;
int INTERVAL_COUNT = 0;
const int MAX_FAIL = 6; // сколько пингов считать неуспешными. При пинге через каждые 10 секунд получается 1 минуту не отвечает роутер.
int FAIL = 0; // счётчик фейлов

const int WAIT_POWER_OFF = 10; //Сколько роутер держать выключенным в сек
const int WAIT_POWER_BOOT = 60; //Сколько ждать загрузки роутера в сек

// Инициализируем Ethernet нашим MAC, IP и шлюзом по умолчанию.
// инициализируем библиотеку Ethernet Server, указывая нужный порт
// (по умолчанию порт для HTTP – это «80»):
EthernetServer server(80);

// задаем контакт и начальное состояние для реле:
String RELAY1STATE = «NC»;
const int RELAY = 5;

// задаем переменные для клиента:
char linebuf[80];
int charcount=0;

//Счетчик до пинга. Вызывается каждую секунду по прерыванию
void pingMyAdressTimer() {
INTERVAL_COUNT++;
}

//Непосредственно вызов пинга
void pingMyAdress() {
TIME_PING = ping(TARGET);
}

//Процедура включения нагрузки и таймера ожидания загрузки
void rebootRouter1() {
digitalWrite(RELAY, NC_RELAY);
RELAY1STATE = «NC»;
MsTimer2::stop();
MsTimer2::set(WAIT_POWER_BOOT*1000, rebootRouter2);
MsTimer2::start();
}

//Обратно запускаем таймер пинга
void rebootRouter2() {
MsTimer2::stop();
MsTimer2::set(1000, pingMyAdressTimer);
MsTimer2::start();
}

void setup() {
// подготавливаем реле-модуль:
pinMode(RELAY, OUTPUT);
digitalWrite(RELAY, NC_RELAY);

// открываем последовательную коммуникацию на скорости 9600 бод:
Serial.begin(9600);

// запускаем Ethernet-коммуникацию и сервер:
Ethernet.begin(mac, ip, ds, gw);
server.begin();
Serial.print(«server is at „); // “сервер на „
Serial.println(Ethernet.localIP());
//первично пингуем чтобы в loop войти с данными. первый раз пинг может быть очень большим
pingMyAdress();
//Теперь запускаем счетчик пингования по прерыванию
MsTimer2::set(1000, pingMyAdressTimer);
MsTimer2::start();
}

// Показываем веб-страницу с кнопкой «вкл/выкл» для реле:
void dashboardPage(EthernetClient &client) {
client.println(“<!DOCTYPE HTML>»);
client.print("<meta http-equiv=\«Refresh\» content=\"");
client.print(INTERVAL);
client.println("\" />");

if (TIME_PING < 0) {
client.println("

Router is offline.

");
client.print("
Now count fail check:");
client.print(FAIL);
client.print("
");
}
else {
client.print("

ping time: ");
client.print(TIME_PING);
client.println("

");
}
// генерируем кнопку для управления реле:
client.println("

Relay 1 — State: " + RELAY1STATE + "

");
// если реле выключено, показываем кнопку «вкл»:
if(RELAY1STATE == «NC»){
client.println("NO");
}
// если реле включено, показываем кнопку «выкл»:
else if(RELAY1STATE == «NO»){
client.println("NC");
}
client.println("");
}

void loop() {
//Если счетчик достиг нужного количества, то пингуем роутер
if (INTERVAL_COUNT >= INTERVAL) {
INTERVAL_COUNT = 0;
pingMyAdress();
//Если TIME_PING < 0, то увеличиваем счетчик фейлов на единицу
if (TIME_PING < 0) FAIL++;
//Если счетчик достиг нужного количества, то тушим роутер и запускаем таймер выключенного положения ройтера
if (FAIL == MAX_FAIL) {
FAIL = 0;
Serial.println(«Начинаем процедуру перезапуска»);
digitalWrite(RELAY, NO_RELAY);
RELAY1STATE = «NO»;
MsTimer2::stop();
MsTimer2::set(WAIT_POWER_OFF*1000, rebootRouter1);
MsTimer2::start();
}
}

// прослушиваем входящих клиентов:
EthernetClient client = server.available();
if (client) {
Serial.println(«new client»); // «новый клиент»
memset(linebuf,0,sizeof(linebuf));
charcount=0;
// HTTP-запрос заканчивается пустой строкой:
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
// считываем HTTP-запрос, символ за символом:
linebuf[charcount]=c;
if (charcount<sizeof(linebuf)-1) charcount++;
// если вы дошли до конца строки (т.е. если получили
// символ новой строки), это значит,
// что HTTP-запрос завершен, и вы можете отправить ответ:
if (c == '\n' && currentLineIsBlank) {
dashboardPage(client);
break;
}
if (c == '\n') {
if (strstr(linebuf,«GET /relay1NC») > 0){
digitalWrite(RELAY, NC_RELAY);
RELAY1STATE = «NC»;
}
else if (strstr(linebuf,«GET /relay1NO») > 0){
digitalWrite(RELAY, NO_RELAY);
RELAY1STATE = «NO»;
}
// если получили символ новой строки…
currentLineIsBlank = true;
memset(linebuf,0,sizeof(linebuf));
charcount=0;
}
else if (c != '\r') {
// если получили какой-то другой символ…
currentLineIsBlank = false;
}
}
}
// даем веб-браузеру время на получение данных:
delay(1);
// закрываем соединение:
client.stop();
Serial.println(«client disonnected»); // «Клиент отключен»
}
}
+
avatar
0
Ребята кто может помочь с бедой разобраться? Стоит за 80 м от меня роутер Tp-link Ac750 за прошивку ни чего не знаю так как я чайник в этом, к нему подключен usb модем мегафон, иногда модем начинает мигать и интернет пропадает пока не выключишь его из розетки, но так как квартира чужая выключать его не всегда предоставляется возможность… что делать? Если есть желающие помочь мой скайп Kach422