IOTA: come pubblicare transazioni sul Tangle con il Raspberry Pi

IOTA: come pubblicare transazioni sul Tangle con il Raspberry Pi

IOTA, nata espressamente per supportare le applicazioni di Internet of Things (IoT), è una criptovaluta a cui su questo sito è stato dedicato un ampio spazio. In questo articolo, dal taglio prettamente pratico, vedremo come anche con un semplice Raspberry Pi equipaggiato con un'opportuna libreria Python sia possibile creare ed inserire delle transazioni sul Tangle, l'infrastruttura di IOTA equivalente alla blockchain di Bitcoin.

Introduzione

Lo scopo di questo articolo è quello di mostrare come sia possibile pubblicare sul Tangle di IOTA (una sorta di "libro mastro" equivalente alla blockchain utilizzata da numerose criptovalute), delle transazioni generate da un dispositivo IoT. In altre parole, il lettore sarà in grado, seguendo pochi semplici passi, di implementare un'applicazione di Internet of Things completa e verosimile, pubblicando sul Tangle le misure di temperatura e umidità acquisite da un sensore. Lo stato delle transazioni pubblicate, inizialmente create come "pending" per poi essere promosse allo stato "confirmed", potrà essere monitorato in tempo reale ovunque e tramite un qualunque dispositivo dotato di browser e connessione a internet. IOTA è una criptovaluta che non ha bisogno di presentazioni: di essa ci siamo già occupati ampiamente su Elettronica Open Source con una serie di articoli tematici di introduzione e approfondimento. Ricordiamo soltanto che IOTA riveste un'importanza primaria per il suo target di applicazioni, rivolto proprio al mondo IoT. Tra le sue caratteristiche di rilievo occorre menzionare l'elevata efficienza e scalabilità, oltre alla possibilità di eseguire transazioni di importo molto ridotto (le cosiddette "micro-transazioni", fondamentali per gestire le applicazioni che prevedono l'interazione macchina-macchina, o M2M). L'applicazione che ora descriveremo è molto semplice: richiede una scheda Raspberry Pi 3, un sensore di temperatura e pochi altri componenti passivi. Per la gestione delle transazioni e la loro registrazione sul Tangle IOTA, utilizzeremo invece un'apposita libreria sviluppata per il linguaggio Python, accompagnata dallo script allegato all'articolo. Seguendo i vari passi descritti nell'articolo, il lettore avrà modo di rendersi conto quanto sia facile utilizzare IOTA in un'applicazione di Internet of Things,anche se le finalità del progetto sono esclusivamente didattiche. Particolare attenzione occorre infatti prestare se si intende sviluppare un'applicazione che richieda la memorizzazione delle transazioni per un lungo periodo di tempo (creando quindi dei dati storici da conservare indefinitamente). In questi casi l'applicazione andrà modificata, in particolare la caratteristica di generare e utilizzare esclusivamente transazioni con importo pari a zero. Questo aspetto presenta il vantaggio di non richiedere la disponibilità nel proprio portafoglio (o "wallet"), di moneta IOTA, consentendo a chiunque disponga del materiale occorrente, la realizzazione del progetto. Tuttavia, per ragioni pratiche legate al mantenimento di un elevato grado di efficienza, IOTA elimina dal proprio database (su base temporale non regolare e non prevedibile) tutte le transazioni di importo nullo. Questa operazione, chiamata in gergo "snapshot" ha il compito di contenere al minimo le dimensioni del database (il Tangle). Gli unici nodi della rete IOTA che tengono traccia di tutte le transazioni, indipendentemente dal loro importo, sono i permanode, i quali però sono incentivati a richiedere un compenso per ogni transazione creata.

Schema a blocchi del progetto

