fbpx ...
Fuso Orario Di Raspberry: Come Settarlo Con C#

Fuso Orario Di Raspberry: Come Impostare La Timezone Di Un Raspberry Pi Da PC Windows Usando C#.

In questo articolo abbiamo visto come impostare via rete la data e l’ora di un Raspberry Pi utilizzando un programma implementato in C-Sharp: vediamo ora come modificare, sempre da un programma scritto in C#, la timezone — fuso orario — di raspberry.

Per prima cosa è necessario procurarsi la libreria SshNet che consente la comunicazione tra PC e Raspberry Pi attraverso il protocollo Secure shell mediante sessione remota cifrata attraverso la rete (il file Renci.Sshnet.dll con la libreria SSH è scaricabile da Codeplex).

Quindi aprite Visual Studio e create un nuovo progetto C# (ad es. una Windows Form Application).

Nel riquadro Esplora Soluzioni, aggiungere il riferimento alla libreria SSH sfogliando le cartelle per selezionare quella in cui avete scaricato il file dll, e quindi cliccate col tasto destro del mouse sull’icona del file form (es: Form1.cs ) scegliendo Visualizza codice per aprire il file sorgente.

Create una funzione (es: SetTZ ) in cui inserirete il codice C#:
private void SetTZ()
{
// do something hot!
}
Create un client SSH utilizzando i seguenti parametri connessione:

  • host: di solito il nome del dispositivo (es: raspberry ) oppure l’ip locale (es: 192.168.1.11 )
  • username: nome-utente valido per accedere al Raspberry (es: pi )
  • password: la password del nome-utente

Renci.SshNet.ConnectionInfo info = new Renci.SshNet.PasswordConnectionInfo(host, username, password);
Renci.SshNet.SshClient client = new Renci.SshNet.SshClient(info);
e quindi avviate la connessione:
client.Connect();
Preparate la stringa con il fuso orario di Raspberry: attenzione che i valori consentiti sono quelli conformi alle specifiche IANA (ad esempio, per l’Italia il valore corretto è “Europe/Rome”):
string timezone = “Europe/Rome”;
Costruite poi l’istruzione da inviare via SSH per impostare il fuso orario:
string command = string.Format(“sudo echo \”{0}\” | sudo tee /etc/timezone > /dev/null”, timezone);
command += “; sudo dpkg-reconfigure -f noninteractive tzdata”;
Ora lanciate il comando via SSH:
Renci.SshNet.SshCommand cmd = client.RunCommand(command);
Non dimenticate di chiudere la connessione:
client.Disconnect();
Se tutto è andato per il meglio, il valore della proprietà ExitStatus dell’oggetto cmd sarà uguale a zero, altrimenti in cmd.Error troverete un messaggio di errore.

Ricompattiamo il codice C# che serve a impostare il fuso orario di Raspberry:
private void SetTZ(string host, string username, string password, string timezone)
{
try
{
Renci.SshNet.ConnectionInfo info = new Renci.SshNet.PasswordConnectionInfo(host, username, password);
Renci.SshNet.SshClient client = new Renci.SshNet.SshClient(info);
client.Connect();
string command = string.Format(“sudo echo \”{0}\” | sudo tee /etc/timezone > /dev/null”, timezone);
command += “; sudo dpkg-reconfigure -f noninteractive tzdata”;
Renci.SshNet.SshCommand cmd = client.RunCommand(command);
client.Disconnect();
if (cmd.ExitStatus == 0)
{
System.Windows.Forms.MessageBox.Show(“OK!”);
}
else
{
System.Windows.Forms.MessageBox.Show(cmd.Error, “Oops…”, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation);
}
}
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message, “Doh!”, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
}
}

Note
In caso di successo della procedura potete effettuare un controllo della timezone di Raspberry utilizando il codice C-Sharp presente in questo articolo precedente.

Attenzione anche a:

  • Errori di autorizzazione: se non vi connettete usando le credenziali di un utente del gruppo amministratori del Raspberry, assicuratevi che possieda i permessi necessari ad eseguire i comandi richiesti dalla procedura.
  • Errori di connessione: sostituendo il nome dispositivo con l’indirizzo ip si può ovviare al problema, ma in questo bisogna fare attenzione che l’ip del Raspberry può cambiare nel tempo se non è impostato staticamente.

Link utili:

Indice dei contenuti

Per trionfare nel campionato del mercato affidati ad una squadra unita e vincente, guidata da un allenatore esperto e capace: perché è la sinergia tra i giocatori la chiave per raggiungere i tuoi obiettivi.

Scarica la Nostra Brochure
Scopri il nostro metodo per portare la tua azienda al successo
Brand
Creazione Contenuti
Digital PR
Comunicazione Offline
Social Media
Piano Editoriale
Landing Page
Social ADS
Influencer Marketing
Sito Web
SEO
Blog
Google ADS
Newsletter

Contattaci

Il nostro indirizzo:

Via Mugna 33/C

36027 Rosà (VI)