Skocz do zawartości

Programowy reset maliny wifi problem?


nebraska

Pomocna odpowiedź

Witam

W temacie pythona/ Linux raczkuję.

Mam kamerę na raspberry pi zero 2W 

Problem jest taki że po utracie zasilania lub wifi nie zawsze malina mi wraca i nie mam z nią kontaktu przez serwer vnc i kamera nie działa jakby funkcje życiowe wifi przestały działać.

W momencie powrotu zasilania Kiedy malina włącza się i ruter to zero kontaktu z maliną. Jak ruter już się zaloguje i zacznie rozsyłać sieć muszę ręcznie zresetować malinę, żeby na nowo połączyła się z wi-fi. 

 

Czy można zrobić jakiś reset programowy żeby sprawdzał jeśli brak wifi to resetuje radio wifi w raspberry i dodatkowo zrób reset maliny? 

Jakiś sprawdzony tutorial gdzie mógłbym poczytać o tym?

Edytowano przez nebraska
Link do komentarza
Share on other sites

@nebraska najprościej będzie chyba napisać skrypt (sh), który będzie sprawdzał, czy RPi jest połączone z konkretną siecią WiFi. Jeśli nie będzie to nastąpi reset całej maliny. Taki skrypt może być uruchamiany przez cron np. co 5 minut. Alternatywnie możesz też sprawdzać czy ogólnie jest połączenie z Internetem (niekoniecznie z konkretną siecią). Można też sprawdzać i resetować tylko część systemu, ale najprościej zrobić brutalny reset całości 😉

Link do komentarza
Share on other sites

1 godzinę temu, Treker napisał:

@nebraska najprościej będzie chyba napisać skrypt (sh), który będzie sprawdzał, czy RPi jest połączone z konkretną siecią WiFi. Jeśli nie będzie to nastąpi reset całej maliny. Taki skrypt może być uruchamiany przez cron np. co 5 minut. Alternatywnie możesz też sprawdzać czy ogólnie jest połączenie z Internetem (niekoniecznie z konkretną siecią). Można też sprawdzać i resetować tylko część systemu, ale najprościej zrobić brutalny reset całości 😉

O takie coś mi chodzi tylko nie wiem jak się za to zabrać.

Link do komentarza
Share on other sites

(edytowany)

dodałem coś takiego podalem adres IP bramy rutera

#!/bin/bash
#=================================================================
# Script Variables Settings
clear
wlan='wlan0'
gateway='192.168.0.1'
alias ifup='/sbin/ifup'
alias ifdown='/sbin/ifdown'
alias ifconfig='/sbin/ifconfig'
#=================================================================
echo "  _____    _   _    _                            "
echo " |  __ \  (_) | |  | |                           "
echo " | |__) |  _  | |__| |   ___    _ __ ___     ___ "
echo " |  ___/  | | |  __  |  / _ \  | |_  \_ \   / _ \ "
echo " | |      | | | |  | | | (_) | | | | | | | |  __/"
echo " |_|      |_| |_|  |_|  \___/  |_| |_| |_|  \___|"
echo " "
echo "    S M A R T   H E A T I N G   C O N T R O L "
echo "*************************************************************************"
echo "* PiHome is Raspberry Pi based Central Heating Control systems. It runs *"
echo "* from web interface and it comes with ABSOLUTELY NO WARRANTY, to the   *"
echo "* extent permitted by applicable law. I take no responsibility for any  *"
echo "* loss or damage to you or your property.                               *"
echo "* DO NOT MAKE ANY CHANGES TO YOUR HEATING SYSTEM UNTIL UNLESS YOU KNOW  *"
echo "* WHAT YOU ARE DOING                                                    *"
echo "*************************************************************************"
echo
echo "                                                           Have Fun - PiHome" 
date
echo " - Auto Reconnect Wi-Fi Status for $wlan Script Started ";
echo

# Only send two pings, sending output to /dev/null as we don't want to fill logs on our sd card. 
# If you want to force ping from your wlan0 you can connect next line and uncomment second line 
ping -c2 ${gateway} > /dev/null # ping to gateway from Wi-Fi or from Ethernet
# ping -I ${wlan} -c2 ${gateway} > /dev/null # only ping through Wi-Fi 

# If the return code from ping ($?) is not 0 (meaning there was an error)
if [ $? != 0 ]
then
    # Restart the wireless interface
    ifdown --force wlan0 reboot
    ifup wlan0
	sleep 5
	ifup wlan0
fi
ping -I ${wlan} -c2 ${gateway} > /dev/null
date
echo 
echo " - Auto Reconnect Wi-Fi Status for $wlan Script Ended ";

Czy mógłby ktoś podpowiedzieć. czy ten skrypt zadziała? czy w linii ifdown --force wlan0 reboot  wykona się reset wifi i restart maliny?

w cron dodałem. 

*/5 * * * * /usr/bin/sudo -H /usr/local/bin/wifistart.sh >> /dev/null 2>&1

Nie mam jak tego sprawdzić malinę mam zamontowaną w takim miejscu że muszę sporo zdemontować. Jeśli wyłącze wlan0? to rozumeim jak coś jest nie tak to stracę połączenie z maliną? chyba  że jest jakiś inny sposób?

Tutaj uruchomiłem żeby sprawdzić. Czyli cron działa ok?

 cron.service - Regular background program processing daemon
     Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-05-18 10:34:38 CEST; 24h ago
       Docs: man:cron(8)
   Main PID: 356 (cron)
      Tasks: 1 (limit: 717)
        CPU: 2.164s
     CGroup: /system.slice/cron.service
             └─356 /usr/sbin/cron -f

