W tym poradniku, przedstawiamy nowe narzędzie Windows – PowerShell. Będziemy używać go podczas konfiguracji aplikacji Blinky, aby automatycznie włączała się przy uruchomieniu systemu. 

Windows PowerShell

PowerShell: Pierwsze kroki

Windows PowerShell jest narzędziem wiersza poleceń, które działa na komputerach z systemem Windows 10, pozwala ono na wykonywanie poleceń na urządzeniach Windows IoT, takich jak Raspberry Pi

PowerShell ma wiele zastosowań, ale my skupimy się na skonfigurowaniu aplikacji, tak aby uruchamiały się przy starcie w Windows IoT.

PowerShell powinno się pojawić w podmenu Wszystkie aplikacje w menu Start jako Windows PowerShell.

Upewnij się, że uruchomiłeś PowerShell jako „Administrator”. W tym celu, kliknij prawym przyciskiem myszy na ikonkę PowerShell i wybierz z listy Uruchom jako Administrator.

Windows PowerShell - uruchom jako administrator

Jeśli nie znajdziesz tam tej opcji, możesz wpisać Windows PowerShell w oknie Wyszukaj (lewy, dolny róg ekranu), aby Windows znalazł ją za Ciebie.

Wyszukaj PowerShell

Zostaniesz zapytany czy chcesz pozwolić, aby PowerShell wprowadził zmiany w Twoim systemie, a to dlatego, że uruchamiasz go jako Administrator. Kliknij OK. Otworzy się okno konsoli PowerShell.

Na początku, PowerShell otworzy katalog windowssystem32 na Twoim komputerze. Więc, pierwsze co musisz zrobić to podłączyć PowerShell do swojego urządzenia Windows IoT.

Aby PowerShell działało na T

woim komputerze, potrzebuje ono usługi WinRM. W wierszu poleceń PowerShell wpisz:

net start WinRM
net start WinRM

Następny krok to stworzenie „zaufanej” relacji pomiędzy komputerem a urządzeniem Windows IoT. Należy to zrobić przy pomocy polecenia Set_Item:

Set-Item WSMan:\localhost\Client\TrustedHosts –Value <machine-name or IP address>

Wpisz nazwę swojego urządzenia IoT lub jego adres IP. Obie opcje są dostępne na standardowym ekranie startowym Windows IoT. Nasze Raspberry Pi nadal ma domyślną nazwę minwinpc:

Windows poprosi o potwierdzenie tego, że chcesz zmienić listę zaufanych komputerów. Wciśnij „Y”, aby zatwierdzić.

Naszym kolejnym krokiem będzie uruchomienie sesji wiersza poleceń na Raspberry Pi. Polecenie wygląda tak:

Enter-PSSession -ComputerName <machine-name or IP Address> -Credential <machine-name or IP Address or localhost>\Administrator

Ponownie, wpisz nazwę lub adres IP swojego Raspberry Pi. Nasza nazwa to nadal minwinpc:

Uruchomienie sesji wiersza poleceń

Po wykonaniu polecenia Enter_PSSession, wyskoczy okno uwierzytelnienia. Wpisz hasło Windows IoT-a do swojego Raspberry Pi. Domyślne hasło to p@ssw0rd.

Wpisz swoje hasło i kliknij OK. Realizacja polecenia może trwać około minuty. Po zakończeniu realizacji, zobaczysz nowy wiersz poleceń, który wskaże, że jesteś w katalogu Documents. Jesteś teraz w stanie wykonywać polecenia PowerShell w Windows IoT Core Raspberry Pi:

Dołączenie do sesji

Przegląd PowerShell

Będziemy używać PowerShell, aby ustawić nasze aplikacje startowe, jednakże może ono o wiele więcej. Zobacz zestawienie poleceń Windows IoT PowerShell tutaj:

W międzyczasie, zróbmy listę aplikacji zainstalowanych na Raspberry Pi z systemem Windows IoT. Wprowadź polecenie w PowerShell:

IotStartup list

Widzimy teraz, że mamy kilka aplikacji, które posiadają interfejs graficzny (Headed) i kilka bez takiego interfejsu (Headless). Aplikacja, która nie posiada interfejsu graficznego to np. BlinkyHeadless app, a także Dotstar app, którą zaczęliśmy opracowywać do przyszłych poradników.

Na ogół, nazwy aplikacji są skomplikowane. Duża ilość znaków i cyfr. Nie musisz przejmować się tym chaosem, ponieważ PowerShell potrafi dopasowywać wzory. Więc zamiast mozolnie wpisywać całą nazwę aplikacji w polecenie, możesz wpisać tylko jej część. Przykładowo, wejdźmy w polecenie

IoTStartup list Blinky

a PowerShell wyświetli tylko te aplikacje, które pasują:

W tym tutorialu, zamierzamy skonfigurować aplikacje startowe. Możemy wylistować aktualnie zarejestrowane aplikacje startowe używając polecenia IoTStartup startup:

IoTStartup startup

Domyślną aplikacją z interfejsem graficznym jest IoTCoreDefaultApp. Jest to aplikacja, która wyświetla informację na ekranie HDMI podczas pierwszego uruchomienia Raspberry Pi. ZWaveHeadlessAdapterApp wprowadza Z-Wave, bezprzewodowy protokół komunikacyjny stworzony po to, aby umożliwiał domowym urządzeniom (oświetlenie, sprzęty, itd.) komunikację ze sobą tworząc automatykę domową (zobacz tutaj: https://developer.microsoft.com/en-us/windows/iot/samples/zwavetutorial)

W następnej sekcji, zarejestrujemy BlinkyHeadless jako aplikację startową.

Aplikacje startowe bez interfejsu graficznego

Jeśli nie przejrzałeś jeszcze samouczka do BlinkyHeadless, najwyższa pora to zrobić. 

Powinno ono działać ze środowiskiem Visual Studio. Oznacza to, że aplikacja jest już „umieszczona” na Raspberry Pi.

Wprowadź polecenie w PowerShell

IoTStartup add headless BlinkyHeadless

Uruchom ponownie swoja malinkę w PowerShell. Łatwym sposobem na zrobienie tego, jest wprowadzenie polecenia:

shutdown /r /t 0

Raspberry się wyłączy i po chwili ponownie się włączy. Może to zająć kilka minut, ale po zakończonym restarcie, dioda LED powinna zacząć mrugać.

Możesz mieć tyle aplikacji startowych bez interfejsu graficznego, ile tylko chcesz. 

Aplikacje startowe z graficznym interfejsem

Procedura konfigurowania aplikacji z interfejsem graficznym, aby uruchamiała się przy starcie, jest taka sama jak procedura konfigurowania aplikacji bez interfejsu graficznego.

W poprzednim kroku, zrestartowaliśmy Raspberry Pi i zapaliła się dioda LED.

Rzuć okiem na IoT Dashboard. Gdy restart się skończy, powinieneś znów zobaczyć swoje Raspberry na liście My Devices. Otwórz Device Portal na z poziomu dashboard i przejdź do strony Apps. Powinieneś zobaczyć BlinkyHeadless na liście Uruchomionych aplikacji.

Ponieważ BlinkyHeadless będzie zastąpione przez Blinkyheaded, znajdź BlinkyHeadless na liście uruchomionych aplikacji i kliknij X‚ obok jej nazwy, aby ją zatrzymać. 

(BlinkyHeadless musi być usunięte, ponieważ używa tego samego pinu GPIO co BlinkyHeaded. Nie można uruchomić dwóch aplikacji używających tego samego pinu!)

Upewnij się teraz, że BlinkyHeaded działa prawidłowo ze środowiskiem Visual Studio (w czasie pisania tego poradnika, wystąpił błąd w Visual Studio podczas restartu Pi. Aby to obejść, zamknij i ponownie otwórz Visual Studio po zakończonym restarcie).

Wróć do PowerShell na swoim komputerze. Z powodu restartu, będziesz musiał ponownie podłączyć PowerShell do Raspberry.

Wejdź ponownie w polecenie Set_Item (które tworzy zaufany związek pomiędzy komputerem a Raspberry Pi). Jeszcze raz zostaniesz poproszony o podanie nazwy użytkownika i hasła. Po raz kolejny wejdź w polecenie Enter-PSSession.

Oba polecenia zostały objaśnione w sekcji PowerShell tego poradnika, więc wróć się tam, jeśli ich zapomniałeś.

PowerShell powinien teraz być na nowo podłączony do Pi. Wprowadź polecenie startowe IoTStartup, aby zobaczyć, że BlinkyHeadless jest na liście aplikacji startowych:

Kolejnym krokiem jest usunięcie BlinkyHeadless jako aplikacji startowej i zastąpienie ją przez BlinkyHeaded.

Wprowadź następujące polecenie aby usunąć BlinkyHeadless z listy startowej.

IotStartup remove headless BlinkyHeadless

Następnie wprowadź poniższe polecenie, żeby dodać BlinkyHeaded do listy startowej.

IotStartup add headed BlinkyHeaded

Oto co zrobiliśmy: zatrzymaliśmy BlinkyHeadless, usunęliśmy BlinkyHeadless z listy aplikacji startowych oraz dodaliśmy tam BlinkyHeaded.

Wprowadź polecenie restartu w PowerShell.

Twój monitor HDMI powinien już być podpięty do Pi. Zrestartuj Pi poleceniem shutdown /r /t 0. Gdy nastąpi ponowne uruchomienie, zobaczysz BlinkyHeaded GUI na monitorze, a dioda LED będzie mrugać.

Co się stało z oryginalnym GUI Windows IoT Core?

Kiedy ustawiłeś BlinkyHeaded jako aplikację startową z interfejsem graficznym, zastąpiłeś domyślną aplikację startową. Może być tylko jedna taka aplikacja. Jednakże, możesz wrócić do tej oryginalnej. Nazywa się ona IoTCoreDefaultApp i możesz ją z powrotem ustawić jako aplikację startową z interfejsem graficznym w PowerShell.

W tym przykładzie, wydaliśmy polecenie IoTStartup startup do wyświetlenia aktualnej listy aplikacji startowych. Następnie wydaliśmy polecenie IoTStartup add headed IoTCoreDefaultApp, aby z powrotem ustawić aplikację startową z interfejsem graficznym na domyślną. Ponowne wydanie polecenia IoTStartup startup, pokazuje zmianę:

Pomocy! BlinkyHeadless lub BlinkyHeaded nie pojawia się na liście aplikacji!

Możesz znaleźć się w sytuacji, w której PowerShell nie wymienia aplikacji, które pasują do nazwy BlinkyHeadless lub do nazwy BlinkyHeaded. W naszym systemie, na przykład, nie ma aplikacji o nazwie BlinkyHeaded. Więc w tej sekcji, użyjemy BlinkyHeaded jako przykładu. Jeśli masz problem z BlinkyHeadless, postępowanie będzie identyczne.

To tutaj wchodzą w grę skomplikowane, podobne do kodów nazwy aplikacji.

Podczas uruchamiania BlinkyHeaded ze środowiskiem Visual Studio, zobaczysz BlinkyHeaded na liście uruchomionych aplikacji na stronie Device Portal Apps:

Widzisz BlinkyHeaded na liście uruchomionych aplikacji, ale nie pojawia się ona na liście zainstalowanych aplikacji. Tak naprawdę, to ona się tam pojawia, ale jej nazwa jest zakodowana. Popatrz na zdjęciu na kategorię „Package Full Name”, po prawej stronie od wiersza BlinkyHeaded. Zauważ, że pełna nazwa aplikacji zaczyna się tymi znakami 692c8bff… . A teraz spójrz na pierwszą aplikację na liście – jej nazwa zaczyna się tak samo. Jest to ukryta aplikacja BlinkyHeaded!

Twoja aplikacja BlinkyHeaded będzie mieć inną nazwę. Użyj jej w PowerShell aby ustawić tę aplikację startową. My użyjemy 692c8bff – ale ty powinieneś wpisać tutaj kilka pierwszych znaków nazwy swojego Blinky.

IoTStartup add headed 692c8bff

Jest możliwe, że nie będziesz mieć takiego problemu w Twoim systemie. Jeśli jednak takie coś się zdarzy, możesz zastosować powyższe rozwiązanie.

Źródło: https://learn.adafruit.com/windows-iot-application-management

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *