Accesso / Registrazione

Accedi o registrati su RaspController

Per inviare notifiche dal Raspberry Pi all’app RaspController devi essere registrato.

Quindi apri l’app, vai alla sezione “Notifiche Raspberry Pi” e registrati o accedi.

La funzione “Notifiche” è disponibile solo nella versione PRO dell’applicazione.

Dall’interfaccia dell’app prendi nota della User API Key, ti servirà sul Raspberry Pi per inviare notifiche.

Per inviare e ricevere notifiche, sia il Raspberry Pi che RaspController devono essere connessi a Internet.

Scarica la libreria

Scarica e installa la libreria di notifica sul tuo Raspberry Pi

1. Sul tuo Raspberry Pi crea la cartella che ospiterà il tuo progetto
Apri il terminale, vai nella cartella dove tieni i tuoi progetti e crea una nuova cartella (io lo chiamerò “RaspController Notification Proj”, ma puoi chiamarla come vuoi):

mkdir "RaspController Notification Proj"


2. Crea il tuo ambiente virtuale

Entra nella cartella del tuo progetto:

cd "RaspController Notification Proj"

e scegli un nome per il tuo ambiente (io lo chiamerò raspc_env, ma puoi chiamarlo come vuoi), questo crea una nuova cartella chiamata “raspc_env”

python3 -m venv raspc_env


3. Attiva l’ambiente virtuale

source raspc_env/bin/activate

Noterai che il tuo prompt del terminale cambierà, mostrando il nome dell’ambiente (es. (raspc_env) $). Questo significa che sei dentro l’ambiente virtuale!


4. Aggiorna il gestore di pacchetti standard per Python “pip” e installa la libreria raspc-notif

Nota 1: ora puoi usare solo “python” invece di “python3” perché siamo nell’ambiente virtuale

python -m pip install --upgrade pip
python -m pip install --upgrade raspc-notif

Nota 2: con i parametri  "install --upgrade"  il pacchetto viene installato se non presente oppure viene aggiornato se presente.
Nota 3: si consiglia di tenere la libreria 
raspc-notif sempre aggiornata.
Nota 4: puoi trovare la documentazione della libreria qui: raspc-notif documentation


5. Aggiungi il tuo script personalizzato
Crea i tuoi script Python all’interno della tua cartella di progetto “RaspController Notification Proj” seguendo l’esempio riportato sotto.


6. Disattiva l’ambiente virtuale

Quando hai finito di lavorare, ti basta digitare:

deactivate

Il prompt del terminale tornerà normale.

 

Attenzione: gli ambienti virtuali di Python (la cartella raspc_env) non possono essere spostati o rinominati dopo la loro creazione.
Se il percorso assoluto viene modificato perché le cartelle genitori sono state rinominate o spostate, occorre eliminare rimuovere l’ambiente virtuale con:

rm -rf raspc_env

e creare un nuovo ambiente pulito:

python3 -m venv raspc_env

raspc-notif library on PyPi

cpu_temp.py

Esempio di codice in python per inviare una notifica quando si verifica un evento

from raspc_notif import notif
from time import sleep
import subprocess

# ------------------------------------------------------------------
# IMPORTANT: Enter the User API Key you find in the RaspController app
# ------------------------------------------------------------------
sender = notif.Sender(apikey = "ENTER_API_KEY_HERE")

# Infinite loop to continuously get data
while True:
	
	# Gets data once every 5 seconds
	sleep(5)
	
	# Gets the CPU temperature
	try:
		cpu_temp_str = subprocess.check_output(["cat", "/sys/class/thermal/thermal_zone0/temp"]).decode("utf-8").strip()
		cpu_temp = float(cpu_temp_str) / 1000
	except Exception as e:
		print(f"Could not read temperature: {e}")
		continue
	
	# Check if the temperature exceeds a certain threshold
	if cpu_temp > 70:
		
		# Send notification to RaspController
		notif_message = f"The CPU has reached the temperature of {cpu_temp}^C"
		notification = notif.Notification("Attention!", notif_message, high_priority = True)
		
		print(f"Temperature threshold exceeded ({cpu_temp}^C). Sending notification...")
		result = sender.send_notification(notification)
		
		# Check if the submission was successful
		if result.status == notif.Result.SUCCESS:
			print(result.message)
		else:
			print(f"ERROR: {result.message}")
			
		# Wait 6 minutes before sending a notification again
		# This prevents spamming notifications
		if result.status != notif.Result.SOCKET_ERROR:
			sleep(60 * 6)