maj 19 10:50:01 raspberrypi sudo[3602]:       pi : PWD=/home/pi ; USER=root ; COMMAND=>
maj 19 10:50:01 raspberrypi sudo[3602]: pam_unix(sudo:session): session opened for use>
maj 19 10:50:04 raspberrypi sudo[3602]: pam_unix(sudo:session): session closed for use>
maj 19 10:50:04 raspberrypi CRON[3599]: pam_unix(cron:session): session closed for use>
maj 19 10:55:01 raspberrypi CRON[3617]: pam_unix(cron:session): session opened for use>
maj 19 10:55:01 raspberrypi CRON[3618]: (pi) CMD (/usr/bin/sudo -H /usr/local/bin/wifi>
maj 19 10:55:01 raspberrypi sudo[3619]:       pi : PWD=/home/pi ; USER=root ; COMMAND=>
maj 19 10:55:01 raspberrypi sudo[3619]: pam_unix(sudo:session): session opened for use>
maj 19 10:55:03 raspberrypi sudo[3619]: pam_unix(sudo:session): session closed for use>
maj 19 10:55:03 raspberrypi CRON[3617]: pam_unix(cron:session): session closed for use>
~

 

Edytowano przez nebraska
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

1 godzinę temu, nebraska napisał:

w cron dodałem. 

Jeśli to crontab roota to sudo niepotrzebne. Jeśli użytkownika to ma być z roota.

1 godzinę temu, nebraska napisał:

czy w linii ifdown --force wlan0 reboot  wykona się reset wifi i restart maliny?

Nie.

Poza tym to trochę dziwne - żadna z moich malinek nie gubiłą sieci po restarcie (również routera)... 

Link do komentarza
Share on other sites

Czytałem ze problem jest z dhcpd.  U mniejest ten problem bo nie wraca wifi i muszę zrobić coś takiej postaci.

A podpowiesz jak wrzucić ten reset bo chciałbym dodatkowo resetować malinę gdy nie ma wifi. Tak poza tym skrypt powienien zadziałać?

Link do komentarza
Share on other sites

Restart możesz zrobić modyfikując skrypt który masz:

#!/bin/bash
gateway="192.168.0.1"
ping -c2 ${gateway} > /dev/null
if [ $? != 0 ]
then
  reboot
fi

#i tu koniec skryptu
  

Tyle że ja bym się bał go stosować tak po prostu z crona - pamiętaj, że przy starcie zegar w malince nie jest jeszcze ustawiony, nie ma połączenia z siecią, i jest duża szansa że po prostu malinka zrobi reboot zanim zdąży się połączyć z netem.

10 minut temu, nebraska napisał:

Czytałem ze problem jest z dhcpd. 

Chyba dhcpcd... po co tam dhcpd? Masz w dhcpcd.conf ustawiony statyczny adres dla wlan0? Jeśli nie to dlaczego?

Link do komentarza
Share on other sites

(edytowany)
17 minut temu, ethanak napisał:

Restart możesz zrobić modyfikując skrypt który masz:

#!/bin/bash
gateway="192.168.0.1"
ping -c2 ${gateway} > /dev/null
if [ $? != 0 ]
then
  reboot
fi

#i tu koniec skryptu
  

Tyle że ja bym się bał go stosować tak po prostu z crona - pamiętaj, że przy starcie zegar w malince nie jest jeszcze ustawiony, nie ma połączenia z siecią, i jest duża szansa że po prostu malinka zrobi reboot zanim zdąży się połączyć z netem.

Chyba dhcpcd... po co tam dhcpd? Masz w dhcpcd.conf ustawiony statyczny adres dla wlan0? Jeśli nie to dlaczego?

To może jakieś opóźnienie przy starcie jak się włączy odczekaj 30s jeśli nie ma wifi to restart?

Masz na myśłi statyczny adres przypisany dla rutera w rezerwacji adresów? Jak wszedłem sudo nano /etc/dhcpcd.conf to mam tam jakiś adres IP w static routers

Edytowano przez nebraska
Link do komentarza
Share on other sites

1 minutę temu, nebraska napisał:

mam tam jakiś adres IP w static routers

Co znaczy "jakiś"? Pokaż ten kawałek konfiguracji.

U mnie (również zero 2 W) jest:

# Example static IP configuration:
interface wlan0
static ip_address=192.168.0.9/24
static routers=192.168.0.1
static domain_name_servers=8.8.8.8 4.4.4.4

No i działa...

  • Pomogłeś! 1
Link do komentarza
Share on other sites

# Example static IP configuration:
#interface eth0
#static ip_address=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1

# It is possible to fall back to a static IP if DHCP fails:
# define static profile
#profile static_eth0
#static ip_address=192.168.1.23/24
#static routers=192.168.1.1
#static domain_name_servers=192.168.1.1

# fallback to static profile on eth0
#interface eth0
#fallback static_eth0

Nie wiem na który IP zwrócić uwagę.
 

Link do komentarza
Share on other sites

Aaa ale ślepak że mnie nawet nie zauważyłem że one są zakomentowane🥴

U siebie na górze masz aktywne. 

Jeśli odkomentuje te trzy linie jak u ciebie na górze to wtedy jest szansa że coś się zmieni będzie łączył się po braku lub restarcie?

Te adresy muszę jakieś przypisać czy tylko wystarczy odkomentowac linie?

Link do komentarza
Share on other sites

No, raczej te z przykładu działać nie będą.

W ip_address podaj ten który teraz ma malinka, zachowując /24

W routers podaj adres bramy

nameservery zostaw tak jak u mnie.

Potem napiszę wiecej, ale zacznij od tego.

  • Lubię! 2
Link do komentarza
Share on other sites

# Example static IP configuration:
interface wlan0
static ip_address=192.168.0.46/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.0.1
static domain_name_servers=8.8.8.8 4.4.4.4

Ok adres bramy podejrzałem na kompie wpisując w wierszu poleceń ipconfig. Tak to obecnie wygląda w malince.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.