Arduino: Domotica e Antifurto con Controllo Remoto e Notifica SMS Tramite Google Calendar

La possibilità di controllare Arduino da remoto e una delle applicazioni sulla quale ho maggiore interessa. Trovo che Arduino abbia una forte predisposizione alla domotica OpenSource o FaiDaTe ed è per questo motivo che cerco di scrivere degli Sketch orientati sull’aspetto di controllo degli attuatori da remoto.

Se ci inseriamo anche la possibilità di inviare allarmi o notifiche via email o via SMS senza dove per forza comprare un GSM Shield e senza costi aggiuntivi la cosa diventa ancor più allettante e aumenta di molto la tipologia di utilizzo di Arduino.

Rimanendo in ambiente domotica potremmo effettuare un allarme che avvisa con un SMS all’accadere di un determinato evento.

Questo esempio è quello che andrò a spiegare.

Come dicevo in precedenza, l’idea di avere da Arduino delle notifiche via SMS rapidi e veloci mi era sempre piaciuta. Il problema diventava l’acquisto di un GSM Shield. Ero arrivato al punto di smontare un vecchio Nokia 3210 per integrarlo con Arduino … capiraiii :| … come se fosse una cosa semplice e banale, come direbbero gli Afterhours :)

Lasciato alle spalle il progetto implementazione Nokia 3210 e Arduino mi stavo rassegnando ad utilizzare solo le notifiche via email, che dal mio punto di vista non sono il massimo della rapidità dato che con il mio smartphone faccio un controllo ogni ora e non ho assolutamente voglia di lasciare la connessione UMTS sempre attiva.

Un bel giorno mi venne in mente che il Signor Google mette a disposizione un servizio di notifica via SMS per gli eventi aggiunti sul proprio calendario condiviso. Ero arrivato alla soluzione … dovevo utilizzare Google Calendar

Il problema adesso diveniva il capire come far inserire l’evento di Arduino dentro Google Calendar e qui mi è venuto ad aiutare SalisNet.eu – Aggiungere un evento a Google Calendar che ha scritto un bell’articolo sulla possibilità si inserire eventi tramite un form HTML e PHP … era proprio quello che stavo cercando!!!

Fatti un idea di cosa può fare il progetto

Vedi l’articolo Go Arduino!!!

Dona 1.99 Euro per scaricare il progetto completo

A donazione effettuata una email con le informazioni e il link per scaricare il progetto ti sarà inviata all'indirizzo di posta che hai utilizzato su PayPal per fare la donazione

Iniziamo con la spiegazione pratica e i codici.

Di cosa abbiamo bisogno:

  • Buona conoscenza di PHP!!!
  • Server WEB (Apache e PHP) MySQL al momento non ci interessa, può essere utile per successive applicazioni.
  • 2 Account di Google o l’iscrizione a GoogleAPPS con 2 account di nostra proprietà.
  • Saper utilizzare Google Calendar ed aver attivato le notifiche di Google Calendar per il proprio cellulare.
  • Arduino + Ethernet Shield
  • Interruttore magnetico o altro tipo di attuatore, sensori e altri componenti elettrici vedi (Arduino con controllo remoto via HTTP)

Il codice di Arduino:

Descrizione pratica: Arduino rimane in ascolto di una stringa http che abbia come parte finale ATT=1 quando questo evento si verifica,  viene attivato “l’antifurto”. Con “antifurto” attivo, se si verifica un determinato evento sull’interruttore magnetico o qualunque altro attuatore, Arduino invia un GET con tutti i parametri ad una pagina PHP che elabora la richiesta.

Dona 1.99 Euro per scaricare il progetto completo

A donazione effettuata una email con le informazioni e il link per scaricare il progetto ti sarà inviata all'indirizzo di posta che hai utilizzato su PayPal per fare la donazione

Perché? Semplicemente perché non ritengo giusto che il mio codice venga utilizzato da terzi per lucrare, facendo un semplice copia e incolla, mentre il sottoscritto ha dovuto impiegarci tempo, studio, know-how e fatica!!!
Se ciò non ti sembra giusto sei liberissimo di prendere visione del codice reso disponibile e studiarlo! ;)

Impostare Google Calendar:

Inanzi tutto dobbiamo predisporre di 2 Account di Google o se utilizziamo GoogleAPPS dobbiamo possedere 2 account che possiamo gestire in piena libertà.

L’account principale è quello dove andremo ad attivare le notifiche con SMS. Per farlo andate sulle Impostazioni Calendar.

Una volta attivate sempre dalle impostazioni abilitiamo la notifica via SMS degli Inviti agli Eventi. Per farlo, sempre dalle impostazioni andate su Calendari e cliccate su Notifiche del vostro calendario predefinito.

A questo punto l’account principale è pronto.

L’account secondario è quello con cui invieremo gli inviti ai nuovi eventi.

Per farlo è necessario condividere il nostro calendario con l’account principale, questa operazione può essere fatta dalle Impostazioni Calendar.

Quando create la condivisione del calendario con l’account principale consiglio di abilitare i permessi di modifica degli eventi.

Una volta accettato l’invito della condivisione tra l’account principale e quello secondario siamo pronti per configurare i file PHP.

La parte in PHP:

Come dicevo prima, grazie ad un articolo letto su SalisNet.eu sono riuscito ad inserire i nuovi eventi su GoogleCalendar senza per forza dover accedere tramite browser a Gcal. L’articolo sopra riportato spiega come inserire un nuovo evento su Gcal sutilizzando semplicemente un Form in HTML.

Presi i file necessari messi a disposizione da SalisNet.eu ho dovuto apportare alcune modifiche fondamentali al funzionamento dell’invio dei dati a Google Calendar. Questi sotto riportati sono i file in PHP di cui necessitiamo con la descrizione delle modifiche da fare.

pagina-che-ascolta.php

Il codice che segue deve essere inserito in un file nominato pagina-che-ascolta.php cambiate pure nome ma ricordate di modificare anche lo SKETCH di Arduino quando viene inviato il GET.

Descrizione: Questo file controlla se alla pagina viene inviato un GET in caso affermativo controlla se la variabile Cicli=1 questo controllo è fondamentale per evitare di inviare la notifica ogni volta che il loop viene lavorato. A questo punto viene inviato il report tramite il file GoogleCalendarWrappeNotifier.php che spieghero successivamente.

In caso non ci sia un GET che fa richiesta della pagina, aprendo questa con un browser web abbiamo la possibilità di ATTIVARE o DISATTIVARE le notifiche con l’utilizzo di un FORM HTML ricordate di modificare l’ACTION del form indicando l’indirizzo IP di Arduino.

Dona 1.99 Euro per scaricare il progetto completo

A donazione effettuata una email con le informazioni e il link per scaricare il progetto ti sarà inviata all'indirizzo di posta che hai utilizzato su PayPal per fare la donazione

Perché? Semplicemente perché non ritengo giusto che il mio codice venga utilizzato da terzi per lucrare, facendo un semplice copia e incolla, mentre il sottoscritto ha dovuto impiegarci tempo, studio, know-how e fatica!!!
Se ciò non ti sembra giusto, sei liberissimo di prendere visione del codice reso disponibile e studiarlo! ;)

GoogleCalendarWrappeNotifier.php

Per utilizzare questo sistema abbiamo bisogno di 2 classi. La prima è questa che segue, alla quale ho apportato delle modifiche fondamentali all’utilizzo delle notifiche con Arduino.

Questo file deve essere nominato GoogleCalendarWrappeNotifier.php

Attenzione alla Riga 35, dovete modificare il valore tra virgolette, inserendo l’indirizzo email del vostro account primario, quello dove avete attivato le notifiche via SMS quando venite invitati ad un nuovo evento.

MyCurl.php

L’ultima classe da utilizzare è MyCurl.php la potete scaricare da SalisNet.eu modificando l’estensione del file da TXT a PHP.