Informazioni sulle notifiche

Impostazione della durata di un messaggio

In genere, FCM recapita i messaggi immediatamente dopo l’invio. Tuttavia, questo potrebbe non essere sempre possibile. Ad esempio, se la piattaforma è Android, il dispositivo potrebbe essere spento, offline o altrimenti non disponibile. Oppure FCM potrebbe ritardare intenzionalmente i messaggi per impedire a un’app di consumare risorse eccessive e di avere un impatto negativo sulla durata della batteria.
Quando ciò accade, FCM memorizza il messaggio e lo recapita il prima possibile.

Impostazione della priorità di un messaggio (solo Android)

Ci sono due opzioni per assegnare la priorità di recapito ai messaggi downstream: priorità normale e priorità alta. Sebbene il comportamento differisca leggermente tra le piattaforme, la consegna dei messaggi con priorità normale e alta funziona in questo modo:
• Priorità normale. I messaggi con priorità normale vengono recapitati immediatamente quando l’app è in primo piano. Per le app in background, la consegna potrebbe essere ritardata. Per i messaggi meno urgenti, come nuove notifiche e-mail, sincronizzazione dell’interfaccia utente o sincronizzazione dei dati dell’app in background, scegli la priorità di recapito normale.
• Priorità alta. FCM tenta di recapitare immediatamente i messaggi con priorità alta anche se il dispositivo è in modalità Doze. I messaggi ad alta priorità sono per contenuti sensibili al tempo e visibili all’utente.

Frequenza massima dei messaggi

Una notifica può essere inviata al massimo ogni 5 minuti

Limite di testo

Il titolo della notifica deve essere inferiore a 200 caratteri e il corpo del messaggio non può superare i 1000 caratteri.

rc.local

Utilizzare rc.local per eseguire lo script all'avvio

1. Apri il terminale e digita il seguente comando per aprire il file rc.local:

sudo nano /etc/rc.local

2. Nel file rc.local immettere la seguente riga di codice prima della riga “exit 0”:

"/home/pi/venv/bin/python" "/home/pi/myscript.py" &

Qui sostitusci /home/pi/myscript.py con il nome del tuo script con il percorso assoluto e /home/pi/venv/bin/python con il percorso assoluto del python situato nel tuo ambiente virtuale; vedi “creazione ambiente virtuale” in questa pagina.
(Nota che il comando termina con il simbolo “E commerciale” (&). Questo per informare il sistema che il programma che stiamo pianificando è in esecuzione continua, quindi non dovrebbe attendere che il tuo script finisca prima di avviare la sequenza di avvio. Nota che se non aggiungi “&” nel comando, lo script verrà eseguito all’infinito e il tuo Pi non si avvierà mai.)

3. Dopodiché, premi CTRL + O per salvare il file, quindi CTRL + X per chiudere l’editor.

4. Infine, digita  sudo reboot.

Cron jobs

Utilizzare cron per programmare il tuo script

In alternativa, puoi usare cron per pianificare l’esecuzione del tuo script (ricordati di rimuovere “while true” nel tuo script, se presente).

Installa cron eseguendo questo comando dal terminale:

sudo apt install cron

Una volta installato cron, ricordatevi di assicurarvi che sia abilitato e in esecuzione utilizzando il comando systemctl fornito da systemd:

sudo systemctl enable cron

Ora aggiungi un lavoro alla fine del file digitando:

crontab -e

Utilizza la sintassi appropriata  *  *  *  *  * "/home/pi/venv/bin/python" "/home/pi/myscript.py"
È possibile utilizzare lo strumento online per le espressioni di pianificazione cron: https://crontab.guru/

Infine, premi CTRL + O per salvare il file e poi CTRL + X per chiudere l’editor.