Escolar Documentos
Profissional Documentos
Cultura Documentos
Projeto Final
Projeto Final
Autores:
Agradecimentos
Índice
Introdução ......................................................................................................................... 6
Estado de arte.................................................................................................................... 7
Socket ..................................................................................................................... 17
Armazenamento interno de dados num ficheiro local e leitura de dados a partir desse
ficheiro ........................................................................................................................ 28
Conclusão ....................................................................................................................... 35
Bibliografia ..................................................................................................................... 36
3
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Índice de ilustrações
Figura 1 - Diferentes aplicações da IoT(Gubbi, J., Buyya, R., Marusic, S., & Palaniswami,
M., 2013) ........................................................................................................................ 10
Figura 2 - Visão geral do esquema de armazenamento do Android............................... 16
Figura 3 - Funcionamento geral das conexões entre sockets ......................................... 18
Figura 4 - Comunicação entre Socket, sobre o protocolo TCP ...................................... 20
Figura 5 - Ilustração do problema a resolver .................................................................. 21
Figura 6 - Algoritmo que representa a solução do problema ......................................... 22
Figura 7 - Definição do visualizador de texto para exibição dos dados do acelerómetro
........................................................................................................................................ 25
Figura 8 - Instanciação do visualizador de texto ............................................................ 26
Figura 9 - Instanciação da data atual .............................................................................. 26
Figura 10 - Instanciação dos sensores ............................................................................ 26
Figura 11 - Instanciação do acelerómetro....................................................................... 27
Figura 12 - Mudança dos valores dos sensores .............................................................. 27
Figura 13 - Armazenamento de dados num ficheiro local interno ................................. 28
Figura 14 - Localização do ficheiro no dispositivo ........................................................ 28
Figura 15 - Obtenção dos valores do acelerómetro para armazenamento ...................... 28
Figura 16 - Leitura da primeira linha ............................................................................. 29
Figura 17 – Eliminação da primeira linha ...................................................................... 29
Figura 18 - Localização do ficheiro................................................................................ 31
Figura 19 - Fila de dados ................................................................................................ 31
Figura 20 - Classe "Cliente" ........................................................................................... 33
Figura 21 - Envio de dados ............................................................................................. 33
Figura 22 - Receção de dados ......................................................................................... 34
4
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Índice de tabelas
5
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Introdução
Para além disso, é um projeto com uma extrema importância, porque nos nossos
dias a Internet of Things está também a ter uma popularidade crescente devido ao facto
de ser uma tecnologia que permite interligar diversos sensores e que, por seu lado, permite
também ter um grande reconhecimento com base nas aplicações que tem no dia-a-dia.
Este trabalho, por sua vez, pode trazer uma grande contribuição teórica para o
desenvolvimento de outros projetos, ou seja, permite ser o percursor para outros projetos
que se possam a vir ser desenvolvidos nesta área científica.
6
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
A Internet das Coisas teve o seu primórdio em 1999 quando Kevin Ashton, numa
palestra, apresentou a ideia de um novo sistema chamado de RFID (identificação por
radiofrequência); em 2004 a HP iniciou testes com a tecnologia de identificação para
rastrear produtos na cadeia produtiva, tornando possível a conexão entre máquinas e
objetos do mundo quotidiano ao mundo digital através da internet.
7
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Embora o termo Internet of Things seja, agora, cada vez mais usado, não há uma
definição ou compreensão comum hoje sobre o que a IoT realmente engloba. As origens
do termo datam de mais de 15 anos e foram atribuídas ao trabalho dos Laboratórios de
Auto-ID do Instituto de Tecnologia de Massachusetts (MIT) sobre infraestruturas de
identificação por radiofrequência (RFID) em rede (Atzori et al. 2010; Mattern e
Floerkemeier 2010). Desde então, as visões para a Internet das Coisas foram
desenvolvidas e estendidas além do corpo das tecnologias RFID. A União Internacional
de Telecomunicações (UIT), por exemplo, agora define a Internet das Coisas como "uma
infraestrutura global para a Sociedade da Informação, permitindo serviços avançados ao
interligar coisas (físicas e virtuais) com base em tecnologias de informação e
comunicação interoperáveis existentes e em desenvolvimento". '(UIT, 2012).
8
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Conforme identificado por Atzori (L. Atzori, A. Iera, G. Morabito, The Internet
of Things: A survey, Comput Netw. 54 (2010) 2787–2805.), a Internet das Coisas pode
ser interpretada em três paradigmas - orientado à Internet (middleware), orientado a coisas
9
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
O presente projeto diz respeito a dois dos três paradigmas descritos acima, são
eles o paradigma orientado a coisas visto que são adquiridos dados de sensores de um
smartphone. O outro paradigma é o orientado à internet (middleware), sendo os dados
adquiridos enviados para um socket via internet, apesar de nesta parte não existir um
tratamento de dados específico.
Figura 1 - Diferentes aplicações da IoT(Gubbi, J., Buyya, R., Marusic, S., & Palaniswami, M., 2013)
Elementos IoT
10
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
11
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
devem ser superados para realizar o enorme potencial das RSSF’s são substanciais e
multidisciplinares por natureza.
12
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Esquemas de endereçamento
A capacidade de identificar unicamente as "Coisas" é fundamental para o sucesso
da IoT. Isto não apenas nos permitirá identificar de forma exclusiva bilhões de
dispositivos, mas também controlar dispositivos remotos pela Internet. Os poucos
recursos mais críticos da criação de um endereço exclusivo são: exclusividade,
confiabilidade, persistência e escalabilidade.
13
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
da Internet. O IPv6 também oferece uma ótima opção para aceder os recursos de maneira
única e remota. Outro desenvolvimento crítico na abordagem é o desenvolvimento de um
IPv6 leve que permitirá o endereçamento de eletrodomésticos de maneira única.
14
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Visualização
A visualização é fundamental para um aplicativo IoT, pois isto permite a interação
do utilizador com o ambiente. Com os recentes avanços nas tecnologias de tela sensível
ao toque, o uso de tablets e telefones inteligentes tornou-se muito intuitivo. Para que uma
pessoa secular se beneficie plenamente da revolução da IoT, é necessário criar uma
visualização atraente e fácil de entender. À medida que nos movemos de telas 2D para
3D, mais informações podem ser fornecidas ao utilizador de maneira significativa para
os consumidores. Isto também permitirá que os formuladores de políticas convertam
dados em conhecimento, o que é crítico na rápida tomada de decisões. A extração de
informações significativas de dados brutos não é trivial. Isto engloba tanto a deteção de
eventos quanto a visualização dos dados brutos e modelados associados, com informações
representadas de acordo com as necessidades do utilizador final.
15
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Tabela 1- Partições de armazenamento de dados para o Android e partições no flash interno e cartão SD
externo para o telefone Nexus One
16
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
sistema de ficheiros padrão para estas partições. O Android fornece uma interface
semelhante a um sistema de ficheiros para aceder ao armazenamento externo também,
com o FAT32 como o sistema de arquivos comumente usado em cartões SD por motivos
de compatibilidade.
Dentro deste projeto, opta-se pelo armazenamento em ficheiro interno como sendo
uma opção para armazenar os dados internos dos sensores do telemóvel numa estrutura
de dados designada por fila, como se descreve a seguir.
Socket
“Uma socket é um método de comunicação e troca de mensagens entre processos.
Pode-se que o Uma socket é um método bem antigo para a comunicação de processos em
rede, ele nasceu no UNIX BSD, que é um Sistema Operacional UNIX desenvolvido pela
Universidade de Berkeley, na Califórnia, durante os anos 70 e 80” (Berkeley Software
Distribution), mas devido ao sucesso desta “tecnologia”, diversos outros sistemas
operacionais a “herdaram”. Outras versões do Unix também, incluindo o Linux, Windows
e no Macintosh OS 8 também fazem uso deste sistema.
Uma socket (de Figueiredo, J. A., pág. 22), numa visão mais técnica, é um
mecanismo que faz uma ligação direta entre dois hosts, criando uma conexão e que a
partir daí poderá fazer transferência de dados tantos sobre os protocolos TCP ou UDP.
Por estar situado na camada de transporte, ele serve de base para outros protocolos
de comunicação de rede, que podem estar localizados em outras camadas, como por
exemplo, o protocolo HTTP que está situado na camada de aplicação, que em algum
momento quando executado irá executar um Socket para fazer a comunicação, mas isso
fica transparente para o programador. Então de um modo geral qual quer aplicação que
17
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
faz comunicação em rede irá em algum momento fazer o uso do servidor no seu contexto
geral.
Cada socket é associado a um tipo de protocolo que pode ser TCP ou UDP. Então
quando uma socket vai ser criado o protocolo de transporte já deve estar associado ao
protocolo desejado.
A figura 3 representa como é feita à conexão entre cliente e servidor de uma forma
bem simples.
18
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Uma socket é, portanto, um elo ou uma via bidirecional de comunicação entre dois
programas ou dois processos, com o propósito de fazer a ligação de redes de
computadores juntamente com aplicações. Uma socket também é uma abstração
19
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
computacional que de uma forma direta e capaz de mapear uma porta de transporte (TCP
ou UDP) juntamente com o endereço de rede.
Uns dos objetivos gerais do socket é a comunicação entre processos na rede, que
basicamente significa transmitir uma mensagem de um processo de uma determinada
máquina para outro processo em outra máquina, que inclusive, poderá estar
geograficamente separada. Para que essa via de conexão aconteça e as máquinas troquem
mensagens, é preciso que o socket contenha uma porta e um endereço IP, da máquina em
que está sendo executado.
O Socket de um cliente envia uma mensagem para um IP e uma ”porta” que será
do servidor, e só poderá fazer a conexão entre processos e receber as mensagens, se o
socket estiver associado a esse endereço IP e a essa porta.
Pode ser usado um socket para enviar e receber mensagens, pois quando é
estabelecida a conexão entre dois processos e criado uma via bidirecional, que como foi
falado que pode receber e enviar usando essa via.
20
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
21
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Elaboração do algoritmo
Leitura dos sensores: efetuar a leitura dos dados dos sensores do telemóvel através
da instanciação de variáveis que permitam fazer a sua leitura;
Comunicação com a plataforma IoT Watson;
Envio de dados para a plataforma IoT: o envio dos dados é feito através de um
manipulador que permite pegar na mensagem e enviá-la diretamente para a
plataforma;
Gravação local de dados: implementação de uma função para gravar dados em
ficheiro privado;
Implementação de uma fila: os dados são armazenados automaticamente num
ficheiro em forma de uma fila, em que os dados vão sendo inseridos no fundo do
conteúdo do ficheiro, e por sua vez são retirados do início do ficheiro para
posterior envio;
Envio dos dados do ficheiro para a plataforma: o envio de dados do ficheiro para
uma plataforma desenvolvida em socket;
De seguida, nesta fase do projeto, o que se fez foi um algoritmo (fig, 6) que
permitisse implementar a solução do problema a ser resolvido.
22
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
A conceção deste algoritmo foi feita com base num software designado por Visual
Paradigm. Este algoritmo obedece ao paradigma da Programação Orientada a Objetos
que, do qual, permite conter dados na forma de campos (atributos) e códigos na forma de
procedimentos (métodos).
A classe “Cliente” é a classe que permite fazer o envio dos dados para um servidor
local. Tem como atributos:
23
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
24
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Desenvolvimento da aplicação
25
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Ao mesmo tempo, também se criou uma variável para se obter o registo da data
atual em que os dados são armazenados no ficheiro (fig. 9).
26
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
27
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
28
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Na parte da leitura, definiu-se uma função que permitisse ler os dados a partir do
ficheiro. Aquando da leitura, a primeira linha é lida e apagada automaticamente,
permitindo dar espaço a outras linhas para poderem ser escritas. Para se fazer a remoção
automática de apenas uma linha, definiu-se uma função que permite apagar a linha do
topo da fila, permitindo assim ler a seguinte (figs. 16 e 17).
29
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Como referido acima, no caso deste projeto, foi usada a segunda opção,
impossibilitando assim que o ficheiro seja aberto por aplicações externas. Não utilizamos
a terceira opção visto implicar que o dispositivo que fosse correr a aplicação em causa
tivesse como requisito obrigatório ou uma partição dupla do NAND flash do Android ou
um cartão SD instalado. Por outro lado, não utilizamos uma base de dados pois neste caso
não existiu tempo suficiente, e por outro lado também não achamos que houvesse
necessidade para tal.
Apesar de não ser possível visualizar o conteúdo do ficheiro, nos testes á aplicação,
com um emulador de android, foi possível extrair o ficheiro do emulador e ver o seu
conteúdo.
30
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
31
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Primeiro, criou-se uma classe designada “Cliente” (fig. 20) que estendesse a classe
abstrata “AsyncTask”, que permite o uso correto e fácil do thread da interface do
utilizador. Esta classe permite executar operações em segundo plano e publicar resultados
na thread da interface do utilizador sem precisar de manipular threads e/ou
manipuladores.
Com esta classe, cria-se uma socket que permite enviar os dados para um servidor
local utilizando o endereço IP desse servidor e a porta de conexão. Através da instância
da classe “PrintWriter”, imprime-se representações formatadas dos objetos para uma
stream de saída de texto. A instância imprime o a mensagem a ser enviada no socket que,
por sua vez, vai ser automaticamente enviada.
O construtor da classe, nesta situação, tem como parâmetro uma instância do tipo
“Runnable” que permite implementar uma thread que automaticamente permite efetuar
o envio da mensagem para o servidor.
32
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
33
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
depois, por sua vez, o servidor recebe as linhas e disponibiliza-as através de uma página
Web (fig. 22). Nesta situação, está-se a enviar mesmo para uma plataforma IoT local, do
qual é um trabalho desenvolvido no âmbito da unidade curricular de Sistemas
Distribuídos, tendo em conta que, neste caso, os dados, na plataforma IoT local, são
recolhidos por uma socket que, por sua vez, armazena-os num ficheiro local e,
posteriormente, são disponibilizados na página Web do servidor aplicacional.
34
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Conclusão
Permite ser, também, por sua vez, um projeto que contribui no estudo da
implementação de uma plataforma IoT, o que faz com que a tecnologia Internet of Things
tenha um maior desenvolvimento, embora apresente a principal limitação de funcionar
apenas em redes locais. Para futuros projetos, um desafio a colocar seria experimentar a
implementação de dados para uma plataforma IoT por meio da tecnologia de rede 5G como
forma a expandir mais o conhecimento nesta área.
A partir deste projeto, recomenda-se, para projetos futuros que possam utilizar
este projeto como referência, que se possa acrescentar outros sensores, inclusive sensores
periféricos como dispositivos físicos de Arduino. Para além disso, sugere-se também a
conexão do smartphone para plataformas IoT online, independentemente das diferentes
plataformas que existirem.
35
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Bibliografia
36
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
Cliente.java
package com.example.eduardorocha.escreverlerdados;
import android.os.AsyncTask;
import android.os.Handler;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
@Override
protected Void doInBackground(String... params) {
try {
msg = params[0];
socket = new Socket("192.168.1.66", 8000);
writer = new PrintWriter(socket.getOutputStream());
writer.write(msg);
writer.flush();
writer.close();
} catch(IOException e) {
e.printStackTrace();
}
return null;
}
}
37
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
MainActivity.java
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.widget.Button;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Date;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SM = (SensorManager) getSystemService(SENSOR_SERVICE);
mySensor = SM.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
38
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
};
@Override
public void onSensorChanged(SensorEvent event) {
Text.setText("X: " + event.values[0] + "Y: " + event.values[1]
+ "Z: " + event.values[2] + " " + today.toString());
saveFile(FILE_PATH, Text.getText().toString());
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
return text;
}
int linenumber = 1;
String line;
39
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
+ numlines)
sb.append(line + "\n");
linenumber++;
}
br.close();
fw.write(sb.toString());
fw.close();
} catch (Exception e) {
}
}
activity_main.xml
<TextView
android:id="@+id/gravarDados"
android:layout_width="match_parent"
android:layout_height="51dp"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:layout_marginEnd="0dp"
android:layout_alignParentRight="true"
android:layout_marginRight="0dp" />
</RelativeLayout>
40
Instituto Politécnico de Viseu
Escola Superior de Tecnologia e Gestão de Lamego
41