Raspberry Pi – Come spegnere (tutti) i LED

PROBLEMA

Possedendo un Raspberry Pi (modello B+) che rimane acceso in continuazione e ahimè posizionato in camera da letto, allo scopo di diminuire il disturbo luminoso notturno e il consumo di corrente, mi sono chiesto se era possibile spegnere tutti i led del dispositivo, sia i due frontali, quello rosso (PWR – power) e quello verde (ACTSD card) che i due posteriori, quello verde (LNKEthernet) e quello giallo (100 – Ethernet).

SOLUZIONE

1 – Collegandomi via SSH al Raspberry Pi ho dato i seguenti due comandi con i quali mi sono occupato di spegnere i due led frontali:

sudo -s

echo 0 >/sys/class/leds/led0/brightness #Spegne led PWR

echo 0 >/sys/class/leds/led1/brightness #Spegne led ACT

(ovviamente per accendere i led occorrerà sostituire la parte iniziale del comando con “echo 1”)

2 – Per quanto riguarda lo spegnimento dei due led posti sul connettore RJ45 è un’altro paio di maniche, per fortuna ho trovato in rete questo programmino amatoriale (llctl) che si è occupato ella faccenda.

Una volta scaricato e trasferito sul Raspberry pi, procedere con i seguenti comandi:

tar xf llctl.tgz

make

sudo ./llctl f0 l0 d0

(per riaccendere i led modificare i parametri finali con “f1 l1 d1”)


Ho quindi creato il seguente script per schedulare con CRONTAB lo spegnimento dei led ad ogni avvio del Raspberry Pi:

ledOFF.sh

echo spengo led
sudo -s << SCRIPT
echo 0 >/sys/class/leds/led0/brightness #Spegne led PWR
echo 0 >/sys/class/leds/led1/brightness #Spegne led ACT
./leds/llctl f0 l0 d0
tvservice --off
SCRIPT

P.S.:

  • Mi è sembrato di capire che la suddetta procedura funziona anche con gli altri modelli di Raspberry Pi;
  • Nello script ho aggiunto il comando tvservice –off per spegnere l’HDMI (che non uso).

 

[Hack] Raspberry Pi email print server

Problema: Ho la necessita di stampare e/o far stampare documenti quando sono fuori casa. Purtroppo ho l’abitudine di tenere spenta la stampante sulla scrivania e non ho modo di accenderla da remoto. La tempistica di stampa non è importante, non mi importa quando i documenti saranno stampati, ma che i documenti vengano effettivamente stampati.

Soluzione: L’idea è di inviare i documenti da stampare via email a una casella appositamente creata per lo scopo. Il Raspberry Pi (serverino che fa tanti altri lavori ed è quindi sempre acceso) provvederà periodicamente a controllare la posta (diciamo ogni 20 minuti durante la giornata), a salvare gli allegati su una chiavetta USB e a stamparli quando la stampante risulterà effettivamente disponibile.

Ingredienti:
– Raspberry Pi (nel mio caso un model B+);
– pendrive USB;
– account email ad hoc;
– python;
– libreria imaplib;
– stampante.

Procedimento: Continua a leggere

Il mio script python per scaricare automaticamente via Raspberry i sottotitoli che mi interessano da Subspedia

Da grande estimatore delle serie tv made USA mi trovo spesso a reperire le puntate dei miei telefilm preferiti via .torrent (della cosa si occupa egregiamente il mio Raspberry Pi B+ via Transmission, il tutto automaticamente grazie ai feed RSS di Karmorra che vengono macinati da Flexget), e per quanto riguarda i sottotitoli faccio riferimento alle diverse piattaforme (ItaSA, Subspedia, Subfactory, The Legion Sub e Traduttori Anonimi) che fanno tutte più che egregiamente e gratuitamente il lavoro di fornire agli appassionato dei sottotitoli di qualità.telefilm-awards

Volendo automatizzare anche la ricerca dei sottotitoli in maniera tale da ritrovarmi la mia puntata bell’è pronta mi sono armato di pazienza e ho creato uno script in python con il quale sfruttando principalmente la libreria Beautifulsoup per il parsing della home page di Subspedia, il mio Raspberry Pi va a scaricare il sottotitolo che mi occorre non appena viene messo a disposizione dalla crew di traduttori. Non contento il valente tuttofare Raspberry Pi mi comunica via Telegram dell’avvenuto ritrovamento. Lo script ‘gira’ automaticamente ogni 30 minuti ed è in grado di evitare di riprocessare le puntate già trattate.

Ecco come ho realizzato lo script…

senzanomeInnanzitutto scorrendo il codice sorgente della home page di Subspedia, mi sono accorto della facilità con cui potevo realizzare la ‘chiamata’ al download del sottotitolo della puntata di mio interesse. Ovviamente chiedo scusa al webmaster di Subspedia se la mia curiosità non era cosa gradita. Dal canto mio lo ringrazio dal profondo del cuore per come ha realizzato l’intera piattaforma che è all’altezza dell’ottimo servizio di tutti coloro che dedicano tempo e fatica per fare felici tutti noi.senzanome

Comunque procedendo nell’analisi del sito ho visto che riguardo ad ogni sottotitolo pubblicato nella home page è presente una chiamata a uno script che si occupa dell’operazione di download:

istantanea_2017-01-15_23-14-07

istantanea_2017-01-15_23-14-27

La prima operazione è identificare le puntate presenti sul mio dispositivo in maniera tale da fornire allo script ciò che stiamo cercando… In pratica visto che Transmission salva le puntate in una directory con il nome della serie mi basta creare leggere il contenuto del dispositivo di archiviazione per dare a python ciò che deve cercare.

In realtà a questo punto c’è una precisazione che devo fare: mi sono accorto che alcune serie tv vengono salvate con un nome da Transmission e indicate da Subspedia con un altro ( si tratta di piccole differenze, ma per noi sostanziali), quindi ho risolto il problema con un file esterno (che ho chiamato except) in cui elenco queste eccezioni e faccio agire lo script di conseguenza.

Ad esempio la serie che si trova nella directory “The Librarians Us” sarà cercata nel sito di Subspedia come “The Librarians”:istantanea_2017-01-15_23-29-04

opengraph-icon-200x200Per leggere adeguatamente la pagina di Subspedia mi sono affidato alla potente libreria BeautifulSoup. Si è trattato di isolare l’oggetto che ci interessa e quindi ricavare i parametri che occorrono (link, nome della serie, stagione e numero della puntata) per costruire l’url a cui il sito di Sbspedia risponde facendo partire il download dei sottotitolo che ci occorre.

Una volta scaricato il sottotitolo, provvedo a rinominare la directory che contiene la puntata (in maniera da rendere più visibile il fatto che è disponibile il sottotitolo ed evitare che lo script la rilavori successivamente), prendo nota dell’operazione effettuata in un file di log per un successivo controllo e invio un avviso via Telegram.

Ed ecco il risultato:istantanea_2017-01-15_23-40-51

senzanome

#!/usr/bin/python
'''
Programma per scarico sottotitoli da Subspedia
ver. 1.2 (13/01/17)
By Zirconet - 07-01-2017
'''

import subprocess
import time
import os, sys
import urllib
import requests
from bs4 import BeautifulSoup

url = "http://www.subspedia.tv/index.php"
r = requests.get(url)
soup = BeautifulSoup(r.content, "lxml")
g_data = soup.find_all("table", {"class": "subHomeContainer"})

path = '/mnt/usb/0tv/'
subdirectories =  os.listdir(path)

for item in subdirectories:
    seriedacercare = item
    dirname = seriedacercare

    f = open('/mnt/usb/except','r')
    xxx = [x for x in f.readlines()]  
    f.close()
    for x in xxx:
     eccept = x.split(";")
     if eccept[0] == seriedacercare:
        seriedacercare = eccept[1]
   
    print seriedacercare+" --> X" 
    aList = []

    for item in g_data:
        links = item.contents[1].find_all("a", text=seriedacercare)
	
        for link in links:
                xxx = item.contents[3].find_all("a", href=True)
                for link in xxx:
                        trovo = link["href"]
                        aList.append(trovo);
	        
                str0 = aList [0]
                str1 = str0.replace('javascript:downloadSub("', '')
                str2 = str1.replace(');','')
                str = str2.replace('"','')
                data = str.split(',')

		filename = data[0].split('/')
                nomefile = path+dirname+'/'+filename[1]
		print nomefile
                
                sito = "http://www.subspedia.tv/scaricaSub.php?path="
                url = sito+data[0]+'&serie='+data[1]+'&stagione='+data[2]+'&numero='+data[3]

                myfile = urllib.URLopener()
                myfile.retrieve(url, nomefile)
		
		os.rename((path+dirname),(path+"0subbed "+seriedacercare))

		t = time.localtime()
                timestamp = time.strftime('%d-%b-%Y %H:%M', t)
                log = timestamp+' --> '+seriedacercare+'\n'
                out_file=open("/var/log/mySub.log", "a")
                out_file.write(log)
                out_file.close()  

		messaggio = "Trovato nuovo sottotitolo per "+seriedacercare
		subprocess.Popen(["/mnt/usb/telegram.sh", messaggio]) 

Il Raspberry Pi sarà in vendita a fine febbraio

Se siete anche voi tra quelli che attendono con ansia l’inizio della commercializzazione della nuova Arm Box denominata  Raspberry Pi ci sono buone notizie: la commercializzazione del PC grande come un mazzo di carte  inizierà dalla fine di febbraio con prezzi a partire da $25.

Il Raspberry Pi è una semplice scheda su cui è montata una CPU ARM 700MHz e 128/256MB di RAM, il che è più o meno assimilabile ad una vasta percentuale di smartphone attuali. Il comparto I/O prevede un jack audio, RCA video (per connetterlo alla TV), HDMI (per connetterlo ai monitor moderni), USB 2.0, microUSB (per l’alimentazione), Ethernet e lettore SD Card.

Interessantissimi i prezzi: la versione da 128MB di Ram senza porta Ethernet sarà in vendita a $25, mentre quella equipaggiata con 256MB, 2 porte USB e una porta Ethernet a $35 (ai prezzi vanno aggiunte le tasse e le spese di spedizione dal Regno Unito). Inizialmente saranno messi a disposizione circa 10.000 pezzi.

%d blogger hanno fatto clic su Mi Piace per questo: