Router restartu Raspberry Pi: 3 kroki
Router restartu Raspberry Pi: 3 kroki
Anonim
Router restartu Raspberry Pi
Router restartu Raspberry Pi
Router restartu Raspberry Pi
Router restartu Raspberry Pi

Czy zauważyłeś, że nie masz już połączenia z internetem?

Czy frustrujące jest wstawanie rano i ponowne uruchamianie routera, aby odzyskać Internet?

Cóż, zdarzało mi się to częściej, niż mi na tym zależy.

Na początku tego roku wyjechałem z miasta na 3 tygodnie i pierwszego dnia mój router odłączył się od internetu! Oznaczało to, że nie miałem połączenia z rzeczami w moim domu, które okresowo „sprawdzam”, np. termostat Nest, kamery Arlo… Ponieważ nie było mnie w domu, nie mogłem ponownie uruchomić routera. Naprawdę nie chciałem zawracać sobie głowy sąsiadem, aby ominął mój system bezpieczeństwa, a następnie znalazł mój router i zrestartował go. Myślałem też o zadzwonieniu do firmy energetycznej i kazałem odciąć prąd do mojego domu na około 5 minut - moje S. O. nie zatwierdził..:(Kiedy wróciłem, zacząłem szukać dobrego rozwiązania, ale nie mogłem znaleźć niczego wystarczająco wyczerpującego dla tego, czego potrzebowałem. Na początku po prostu kupiłem listwę zasilającą z cyfrowym zegarem i ustawiłem ją tak, aby wyłączała router o 2:00 nad ranem na 5 minut. Niestety kilka poranków nie miałem internetu - przegląd logów routera z tamtych dni wskazywał, że internet "rozłączył się" około 4:00 rano i mój router nie połączy się dopóki go nie zrestartuję.

Mając dodatkowe Raspberry Pi i trochę umiejętności pytona, postanowiłem sprawdzić, jak może pomóc w moim dylemacie i wymyśliłem to rozwiązanie.

Przetestowałem i zainstalowałem i do tej pory tak dobrze!

Zasadniczo Raspberry Pi sprawdza połączenie internetowe co 2 minuty za pomocą polecenia ping do 2 różnych stron internetowych. Dopóki przynajmniej jeden z nich odpowie, wszyscy jesteśmy dobrzy. Jeśli nie ma zwróconych „pingów”, Pi wyłącza zasilanie wewnętrznego koncentratora USB, co z kolei powoduje, że przekaźnik mocy Iot wyłącza router. Po 2 minutach Pi włącza wewnętrzny koncentrator USB, powodując włączenie przekaźnika zasilania Iot na routerze. Następnie czeka 4 minuty przed wznowieniem 2-minutowego sprawdzania połączenia internetowego.

Musiałem też wziąć pod uwagę, że może w mojej okolicy jest awaria i internet będzie przez jakiś czas nieczynny - rzadko, ale zdarza się (przynajmniej w mojej okolicy…) i nie chciałem, aby router restartował się co 6 do 8 minut, więc wstawiłem flagę, która w tym przypadku opóźniłaby kolejny restart o 1 godzinę.

Kieszonkowe dzieci

Lista wyposażenia:

  1. Przekaźnik mocy Iot dla Raspberry Pi (na zdjęciu powyżej)
  2. Złącze śrubowe USB 2.0 A (jeśli zamierzasz zrobić własny kabel USB -> Listwa zasilająca, również na zdjęciu powyżej)
  3. Kabel z 2 lub więcej przewodami przewodzącymi lub stary / dodatkowy kabel USB, którego możesz użyć. Użyłem starego stereofonicznego kabla z wtykiem gramofonowym i odciąłem wtyczki.
  4. Raspberry Pi Model 3+ (możesz użyć Modelu 4 i sterować poszczególnymi portami - ja używam Modelu 3)

Mogę otrzymać niewielką prowizję za moje poparcie, rekomendację, referencje i/lub linki do jakichkolwiek produktów wymienionych powyżej.

Krok 1: Zbuduj i podłącz sprzęt

Zbuduj i podłącz sprzęt
Zbuduj i podłącz sprzęt

Zbudowałem kabel do podłączenia Pi do przekaźnika mocy.

Użyłem listwy zacisków śrubowych USB z 2 przewodami podłączonymi do gniazd + i gnd. Powinieneś być w stanie je zobaczyć na złączu. Zobacz zdjęcie z czerwonymi (+) i białymi (-) strzałkami do gniazd.

Drugi koniec podłączyłem do przekaźnika mocy. Zielona część z boku przekaźnika mocy po prostu wyciąga się, a następnie można włożyć przewody do gniazd i przykręcić, a następnie mocno dokręcić. Zobacz zdjęcie z czerwonymi (+) i białymi (-) strzałkami na przewodach.

Uwaga: jeśli używasz istniejącego kabla USB, zwykle będziesz mieć 4 przewody na drugim końcu - czerwony to (+5v), a czarny to (-) uziemienie. Użyjesz tylko tych 2 do przekaźnika mocy.

Do testów podłączyłem lampę stołową do jednego z gniazd oznaczonych 'normalnie wyłączone'. Jest to kontrolowane przez stan zasilania USB. Podłączyłem Raspberry Pi do gniazdka „zawsze włączony”, podłączyłem go i włączyłem w następnym kroku.

Krok 2: Zainstaluj oprogramowanie

Skonfiguruj Pi:

Istnieje kilka stron internetowych, które w razie potrzeby poprowadzą Cię przez konfigurację RPi po raz pierwszy.

Haker życia

Organizacja Raspberry Pi

Ustawiłem mój „bezgłowy” i używam VNC, aby się z nim połączyć. Powyższe linki pokazują, jak to zrobić.

Konfiguracja oprogramowania:

  1. Zainstaluj uhubctl (patrz https://github.com/mvp/uhubctl), który będzie używany do wyłączania i włączania koncentratora USB.
  2. Pobierz i zainstaluj oprogramowanie, które napisałem z mojej strony GitHub: RPi Router Reboot software.
  3. Skonfiguruj i zarejestruj internet-monitor.service, jeśli chcesz uruchomić to jako usługę podczas uruchamiania Raspberry Pi.

Krok 3: Testowanie i szczegóły działania

Główny program Pythona, rpi-internet-monitor.py, można uruchomić z 1 lub 2 parametrami do celów debugowania i testowania.

Otwórz sesję terminala w folderze, w którym umieściłeś kod i wykonaj następujące polecenie:

:~/Dokumenty/RebootRouter $ python3 rpi-internet-monitor.py -debug -test

Uwaga - spowoduje to wydrukowanie informacji debugowania oraz wyłączenie i włączenie lampy, ponieważ przetestuje brak połączenia z Internetem. Możesz po prostu użyć -debug i zobaczyć wiadomości. Nie możesz po prostu użyć -test, musi to być drugi parametr po -debugu.

Możesz zmienić STAŁYCH w górnej części programu na dowolne wartości. Pierwszy zestaw działa z zestawem parametrów -test, drugi zestaw będzie używany we wszystkich innych przypadkach.

Skonfigurowałem usługę do uruchamiania tego w czasie rozruchu, więc zawsze działa na moim Raspberry Pi.

Otwórz internet-monitor.service i edytuj wiersze ExecStart i WorkingDirectory z pełnymi ścieżkami do kodu Pythona. Zapisz plik.

Skopiuj plik do folderu systemd/system:

:~/Dokumenty/RebootRouter $ sudo cp internet-monitor.service /etc/systemd/system/internet-monitor.service

Sprawdź, czy usługa uruchamia się bez błędów:

:~/Dokumenty/RebootRouter $ sudo systemctl start internet-monitor.service

Włącz usługę, aby uruchamiała się w czasie rozruchu:

:~/Dokumenty/RebootRouter $ sudo systemctl enable internet-monitor.service

Jeśli wszystko pójdzie dobrze, możesz teraz wszystko złożyć i wyłączyć przekaźnik mocy Iot, odłączyć lampę, podłączyć router i ponownie włączyć przekaźnik mocy. Twój router powinien się zrestartować i teraz monitoruje Internet.

Zrobiłem jeszcze jeden test po podłączeniu wszystkiego - odłączyłem kabel internetowy przy ścianie i czekałem; na pewno router wyłączył się, a następnie włączył. Pozostało włączone i po około 10 minutach ponownie podłączyłem kabel do ściany i miałem internet - do tej pory działał dobrze….:)