domenica 7 Marzo 2021
Home / Elettronica & GPIO / Rss, WordPress e Gpio le notifiche in stile Raspberry Pi
Notifiche RSS

Rss, WordPress e Gpio le notifiche in stile Raspberry Pi

Ciò che rende speciale il RaspberryPi sono anche le porte GPIO (General Purpose Input/Output) che gli permettono di interagire con il mondo reale (d’altronde la realtà è ciò che percepiamo con i nostri limitati sensori/sensi), quindi è divertente sfruttarle il più possibile, anche perché la Cina ci fornisce tutti i sensi per il nostro micro computer a prezzi veramente alla portata di tutti, il mio negozio preferito è GearBest seguito da AliExpress, ma se ho fretta Amazon è sempre il top.

L’idea di oggi è più che altro un esercizio per provare le comodissime librerie gpiozero e feedparser, in sostanza faremo questo:, leggeremo un feed RSS a nostra scelta, in questo caso opterò per i feed del blog WordPress di RaspberryItaly; analizzeremo i dati dell’ultimo articolo, e in base all’autore facciamo lampeggiare un LED o qualsiasi altra cosa ci venga in mente di fare.

Partiamo dai requisiti Hardware:

  • RaspberryPi, io lo uso con Raspbian Lite
  • LED, valuta se serve una resistenza in serie per limitare la corrente, in base ai dati del LED, io uso sempre LED ad alta luminosità da 3.2-3.4v
  • LED RGB
    LED RGB
    LED RGB
  • Pulsante

 

 

 

Valori LED
Esempio valori LED comprati su eBay

Notifiche RSS Schema

Requisiti Software:

Aggiorniamo:

sudo apt-get update

Installiamo pip per Python3:
Attenzione Python3 e Python2 non sono pienamente compatibili, non confonderli

sudo apt-get install python3-pip

Installiamo feedparser:

pip3 install feedparser

feedparser è uno dei software in grado di leggere i feed RSS ed ATOM. Nota che è pip3 e non pip
Installiamo le librerie gpiozero (già preinstallate su qualche versione di Raspbian, ma dare il comando male non fa):

sudo apt-get install python3-gpiozero

Controlliamo che si siano installate:

pip3 list

Preparazione dello Script:

Creiamo un file notificherss.py e rendiamo eseguibile con

sudo chmod +x notificherss.py

Precisiamo che deve usare Python3

#!/usr/bin/python3

Importiamo il modulo feedparser

import feedparser

Importiamo un LED RGB (red,green,blu) per distinguere gli autori

from gpiozero import RGBLED

Importiamo il LED normale per segnalare l’attività lettura/attesa, uso PWMLED per abilitare la funzione pulse

from gpiozero import PWMLED

Importiamo il pulsante per disabilitare la notifica dopo averla vista

from gpiozero import Button

Impostiamo il pulsante sul PIN GPIO 23

btn_letto = Button(23)

Impostiamo il LED RGB sui pin (rosso:21,verde:20,blu:16,False) False solo nel caso tu avessi il quarto pin collegato ai 3.3v

rgb = RGBLED(21,20,16,False)

Impostiamo il LED normale sul pin 12 e acceso all’avvio dello script

led_attivita = PWMLED(12,initial_value=True)

i LED RGB si usano impostando l’accensione dei tre LED che li compongono (rosso,verde,blu) così da dare i vari colori usando la combinazione di valori compresi tra zero (cioè spento) ed uno (cioè acceso). Per semplificarci la vita incolliamo questa stringa, cosi al posto di scrivere, ad esempio, (1,0,0) basterà scrivere “verde”.

rosso, verde, blu , bianco, giallo, viola, azzurro, nero = (1,0,0), (0,1,0), (0,0,1), (1,1,1), (1,1,0), (1,0,1), (0,1,1), (0,0,0)
while True: #iniziamo un loop infinito
  led_attivita.blink(0.1,0.1) #il led lampeggia per segnalare che sta leggendo i feed
  notizie = feedparser.parse('https://www.raspberryitaly.com/feed') #imposta le variabili con il feed completo
  data = notizie.entries[0].published #la data del feed più recente [0]
  titolo = notizie.entries[0].title
  autore = notizie.entries[0].author
  sommario = notizie.entries[0].summary 
  if notizie.entries[0].id != id: #se l'id univoco del feed più recente è diverso dal precendente prosegue
    if 'Zzed' in autore: #se dentro la variabile autore c'è la parola Zzed allora
      rgb.pulse(on_color=giallo,fade_in_time=1,fade_out_time=2) #il LED RGB pulsa di giallo
    elif 'Gabriele' in autore:
      rgb.pulse(on_color=blu,fade_in_time=1,fade_out_time=2)
    elif 'Ivan' in autore:
      rgb.pulse(on_color=rosso,fade_in_time=1,fade_out_time=2)
    elif 'Bob' in autore:
      rgb.pulse(on_color=verde,fade_in_time=1,fade_out_time=2)
    elif 'Enrico' in autore:
      rgb.pulse(on_color=azzurro,fade_in_time=1,fade_out_time=2)
    id = notizie.entries[0].id # aggiorna la variabile id 
    print('Autore:', autore) #scrive l'autore
    print("id:",id)
    led_attivita.off() 
    btn_letto.wait_for_press() #lampeggia finchè non viene premuto il pulsante
    rgb.off()
    led_attivita.pulse() # il led pulsa per segnalare che è in standby
    sleep(600) #aspetta 600 secondi
  else: 
    led_attivita.pulse()
    sleep(600)

Programmare l’avvio

Personalizzare, salvare e schedulare qb.
Per eseguirlo all’avvio

sudo crontab -e

@reboot /usr/bin/python3 /home/pi/notificherss.py &

Conclusione

Questo è un esempio semplicissimo, in un feed ci sono molte informazioni, aprilo con un browser e vedrai tutti i dati che puoi usare, leggi la documentazione di feedparser e poi espandilo con tutte le modifiche che ti vengono in mente.

Notifiche Rss Rpi Enrico

Spero di esserti stato utile, alla prossima.
Per ogni consiglio scrivici sul forum
Enrico Sartori

Riferimenti utili:

Feed interessanti:

Se vuoi restare aggiornato seguici sui nostri social: Facebook , Twitter, YouTube, Google+, Telegram

A proposito di Enrico Sartori

Tecnico Informatico Windows | Volontario digitale | Technical Editor con mille hobby. eBook/Libro: https://bit.ly/eBookRaspberryPi Email: info@enricosartori.it

Vedi Anche

Bluetooth

Demone Bluetooth Raspberry Pi

Pubblico, per l’utente Basilio de Caro questa guida sulla creazione di un demone Bluetooth, frutto …

Powered by themekiller.com