Lo schema a blocchi del progetto è visibile in Figura 1. La scheda Raspberry Pi 3 è il cuore dell'applicazione, fornendo buona parte delle componenti sia hardware che software del progetto. Il sensore DHT11, collegato tramite la classica configurazione "1-Wire" (1 pin dati, oltre alle due linee di alimentazione), ha il compito di acquisire periodicamente, su richiesta del Raspberry Pi, le misure di temperatura e umidità ambientali. Uno script Python in esecuzione sul Raspberry Pi interroga ogni minuto (o eventualmente anche con una frequenza inferiore), il sensore DHT11, acquisisce le relative misure e prepara una transazione IOTA che invia tramite connessione internet al sito TheTangle.org. A questo indirizzo è infatti disponibile un servizio che mette a disposizione degli utenti un nodo IOTA pubblico: collegando il proprio wallet (indirizzo IOTA) a tale nodo, risulta così possibile inviare delle transazioni a tutti gli effetti valide, che saranno poi registrate tramite tale servizio sul Tangle IOTA. Come vedremo, TheTangle.org accetta delle richieste formattate secondo lo standard JSON, quindi facilmente gestibili anche su un comune Raspberry Pi. Questa soluzione permette di evitare la creazione sul Raspberry Pi di un nodo completo IOTA, operazione peraltro non possibile in quanto richiederebbe una quantità di memoria RAM (stimabile in alcuni gigabyte) non disponibile sulla piccola scheda embedded.

Figura 1. Schema a blocchi dell'applicazione

Setup hardware

Il materiale occorrente per la realizzazione del progetto è il seguente:

  • scheda Raspberry Pi 3 B/B+ con relativo alimentatore
  • scheda di memoria SD ad alta velocità di lettura/scrittura e capacità di almeno 16 GB
  • sensore di temperatura e umidità DHT11
  • resistenza da 10 kΩ, di bassa potenza
  • piccola breadboard e cavetti jumper

L'assemblaggio delle componenti hardware è immediato, basta infatti fare riferimento alla Figura 2. Sia il sensore DHT11 che la resistenza vanno montati sulla breadboard, realizzando i collegamenti indicati tramite l'utilizzo di cavetti jumper. Si noti come i cavetti rosso e nero facciano capo, rispettivamente, all'alimentazione positiva e alla massa del connettore GPIO del Raspberry Pi, mentre il segnale "dati" del sensore (cavetto blu) sia collegato al GPIO 4. Il secondo pin da destra del sensore è invece non collegato.

Figura 2. Collegamenti necessari per il cablaggio dei componenti hardware

Ovviamente si può utilizzare un altro pin di GPIO, differente dal 4. In tal caso occorre tenere presente il layout dei pin di I/O del connettore, visibile in Figura 3: il numero di GPIO a cui fare riferimento (che andrà, nel caso, modificato anche nello script Python) è visibile nella colonna "BCM GPIO".

Figura 3. Layout e numerazione dei pin sul connettore GPIO del Raspberry Pi 3

Setup software

La prima operazione consiste nell'installazione sulla scheda SD della distribuzione Raspian Stretch (conviene scegliere la versione completa con il desktop e altro software), la cui immagine può essere scaricata dal sito ufficiale Raspberry Foundation [1]. Dopo aver programmato la scheda SD, occorre collegare temporaneamente al Raspberry Pi una tastiera e un monitor, in modo tale da attivare la connessione WiFi (inserendo SSID e password della propria rete) e, preferibilmente, abilitando sia la connessione SSH che VNC. Da questo momento in poi sarà così possibile accedere alla scheda tramite una connessione remota, eliminando la necessità di tastiera e monitor esterni. Per abilitare i servizi SSH e VNC è sufficiente digitare da una shell il comando:


sudo raspi-config

selezionando poi, nell'ordine, le opzioni "5 Interfacing Options" e successivamente "P2 SSH" e "P3 VNC" (Figura 4).

Figura 4. Abilitazione delle funzionalità SSH e VNC

Il passo successivo, come consuetudine dopo ogni installazione di nuove immagini, consiste nell'aggiornamento dei pacchetti della distribuzione, tramite esecuzione da terminale dei seguenti comandi:


sudo apt-get update
sudo apt-get upgrade

Come già anticipato in precedenza, l'applicazione richiede Python, peraltro presente di default nella distribuzione indicata. Nel caso aveste dei dubbi, potete eseguire/verificare l'installazione di Python 2.7 tramite il seguente comando:


sudo apt-get install python2.7-dev

Per comunicare con il Tangle IOTA, occorre installare la libreria Python PyOTA [2] tramite i seguenti comandi impartiti da una finestra terminale:


cd ~/
sudo apt-get install libffi-dev
sudo pip install pyota[ccurl]
git clone https://github.com/iotaledger/iota.lib.py.git

Volendo, si può anche verificare che l'installazione della libreria PyOTA sia andata a buon fine eseguendo l'apposito programma di test (attenzione: l'esecuzione del test può richiedere parecchi minuti):


cd iota.lib.py
python setup.py test

Al termine del test [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2609 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend