Scambio dati tra Android e Arduino tramite Pachube – Articolo 1

Cosa è Pachube: “Pachube is a realtime data infrastructure platform for the Internet of Things, managing millions of datapoints per day from thousands of individuals, organisations & companies around the world. Pachube’s powerful and scalable infrastructure enables you to build ‘Internet of Things’ products and services, and store, share & discover realtime sensor, energy and environment data from objects, devices & buildings around the world.” E’ sicuramente una delle piattaforme per la gestione di dati in realtime più conosciute per la manipolazione di dati per dell’intenet delle cose. Il significato invece delle termine the Internet of Things si basa sul concetto di collegare oggetti di qualsiasi natura ad internet in modo che possano comunicare informazioni, un esempio tipico è sicuramente come delle scarpe possano comunicare le informazioni di velocità, percorso e tempi magari per fare una maratona mondiale rimanendo sul tuo percorso di jogging di tutti i giorni. Pachube mette a disposizione un accesso web il cui fine è lo scambio di informazioni tra dispositivi differenti. In questa serie di articoli vogliamo testare una struttura che ha il fine di trasmettere dati da un dispositivo android verso un dispositivo arduino e viceversa, per fare questo abbiamo a punto bisogno di un punto web in cui i dispositivo recuperano e inviano informazioni, per rendere il test veloce ed economico ho deciso di sfruttare Pachube come punte di connessione tra i due dispositivi, nulla vieta di creare un web service personalizzato e utilizzarlo per lo scambio di dati.

In particolare in tratteremo il collegamento tra un applicativo Android e la struttura di Pachube. Lascio la spiegazione della struttura di Pachube direttamente ai loro tutorial estremamente semplici. I passi che io ho fatto sono :

  1. Creazione di un account gratuito (con delle limitazioni accettabilissime per dei test)
  2. Creazione di un feed

Il feed che ho creato è composto di un unico campo, ma non ci sono grosse limitazioni su il numero di info per feed [codesyntax lang=”xml” lines=”no” blockstate=”collapsed”]

<eeml version="0.5.1" xsi:schemaLocation="http://www.eeml.org/xsd/0.5.1 http://www.eeml.org/xsd/0.5.1/0.5.1.xsd">
?
<environment updated="2011-04-22T12:15:08.512120Z" id="21243" creator="http://www.pachube.com/users/xxxxxx">
<title>A test feed</title>
<feed>http://api.pachube.com/v2/feeds/21243.xml</feed>
<status>live</status>
<description>Test</description>
<private>false</private>
<tag>Test</tag>
<location domain="virtual" exposure="outdoor" disposition="mobile"/>
?
<data id="0">
<tag>Voltaggio</tag>
<current_value at="2011-04-22T12:15:08.512120Z">40</current_value>
<max_value>999.0</max_value>
<min_value>-999.0</min_value>
<unit type="basicSI" symbol="V">Volt</unit>
</data>
</environment>
</eeml>

[/codesyntax] A questo punto dobbiamo scoprire come inviare i dati da arduino a Pachube e viceversa, per questo ho creato una applicazione di test come in figura che verifica ogni 30 secondi il valore presente nel feed e modifica di conseguenza la barra di misurazione, mentre se modificata la barra invia il nuovo valore al feed di Pachube. Segue la parte di codice che serve per recuperare l’informazioni. [codesyntax lang=”java” lines=”no” blockstate=”collapsed”]

	private void callHttpget()
	{
		HttpResponse rp;
		HttpClient hc;
		try
		{
			hc = new DefaultHttpClient();
			String UrlText = "http://api.pachube.com/v2/feeds/21243.xml?key=IL TUO CODICE PACHUBE";

			HttpGet post = new HttpGet(UrlText);
			rp = hc.execute(post);

			String str = EntityUtils.toString(rp.getEntity());

		}
		catch (ClientProtocolException e)
		{
			e.printStackTrace();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}

	}

[/codesyntax] Segue la parte di codice per inviare le informazioni. [codesyntax lang=”java” lines=”no”  blockstate=”collapsed”]

	private void callHttpRequest(String value)
	{
		HttpResponse rp;
		HttpClient hc;
		try
		{
			hc = new DefaultHttpClient();
			String UrlText = "http://api.pachube.com/v2/feeds/21243.xml";

			HttpPut post = new HttpPut(UrlText);

			post.addHeader("X-PachubeApiKey","IL TUO CODICE PACHUBE");

			String TextData ="<?xml version="1.0" encoding="UTF-8" ?>" +
			"<eeml xmlns="http://www.eeml.org/xsd/005">" +
			"<environment creator="Dynamic Devices">  " +
			"<title>A test feed</title> <data id="0">" +
			"<value minValue="-999" maxValue="999">" +	value +
			"</value>  </data>  " +
			"</environment>" +
			"</eeml>";

			StringEntity entity = new StringEntity(TextData, "UTF-8");
			entity.setContentType("application/xml");
			post.setEntity(entity);

		}
		catch (ClientProtocolException e)
		{
			e.printStackTrace();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}

[/codesyntax] Ecco l’esempio dell’applicativo di test : [yframe url=’http://www.youtube.com/watch?v=KjpcthPBUcY’]

1 commento

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *