Включите мой комп!

    Задача включить или ребутнуть удаленный компьютер у человека связанного с разработкой возникает достаточно часто. Чтобы не напрягать коллег и домашних давайте переложим эти обязанности на ардуинку, тем более что на Ebay подешевели Ethernet шилды на W5100.


    Подключать будем по следующей схеме:

    Таким образом при включенной ардуинке функциональность передней панели компьютера полностью сохраняется, а кнопка включения работает в любой ситуации.
    Кроме ардуинки и Ethernet шилда, вам понадобится релюшка, оптопары и кусочек макетки другая мелочевка. Приблизительная схема устройства включения приведена ниже. Можно точно обойтись и без реле и наверняка без оптопар но мне хотелось полностью изолировать материнскую плату от устройства включения.


    Осталось прошить ардуинку, собрать бутерброд из трех плат и подключить его между материнкой и передней панелью корпуса. Не ошибитесь с полярностью при подключении светодиодов. После включения ардуинка мигает три раза всеми светодиодами и зажигает контрольный светодиод, если удалось запустить веб сервер. Всё. Интернет выключатель готов к работе.


    Скрипт для ардуинки можно взять тут. Обратите внимание, что если материнская плата начнет мигать светодиодом состояния это будет неверно истолковано скриптом. Чтобы использовать спящий режим вместо выключения надо дополнить скрипт анализатором такого поведения. В этом случае будет правильнее подключить светодиод состояния через оптопару на один из АЦП пинов.

    Update:

    Выводы:
    • Устройство поучилось компактное, что позволяет разместить его внутри корпуса ПК.
    • И недорогое, с самодельной аруинкой можно уложиться в $20.
    • Есть обратная связь по индикаторам питания и винта. Во многом психологическое преимущество но не надо томиться ожиданием — сразу видно что комп стартовал и винт крутится.
    • Устройство расширяемое. При чем как в аппаратном так и в программном плане. При минимальных затратах можно еще добавить релюх и датчиков. Расширить функционал работой через СМС и пр.
    • Может быть рекомендовано в качестве старта при изучении МК. Устройство объединяет несколько технологий, работать с ним интересно, оно достаточно простое и кроме того полезное. Можно использовать для мониторинга домашнего компа, например.

    Комментарии 83

      +14
      WOL на ардуине?
        0
        Ага, и WOL, и ROL (reset), и PMOL (power monitor), и даже SOL (sleep).
        +10
        А WOL уже немодно? Настраивается в 2 нажатия, а компьютер включается одно командой, если немного усложнить задачу то можно включать даже smsкой
          +10
          Как насчет перегрузить зависший?
            –15
            Это что надо сделать с компом, чтобы он на ssh не реагировал? kernel panic? Тогда там и перезагрузка не особо поможет, надо понять в чем проблема и сразу устранить.
              +48
              Это что надо сделать с компом, чтобы он на ssh не реагировал?

              Например, можно поставить windows
                –7
                Только не говорите, что в нем нет способа удаленно выключить или перезагрузить компьютер, как вы тогда собрались работать с ним удаленно? Опять же тяжело довести систему до BSoD, а если довели, то простая перезагрузка — это не выход.

                Скажу яснее, в ситуации, когда компьютер, с которым вы работаете удаленно, не поддается управлению, такая система — костыль, а не решение проблемы. Для решения скорее всего потребуется непосредственное вмешательство.
                  +4
                  Совсем не обязательно. Ситуации разные бывают. Например, запустил случайно процесс, который все сожрал. Сказал про себя «я больше так не буду» и перезагрузил комп.
                  Достаточно большая часть BSoD лечится банальной перезагрузкой.
                    +23
                    Ага, удаленно редактировать настройки фаервола — к дороге.
                      –6
                      Много раз запускал такие процессы, ни разу дело не доходило до перезагрузки. Обычно минут за пять (в крайнем случае) удается снять такой процесс.

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

                      P.S. На своих компах уже очень давно не видел BSoD и kernel panic. Что я делаю не так? У соседа частенько ноут выпадает в BSoD, но тот никак не решает эту проблему и каждый раз тратит нервы.
                        0
                        После перезагрузки вы сможете удаленно пофиксить проблему. Логично же
                          0
                          Кстати при BSoD и kernel panic компьютер должен перезагружаться сам (даже если это выключено, то включается довольно легко). Проблема все-таки несколько надумана.
                            +1
                            он может зависнуть. С линуксом всякое бывает
                              +2
                              Зачем Вы здесь доказываете, что эта разработка не нужна? В большинстве случаев возможно и не нужна, но ситуации разные бывают, и кому-то может пригодится. К тому же это может быть просто интересно, кто любит ковыряться с Ардуинками. Ну и не все же сисадмины, умеющие хорошо настроить свой домашний сервер.
                        0
                        Был такой случай что на сервере (Debian) закончилось свободное место на диске и из-за этого не стартовали некоторые службы, в частности — удалённо не работал ssh, пришлось ехать, разбирать сервер чтобы воткнуть туда видеокарту, чтобы подцепить монитор и зайти по ssh.
                          0
                          Но согласитесь, что простая перезагрузка в ситуации, когда отвалился даже ssh, совсем не поможет. Тут уже нужен полноценный KVM.
                            0
                            Согласен, просто вы спрашивали что такого нужно сделать чтобы ssh отвалился — я вам ответил.
                      • НЛО прилетело и опубликовало эту надпись здесь
                          0
                          Потратить всю оперативную память. В лучшем случае латентость станет такой, что пользователь логина просто не дождется. В худшем случае OOM шлепнет sshd
                        0
                        Осталось собрать такой же девайс чтобы перезагружать зависший первый. И, скажем, первый научить контролировать от зависания второй. Наращивать резервные системы пока хватает терпения…
                        Если без шуток — решение крайне узкоспециализированное — например, если завис роутер, раздающий интернет на компьютер, перезагрузиться уже не получится. Разумно было бы подключить к ардуинке старый сименс 35 серии или что-то столь же доступное и легкосопрягаемое, и научить её перезагружать роутер и/или компьютер в зависимости от присланного по смс кода. Косвенно соприкасался с таким решением в больших светодиодных уличных табло. Потому что тонка и слабоощутима (мной, по крайней мере) грань между надежностью WOL / вероятностью зависания windows / вероятностью зависания ардуино / вероятностью зависания любого звена на пути от интернета до конечного ПК. Не решает этот девайс проблем надёжности. Хотя прикольный, да.
                          +5
                          IMHO вероятностью зависания МК с запущенным WDT можно пренебречь.
                            0
                            А ведь так и делают зачастую, есть супервизор, следящий за супервизорами, которые уже следят за рабочими процессами, перегружая их в случае краха. Получается практически неубиваемая система.

                            Плохо, что для мобильных решений применяется старенький телефон, а не какое-нибудь специальное дополнение к Arduino.
                            –1
                            Настолько зависший, что не реагирует ни что? Большая редкость.

                            А так — написать примитивную прогу-сервер для компа. Присоединился кто-то на, скажем, порт 45626 — ребут, на 45627 — выключение. Несколько строк кода, без всякого железа, покрывает 99.9% случаев.
                              0
                              Поправка: написать примитивную никогда не зависающую прогу.
                              Да и с портами идея так себе. Скан портов извне (а они ведь открыты иначе смысл?) и вы совершенно непредсказуемо вводите злоумышленника в ступор улетая в ребут :)
                                0
                                Нужно очень постараться, чтобы написать такую прогу, так чтобы она зависала чаще, чем система :)
                                Ну ок, добавить еще совершение собственно действия по магическому пакету, который злоумышленник не знает. Это уже детали. Я к тому, что отдельную железяку для удаленного ребута/выключения делать — как из пушки по воробьям.
                                • НЛО прилетело и опубликовало эту надпись здесь
                                0
                                Стандартная практика — использовать watchdog timer device kernel.org/doc/Documentation/watchdog/

                                В гугле нашел вот этот документ который будет весьма интересен людям с прямыми руками www.linuxfocus.org/English/July2002/article239.shtml
                                  0
                                  Тоже не решение. То есть, полезно, но все равно риск остается. (мы просто сами делали карточки с аппаратным ватчдогом для пущей надежности).

                                  Систему может перекорячить так, что, скажем, на SSH уже не зайдешь (например, потому что он не может с умирающего диска считать что-то, или памяти совсем никак нет или еще что), но при этом небольшой модуль ядра или демон вполне себе успешно в цикле пишет в порт ватчдога, что все ОК, еще 5 мин не ребутить.

                                  Когда драйвера писал — тоже часто систему в какое-то шредингеровское состояние погружал, когда оно вроде и мертвая, но даже на пинги отвечать может.
                                    0
                                    > или памяти совсем никак нет или еще что, но при этом небольшой модуль ядра или демон вполне себе успешно в цикле пишет в порт ватчдога.

                                    Чтобы этого не произошло дополнительно используют software watchdog linux.die.net/man/8/watchdog У нас на серверах soft watchdog проверяет что: сетка видна; обходит /proc/PID (проверяют что mmap_sem не занят на слишком долго); используют CPU affinity проверить что scheduler может перебросить процесс на любой процессор. Этого должно более чем хватить на случаи с бесконечно sleeping процессами. Дополнительно можно добавить любые другие проверки (зависит от вашего определения зависшей системы).

                                    Чтобы уж совсем запутать в Linux существует еще один watchdog — NMI watchdog, который проверят чтобы никто не залочил timer прерывания на отдельно взятом процессоре.
                                      0
                                      Так это все _повышает_ надежность, оставляя при этом риски. Может SSH сервер заглючить (мало ли какие там баги). Предусмотреть заранее мы можем ограниченное количество проблем, а свершиться может бесконечное их множество. При этом внешний аппаратный ребут — это «семь бед — один ответ».
                                0
                                Windows 8 смотрит на Вас с недоумением…
                                +7
                                а еще есть всякие Intel AMT (VPro), прямо в материнской плате, HP iLO и прочие аналогичные разработки…
                                UPD и это не считая китайских по IP управляемых розеток или же по IP управляемых UPS'ов.
                                  0
                                  Покажете же мне эту китайскую, ip управляемую розетку, сам ищу.
                                    +1
                                    www.ixbt.com/power/ups/eg-pms-lan.shtml например, они и в рознице есть.
                                    При чем это статья полутора годовой давности, думаю сейчас есть и дешевле от noname брендов.
                                      +2
                                      Купил себе такой. Софт очень кривой и глючный, иногда вебсервер перестаёт откликаться и приходится перезагружать сам девайс.
                                      Не рекомендую.
                                      0
                                      Управляемый по IP упс явно найдётся быстрее, а заодно и защитит машину и периферию от проблем местных энергетиков
                                    –1
                                    У такого подхода есть только один плюс. Можно дополнительно вывести serial в сеть, но сейчас он практически везде выключен, да и ssh на arduino я еще не видел, а телнетом светить в сеть как-то не охота.
                                    Короче, IMHO, либо полноценный KVM либо ssh+WOL.
                                      0
                                      Что-то я не понял из схемы, как оно будет компьютер включать. Может быть контакты реле должны быть включены параллельно Power SW?
                                      Еще интересна конечная стоимость решения.
                                        0
                                        Спасибо, исправил. Примерно $30.
                                        +1
                                        Для разработчика, особенно если его область не привязана к узкоспециализированному железу, удобнее всего работать под виртуальной машиной поднятой, например, под Xen'ом.
                                          0
                                          Да, без привязки к железу (любому) несколько проще. Позавидовал.
                                          +3
                                          И о приметах.
                                          Настройка файервола — к походу
                                            +1
                                            Было выше уже ) Но все равно смешно )
                                            0
                                            Задача включить или ребутнуть удаленный компьютер у человека связанного с разработкой возникает достаточно часто.

                                            Что только люди не сделают, только бы не пользоваться виртуалками и Vargant!
                                              0
                                              А кто включит компьютер, на котором крутится виртуалка?
                                                0
                                                его никто не выключит, если не давать рута разработчикам
                                              0
                                              IMHO для наколенного изготовления интереснее вариант
                                              на базе роутера под OpenWrt + платы от USB клавиатуры
                                              habrahabr.ru/post/151982/
                                              или же нечто такое
                                              habrahabr.ru/post/159745/

                                              А вообще, если поискать всегда можно найти нечто выпускаемое серийно,
                                              netping.ru/product_item.aspx?id=_nping_power_2PWR-v2 (или аналоги, их там несколько)
                                              например умеет и сам мониторить пинг нескольких адресов и дергать ресет/питание при условиях
                                                0
                                                Поддерживаю и от себя добавлю. А слабо взять серверную мамку с IPMI? у супермикро весьма недорогие они, и кстати IMPI существуют в виде подключаемый модулей. До кучи можно подцепить комп через ethernet управляемый power switch и спокойно паверсайклить его невзирая на бсоды.
                                                В общем вижу костыль Слепого Пью в версии 2.1. Система спартан-300, блин.
                                                  –1
                                                  P.S.: другое дело что эдак можно чем угодно через Ethernet управлять, что собственно в примерах к Ethernet shield описано, но какбы на новинку сборка не тянет. Штатная плата, с штатным шилдом и скриптом на 30 строчек. Давайте чтоли теперь апдейт батниками хвастаться или server-alive чекерами на powershell. Ужасно :(
                                                    0
                                                    Я бы тоже взял метеринку с IPMI, но иногда «тазик» или обвязка собирается из того что нашлось под рукой, вроде старой материнки, обычных wi-fi мостов на базе перепрошитого dlink ap2100 и прочего старого железа, за которым надо следить, автоматически.

                                                      0
                                                      Ну так костыль он и в африке костыль. Собрано из подручных средств кое-как прилеплено и кое-как работает.
                                                      В принципе и на ардуино можно сделать аналог IPMI но выглядеть будет сильно страшно и выйдет дороже оригинала. Ибо надо вкорячить шилд контроля питания, обработку сигнала с монитора и передачу сигнала с удаленной клавиатуры (для управления питанием просто пилот с управлением по ethernet стоит на секретном порту открытом для секретного IP :) ). В общем цена модуля IPMI в «интернетах» не настолько меня пугает чтобы варганить костыли из ардуинок.
                                                      Для интересующихся: примерчик IPMI модуля
                                                      Есть дешевле, есть дороже, а можно и мать сменить если сильно надо.
                                                      А собранный костылик лучше приспособить управлять вытяжкой на кухне. Ей КВМ не нужен да и управление в одну кнопку, или вытяжку в подвале на даче сделать управляемой по ethernet.
                                                      Я как человек испорченный КВМками представленный образец органически не приемлю, к сожалению. Извиняюсь за излияния негатива.
                                                    0
                                                    Добавил выводы.
                                                    Вам не кажется некорректным предлагать поискать серийное устройство в хабах «Электроника для начинающих, DIY или Сделай Сам, Arduino»?
                                                      0
                                                      Я уже извинился за негатив :)
                                                      кстати действительно. Если бы в примере было управление не компьютером, а иным, более приземленным, устройством (например вентилятор, дверь гаража, электромагнитный замок), то были бы отсечены не только мои коварные мысли про IPMI, но и софтовые аналоги и было бы гораздо больше позитива.
                                                    0
                                                    Через интернет я так понимаю это не работает?
                                                      0
                                                      Там веб сервер. Работа в интернет его главная фишка ). Но домашний роутер придется настраивать.
                                                        0
                                                        Я имею ввиду что из интернета к этой железке не пробиться если дома нереальный IP, только по локальной сети.
                                                          0
                                                          Говорят, проблему с динамическим IP можно решить. Если такой вариант не подходит то можно попробовать переписать скрипт в виде клиента.
                                                            +1
                                                            Динамический IP ещё ладно, а вот если провайдер раздает интернет через свой NAT то «труба». Поэтому нужен сервер в интернете к которому коннектится сам девайс из дома.
                                                      0
                                                      Идея хороша, но больше для совсем бюджетных вещей. Для коммерческого продакшена использую это:
                                                        +2
                                                        что же это? не томите :)
                                                          0
                                                          «Нешмагла» добавить картинку. Как не старался.
                                                          www.apc.com/resource/include/techspec_index.cfm?base_sku=AP8959EU3
                                                            0
                                                            Мониторит все розетки по току и нагрузке, ведет логи, ругается в сислог или почту, можно выключить или включить любую розетку, есть расписание задержек включения розеток при появлении питания на входе, и много всего еще.
                                                            Да дорого, но в ЦОДах где никого «из наших» нет — незаменима.
                                                              0
                                                              Не поленился посмотреть, «дорого» это $650 на амазоне :)
                                                                0
                                                                Жаль что для дома-для семьи такой штуки нет :(
                                                                точнее есть, но это убьесся электрику по всему дому перепрокладывать :)
                                                          0
                                                          На модуле ENC28J60 за $5 то же самое получается в два раза дешевле.
                                                            0
                                                            Не «в два раза» а «на 5 баксов». На мой взгляд эта экономия не оправданна, ENC28J60 сильно беднее по функционалу.
                                                              0
                                                              Вы озвучили цену в $30, модуль ENC28J60 + arduino mini pro получается $11. Функционал беднее, но для поставленной задачи хватит с лихвой, а за неиспользуемый переплачивать не люблю.
                                                                0
                                                                Да я как бы и не настаиваю. :)
                                                                $30 это с китайской ардуинкой, с оригинальной будет $40 с самодельной $20.
                                                                Кстати, код из статьи не будет работать с ENC28J60 там библиотека совсем другая.

                                                            0
                                                            Мало ли, мей би кому пригодится мой опыт:
                                                            Когда мне нужно было решить такую пробелму для несколькоих компьютеров сразу, я купил гсм-розетку gsmrozetka.ru, у компов в биосе поставил настройку, чтобы они включались всегда когда есть питание AC Power Lost = alway и написал простенький скрипт который посылал на гсм-пилот смски и таким образом всегда мог включить/выключить или перезагрузить компьютер…
                                                              0
                                                              Есть неудобство, если отвалилось сетевое соединение (неправильное правило в firewall вставили например :) ) то коротким нажатием кнопки питания можно корректно потушить комп.
                                                              0
                                                              Еще бы мониторить как-то зависание роутера. Ведь Интернет к Ардуино, надо подавать, наверное, через него.
                                                                +1
                                                                где то читал историю, как решили проблему с постоянно зависающим серваком…
                                                                поставили напротив него комп с линуксом, тот постоянно пингует сервак и как только пинг пропадает — выезжает лоток сидирома и жмет кнопку ресет…
                                                                  0
                                                                  Фидошная классика — когда комп надо выключить, запускается печать на матричный принтер, каретка едет и выдергивает привязанный к ней сетевой шнурок.
                                                                  А из реальных фидошных железяк, вотчдог из пары деталюшек к выводам спикера и программа, постоянно спикер дергающая. Комп подвисает, программа не дергает железяку, железяка «жмет» кнопку резета.
                                                                  0
                                                                  главное чтоб Ардуинка не зависала, а то придется еще одну вешать, чтоб она перегружала ту что перегружает комп…
                                                                    0
                                                                    Про встроенный во все микроконтроллеры watchdog уже говорили выше.
                                                                      0
                                                                      да точно — спасибо за ссылку
                                                                    0
                                                                    Вымогателям припоя — electronix.ru/forum/index.php?showtopic=44276
                                                                    Или, как вариант, megadevices.com.ua/?p=86 (для Украины) Кстати, на Хабре был обзор их девайса
                                                                    С точностью до детали не сравнивал, но на первый взгляд у них схемотехническое решение одинаково, разница только в прошивке (что не мудрено)
                                                                    По стоимости могу сказать только по-второму варианту, т.к. заказывал пару таких девайсов — 200грн\шт
                                                                    Как-то так
                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                        0
                                                                        У меня поднимается из спящего режима за пару секунд. Гаснет также — около 10-ти секунд. Сетевые нормально работают.
                                                                        Железо, асус сабертус, 8150, 16гб памяти, интел 330-я серии ссд. Виндовс7.
                                                                        А вот упсы, нормально, не тянут, тоже два — mge 600, apc 500), надо менять,.cпасает «серва», немного.
                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                            0
                                                                            Абсолютно — не жалко. Мне важно скорость включения и работы.
                                                                            ТСП соединения? У меня такого нет, чтобы надо было поддерживать…
                                                                            Хард стоит, но не пользуюсь им вообще.
                                                                        0
                                                                        Хорошо, что Гугл код перед смертью перетащил всё на гитхаб.
                                                                        Ссылка на скрипт:
                                                                        github.com/lds133/turnonmypc
                                                                          0
                                                                          Статья была написана более 7 лет назад но я периодически получаю письма с вопросами, значит тема до сих пор востребована. Оригинальное устройство давно разобрано и заменено версией под ESP8266: «Включите мой комп!» Версия 2.0

                                                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                          Самое читаемое