Attenzione: per far funzionare questa classe sul server PHP deve essere attiva l’estensione php_curl.

Conclusioni:

Per concludere, con qualche conoscenza in PHP ci possiamo sbizzarrire per l’invio di notifiche via email o via SMS se il sensore di movimento percepisce una variazione ambientale, se la temperatura supera una certa soglia, se la luminosità della stanza varia o se qualunque attuatore cambia di stato.

Per far questo basta modificare il GET di Arduino e il file pagina-che-ascolta.php.

Screenshot del mio smartphone per il controllo remoto di Arduino

Potremmo anche agganciare un DataBase in MySQL per registrare gli eventi e avere delle tabelle che ci permetto di fare operazioni dinamiche in base ai valori inviati dal GET di Arduino.

Per la precisione con MySQL possiamo registrare l’ultimo stato di Arduino, dato che il povero Arduino cambia stato in base alla stringa http che gli arriva. Mentre se avessimo un DB potremmo registrare l’ultimo stato di Arduino.

Qui a sinistra uno screenshot della pagina web per il controllo remoto di Arduino.

Questo è stato possibile grazie all’utilizzo di un database MySQL. E’ possibile farlo anche con un file di testo, ma risulta complicato avere uno storico delle variazioni di stato di Arduino. La pagina-che-ascolta.php oltre a controllare la variazione di stato per l’invio delle notifiche può “parsare” i dati provenienti da Arduino tramite GET ed eseguire un INSERT INTO dentro il database MySQL. Una nuova pagina PHP legge i dati recuperandoli da MySQL ed ecco fatta la pagina web per il  controllo remoto di Arduino, come potete vedere qui a fianco.

Comunque le applicazioni sono una moltitudine, dalla possibilità di utilizzare dei JavaScript a quella di implementare le funzioni della pagina-che-ascolta.php … c’è da sbizzarrirsi ;)

Reference:

Il Forum di Arduino ARDUINO Forum in particolare il Topic da me aperto Inviare dati a PHP e ricevere comandi via HTTP in un unica sessione ringraziando lesto e Marco Benini per l’aiuto.

Le classi PHP originali e NON modificate (quindi INUTILIZZABILI per questo progetto) per l’inserimento di Eventi in Google Calendar le potete reperire a questo indirizzo SalisNet.eu – Aggiungere un evento a Google Calendar.

La guida utilizzata per le modifiche al file GoogleCalendarWrappeNotifier.php è quella ufficiale che fornisce GoogleCODE e la potete reperire al seguente link se volete aggiungere opzioni alle vostre notifiche Google Data Protocol – Common Elements: “Kinds”.

Un po’ di consulenza PHP che non fa mai male, PHP: Hypertext Preprocessor.

Come sempre rimango a disposizione per commenti, chiarimenti, informazioni, perplessità, modifiche da voi apportate, problemi o errori.

Dona 1.99 Euro per scaricare il progetto completo

A donazione effettuata una email con le informazioni e il link per scaricare il progetto ti sarà inviata all'indirizzo di posta che hai utilizzato su PayPal per fare la donazione

5 Comments

  1. Ciao,
    sono poco pratico di arduino visto che da poco mi interesso ala cosa che devo dire ha notevoli potenzialità. putroppo la poco conoscenza della materia mi porta ad essere impreparato a cosa per altri scontate.
    solo una cosa ti chiedo, le parti in PHP dove vanno messe?
    grazie e complimenti per gli ottimi progetti!
    Damiano

    Reply
    • Le devi mettere su di un web server php tipo aruba o qualsiasi provider ti venga in mente…puoi anche farlo tu il web server installando apache su un qualsiasi computer nella rete in cui si trova arduino e capace di navigare.

      Reply
  2. questo progetto richiede un computer acceso.hai realizzato un progetto per comandare e ricevere segnai su smartphone senza pc ? Complimenti comunque per la precisione delle tue descrizioni dei progetti

    Reply

Lascia un Commento.

Prima di pubblicare, dimostra di non essere un Spam Robot.

Scrivi la parola: rugby