CITTADINO IMPERFETTO: I migliori articoli del 2018

Come ormai tradizione pubblichiamo una rassegna dei post più gettonati dell’anno appena trascorso.


Titolo Post   Views 2018

  1. Il router wifi va spento durante la notte?

 

7.4k

  2. Problema “Memoria quasi piena” su Samsung Galaxy

 

6.7k

  3. Utilizzare HyperTerminal in WINDOWS 7

 

6.2k

  4. Come vedere la televisione con VLC e una chiavetta USB DVB-T

 

 5.4k

  5. Come fare in casa la Ginger beer

 

 4.2k

  6. [Risolto] Aiuto!!! Non riesco a disinstallare Microsoft Office

 

  4.1k

  7. [RISOLTO] Come trovare l’ICCID della SIM in Windows Mobile 10

 

 4.0k

  8. Testare e riparare le chiavette USB con Check Flash 1.08

 

 3.5k

  9. [Risolto] Installazione Windows 7: “codice errore: 0x80070017”

 

  2.6k

10. Testare e riparare le chiavette USB con Check Flash 1.10

 

  2.5k


Un ringraziamento per averci seguito così numerosi.
Da parte nostra ce la metteremo sempre tutta per postare articoli interessanti.

Buon 2019!!!


Link migliori articoli 2017
Link migliori articoli 2016
Link migliori articoli 2015
Link migliori articoli 2014
Link migliori articoli 2013
Link migliori articoli 2012
Link migliori articoli 2011
Link migliori articoli 2010
Link migliori articoli 2009

[Google – doodle] Buon Anno 2019

Le solite vittime della guerra giusta

Non è passato che un secolo dalla fine della Prima Guerra Mondiale (1914-1918). Qualche celebrazione, ma niente che abbia seriamente scalfito il muro di gomma d’indifferenza delle coscienze, oggi come non mai concentrate solo sul presente. Eppure la Storia avrebbe tra i suoi compiti proprio quello di serbare memoria non solo dei successi e dei traguardi raggiunti, ma soprattutto degli errori compiuti nel passato.

La Storia è quindi principale nemica del Sistema che la combatte con l’arma più efficiente a sua disposizione: l’oblio. Così anche se le piazze rimangono infarcite di statue commemorative e magari una volta l’anno si coglie l’occasione di una vacanza, l’inevitabile sottilmente si compie. L’oblio ha infine la meglio sfruttando l’umana propensione della mente a lenire le ferite cercando di dimenticare i mali passati pure al prezzo di restare all’oscuro di ciò di cui si stati vittima.

Eppure la Storia (la storiografia nel senso più alto del termine) rimane sempre a disposizione degli uomini di buona volontà che aspirano ad emanciparsi dalla schiavitù dell’ignoranza. E’ sufficiente sfogliare una delle sue tante pagine per scorgere attraverso la sapiente luce della conoscenza i meccanismi alla base del funzionamento di questo mondo.

E così la Prima Guerra Mondiale mostra il suo vero volto. Un immane e insensato massacro responsabilità di pochi cinici sulla pelle delle moltitudini. Non una guerra giusta, moralmente accettabile, ma uno strumento di chi ha il potere per legittimarsi e ottenere quel consenso di cui voracemente si alimenta.

Restando nel cortile del nostro paese, sfrondata la retorica dalla risorgimentale volontà di completare l’unità nazionale, dal patriottismo degli interventisti e dall’isolazionismo dei neutralisti, rimane il grosso macigno dell’ignoranza sui fatti dei milioni che realmente poi persero la vita al fronte.

E così ancora una volta la più importante lezione della Storia riguarda chi ha il potere di scatenare una guerra che quasi mai scende in trincea a versare il suo sangue che a morire ci manda proprio quella gente di cui millanta di perseguire gli interessi.

Chi è convinto che la Storia sia roba noiosa che poco o niente ha di che spartire con il presente e meno con il futuro, non ha capito un bel niente.

Se ad esempio si trova il coraggio di trasporre quanto sopra all’attualità dei giorni nostri, si è magari in grado di scoprire qualche altarino. Oggi la guerra dove si spara e si sganciano bombe la si fa nel terzo mondo dove la gente è più avvezza a questo modo di fare che quando qualche anno fa ha provato a lambirci più da vicino non ci abbiamo per niente fatto una bella figura. Qui noi la guerra, che rimane sempre una questione di vile denaro, la si combatte senza esercito che impieghiamo solo nelle cosiddette missioni di pace. Da noi la guerra è commerciale e se magari sfiora la politica rimane sempre relegata a questione di interessi economici.

E mentre una delle idee più nobili scaturite dalle rovine della Seconda Guerra Mondiale è fatalmente in crisi, lontana dalle origini e dai condivisibili ideali, impastoiata negli aspetti legati alla finanza, la nostra guerra è contro i burocrati dell’Unione Europea. Chi ci comanda ci infarcisce le orecchie con la retorica del sovranismo e del populismo (unità nazionale? patriottismo?) e ci vorrebbe sul fronte a combattere la guerra per tutelare i nostri interessi (?). E se sfortuna vorrà che si compirà un massacro, quelli che ci rimetteranno non saranno chi sta sopra, ma (in questo caso) i soldi della povera gente.

E questa quindi una nuova guerra giusta?

La Storia potrebbe rispondere di no, ma sembra che nessuna abbia bisogno dei suoi consigli. Il passato si vorrebbe fosse come quell’acqua che non passa mai due volte sotto lo stesso ponte. Ma per fortuna c’è chi non ne è per niente convinto e tra le coltri della nebbia dell’ignoranza riesce ad intravvedere il vero nemico ovvero quel Sistema che ha interesse solo a tutelare se stesso.

Buone Feste!

Risotto al sapore di cernia

Il risotto è un piatto amoroso che ti riempie di gusto. Ogni boccone di riso portato alla bocca restituisce i sapori che ha raccolto durante la caratteristica cottura. La cipolla del soffritto si nasconde tra i chicchi arricchiti dalla sapidità del brodo. Il pesce viene esaltato dall’amidosa cremina resa dalla sapiente mantecatura finale. Che bel mangiare!


Ingredienti per 3/4 persone:

  • 300g. di riso carnaroli;
  • 200g. di  filetti di cernia;
  • 1 filetto di acciuga;
  • 1 spicchio d’aglio;
  • 1 cipolla bianca;
  • 1 filetto di acciuga;
  • 1 carota;
  • 1 mazzetto di prezzemolo
  • 50g di burro;
  • 1 cucchiaiono di paprica forte;
  • 1 cucchiaino di aglio in polvere;
  • 30g. di farina 00;
  • olio e.v.o.;
  • due cucchiai di passata di pomodoro;
  • 1/2 bicchiere di vino bianco secco;
  • sale e pepe.

Tempi:

    35 minuti circa

Preparazione:

  • Innanzitutto prepariamo il brodo: ad un litro di acqua fredda aggiungiamo 1/2 cipolla, la carota, l’aglio e i rametti del prezzemolo, quindi saliamo, portiamo a bollore e lasciamo cucinare per 15′.
  • In una pentola capace soffriggiamo in una noce di burro e due cucchiai di olio,  la cipolla tagliata a cubetti (grandi come chicchi di riso) e il filetto di acciuga;
  • Senza far imbiondire troppo la cipolla aggiungiamo il riso per farlo tostare per circa un minuto a fuoco medio;
  • Sfumiamo con il vino bianco, quindi aggiungiamo il primo mestolo di brodo filtrato e bollente;
  • Proseguiamo la cottura a fuoco medio/basso, aggiungendo di volta in volta il brodo necessario a coprire, senza sommergere il riso che non va mai mescolato troppo;
  • A metà cottura aggiungere metà della cernia ridotta a tocchetti e la passata di pomodoro;
  • L’altra metà della cernia va ridotta a filetti rettangolari che vanno salati e infarinati con farina, paprica forte e aglio in polvere, quindi fritti in olio e burro e poi tenuti al caldo.
  • Portare quasi a termine la cottura del riso quindi mantecare con un cucchiaio scarso di olio e le foglie del prezzemolo tritato (magari una macinata di pepe), quindi lasciare riposare qualche minuto con il coperchio in modo da arrivare alla giusta consistenza del riso;
  • Impiattare il riso con in cima qualche filetto di cernia fritta. Servire ben caldo.

[ SPOT ] «Mamma ho perso l’aereo» al tempo di Google Assistant

Sono passati quasi trent’anni da quando una mia versione più mocciolosa rimase a bocca aperta di fronte alle imprese del piccolo Kevin McCallister lasciato erroneamente da solo a casa durante le festività natalizie a fronteggiare con il suo ingegno da bambino i ladri cattivi.

Un film divenuto quasi da subito un cult del genere, che fortunatamente la televisione ripropone ogni anno a cavallo di Natale e Capodanno alla stregua di “Una poltrona per due” senza il quale al Natale mancherebbe qualcosa tipo la scintillante punta dell’albero addobbato e/o il calore del bue nel presepe.

I ragazzi di MountView hanno ben pensato di sdoganare il loro Google Assistant al grande pubblico riproponendo alcune scene iconiche del film Mamma ho perso l’aereo interpretate da un più maturo Macaulay Culkin che oggi ha a disposizione le moderne tecnologie per fronteggiare i cattivi senza fare molta fatica. 

In questo caso la pubblicità è così ben fatta e ben pensata da far dimenticare per un attimo di essere spettatori dell’ennesimo strumento di marketing e di godere di essere trasportati per qualche secondo nei ricordi della nostra magica infanzia.

Comunque in concomitanza di questa campagna pubblicitaria e quindi per un tempo limitato (e presumibilmente solo per il mercato anglofono), Google Assistant risponderà così ai seguenti comandi vocali:

  • “Did I forget something?” – farà esclamare al dispositivo il celebre “KEVIN!!!!”
  • “How much do I owe You?” o “It’s me Snakes. I got the Stuff” – farà ricreare il dialogo del film che guarda Kevin, creato appositamente per il film, “Angels with filthy souls”
  • “The Wet Bandits are here” – farà sentire cosa farebbe Kevin in uno dei momenti più iconici del film
  • “I’m the man of the house” – farà rivivere la scena in cui Kevin si mette il dopobarba

 

[Tutorial domotica] Sonoff + Python = punto luce intelligente

La possibilità di incrementare le prestazioni dell’interruttore wifi economico Sonoff della iTead grazie al firmware della Tasmota che, tra l’altro, lo svincolano dall’uso tramite App proprietaria, mi ha fatto venire l’idea di far accendere al Raspberry Pi nella mia stanza un punto luce in maniera automatica e magari intelligente (è la domotica baby!)

  • Livello di difficoltà: medio/basso
  • Costoestremamente ridotto (~10 €)

Ingredienti:

  • Sonoff Basic (acquistabile su Amazon.it)
  • saldatore e cavetti prototipazione
  • conoscenza di Python
  • spina elettrica maschio
  • spina elettrica femmina
  • filo elettrico bipolare q.b.
  • server controllo (es. Raspberry Pi)

Procedimento:

  • Innanzitutto occorre programmare il Sonoff con il firmware Tasmota. Per farlo ci sono diversi metodi, tutti magnificamente descritti nella relativa Wiki. Per conto mio non ho avuto fortuna con l’installazione via OTA: il mio interruttore montava un firmware di fabbrica troppo recente, risultato incompatibile con questa modalità di upload. Scartato il metodo via adattatore USB/TTL (che non trovo più nel cassetto e per il quale avevo trovato quest’ottima guida in italiano) mi sono arrangiato via Arduino Uno (e un saldatore) che ho sfruttato per trasferire il nuovo firmware dal PC al Sonoff, seguendo questa chiarissima guida in italiano. Cmq in caso si può fare affidamento sulla community di smanettoni che potete trovare in questo Forum o in questo canale Discord. Infine per chi proprio non se la sente, consiglio di farsi un giro su Ebay e di acquistare un dispositivo già pronto e funzionante con firmware Tasmota pre-installato.
  • Collegamenti elettrici. Ho utilizzato un cavo bipolare tipo H03VVH2 2×0,75mm, una spina elettrica maschio per il collegamento alla rete elettrica e una spina elettrica femmina per il collegamento al punto luce. Ovviamente la lunghezza dei cavi deve essere predisposta secondo necessità.
    ATTENZIONE CON LA CORRENTE 220V NON SI SCHERZA!!!
  • Il software di controllo. Il firmware Tasmota consente già di programmare (tramite la funzione timer) l’orario di accensione e di spegnimento del carico collegato all’interruttore, ma io voglio qualcosa di più intelligente.
    Voglio che il punto luce si accenda in mia presenza e al verificarsi di precise condizioni. Quindi ho creato uno script in Python (che ho chiamato myTwilight) che gira avviato via crontab sul Raspberry Pi. Lo script completo è disponibile sulla mia pagina Github e fa le seguenti cose:


    • Controlla che il Sonoff sia effettivamente operativo:

      • def pingSonoff(): ##Test ping SonOff
            var = os.popen("ping sonoff -c 1").read()
            l = var.index('received')
            l = l-2
            if var[l] == '1':
                return 'ON'
            else:
                return 'OFF'
        

      Ho assegnato l’hostname ‘sonoff’ al mio interruttore così da non essere costretto, per contattarlo, a ricordare il suo indirizzo IP.


    • Controlla via API l’ora del crepuscolo del giorno preciso (calcolata sulle coordinate geografiche della mia stanza);

      • def tramonto(lat, lng): ##Orario calcolato secondo GMT (senza ora legale/ora solare)
            request = requests.get("http://api.sunrise-sunset.org/json?lat="+lat+"&lng="+lng+"&formatted=0")
            return datetime.strptime(str(request.json()['results']['sunset'][11:16]), '%H:%M')
        

      Le coordinate geografiche della stanza le ho ottenute facilmente via Google Maps,  e la richiesta all’API del sito “sunrise-sunset.org” è gratuito e molto semplice da utilizzare, purtroppo il valore orario restituito è calcolato sull’ora GMT. Ho quindi dovuto calcolare l’offset dell’ora legale con una richiesta ad un’altra API di “worldtimeapi.org”:

      • def oralegale(): ##controllo ora legale
            request = requests.get("http://worldtimeapi.org/api/timezone/Europe/Rome")
            utc_offset = str(request.json()['utc_offset'])
            return int(utc_offset[2])
        

      E quindi l’ora del tramonto risulta essere così determinata (richiamando le suddette funzioni):

      • tramonto = tramonto(lat, lng)
        ora_tramonto = str(int(str(tramonto)[11:13])+oralegale())+':'+str(tramonto)[14:16]
        

    • Controlla la situazione meteo (indice copertura delle nuvole e quindi situazione luminosa);

      • def clima(lat, lng, api_key):
            url = "https://api.darksky.net/forecast/"+api_key+"/"+lat+","+lng+"?units=si&lang=it&exclude=daily,hourly,alerts,minutely"
            request = requests.get(url)
            print "Situazione clima: " + request.json()['currently']['summary']
            cloud = request.json()['currently']['cloudCover'] # controllo indice copertura cielo (da 0 a 1, da sereno a molto coperto)
            if  cloud > 0.50:
                if cloud > 0.75: 
                    return -600 # molto coperto
                else:
                    return -300 # coperto
            else:
                if cloud < 0.25:
                    return 0    # sereno
                else:
                    return 750  # molto sereno
        

      La suddetta funzione si è resa necessaria perché voglio che il punto luce si accenda anticipando l’ora del tramonto di qualche minuto nel caso il cielo risulti essere particolarmente coperto e quindi la stanza sia particolarmente buia, piuttosto che rimandare l’accensione di qualche minuto in caso di cielo sereno. Il sito “darksky.net” mette a disposizione via API (gratuitamente fino al limite di 1000 richieste giornaliere) diversi parametri meteorologici calcolati sulla base delle coordinate geografiche tra le quali l’indice ‘cloudCover’ che da 0 a 1 mostra lo statodella nuvolosità del cielo.


    • Controlla se sono presente nella stanza (quindi controlla se almeno uno dei due pc che solitamente utilizzo risultano accesi);

      • def ping(): ##Check presenza (attraverso ping PC e Laptop)
            var1 = os.popen("ping 192.168.1.124 -c 1").read()
            l1 = var1.index('received')
            l1 = l1-2
            if var1[l1] == '1':
                stato1 = 'OK'
            else:
                stato1 = 'NO'	
            var2 = os.popen("ping 192.168.1.111 -c 1").read()
            l2 = var2.index('received')
            l2 = l2-2
            if var2[l2] == '1':
                stato2 = 'OK'
            else:
                stato2 = 'NO'	
            if stato1 == 'OK' or stato2 == 'OK':
                return 'OK'
            else:
                return 'NO'
        

      Anche in questo caso utilizzo il ping per verificare se uno dei due PC che di solito utilizzo risultano accesi, determinando così l’effettiva mia presenza in stanza.


    • La funzione ‘main’ controlla se tutte le condizioni sono soddisfatte:

      • def main(ora, delay):
            diff = int((max(ora) - min(ora)).total_seconds())
            if ora[1] > ora[0] and diff >= delay:
                if pingSonoff() == 'ON':
                    if ping() == 'OK':
                        print 'Accendo Sonoff'
                        powerOn()
                    else:
                        print 'Sole tramontato, ma non rilevo presenza attiva...'
                else:
                    print 'Sole tramontato, ma Sonoff non operativo...'
            else:
                print 'Ancora troppo presto...'
        

      Ovviamente nel caso in cui non sussistano le condizioni il programma prosegue con questo loop:

      • while count <24:
            print str(count)+' - Check: '+strftime("%d-%m-%Y %H:%M:%S", localtime())
            adesso = datetime.strptime(strftime("%H:%M", gmtime()), '%H:%M')
            ora = [tramonto,adesso]
            delay = clima(lat, lng)
            main(ora, delay)
            print '\n'
            count += 1
            time.sleep(750) #loop ogni 15'
        

      Il programma procede quindi per un numero massimo di 24 volte, a distanza di 15 minuti, a controllare le condizioni impostate. Facendo partire il programma alle 16:00 il numero di loop è sufficiente per coprire i possibili scenari.


    • … e nel caso accende il punto luce eccitando il relé del Sonoff:

      •  
        def powerOn(): ##attivazione Sonoff
            r = requests.get("http://sonoff/cm?cmnd=Power%20ON")
            print(r.content)
            sys.exit()
        
    • Una volta provveduto ad accendere il punto luce lo script Python ha terminato la sua funzione quindi viene terminato.

Considerazioni finali:

  • Con poca spesa e un po’ di ingegno ho centrato il mio obiettivo: avere un interruttore intelligente in grado di accendere un punto luce al verificarsi di determinate condizioni (presenza, orario e luminosità).
  • Una peculiarità del Sonoff Basic è quella di consumare veramente poco (circa 0,70-0,80W o qualcosina in più quando il relè è eccitato), inoltre è possibile ridurne ‘sensibilmente’ i consumi impostando il valore Sleep del firmware Tasmota da 50 a 200 espresso in millisecondi. Inoltre ho spento le funzionalità MQTT che di fatto non utilizzo (tramite il comando PowerRetain)..
  • Sempre via console ho disattivato l’accensione del led presente sul Sonoff (comando LedPower e LedState) che quindi ora lampeggia brevemente solo al momento in cui si connette alla rete elettrica segnalando la ricerca della connessione Wifi.
  • La presenza del bottoncino sulla parte alta della copertura di plastica del Sonoff mi consente di accendere e di spegnere manualmente il punto luce.
  • Una prossima versione del programma di controllo, a cui sto già pensando, prevede di modificare il rilevamento di presenza integrando funzionalità via bluetooth (in questo caso andrei a rilevare o meno la connessione con il mio smartphone).
  • Ho già pensato/realizzato un’integrazione con il client Telegram che è già in esecuzione sul mio Raspberry Pi così da ricevere comunicazioni sul funzionamento del Sonoff.
  • Lo script Python completo è disponibile sulla mia pagina Github insieme agli altri progetti.
  • Ho già ordinato un Sonoff Dual (quindi in grado di comandare due uscite) da collegare alla tapparella motorizzata che si abbasserà e si alzerà a seconda delle condizioni da me impostate…

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