Zdalne sterowanie Raspberry Pi za pomocą PiControl

PiCockpit's PiControl jest potężną funkcją, która pozwala kontrolować Raspberry Pi zdalnie z dowolnej przeglądarki internetowej, po prostu klikając przyciski. Zobaczysz stan i wyjście z polecenia. Nowe polecenia mogą być dodawane poprzez prostą edycję pliku JSON na Twoim Raspberry Pi - pokażemy Ci jak to zrobić i damy Ci kilka pomysłów co możesz zbudować używając PiControl!

Jak to wygląda?

Domyślnie trzy komendy są dołączone i natychmiast dostępne dla Twojego Raspi: ( power off, reboot, upgrade client)

Podstawowe polecenia do zdalnego sterowania komputerem Pi za pomocą interfejsu internetowego - z dowolnej przeglądarki
Ten zrzut ekranu PiCockpit PiControl pokazuje jak wyglądają komendy

Co mogę zrobić z Raspberry Pi i PiControl?

Oto kilka rzeczy, które można z nim zbudować. Te pomysły będą wymagały pewnych badań i być może wiedzy z zakresu kodowania i/lub sprzętu z Twojej strony; W każdym razie PiCockpit's PiControl pomoże Ci w łatwej w użyciu części projektu dotyczącej interfejsu sieciowego i zaoszczędzi Ci mnóstwo czasu, aby to wszystko działało przez Internet 🙂

  • zrobić zdjęcie za pomocą modułu kamery Raspberry Pi i wysłać je pocztą
  • uruchomić serwer Minecraft Raspberry Pi i zatrzymać go również
  • Odtwarzaj wideo za pomocą omxplayer (możesz również ustawić nieskończoną pętlę dla wideo i zatrzymać pętlę wideo, jeśli chcesz przełączyć się na inne wideo)
  • stworzyć łatwe sterowanie kamerą do animacji poklatkowej, używając modułu kamery Raspberry Pi
  • budzenie lokalnego komputera w tej samej sieci co Raspberry Pi za pomocą funkcji Wake on LAN
  • odtwarzać dźwięk (na przykład jako psikus na Halloween)
  • otworzyć bramę - np. garażową, wydając odpowiednie polecenia sterujące poprzez Z-Wave, itp.
  • uruchomić usługę SSH na Raspberry Pi i zamknąć ją - podejście "puknij, aby otworzyć" dla lepszego bezpieczeństwa
  • sterowanie modelami pociągów
  • włączanie i wyłączanie relais (wymaga dwóch przycisków, lub może być wykonane za pomocą przycisku "toggle")
  • sterowanie telewizorem (przełączanie kanałów, zmiana głośności, ...) za pomocą diody IR LED, na przykład w celu symulowania aktywności podczas podróży
  • Uruchom rakietę z interfejsu sieciowego

Opublikujemy instrukcje krok po kroku dla niektórych z tych pomysłów na projekty, aby ułatwić rozpoczęcie pracy z PiControl i zdalne sterowanie Raspberry Pi.

Jak mogę dodać dodatkowe przyciski zdalnego sterowania dla Raspberry Pi za pomocą PiControl?

Możesz łatwo i bezpiecznie zdefiniować własne komendy, po prostu edytując pliki JSON na swoim Raspberry Pi. Jest to zrobione ze względów bezpieczeństwa - mogłem napisać PiCockpit w sposób, który pozwalałby na dodawanie komend z poziomu interfejsu WWW, ale jeśli ktoś znałby hasło do PiCockpit, mógłby stworzyć dowolną komendę. Dlatego proszę postępować zgodnie z tymi prostymi instrukcjami, aby utworzyć nowy plik JSON na swoim Pi.

Uwaga: te instrukcje są celowo utrzymane w sposób, który użytkownicy, którzy nie mają doświadczenia z wierszem poleceń mogą podążać. Jeśli wiesz jak używać wiersza poleceń, może okazać się, że łatwiej / szybciej jest po prostu utworzyć plik i edytować go za pomocą nano.

Najpierw należy otworzyć przeglądarkę plików w trybie superużytkownika (ten krok zabezpiecza pliki konfiguracyjne PiCockpit PiControl przed jakimkolwiek użytkownikiem lub aplikacją, która chciałaby je zmanipulować). Kliknij na Raspberry Pi OS Menu, a następnie kliknij polecenie "Run ...":

Menu systemu operacyjnego Raspberry Pi, pokazujące polecenie run.
Menu systemu operacyjnego Raspberry Pi. Polecenie Uruchom znajduje się na samym dole.

Uruchom pcmanfm jako root (sudo pcmanfm) wpisując "sudo pcmanfm" (bez cudzysłowów) w oknie dialogowym, które się otworzy, i kliknięcie przycisku OK:

Uruchamianie okna dialogowego poleceń na Raspberry Pi OS
Polecenie run, przygotowujące do uruchomienia pcmanfm jako root

Otworzy się nowe okno z zawartością katalogu /home/pi:

Zrzut ekranu pcmanfm z uprawnieniami super użytkownika
pcmanfm, menedżer plików działający jako super użytkownik

Uwaga: powinieneś zobaczyć tę ikonę, tuż pod menu "Plik". Wskazuje ona, że używasz pcmanfm jako użytkownik root, i dlatego powinieneś być bardzo ostrożny (ponieważ root może edytować / usuwać / przenosić każdy plik! nawet pliki, które są krytyczne dla normalnego działania systemu).

Wskaźnik trybu korzeniowego

Bez obaw, dotkniemy tu tylko tych plików, których potrzebujesz 🙂

Otwórz następujący katalog na swoim Raspberry Pi:

/etc/picockpit-client/apps/com.picockpit/picontrol/modules

Pokazuje katalog konfiguracyjny dla PiCockpit's PiControl. Uwaga, jeśli masz świeżą instalację PiCockpit, zobaczysz tylko core.json. Pozostałe moduły zostały stworzone przeze mnie w celach testowych i demonstracyjnych (eksperymenty ze zdalnym sterowaniem).

Wskazówka: możesz również skopiować i wkleić ścieżkę, którą podałem powyżej, i nacisnąć klawisz enter, aby przejść do katalogu.

Pomocne wskazówki Raspi Berry dotyczące Raspberry Pi

Kliknij prawym przyciskiem myszy na pustym obszarze obok istniejących plików i wybierz "Nowy plik...".

Tworzenie nowego pliku w systemie operacyjnym Raspbian
Menu systemu operacyjnego Raspberry Pi dla kliknięcia prawym przyciskiem myszy w celu utworzenia nowego pliku

Nazwij nowy plik ssh-server.json:

W oknie dialogowym pojawi się pytanie o nazwę dla nowego pliku.
tworzenie nowego pliku jako użytkownik root za pomocą pcmanfm
ssh-server.json jest teraz tworzony w tym folderze.

Kliknij prawym przyciskiem myszy na nowy plik, aby wyświetlić menu kontekstowe. Wybierz "Geany":

Menu kontekstowe edytora Geany na Raspberry Pi OS
Geany jest edytorem, za pomocą którego możesz edytować plik
Zrzut ekranu edytora Geany
Geany pokazuje plik ssh-server.json - jeszcze nic w nim nie ma

Teraz możesz zobaczyć nowy plik, który właśnie utworzyliśmy. Jak na razie jest on pusty.

Utwórzmy dwa nowe polecenia, jedno do wyłączenia usługi serwera SSH, a drugie do jej uruchomienia. W polu tekstowym wyświetlonym przez Geany wpisz następujące informacje:

{
  "name": "Polecenia SSH",
  "ikona": "mdi-ssh",
  "handle": "ssh",
  "description": "Steruj serwerem SSH",
  "commands": {
    "ssh-stop": {
      "name": "SSH Server off",
      "ikona": "mdi-server-minus",
      "description": "Wyłącza usługę SSH",
      "confirm": true,
      "user": "root",
      "command": ["service", "ssh", "stop"]
    },
    "ssh-start": {
      "name": "SSH Server on",
      "ikona": "mdi-server-plus",
      "description": "Uruchamia usługę SSH",
      "user": "root",
      "command": ["service", "ssh", "start"].
    }
  }
}
Dodawanie tekstu w Geany. Zwróć uwagę na nawiasy i strukturę dokumentu, a słowa muszą być napisane poprawnie, aby to działało.

W tym momencie powinniśmy zapisać plik. Można to zrobić z menu Plik Geany, na przykład wybierając Zapisz. (Lub użyj Ctrl + S):

Menu plików Geany'ego

W tym momencie nasze nowe komendy nie pojawiły się jeszcze w interfejsie webowym. W tym celu musimy zrestartować picockpit-client. Klikamy na polecenie "Run ..." w menu Raspberry Pi OS, a następnie wpisujemy "sudo service picockpit-client restart" w oknie przed kliknięciem na OK:

