Comandiamo una serratura con uno smartwatch e una Raspberry Pi

Gli smartwatch stanno diventando sempre più popolari, grazie al loro prezzo sempre più abbordabile e alla disponibilità di API semplici e complete per gli sviluppatori. Inoltre, sono molto semplici e comodi da utilizzare nella vita di ogni giorno. Con un Raspberry Pi e uno smartwatch Pebble è possibile realizzare un progetto che permette l'apertura a distanza delle porte, in modo semplice e comodo.

Introduzione

Qualche tempo fa è stato pubblicato il progetto Open Sesame il cui scopo era quello di controllare l'apertura delle porte tramite uno smartphone. In questo nuovo progetto, l'autore propone un'applicazione analoga, ma questa volta basata sull'impiego di un Pebble Watch. "Quando ora rientro a casa dal supermercato con le borse della spesa in mano, per aprire la porta mi basta utilizzare il mio orologio. Il mio smartphone può rimanere nel taschino 😀 "

Descrizione

Cominciamo guardando il seguente video, vale più di 1000 parole!

Salteremo i dettagli relativi alla configurazione dell'hardware e del Raspberry Pi, in quanto gli stessi sono già stati descritti in questo progetto. L'aspetto relativo alla sicurezza di questo progetto è stato invece trattato in questo articolo. Come visibile nella figura 1,  l'applicazione installata sul Pebble Watch utilizza la connessione Bluetooth con lo smartphone in modo tale da poter accedere alla rete. Questo aspetto è stato risolto in modo semplice grazie all'SDK per il Pebble disponibile agli sviluppatori.

Figura 1: Layout di funzionamento [Fonte: hackster.io]

Configurazione software

CLOUDPEBBLE IDE è un'ottima piattaforma rivolta allo sviluppo di applicazioni per lo smartwatch Pebble. Anzitutto occorre creare un nuovo progetto e configurarlo opportunamente. Come indicato nell'immagine di figura 2, è necessario specificare la piattaforma target. In questo progetto ho utilizzato sia aplite che basalt.

Figura 2: Set-up [Fonte: hackster.io]

Una volta configurato il progetto, occorre fare un copia/incolla del codice sorgente da questo repository github nei file sorgenti della vostra applicazione. L'applicazione si compone di un menu con due sole opzioni. La prima è quella relativa all'apertura della porta, la seconda è invece relativa alla sua chiusura. Il menu è richiamabile premendo il tasto "UP". Premendo invece il tasto "Select", l'applicazione visualizza lo stato corrente della serratura (Aperta oppure Chiusa). L'applicazione utilizza una connessione WebSocket per accedere al server installato sulla scheda Raspberry Pi. Il codice seguente mostra proprio la connessione WebSocket al server Raspberry Pi.

...
menu.on('select', function(e) { 
    console.log('Selected item #' + e.itemIndex + ' of section #' + e.sectionIndex);
    console.log('The item is titled "' + e.item.title + '"');
    var card = new UI.Card({
      title:'Door Action',
      subtitle: e.item.title + ' operation in progress ...'
    });
    card.show();
    ws = new WebSocket('ws://YOUR-RASPBERRY-PI-IP:1337');
    ws.onopen = function () {
       card.body( 'You are connected to Open Sesame System Server.');
        if(e.itemIndex===0){
          ws.send('22');
          card.subtitle( "Door Opened");
          status = "Open";
        }else{
          ws.send('2');
          card.subtitle( "Door Closed");
          status = "Close";
        }
    };
    ws.onerror = function (error) {
      card.body( 'Sorry, but there\'s some problem with your connection or the server is down.') ;  
    };
  });
  menu.show();
});
...

Conclusioni

E' bello utilizzare diversi tipi di tecnologie per automatizzare la nostra casa. Questo progetto mostra come i dispositivi indossabili possano essere utilizzati in modo molto semplice per controllare delle funzionalità all'interno di una moderna smart home.

Link

Articolo originale: https://www.hackster.io/charifmahmoudi/control-a-door-lock-from-a-smartwatch-99f4cc

Scarica subito una copia gratis

Una risposta

  1. Avatar photo Maurizio 8 Giugno 2016

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend