O documento apresenta a plataforma e framework Open IoT (Internet das Coisas) chamado OpenDevice, que fornece ferramentas e APIs para construir soluções de Internet das Coisas usando Arduino, Raspberry Pi, Android e Java. O objetivo do OpenDevice é monitorar e controlar hardwares populares de forma local ou na nuvem de maneira independente de linguagem ou plataforma. Apresenta exemplos de código em Java, C/Arduino e JavaScript para controlar dispositivos e conectá-los à plataforma.
1. Trilha: Internet das Coisas
Open IoT (Internet Of Things) Platform and Framework
Conectando coisas com Arduino/Raspberry/Android/Java usando OpenDevice
Ricardo JL Rufino
ricardo@criativasoft.com.br
ricardo.jl.rufino@gmail.com
05/2015
2. AgendaApresentação
Esp. em Engenharia de Software
➔ Mestrando em Gestão de TI (UFPE)
➔ Sócio fundador da CriativaSoft.
➔ Apaixonado por tecnologia, open source/hardware
➔ Atuo no desenvolvimento de Software desde 2007, focado em
soluções empresariais sobre plataforma JavaEE.
Desenvolvedor de softwares open-source como Framework
Web MVC Mentawai, ProjectNCode e instrutor de cursos de
Java.
3. OpenDevice
Open IoT (Internet Of Things) Platform and
Framework.
“Conjunto de ferramentas e APIs para construção de
soluções de Internet das Coisas”
4. OpenDevice
● APIs e Ferramentas que permitem construir
sistemas de:
– Automação Residencial
– Monitoramento de Sensores
– Monitoramento de Energia
– Controle de Robôs
– Smart City
5. OpenDevice
● Objetivo:
O principal objetivo é monitorar e controlar
hardwares baratos como Arduino, RaspberryPI e
plataformas semelhantes, local (offline) ou sobre
a nuvem usando linguagens de programação de
alto nível e com a abstração de protocolos e
detalhes de baixo nível.
6. Foco no que é importante !
Isso permite que você se concentre em seu
projeto e na inovação, deixar os detalhes
obscuros de protocolos de comunicação e
especificações com OpenDevice, você vai dar um
passo importante para o sucesso de seu
projeto.
17. Incrementando no JAVA
Definição de Dispositivos
Definição das Conexões
* JAVA
*Opcional: Somente é necessário se for trabalhar com O.O do lado java
18. Adicionando Rest !
Adicione essa linha e seja feliz !!!
Você pode acessar pelo navegador
… ou com JavaScript !
19. Agora ficou sério ! WebSockets !
Adicione essas linhas e fique Real-Time e de quebra servidor http !
Biblioteca de Rest e WebSocket ! (adicione no pom.xml)
Ao adicionar o servidor de W.S automaticamente já é adicionado o servidor REST
21. Instalação
● Usando o Maven (arquivo pom.xml)
Substitua: ${opendevice-version} pela ultima versão
Qualquer dúvida consulte:
https://opendevice.atlassian.net/wiki/display/DOC/Documentation
<dependencies>
<dependency>
<groupId>br.com.criativasoft.opendevice</groupId>
<artifactId>opendevice-connection-stream</artifactId>
<version>${opendevice-version}</version>
</dependency>
<dependency>
<groupId>br.com.criativasoft.opendevice</groupId>
<artifactId>opendevice-core</artifactId>
<version>${opendevice-version}</version>
</dependency>
</dependencies>
22. Instalação
● Adicionar o repositório da Sonatype
<repositories>
<repository>
<id>oss.sonatype.org</id>
<url>https://oss.sonatype.org/content/repositories/releases</url>
</repository>
<repository>
<id>oss.sonatype.org-snapshot</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
</repositories>
23. Instalação (lib arduino/similar)
● Baixar ou Clonar o repositório do GIT
– github.com/OpenDevice/opendevice-lib-arduino
● Copiar para pasta '/libraries' da IDE do Arduino
– Mude o nome da pasta para OpenDevice
● Reinicie a IDE do Arduino
Github / Sources: https://github.com/OpenDevice
25. Modulos
➔ opendevice-connection modules
➔ opendevice-connection-api: Especificação das Interfaces de Conexão Cliente/Server
➔ opendevice-connection-stream: Conexões USB,Bluetooth,TCP (PC/RaspPI)
➔ opendevice-android-stream: USB,Bluetooth para Android
➔ opendevice-raspberry-pi4j: Abstração da comunicação usando PI4J
➔ opendevice-connection-samples: Exemplos de comunicação de baixo nível
● OBS: Identificação das Implementações em Runtime (SPI – Service Provider)
➔ opendevice-clients modules
➔ opendevice-js: Biblioteca JavaScript com WebSocket e REST
➔ opendevice-wasync-client: Biblioteca Websocket para Android e PC
➔ opendevice-servers modules
● opendevice-rest-ws-server: Servidor REST e WebSocket
➔ opendevice-rest-api: Interface REST para controle dos Devices
26. Modulos
● opendevice-hardware-libraries (ex: opendevice-lib-arduino)
– Biblioteca para coordenação e ponte com os equipamentos físicos
(lampadas, tvs, ar, sensores, etc.. ) e implementação do protocolo do
OpenDevice.
– Compatível com as plataformas AVR/Arduino e ARM (Stelarias Lauchpad
32bits)
● opendevice-core:
– Implementação do Protocolo, API de Commandos, Devices (JAVA)
● opendevice-server-app:
– Aplicação de Gestão, Controle e Monitoramento (JAVA)
– Usa praticamente todos os outros módulos
– Banco de Dados: Neo4J usando Hibernate OGM (JPA ) , algumas
consultas nativas
● opendevice-web-view:
– Interface HTML/5 + AngularJS + OpenDeviceJS usada no server-app
27. Postura !
Nós somos desenvolvedores, não somos
“normais” ACEITE ISSO.. !!!
Devemos ser agentes de Transformação e
Criação.
28. Atitude !
Não espere a ideia brilhante !
Execute a ideia que você gosta.
Descubra o que você gosta
Não escute os outros
● Muita gente vai dizer que você não consegue
● Muita gente vai dizer que já existe