Ehi, organizzo un workshop!

Una sera, nel letto (fa caldo e addormentarsi è un po’ più difficile anche per me), mi è venuto un flash: “E se organizzassi un workshop per realizzare un progetto con una scheda programmabile e un sensore?”

Gestazione rapida, anzi, rapidissima.

Due indagini su Facebook e su Twitter e ho scoperto che, con mia gioia, c’è stata risposta addirittura con entusiasmo!

A questo punto mi sono organizzato con i materiali e per il posto (è ancora in lavorazione, ma sarà un posto molto Figo!) e Make&Take – Workshop di artigianato digitale è nato.

Quindi:

  • Sabato 28 ottobre 2017 dalle 9 alle 13 a Torino in Corso Vittorio Emanuele II (molto vicino al grattacielo Intesa Sanpaolo), comodo in auto, in bus e in treno. Se venite in elicottero posso informarmi su dove farvi atterrare.
  • Arrivate con il computer portatile, un cavo USB e tanta voglia di imparare
  • Tornate a casa con una scheda programmabile, un sensore di temperatura e un display OLED, assemblati, programmati e perfettamente funzionanti (anche con il vostro portatile e il vostro cavo USB, ovviamente)
  • 170€, comprese le schede e i sensori (e vi lascio anche le indicazioni per comprarle a prezzi moderati, oltre a un codice sconto da un rivenditore italiano)

Per tutte le informazioni e le iscrizioni fate riferimento alla pagina dedicata. Sono solo 10 posti, fossi in voi mi iscriverei di corsa.

Vi aspetto!

Sensore di temperatura WiFi

Nel progetto della domotica fai da me non può mancare un sensore di temperatura, in questo caso con alcune caratteristiche particolari, utili a metterlo in ogni punto della casa senza dover cablare o far passare fili in giro per casa.

Le caratteristiche che sono riuscito ad ottenere sono:

  • Economico
  • WiFi
  • Portatile, quindi a batteria con una durata decente senza dover cambiare pile ogni pochi giorni.
  • Interfacciabile con la mia centralina basata sul Raspberry Pi

La lista della spesa è veramente minima e prevede, purtroppo, lunghe attese, perché tutto in arrivo dalla Cina.

  • WeMos D1 Mini
  • Sensore DHT22 (questo shield non esiste più, quindi dovete ripiegare su DHT12 o SHT30, il codice potrebbe cambiare)
  • Contenitore per 3 pile AA
  • Scatoletta (ho usato delle vecchie scatole di plastica dei nastri di backup LTO che ho trovato a mucchi in un magazzino in ufficio, ma se volete essere veramente pro, potete farvi stampare una scatola 3D da Freelabster)

La scheda WeMos D1 mini è basta su ESP8266, un microcontrollore tipo Arduino, ma con alcune caratteristiche che lo rendono davvero interessante.

Innanzitutto costa poco, con 4€ ci si porta a casa il processore, il modulo per alimentarlo e programmarlo via MicroUSB e tutta l’elettronica necessaria, poi è WiFi, di serie, senza nessun tipo di difficoltà a collegarlo alle reti casalinghe, ha la funzione di deep sleep, durante la quale non è attivo e consuma 0,3mA, questo lo rende perfetto per essere alimentato a batteria; in ultimo, ma non meno importante, si programma tramite l’IDE di Arduino, quindi il tutto è davvero semplice, se si ha già conoscenza della programmazione di Arduino.

Ho scelto la WeMos perché produce anche dei piccoli shields con sensori e altri dispositivi piccoli (relè, display OLED, …). Un po’ di pratica con il saldatore ed è possibile avere il proprio sensore di temperatura che occupa circa 2 cc (sì, è davvero piccolo!)

La parte di assemblaggio hardware è davvero banale: si saldano i pin sulla D1 e si saldano gli altri pin sullo shield, poi si collegano tra di loro. Fatto. Anzi, no, serve una saldatura aggiuntiva che colleghi tra di loro il pin RST e il pin D0 sullo shield con il sensore della temperatura.

img_2232
Saldare D0 a RST (attenzione, che se la piedinatura cambia dovete seguire i nomi dei pin e non la posizione che vedete in foto)

A cosa serve questo collegamento? E’ assolutamente necessario per il ciclo di deep sleep. Quando si impartisce il comando per questa specie di ibernazione, c’è un contatore interno che consuma molto poco e dà il segnale di reset al pin D1 al termine del conteggio, collegando il pin D1 al pin di reset questo sveglierà la scheda che riprenderà il suo lavoro, come appena accesa.

Perché devo saldarlo sullo shield? Perché quando questi due pin sono collegati tra loro è impossibile scrivere il programma nel microcontrollore, quindi quando si deve aggiornare il codice lo shield può essere tolto, così non ci saranno problemi.

L’alimentazione può essere fornita tramite 3 pile stilo AA alcaline o ricaricabili. messe in serie. Se alcaline, la tensione in uscita sarà 1,5×3 = 4,5V, se ricaricabili 1,2×3 = 3,6V (sapevate che le pile ricaricabili sono da 1,2 e non da 1,5?), la scheda funziona a 3,3V e ha un regolatore di tensione che le permette di funzionare anche con i 5V della USB, pertanto fornire un po’ più di 3,3V permetterà al tutto di funzionare adeguatamente.
Ho fatto un po’ di prove è sono giunto alla conclusione che i fili nero e rosso che escono dalla scatolina delle batterie possono essere saldati sulla scheda D1 Mini ai pin 5V (il rosso) e GND (nero). Con 3 pile stilo ricaricabili da 2000mAh sono arrivato a fare più di 6,500 letture (circa 90gg con una lettura ogni 20 minuti).

Dove saldare i cavetti delle batterie, attenzione alla polarità!
Dove saldare i cavetti delle batterie, attenzione alla polarità!

Il codice, che trovate come sempre su GitHub è molto banale e si può riassumere con i seguenti passi

  1. Attiva WiFi (mettete qui la vostra rete e la password, solo reti 2,4GHz)
  2. Attiva la comunicazione con il sensore DHT22
  3. Effettua la lettura (il sensore è lento, ci va un delay per attendere il risultato)
  4. Scrive la lettura chiamando il server web (quello fatto sulla centralina, se non ve lo ricoardate, andate a vedere il post relativo) che la memorizza
  5. Va in ibernazione per 10 minuti (ma potete mettere il tempo che più vi piace) per poi ricominciare dal punto 1

Nel codice, al momento della scrittura del valore sul DB, c’è il parametro della stanza, così, avendo più sensori sparsi per casa, si può avere l’andamento della temperatura in ogni stanza. Ho dovuto faticare un po’ per la creazione del link http per scrivere i dati nel DB.

Scrivere il codice tramite l’arduino IDE è banale, basta seguire la semplicissima guida per abilitare la scheda, scegliere il dispositivo D1 mini (con me ha funzionato quello indicato come “retired”) e usarla esattamente come Arduino. Con il Mac non ci sono riuscito, ho fatto tutto con un PC Windows 10.

Se invece volete creare un qualunque altro sensore che misuri il parametro ad intervalli regolari (umidità, gas, pioggia, acqua nella terra delle piante, allagamento, …) basta sostituire il DHT22 con il relativo componente e studiare come interfacciarlo con l’ESP, solitamente ci sono librerie per ogni tipo di sensore.

Registrare i dati dei sensori in giro per casa

Sempre parlando del mio progetto di domotica fai da me, vi presento oggi le poche righe di codice necessarie per memorizzare i dati dei sensori che spargerò per casa (per la gioia di mia quasi moglie!).

L’obiettivo è rendere disponibile un server web che memorizzi i dati passati con una GET http, così da scrivere il codice dello sketch del sensore per registrare il dato in questo modo:

http://[ip_server]:[porta]/?variabile1=valore1&variabile2=valore2

Questo tipo di chiamate si possono generare molto facilmente con Arduino (a patto che abbia una connessione di rete) o con ESP8266.

Oltre al server che recepisce i dati, serve anche un posto dove memorizzarli, per questo ho installato SQLite sul mio Raspberry, un motore di DB leggero, veloce e semplice da usare con Python. Leggi tutto “Registrare i dati dei sensori in giro per casa”

Lettura istantanea del consumo di corrente

Attenzione! Non sono responsabile per qualunque danno fisico (ustione, folgorazione, ...) o materiale (incendio, corto circuito, ...) possa accadere mentre cercate di riprodurre tutto il progetto o solo in parte! Non ho alcuna sponsorizzazione dai produttori e rivenditori a cui faccio riferimento nel post.

Questo progetto fa parte del più grande lavoro della domotica fai da me ed è stato nominato come “gingillo del giorno” in Digitalia, episodio 324

Prima di partire vorrei sottolineare che questo progetto è un po’ complesso e vi porta ad armeggiare intorno alla 220V di casa, quindi ci va attenzione e servono un po’ di basi di programmazione, impianti elettrici, saldatura. Ho usato componenti vecchiotti, potrebbe essere necessario comprarne di diversi e per questo adattare programmazione e collegamenti, se siete alle prime armi fatevi aiutare, ad esempio, in un FabLab (se non sapete cos’è un FabLab ne abbiamo parlato diffusamente in questa puntata di GeekCookies)

Negli alloggi moderni il contatore della corrente elettrica non è in casa, ma in cantina, se aggiungiamo che gli elettrodomestici moderni consumano parecchio, mi è capitato spesso, causa disattenzione, di dover correre in cantina a tirare su la leva del contatore perché avevo fatto partire lavastoviglie e forno. Quando salta la corrente si spegne anche il router, il PC e una serie di altri dispositivi (ho poi messo vari UPS in giro per casa), insomma, una gran scocciatura.

Un altro utilizzo interessante è accendere i singoli dispositivi che avete in casa per capire esattamente quanto consumano. Ho scoperto che la lavatrice consuma molto, ma solo per metà del ciclo, inoltre consuma di più quando muove lentamente il cestello piuttosto che quando fa la centrifuga. Ho scoperto che i 250W della lampada alogena richiedono un’immediata sostituzione con una a LED e che lavorare con il Mac consuma circa 250W. Spegnere con un interruttore TV, console, BluRay e compagnia quando non li uso mi fa risparmiare 7-8W (fate due conti sull’anno intero) e che ho un consumo “di fondo” (tutto spento, tranne i router, il frigo, il sensore stesso, il mio server) di circa 150W.

Leggi tutto “Lettura istantanea del consumo di corrente”

Videosorveglianza con Raspberry Pi via Telegram

Vi ricordate che qualche tempo fa ho messo su un sistema per la videosorveglianza di casa usando il Raspberry Pi, il programma motion e gestibile da Twitter? Se no, qui potete trovare tutte le informazioni.

Visto che Twitter è una piattaforma che mi è sempre piaciuta appena sopra la sufficienza ho scoperto questa cosa dei bot di Telegram e ho pensato: “perché non cambiare la gestione del sistema?”

Partiamo dall’inizio: cos’è un bot?

Un bot (è il diminutivo di “robot”) è un progamma che, se sollecitato con appositi comandi, compie alcune azioni. La piattaforma di Telegram propone un sistema di bot ben documentato e incredibilmente facile da utilizzare. E, detto tra noi, il fatto che la gestione dei bot sia fatta tramite un bot chiamato TheBotfather la cui icona è questa

The Botfather Telegram

la cosa è ancora più divertente.

Ok, torniamo seri e vediamo come fare il progetto. Per tutta la parte di motion andate a rileggervi i post vecchi, non cambia nulla (soprattutto la prima e seconda parte).

Per creare il bot su Telegram (e poter interagire in un secondo momento) dovete avere un account sulla piattaforma, se non ce l’avete createvelo che è una validissima alternativa gratis e aperta ad Whatsapp. La guida per creare il bot è veramente semplice. Una volta scelto il nome lo create e vi mettete da parte il codice univoco (non va divulgato!) del vostro nuovo amico.

Seguendo le istruzioni della documentazione di Telegram potete assegnare un’icona al vostro amato bot e la lista dei comandi, così da semplificare la gestione del bot e scrivere pochissimo con la tastiera del telefono. Una cosa estremamente comoda dei bot è che possono proporre delle tastiere personalizzate in modo da dare i comandi con un solo tap, con questo nuovo sistema basta un tap per accendere il sistema, spegnerlo o conoscerne lo stato, anche se fa freddo e avete le dita ghiacciate, non è più necessario scrivere strani comandi.

Adesso installate la libreria Python telepot nel vostro sistema, in modo da poter operare con pochissimi comandi e far funzionare come si deve il vostro bot.

Come la volta scorsa, ci sono alcuni file da creare:

  • tvcc.py, il cuore del sistema, con la logica del bot e le funzioni per accendere, spegnere e controllare il sistema (avviato al boot del sistema)
  • avvisa_movimento.py, che vi manda un messaggio quando viene rilevato un movimento (avviato dal sistema motion)
  • invia_foto.py, che vi invia tutte le foto della rilevazione del movimento man mano che vengono generate (avviato dal sistema motion)
  • tvcc.conf, il file di configurazione con tutte le opzioni necessarie per farlo funzionare nel vostro ambiente.

Tutti i sorgenti li trovate nel repository di Github, il codice è abbondantemente commentato in modo che possiate adattarlo in base alle vostre necessità.

Prima di iniziare ricordatevi la lista della spesa:

  • Raspberry Pi Modelli A+, B, B+, B+2 (non va bene lo zero perché non ha il connettore della videocamera)
  • Videocamera IR (per vedere anche al buio)
  • Illuminatore IR (la videocamera non vede al buio, ma vede la luce infrarossa)
  • Una scatola per il Raspberry e la videocamera (inutile dire che deve essere ben ferma, se no tutto il sistema va a pallino)
  • Un alimentatore per il Raspberry
  • Una scheda SD, che senza il Raspberry è inutilizzabile.

Un nuovo podcast

L’esperienza del podcast Geek Cookies fondato qualche mese fa mi è piaciuta parecchio, mi piace ancora e mi dà grandi soddisfazioni. Per questo ho provato a fare un altro podcast in solitaria, sempre di tecnologia, ma con un target leggermente diverso. Vorrei far capire cosa si cela sotto le custodie dei dispositivi che abbiamo attorno durante tutto il giorno. Una specie di “come funziona” orientato a tutto ciò che è tecnologico, con parole semplici, adatto a chi la tecnologia la usa, non sa cosa c’è sotto, ma è curioso.

Pillole di bit è la mia nuova creazione. Sono puntate brevi (15-20 minuti) da incastrare nei vostri aggregatori di podcast, se l’argomento è di interesse.

Come già Geek Cookeis, è un podcast a basso impatto economico, sfrutto tutte risorse gratuite, per questo con alcuni limiti, soprattutto per lo storage dei file. Vedremo tra qualche puntata come andrà.

Videosorveglianza con Raspberry Pi – Parte settima

Per chi si fosse perso le puntate precedenti: Parte prima, Parte seconda, Parte terza, Parte Quarta, Parte quinta, Parte sesta

Ed eccoci qui al cuore del sistema. Perché lasciato per ultimo? Così abbiamo tutti i pezzetti di contorno per farlo funzionare.

Torniamo alle specifiche. Il sistema va controllato via DM, ogni DM un comando, ad ogni comando un’azione, dopo l’esecuzione dell’azione il sistema risponderà con cosa ha fatto. Se il comando non è riconosciuto un DM manderà la lista di tutti i comandi utilizzabili.

Ecco i comandi che ho implementato:

  • motionon: se il sistema non è attivo lo attiva, se è già attivo lo comunica
  • motionoff: se il sistema è attivo lo spegne, se non è attivo lo comunica
  • motionstatus: risponde con lo stato del sistema (attivo o no)
  • click: scatta un’istantanea, come quella oraria, e la twitta
  • cancellatutto: abilita la rimozione di tutti i tweet
  • ippubblico: voglio sapere che indirizzo IP pubblico ha il router

Ecco il codice del file “cerca_dm.py”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#!/usr/bin/env python2.7
import tweepy
import sys
import datetime
import time
import string
import subprocess
import os
import requests
import json
 
# qualche costante
file_di_log = "/home/pi/tweepy/controllo_movimento.log" # file di log del sistema di controllo
file_semaforo_cancella = "/home/pi/tweepy/cancella_tutti_tweet" #file creato per autorizzare la cancellazione dei tweet
utente_dm = "iltuoutente" # utente a cui mandare i DM (magari poi saranno gestibili diversi utenti)
 
# Autenticazione su Twitter
consumer_key = 'xxx'
consumer_secret = 'xxx'
access_token = 'xxx'
access_token_secret = 'xxx'
 
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
 
api = tweepy.API(auth)
 
# apro il file di log in append
log = open (file_di_log, "a")
 
# memorizzo il timestamp attuale (cosi' lo metto nei tweet ed evito il blocco dei doppioni)
ts = time.time()
st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
 
# recupero l'ultimo DM ricevuto
dm_comando = api.direct_messages(count=1)
 
# memorizzo una stringa vuota in ultimo_dm, nel caso in cui non si trovino DM
ultimo_dm = " "
 
# imposto id_ultimo_dm a zero, se non si trovano DM, lo uso per non mandare DM a fine pagina
id_ultimo_dm = 0
 
# memorizzo il testo del tweet recuperato
for directmessage in dm_comando:
    # converto la stringa tutta in minuscolo, per non avere problemi con le iniziali maiuscole dei vari client
    ultimo_dm = directmessage.text.lower()
    id_ultimo_dm = directmessage.id
    luogo_ultimo_dm = directmessage.sender.location
    data_ultimo_dm = directmessage.created_at
    # scrivo il log della richiesta
    log.write(st + " - DM di comando: " + ultimo_dm + " (" + str(id_ultimo_dm) + ") - da " + luogo_ultimo_dm + " \n")
    # elimino il DM
    api.destroy_direct_message(id_ultimo_dm)
    log.write(st + " - cancellato il DM di comando con id " + str(id_ultimo_dm) + " \n")
 
# controllo se il processo 'motion' e' attivo o no
processname = 'motion'
tmp = os.popen("ps -Af").read()
proccount = tmp.count(processname)
 
# l'ultimo DM contiene l'ashtag motionoff? (voglio spegnere il sistema)
if string.find(ultimo_dm, "motionoff") != -1:
    # se il processo 'motion' e' attivo lo uccido e avviso che e' disattivato
    if proccount != 0:
        os.system("pkill motion")
        log.write(st + " - Ucciso motion" + " \n")
        api.send_direct_message(utente_dm,text="Motion disattivato - " + st)
    else:
        api.send_direct_message(utente_dm,text="Motion era gia' disattivato - " + st)
 
# l'ultimo DM contiene l'ashtag motionon? (voglio accendere il sistema)
elif string.find(ultimo_dm, "motionon") != -1:
    # se il processo 'motion' non e' attivo lo avvio e avviso che e' attivato
    if proccount == 0:
        os.system("/home/pi/motion-mmal/motion")
        log.write(st + " - avviato motion \n")
        api.send_direct_message(utente_dm,text="Motion attivato - " + st)
    else:
        api.send_direct_message(utente_dm,text="Motion era gia' attivo - " + st)
 
# l'ultimo DM contiene l'ashtag motionstatus? (voglio sapere se il sistema e' attivo o no)
elif string.find(ultimo_dm, "motionstatus") != -1:
    # se il processo non c'e' twitto che e' disattivato
    if proccount == 0:
        api.send_direct_message(utente_dm,text="Stato motion: NON ATTIVO - " + st)
        log.write(st + " - controllo stato motion: NON attivo \n")
    # se il processo c'e' twitto che e' attivo
    else:
        api.send_direct_message(utente_dm,text="Stato motion: ATTIVO - " + st)
        log.write(st + " - controllo statio motion: attivo \n")
 
# l'ultimo DM contiene il comando cancellatutto? (voglio cancellare tutti i tweet dell'account)
elif string.find(ultimo_dm, "cancellatutto") != -1:
    #creo il file di semaforo
    semaforo = open (file_semaforo_cancella, "a")
    semaforo.write("cancella")
    log.write(st + " - creato il semaforo per la cancellazione\n")
    api.send_direct_message(utente_dm,text="Procedura rimozione tweet impostata, esecuzione entro 1h - " + st)
 
# l'ultimo DM contiene il comando ippubblico (voglio sapere qual e' l'indirizzo IP pubblico)
elif string.find(ultimo_dm, "ippubblico") != -1:
    req = requests.get("http://httpbin.org/ip")
    if req.status_code == 200:
        text = json.loads(req.text)
        ip = text['origin']
 
    api.send_direct_message(utente_dm,text="Indirizzo IP pubblico: " + ip + " - " + st)
    log.write(st + " - IP pubblico di questo momento " + ip + " \n")
 
# l'ultimo DM contiene il comando click (voglio scattare una foto)
elif string.find(ultimo_dm, "click") != -1:
    # se motion e' attivo la videocamera e' impegnata, devo quindi prima spegnerlo
    if proccount != 0:
        os.system("pkill motion")
        log.write(st + " - ucciso motion per foto \n")
        time.sleep(5)
        os.system("raspistill -w 1600 -h 1200 -t 1 -o /home/pi/Pictures/SingoloClick.jpg")
        log.write(st + " - scattata la foto \n")
        time.sleep(15)
        os.system("/home/pi/motion-mmal/motion")
        log.write(st + " - avviato motion dopo foto \n")
    else:
        os.system("raspistill -w 1600 -h 1200 -t 1 -o /home/pi/Pictures/SingoloClick.jpg")
        log.write(st + " - scattata la foto con motion non attivo \n")
 
    api.update_with_media("/home/pi/Pictures/SingoloClick.jpg", utente_dm + " Istantanea del " + st)
    log.write(st + " - mandato tweet con istantanea \n")
    os.system("rm /home/pi/Pictures/SingoloClick.jpg")
    log.write(st + " - rimossa istantanea \n")
 
#se nessun comando e' stato riconosciuto
else:
    if id_ultimo_dm != 0:
        api.send_direct_message(utente_dm,text="Comandi utilizzabili: motionon, motionstatus, motionoff, cancellatutto, ippubblico, click - " + st)
        log.write(st + " - comando non riconosciuto: " + ultimo_dm + " \n")
 
# chiudo il file di log
log.close()

Tutti commenti sono nel codice, la procedura è semplice, cerco nell’ultimo DM ricevuto il comando, se lo trovo eseguo l’azione, rimuovo l’ultimo DM ricevuto per non eseguire continuamente l’ultima azione richiesta. Per ogni azione eseguita viene registrata una riga nel file di log, compresi i dati del DM ricevuto e la posizione geografica del mittente (se abilitata dal client da cui si sta mandando il DM)

Questo programma va eseguito ogni minuto, si deve mettere di nuovo mano al crontab aggiungendo

1
2
#controllo di motion tramite DM di twitter (una volta ogni minuto)
*/1 * * * * python /home/pi/tweepy/cerca_dm.py >/dev/null 2>&1

Attenzione che Twitter ha una frequenza massima di interrogazioni su DM, se dovete fare prove a mano lanciando il programma dalla riga di comando, interrompete il servizio del crontab o commentate quest’ultima riga anteponendo il “#” al comando. Se non lo fate vi troverete bloccati per superamento del limite di interrogazioni.

Concludendo

Ce l’abbiamo fatta! abbiamo un sistema di controllo di una zona fatto completamente da noi, completamente personalizzabile e gestibile da twitter! Ovviamente il codice è un po’ scritto da me, un po’ scopiazzato qua e là per Internet, potrebbero esserci errori e sicuramente potrebbe essere ottimizzato, vale la regola della licenza GNU, viene fornito così com’è e non potrò mai essere ritenuto responsabile di eventuali danni che questo progetto potrebbe arrecarvi.

Ovviamente se avete idee, miglioramenti, correzione di errori, sarò lieto di ascoltarli ed eventualmente implementarli tra le pagine del blog e sul dispositivo che ho a casa.

Altre idee?

Ho pubblicato questa guida per condividerla con chi è alle prime armi con il Raspberry (come me), ma sopratutto perché magari i lettori potrebbero proporre modifiche, aggiunte, nuove funzioni, tutto allo scopo di migliorare il progetto.

Problemi riscontrati ed evoluzioni

Il progetto non è esente da difetti e sicuramente potrebbe avere evoluzioni interessanti, magari ci farò altri post, man mano che mi vengono idee. Ovviamente se avete qualche idea non fatevi problemi a postarla qui sotto nei commenti!

Ecco qui alcuni pensieri che ho fatto

  • Salvare tutti i file in un disco collegato via USB, per non consumare la scheda SD e poter tenere un archivio
  • Fare in modo di avere un server web per poter accedere dall’esterno all’archivio delle immagini
  • Utilizzare il GPIO del Raspberry per attivare un qualche dispositivo esterno in caso di rilevazione di movimento

E qui alcuni problemi che mi sono passati per le mani

  • Pare che la WiFi, dopo che non accedo via SSH per un po’ di tempo, smetta di funzionare per metà, tutto il sistema funziona, ma non riesco più a collegarmici. Non so se è colpa del router, indago
  • La videocamera è eccellente di giorno, ma pessima di notte, serve quella IR con illuminatore apposito (dovrei riuscire a procurarmelo prima delle vacanze)
  • Ci sono ancora troppi falsi movimenti rilevati, devo trovare un modo per filtrarli
  • Il LED rosso della videocamera resta acceso durante lo stato attivo, è da coprire con un pezzo di nastro nero
  • Se va via la corrente ed il vs router è in po’ troppo lento ad avere la connessione è necessario ritardare l’invio del DM di riattivazione al reboot. Comunque ogni tanto lo perdo
  • Qualcosa non torna con il comando “pkill” per ammazzare motion, ogni tanto il processo non viene terminato, pertanto ne parte un altro e così via a catena. Questo riempie RAM, CPU e pianta il sistema che va riavviato. Ci sto lavorando

Ed infine… ecco un banalissimo avatar che ho impostato sul mio account Twitter per il controllo, l’uovo era davvero brutto…

Avatar Motion Twitter