Articoli

Una sveglia con Blazor e Raspberry PI (Prima parte)

da

In questa breve serie di articoli, vedremo come costruire una sveglia utilizzando Blazor WebAssembly, in modo da poter eseguire l’applicazione su un Raspberry Pi.

Innanzitutto vediamo alcuni problemi che dovremmo affrontare:

  • Installazione Raspbian e .NET7 su Raspberry PI
  • Eseguire comandi critici (Riproduzione e caricamento di un file audio, Esecuzione full screen dell’applicazione)
  • Eventualmente disattivare l’allarme per basso voltaggio
  • Gestione degli stati della sveglia

Ma andiamo per ordine.

Installazione Raspbian su Raspberry PI

Per la nostra applicazione abbiamo bisogno di un Raspberry PI. In questo momento non è semplice reperirne per cui potrebbe essere sufficiente anche un’ altra piattaforma che possa ospitare almeno un Linux. In alcuni casi, però, potremmo riuscire a recuperare un Raspberry PI2 o Raspberry PI3 usato. Andranno bene lo stesso.

Per poter installare Raspbian (ovvero il sistema operativo per Raspberry PI basato su Linux Debian) basterà scaricare l’installer dal sito di Raspberry PI e seguire le istruzioni.

Abilitiamo SSH

Una volta preparata la scheda MicroSD con Raspbian, avviamo il sistema e abilitiamo la comunicazione SSH tramite i seguenti comandi:

sudo systemctl enable ssh
sudo systemctl start ssh

A questo punto saremo in grado di pilotare Raspberry PI dal nostro PC tramite un client come Putty e soprattutto trasferire files tramite FileZilla.

Installazione di .NET7

A questo punto facciamo partire Raspberry con un monitor collegato (è importante in questa fase operare direttamente su Raspberry e non in SSH), in modo da poter fare le prime configurazioni.
Apriamo una finestra bash con diritti di amministratore e lanciamo il seguente comando

curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel STS

questo installerà .NET7 sul nostro sistema Linux based.

Per poter utilizzare il comando dotnet dalla bash abbiamo però bisogno di dire al sistema il path del comando. Questo lo facciamo tramite queste due linee sempre da bash:

echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
echo 'export PATH=$PATH:$HOME/.dotnet' >> ~/.bashrc
source ~/.bashrc

per aggiungere alle variabili di sistema l’istruzione dotnet per poter lanciare tutto da linea di comando.

Verificare che tutto sia installato correttamente con
dotnet --version
da linea di comando e ci restituirà la versione 7.1.102

Siamo quasi pronti per partire!

Disattivazione spegnimento schermo

Prima di divertirci con Blazor, dobbiamo ancora fare un’operazione su Raspbian che ci permetterà di non avere spegnimenti dello schermo durante l’esecuzione della nostra sveglia.

Apriamo un prompt da Putty o direttamente una bash su Raspberry e scriviamo

sudo raspi-config

e ci troveremo davanti a questa schermata

con le frecce scegliamo la seconda voce Display Options e poi scegliamo Screen Blanking quindi Raspberry ci chiederà se vogliamo abilitare lo Screen blanking ovvero abilitare lo spegnimento dello schermo. Noi sceglieremo No.

Uscendo dall’applicazione ci verrà richiesto di fare un reboot. Anche se è possibile rimandare, consiglio di farlo.

Solo a questo punto potremo iniziare gli sviluppi attivamente per la nostra sveglia.

Deploy applicazione Blazor

Lo so che non state più nella pelle e vorreste vedere la vostra applicazione girare su Raspberry PI. E vi accontento subito.
Create il solito progetto template Blazor Webassembly ASP.NET Core Hosted, facendo attenzione a selezionare come framework di riferimento .NET7, e dategli una prima compilata tanto per essere sicuri che non ci siano errori alla base.
Per poter passare il programma su Raspberry, però, dibbiamo avere ancora un po’ di pazienza. Scaricate un software per il trasferimento dei files come FileZilla e configurate i parametri di accesso nel modo seguente:

Ovviamente vi consiglio di utilizzare un nome utente decisamente migliore del mio…

A questo punto, quando sarete connessi a Raspberry, fate un publish del progetto Blazor (server) con i seguenti parametri:

Quindi da una bash direttamente su Raspberry posizionatevi nella cartella che contiene il vostro programma e tramite comando dotnet run BlazorApp.server.dll fate partire la vostra applicazione. Vedrete l’applicazione partire nella vostra finestrella bash e se navigherete all’indirizzo di partenza tramite un browser, vedrete la vostra app.
Se così non fosse vi siete persi qualche passaggio.

Nel prossimo articolo iniziamo a costruire la nostra sveglia.