Post on 09-Aug-2015
Trilha: Internet das CoisasOpen IoT (Internet Of Things) Platform and Framework
Conectando coisas com Arduino/Raspberry/Andoird/Java usando OpenDevice
Ricardo JL Rufinoricardo@criativasoft.com.brricardo.jl.rufino@gmail.com
05/2015
AgendaApresentação
Ricardo JL Rufino➔ 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.
OpenDeviceOpen IoT (Internet Of Things) Platform and Framework.
“Conjunto de ferramentas e APIs para construção de soluções de Internet das Coisas”
OpenDevice
● APIs e Ferramentas que permitem construir sistemas de:– Automação Residencial
– Monitoramento de Sensores
– Monitoramento de Energia
– Controle de Robôs
– Smart City
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.
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.
Tecnologias Envolvidas
Funcionalidades ● Open API (for: REST, JavaScript, Java, Android, Arduino,
EnergiaIDE)● Real-time (WebSockets)● Event-Based● Async & non-blocking● Multi-protocolo (Usb, Bluetooth, TCP)● Independente de Linguagem● Independente de Plataforma (Windows, Linux, Mac, MIPs on
OpenWRT)● Lightweight/Built-in Servers (não precisa do tomcat ou glassfish)
Visão Geral
Event-driven and Real-Time
Você não precisa consultar a informação, ela vem até você quando os dados estiverem disponíveis
Um pouco de Código
Uma pitada de java...
Blink - Arduino
* C / Arduino
Biblioteca disponível em: https://github.com/OpenDevice/opendevice-lib-arduino
Blink - Arduino
* C / Arduino
Outras opções.....
Blink – Java (Arduino Style)
Blink - Java (mais livre)
Blink Java (Comandos)
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
Adicionando Rest !Adicione essa linha e seja feliz !!!
Você pode acessar pelo navegador
… ou com JavaScript !
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
Api JavaScript para WebSocket
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>
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>
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
HORÁRIO RESERVADOÀ PROGRAMAÇÃO E MÃO NA MASSA
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
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
Postura !
Nós somos desenvolvedores, não somos “normais” ACEITE ISSO.. !!!
Devemos ser agentes de Transformação e Criação.
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
Dúvidas ?
Contatos
● E-mail: – ricardo@criativasoft.com.br– rjlr@cin.ufpe.br
● Facebook– /ricardojlrufino
Link's
● OpenDevice: – http://opendevice.io– https://github.com/OpenDevice– https://opendevice.atlassian.net/wiki– http://opendevice.criativasoft.com.br
● Facebook– /opendevice
● IDE do Arduino + Melhorias– http://criativasoft.com.br/downloads/programas/arduino
Link's● Onde Comprar ? (Gringos):
– www.adafruit.com– www.sparkfun.com– www.seeedstudio.com– imall.iteadstudio.com– www.dx.com (mercado livre – demora....)
● Brasil– Lab de Garagem (http://www.labdegaragem.org– Multilógica Shop (http://multilogica-shop.com/);– Rlrobotics (http://www.rlrobotics.ind.br/arduino);– Webtronico (http://www.webtronico.com/)