ponowne uruchomienie usługi picockpit-client za pomocą okna dialogowego run
restartowanie usługi z okna dialogowego Uruchom

Teraz należy spojrzeć na interfejs sieciowy PiControl:

Interfejs sieciowy PiControl do zdalnego sterowania zrzut ekranu
Pojawił się nowy przycisk do szybkiego przechodzenia do nowych poleceń SSH
Nowe komendy (przyciski), które dodaliśmy do interfejsu webowego, aby uruchamiać zdalne komendy na Raspi!

Jeśli wszystko wpisałeś poprawnie, nowe komendy pojawią się. Jeśli popełniłeś błąd w swoim pliku JSON (np. zapomniałeś o nawiasie klamrowym), PiCockpit po prostu zignoruje "zepsuty" plik.

Możesz teraz wypróbować polecenia. Jeśli klikniesz na przycisk SSH SERVER OFF, zostaniesz zapytany, czy naprawdę chcesz uruchomić polecenie. Kliknij na ssh server off również tutaj, aby faktycznie uruchomić polecenie (lub kliknij cancel, jeśli nie chcesz).

Zabezpieczenie przed wykonaniem niebezpiecznych poleceń przez przypadkowe kliknięcie.

PiCockpit uruchomi teraz polecenie, zobaczysz informacje o postępie - a po zakończeniu działania zobaczysz następujący wskaźnik sukcesu:

PiControl pomyślnie uruchomił "service ssh stop" na Twoim Pi.

Jeśli spróbujesz teraz połączyć się z Pi za pomocą SSH, połączenie zostanie odrzucone:

PuTTYNG pokazuje błąd krytyczny.
Błąd sieci: odmówiono połączenia

Uruchom z powrotem serwer SSH klikając "SSH SERVER ON". Teraz połączenie będzie znów możliwe.

Gratulacje! Właśnie utworzyłeś swój własny zestaw poleceń, które możesz uruchamiać z poziomu interfejsu WWW.

Pozostań na stronie podczas wykonywania poleceń - status zostanie wyczyszczony, jeśli przejdziesz dalej. Aby określić, czy serwer SSH jest uruchomiony, można zbudować test PiDoctor - PiControl jest po prostu do wykonywania zdalnych działań na Pi.

Pomocne wskazówki Raspi Berry dotyczące Raspberry Pi (i PiCockpit)

Pamiętaj, aby zrestartować picockpit-client po dodaniu nowych komend lub aktualizacji komend. Możesz również usunąć polecenia, których nie chcesz mieć, na przykład jeśli chcesz usunąć możliwość wyłączenia Raspberry Pi zdalnie.

Objaśnienie składni polecenia zdalnego

Plik ten konfiguruje nowy moduł dla PiControl. Ma on składnię .JSON, proszę upewnić się, że otwierasz i kończysz nawiasami klamrowymi w poprawny sposób, tak jak jest to przedstawione w moim przykładzie.

Jest tam head, który konfiguruje sam moduł, oraz komendy (w części "commands"). Mają one kilka wspólnych wpisów:

nazwa

Wpisy "name" są nazwami czytelnymi dla człowieka, które są wyświetlane w interfejsie sieciowym.

ikona

Wpisy "icon" są opcjonalne, aby udekorować swoje przyciski i moduł. Są to nazwy ikon Material Design, na przykład "mdi-ssh".

Możesz sprawdzić pełna lista ikon Material Design tutaj. Po prostu skopiuj nazwę ikony (łącznie z mdi- na początku).

Pomocne wskazówki Raspi Berry dotyczące Raspberry Pi (i PiCockpit)

opis

Wpisy "description" są opcjonalne i pozwalają dodać nieco więcej informacji do polecenia lub modułu.

uchwyt

Wpis "handle" jest jawny dla modułu i musi być unikalny wśród modułów. W przypadku komend, uchwyt jest niejawny. "ssh-stop" i "ssh-start" to dwa uchwyty, których użyłem dla poleceń w moim przykładzie.

Możesz wybrać cokolwiek jako uchwyt, pod warunkiem, że nie zawiera znaków "/", "+", "$", "*". Zalecam trzymanie się podstawowych znaków ASCII pisanych małą literą, oraz używanie "-". Uchwyt to. wymagane.

Twój plik może, nawiasem mówiąc, mieć inną nazwę niż uchwyt - zachęcam do używania co najmniej pokrewnych nazw dla nazwy pliku i uchwytu, dzięki czemu łatwo zidentyfikujesz plik modułu .JSON na swoim dysku twardym.

Pomocne wskazówki Raspi Berry dotyczące Raspberry Pi (i PiCockpit)

Polecenia trafiają do "polecenia", a także posiadają dodatkowe możliwości konfiguracji:

potwierdź

Jeśli "potwierdzić" jest obecna i ustawiona na true, interfejs sieciowy PiControl wyświetli okno potwierdzenia przed faktycznym wykonaniem polecenia. Jest to przydatne dla zapewnienia, że "niebezpieczne" polecenia nie zostaną wykonane przez przypadkowe dotknięcie lub kliknięcie.

użytkownik

Jeśli "użytkownik" jest obecna, polecenie zostanie wykonane jako ten konkretny użytkownik (jako źródło w naszym przykładzie, aby upewnić się, że mamy wystarczające uprawnienia).

PiControl będzie uruchamiał komendy jako użytkownik "pi" domyślnie. Możesz również ustawić ją na innych użytkowników z mniejszymi uprawnieniami niż "pi“.

Jeśli próbujesz uruchamiać komendy GPIO lub odtwarzać filmy za pomocą omxplayera, być może będziesz musiał dać swojemu nowemu użytkownikowi dodatkowe możliwości. Użytkownik pi domyślnie posiada te wymagane uprawnienia. Zazwyczaj te uprawnienia są ustawiane poprzez dodanie użytkownika do specjalnej grupy.

Pomocne wskazówki Raspi Berry dotyczące Raspberry Pi (i PiCockpit)

polecenie

To jest rzeczywiste polecenie, które powinny być uruchamiane na Raspberry Pi. Zauważ, że musisz zastąpić spacje w poleceniu w porównaniu do jak byś uruchomił go w wierszu poleceń. Na przykład,

service ssh start

powinno być zapisane jako:

["service", "ssh", "start"].

PiControl obsługuje również łańcuchowanie sekwencji poleceń (np. zwykła sekwencja apt-get update, apt-get upgrade). Sprawdź core.json, aby zobaczyć przykład, jak to jest zrobione.

Pomocne wskazówki Raspi Berry dotyczące Raspberry Pi (i PiCockpit)

Wnioski: PiControl dla Twoich potrzeb w zakresie zdalnego sterowania Raspberry Pi

Używając PiCockpit i PiControl, naprawdę łatwo jest dodać dowolne zdalne polecenie, które chcesz uruchomić na swoim Raspi, i być w stanie kontrolować Pi z interfejsu internetowego. Aby to zadziałało, Raspberry Pi potrzebuje tylko połączenia z Internetem - nie musisz być w tej samej sieci.

Co chciałbyś zbudować używając PiCockpit i PiControl? Skomentuj poniżej, a ja postaram się pomóc Ci w realizacji Twojego projektu 🙂

Zrzut ekranu PiControl pokazujący przyciski do zdalnego sterowania omxplayerem oraz sterowanie przeglądarką Chrome za pomocą interfejsu webowego
Ten zrzut ekranu PiControl pokazuje niestandardowy moduł, który skonfigurowałem: sterowanie Chrome (Chromium), uruchamianie filmów w pętli przy użyciu omxplayer, wyświetlanie filmów z YouTube na Pi

Z wielką mocą przychodzi wielka odpowiedzialność - uważaj komu dajesz dostęp do swojego interfejsu PiCockpit, trzymaj swoje hasło i klucze API w bezpiecznym miejscu. Upewnij się również, że "chronisz" niebezpieczne komendy, jak omówiono powyżej, aby nie zostały one wykonane przez pomyłkowe kliknięcie ich.

Pomocne wskazówki Raspi Berry dotyczące Raspberry Pi (i PiCockpit)

Komentarzy: 10

  1. Max maj 12, 2021 o 5:30 pm

    witam!
    Chcę uruchomić następującą komendę z przyciskiem picontrol: cd /home/pi/Sensoren ; python3 SCRIPT.py
    Zrobiłem to zgodnie z opisem i mogę nacisnąć przycisk, ale komenda nie jest wykonywana, a także proces nie może zostać zatrzymany.
    Jakieś rady?
    Dzięki

    • raspi berry lipiec 1, 2021 o 5:22 pm

      należy pamiętać, że picontrol nie jest powłoką - wszystkie polecenia wykonywane są niezależnie. należy używać ścieżek bezwzględnych (cd - change directory - jest bezużyteczne w kontekście picontrol).

  2. Alex sierpień 16, 2021 o 6:34 pm

    Uruchomienie skryptu python działa dobrze, przykład:
    "command": ["python3", "/home/pi/do_something.pyc"].
    Ale mam problemy, jeśli skrypt później uruchamia aplikację z GUI jak Chromium lub jeśli Chromium jest uruchamiany bezpośrednio:
    "command": ["chromium-browser"] skutkuje "Unable to open X display. ".

    Jak uruchomić skrypty lub aplikacje, które wymagają wyświetlacza X?

    • PiCaptain sierpień 19, 2021 o 5:08 pm

      Pisałem o tym nieco więcej tutaj:
      https://pi3g.com/2020/05/19/chromium-exit-code-5/

      Zasadniczo musisz powiedzieć aplikacji, który wyświetlacz X ma być używany.
      W przypadku Chromium odbywa się to za pomocą flagi

      chromium-browser -display=:0 -kiosk https://picockpit.com

      Uwaga, -kiosk uruchamia przeglądarkę w trybie kiosku. Po prostu wrzucam to jako dodatkową informację.
      Uwaga II: to są dwa myślniki dla parametrów - WordPress zmienia je na pojedynczy długi myślnik, jak sądzę.

      W przypadku innych aplikacji trzeba będzie sprawdzić. Często odbywa się to poprzez ustawienie zmiennej środowiskowej.
      Ewentualnie dla PiCockpit trzeba by napisać skrypt bash, który ustawia zmienną i uruchamia aplikację.
      A następnie uruchom skrypt bash.

      Jeśli masz jakieś sukcesy z tym, proszę podzielić się z nami.

      Max

      • PiCaptain sierpień 19, 2021 o 5:09 pm

        Jako obraz

    • PiCaptain sierpień 19, 2021 o 5:11 pm

      Zobacz również te dwa linki, aby dowiedzieć się więcej o przełącznikach wiersza poleceń dla Chromium:

      http://peter.sh/experiments/chromium-command-line-switches/
      https://www.chromium.org/developers/how-tos/run-chromium-with-flags

  3. Sri październik 13, 2021 o 1:23 pm

    Cześć, właśnie skonfigurowałem polecenie przy użyciu waszego oprogramowania i infrastruktury i jest super! Dziękuję bardzo za to proste i łatwe w użyciu oprogramowanie. Chciałem trochę porady, jeśli jesteś wolny. Zasadniczo, mam mój Pi skonfigurować obudzić mój pc z uśpienia, a twoje oprogramowanie pozwalające prosty interfejs sieciowy, aby obudzić pc z polecenia etherwake działa, jednak chciałbym szybszy sposób wykonywania tego jednego polecenia natychmiast. Czy uważasz, że jest jakiś sposób, aby to możliwe? Obecnie, aby po prostu obudzić mój komputer, muszę się zalogować, a następnie przejść do mojego polecenia, a następnie wybrać przycisk w wyskakującym okienku, ale jeśli było api lub skrót do w zasadzie uruchomienia polecenia jednym kliknięciem, to byłoby pomocne. Tak czy inaczej, dziękuję bardzo za to. Bardzo niesamowite 🙂

    • PiCaptain październik 23, 2021 o 1:41 pm

      Dzięki za sugestię funkcji, już ją dodałem. Planujemy zrobić wake on lan app jakiś czas, może to może być trochę bardziej wygodne.

  4. Hager marzec 31, 2022 o 12:26 pm

    Hallo,
    w jaki sposób można ich zum Beispiel Abfragen wie (Do you want to continue? [Y/n]) über das Script mit "Y" bestätigen?

    Vielen Dank!

    • Hanno kwiecień 20, 2022 o 7:30 am

      Hallo Herr Hager,

      das ist eine sehr gute Frage! Niektóre programy komandosów, jak np. apt-get, mają już zintegrowane -assume-yes Opcja, która pozwala na pracę w trybie nieinteraktywnym. Jest to szczególnie przydatne w skryptach, które nie wymagają obsługi ręcznej. Alternatywą jest klasyczny Unix 'tak' Programm mit Sie das selbe Ergebnis erzielen können. Beispielsweise mit:
      tak | sudo apt upgrade
      Niezależnie od konkretnego przypadku zastosowania, każdy z tych dwóch sposobów może zapewnić dobre rozwiązanie. W takim razie możesz nas jeszcze raz zaprosić do współpracy!

Pozostaw komentarz