"Слаботочка" для домашней сети

2014-12-23

Блок питания NLP65-7629-52

Домашняя сеть - штука популярная. И, знаете ли, растёт. Одного роутера стало не хватать - отрос свитч, а ещё оборудование провайдера, резервный канал и всё такое.

Короче говоря, через некоторое время количество “блочков питания” в пилоте перестало радовать глаз, да и порядка не добавляло.

Стратегическое решение о борьбе с проводами было принято давно, но реализовать получилось только недавно.

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

Проведение инспекции источников выявило следующие требования

  • 1 канал на 12 вольт
  • 2 канала на 9 вольт
  • 2 канала на 5 вольт, при этом второй - это сервер на Cubieboard 2, но об этом позднее

Стандартный ATX БП смело выдает нам нужные 12 и 5 вольт, а 9 можно получить дедовским способом - КРЕНкой из 9 вольт, коих в магазинах запчастей в изобилии.

Для начала делаем вот такой вот “кросс”.

Кросс для трех напряжений

Получаем 3 канала, при этом два выхода по 9 вольт не соединены друг с другом.

Ставим ATX и запитываем хотя бы одно устройство. Убеждаемся, что всё работает и решительно убираем “родные” БП в кладовку.

Это программа-минимум. Я уже давно борюсь с шумом от вентиляторов (довольно успешно, хотя это влетает в копейку), так что иметь включенный 24x7, хотя и тихий, вентилятор как-то накаляет.

Изучение рынка дало свои плоды в виде БП NLP65-7629-52, способного держать нагрузку аж в 65 ватт. Он на самой первой картинке к посту. На самом деле есть гораздо более “правильный” вариант от MeanWell, но чтобы их купить, нужно было изрядно побегать, да и ценник на них взлетел в связи с последними событиями изрядно.

Ну и заодно, сохраняя стилистику делаем для него вот такой корпус “из 90ых” от советской техники.

Винтажный корпус для блока питания

Конструкция работает уже несколько недель и весьма стабильно. А чтобы КРЕНки не грелись - прилепим к ним модные радиаторы.

Радиаторы для КРЕН

Правда есть некоторые “но”, как же без них.

  • Импульсные блоки питания чувствительны к нагрузке и при её нехватке либо не включаются, либо, в моем случае, выдают вольт 7 вместо 12. Если отдельно отключить, допустим, роутер - модем провайдера начинает бешено мигать из-за нехватки питания. Правда, это решается заменой на тот самый MeanWell - там такой проблемы нет.
  • Вторая неприятность - подключенный CubieBoard 2 c двумя хардами (USB и SATA) пробуждая жесткий диск уходил “в кому” и щелкал хардами, как безумный. Опять-таки MeanWell скорее всего спас бы ситуацию. Скорее всего где-то падение напряжения, но было проще вернуть микросерверу его родной БП, заодно и воткнуть в UPS.
  • Ну и третье - теперь к замене роутера на “более навороченный” нужно подходить более ответственно :) - еще и смотреть на питание. Правда китайские друзья делают отличные step-up конвертеры 5в-9в, так что можно извернуться.

Перейдем к “софтовой” части. Поскольку конструкция “перегружается” одной кнопкой - модем провайдера начинает “отдавать” интернет как-то поздновато, ибо требуется время на соединение. В результате роутер работает, модем работает, но они не имеют никакого понятия друг о друге.

Поступим просто - сделаем скрипт для CubieBoard, который каждые 15 минут будет пинговать сервер провайдера, а в случае недоступности - перегружать роутер программно.

Первый скрипт - проверка ping:

#!/bin/sh HOST=your_provider.ru ping -c 10 $HOST >/dev/null if [ $? != 0 ] then echo "$HOST is not responding" echo "Doing router reboot..." exec /home/user/bin/reboot_router.sh 192.168.1.1 23 root password >/dev/null else echo "$HOST is responding, exiting..." fi

Тут всё просто. Если “пинг” на your_provider.ru проходит, спим дальше. Если нет - ребутим роутер. Вот так:

#!/usr/bin/expect set timeout 20 set ip [lindex $argv 0] set port [lindex $argv 1] set user [lindex $argv 2] set password [lindex $argv 3] spawn telnet $ip $port expect "DD-WRT login:" send "${user}\r" expect -nocase "Password:" send "${password}\r" expect "root@DD-WRT:~#" send "reboot\r" expect eof sleep 5

Скрипт по проверке интернета ставим в cron на каждые 15 минут, и теперь после какого-либо сбоя  роутер будет сам себя перегружать при отсутствии интернета. Конечно же, во время длительных сбоев это лучше приостановить, иначе домашний “вайфай” будет пропадать каждые 15 минут, но для единичных случаев (свет мигнул, электричество вырубили) - вполне подходит.


В массы

В трубу