Kulturalne zamykanie malinki. Przez ssh i fizycznie.

Pytanie do ChatGPT: Jak kulturalnie wyłączyć Raspberry Pi Zero 2 W?

ChatGPT: Wyłączanie „kulturalne” to klucz do długiego życia Twojej karty SD. Nagłe odcięcie prądu to dla systemu operacyjnego jak gwałtowne zatrzymanie samochodu przez uderzenie w mur – niby stoi, ale coś mogło się zepsuć.

Oto jak podejść do tematu profesjonalnie:

1. Wyłączanie przez SSH (Najbezpieczniejsza droga)

Najlepsze komendy to:

  • sudo poweroff

  • sudo shutdown -h now

Obie komendy dają systemowi czas na zapisanie danych z pamięci RAM na kartę SD i poprawne zamknięcie bazy danych (co jest kluczowe dla Mosquitto i Node-RED).


2. Wyłączanie fizyczne przez piny GPIO

Tak, Raspberry Pi ma genialną funkcję, która pozwala zamienić dwa piny w fizyczny przycisk zasilania. Nie musisz pisać żadnego skryptu – wystarczy jedna zmiana w konfiguracji.

Jak to zrobić?

  1. Połącz przycisk monostabilny (taki, który „odbija”, jak dzwonek do drzwi) do Pinu 5 (GPIO 3) oraz Pinu 6 (GND).

  2. Edytuj plik konfiguracyjny (ten, o który pytałeś na początku):

    sudo nano /boot/firmware/config.txt
    

    (W starszych wersjach systemu to po prostu /boot/config.txt).

  3. Dopisz na końcu linię:

    dtoverlay=gpio-shutdown

  4. Zapisz i zrestartuj Malinkę.

Jak to działa?

  • Wyłączanie: Gdy Pi pracuje, krótkie wciśnięcie przycisku wyśle sygnał do systemu, aby wykonał „kulturalne” sudo poweroff.

  • Włączanie: Pin 5 (GPIO 3) ma specjalną właściwość – jeśli Malinka jest podłączona do prądu, ale wyłączona, zwarcie tego pinu do masy (GND) spowoduje jej ponowne uruchomienie. Masz więc pełnoprawny przycisk Power!


3. Czy pozostaje odłączanie zasilania?

Odłączanie zasilania powinno być ostatnim krokiem, a nie sposobem na wyłączanie.

  • Prawidłowa procedura: Wydajesz komendę (lub naciskasz przycisk), czekasz, aż dioda LED na RPZ2W przestanie migać i zgaśnie (lub przejdzie w tryb stałego, słabego świecenia), i dopiero wtedy wyjmujesz wtyczkę.

  • Ryzyko: Jeśli wyciągniesz kabel, gdy Node-RED akurat coś zapisuje, możesz uszkodzić system plików. Wtedy będziesz musiał skorzystać z kopii zapasowej, o której rozmawialiśmy wcześniej.


Sprawdźmy czy plik config.txt jest poprawnie przygotowany pod ten przycisk.

Aby sprawdzić lub dodać tę funkcję, najpierw zajrzymy do pliku konfiguracyjnego. Skoro masz system Debian Trixie, ścieżka do pliku jest nieco inna niż w starych wersjach systemu.

Oto jak to zrobić krok po kroku przez SSH:

1. Podejrzenie obecnej konfiguracji

Wpisz w terminalu poniższą komendę, aby wyświetlić zawartość pliku bez ryzyka edycji:

cat /boot/firmware/config.txt

(Jeśli system krzyknie, że plik nie istnieje, spróbuj starszej ścieżki: cat /boot/config.txt).

2. Edycja pliku

Jeśli na liście nie widzisz linii dtoverlay=gpio-shutdown, musimy ją dopisać:

  1. Otwórz edytor:

    sudo nano /boot/firmware/config.txt
    
  2. Zjedź na sam dół pliku.

  3. Dopisz nową linię:

    dtoverlay=gpio-shutdown

  4. Zapisz i wyjdź: naciśnij Ctrl + O, potem Enter, a na koniec Ctrl + X.


Jak sprawdzić, czy to działa (Test “na krótko”)?

Nie potrzebujesz od razu lutować przycisku. Możesz to przetestować kawałkiem przewodu lub nawet metalową pęsetą:

  1. Zrestartuj Malinkę: sudo reboot.

  2. Po ponownym uruchomieniu, upewnij się, że serwer MQTT i Node-RED działają.

  3. Na włączonym urządzeniu na ułamek sekundy zewrzyj Pin 5 (GPIO 3) z Pinem 6 (GND).

Co powinno się stać?

  • System otrzyma sygnał “Shutdown”.

  • Node-RED i Mosquitto zostaną bezpiecznie zamknięte.

  • Dioda na RPZ2W mignie 10 razy w równych odstępach (to sygnał zamknięcia systemu w Debianie), a potem zgaśnie.

Dlaczego to jest “kulturalne”?

Bo system nie “umiera” nagle. Jeśli w Terminalu Maca masz otwartą sesję SSH, zobaczysz komunikat:

Shared connection to [IP] closed by remote host.

To znak, że Malinka sama grzecznie zamknęła połączenie przed wyłączeniem procesora.


Ważne: Pin 5 to “Magiczny Pin”

Użyliśmy Pinu 5 (GPIO 3), ponieważ jako jedyny posiada on funkcję Wake-up.

  • Jeśli Twoja Malinka jest wyłączona (ale podpięta do zasilacza), ponowne zwarcie Pinu 5 do masy uruchomi ją ponownie.

  • Dzięki temu jeden przycisk służy do włączania i bezpiecznego wyłączania.

Czy udało Ci się dopisać tę linię do pliku i chcesz, żebym pomógł Ci teraz zweryfikować, czy system poprawnie interpretuje ten pin?


UWAGA!: U mnie na końcu pliku config.txt było tak:

[all]
enable_uart=1

Dodałem pod spodem linię:
dtoverlay=gpio-shutdown

Dodaj komentarz