SlideShare uma empresa Scribd logo
1 de 65
Baixar para ler offline
OpenDevice
Open IoT (Internet Of Things) Platform and
Framework.
“Conjunto de ferramentas e APIs para construção de
soluções de Internet das Coisas”
Ricardo JL Rufino <ricardo@criativasoft.com.br>
AgendaAgenda
● Introdução a Internet das Coisas (fast !!)
● Arduino
● OpenDevice (Hands-On)
● Arduino / Raspberry e Similares
● Protocolos de Comunicação
● Brincando via JavaScript
● Comunicação em real-time utilizando WebSockets
● Utilizando o Android
AgendaApresentação
Ricardo JL Rufino
➔ Esp. em Engenharia de Software
➔ Mestrado em Gestão de TI (UFPE)
➔ Sócio fundador da CriativaSoft (Teresina / PI)
➔ 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, Arduino IDE (autocomplete) e instrutor
de cursos de Java.
Internet
das
Coisas
Internet das Coisas
● Que coisas são essas ?
– Computadores
– Smart Phones
– Tablets
– Sensores
– Roupas
– Pessoas
– Pode ser o que você quiser ! Até cidades !
Conceito
● O Conceito de “Internet das Coisas”
começou a ser desenvolvido em 1999 nos
laboratórios do MIT. A proposta é ligar
todas as coisas à Internet, de
sofisticados equipamentos até lâmpadas,
para que esses objetos passam se
comunicar entre si e com os
usuários, a fim de gerar informações
com diversos potenciais e finalidades
Momento Atual
Fonte: Gartner (ago. 2015) - http://www.gartner.com/newsroom/id/3114217
Envolvidos ?
● Grandes empresas estão aderindo...
– Google
● Compra da Nest ($3.2 ~ R$ 7.5 bilhões )
● Compra da Boston Dynamics (robôs)
● Sistema Operacional para carros. (Android Auto)
– Apple (HomeKit, healthkit, )
– Microsoft
● Lançando plataformas de IoT
– Dell, Intel e Samsung
– Muitas outras e em breve ….. a ;)
O vamos fazer agora ?
● Nós somos desenvolvedores, não somos
pessoas normais .. ACEITE !!!
● Vamos HACKEAR as coisas
● Vamos CRIAR novas coisas
– É preciso estudar bastante
– Não ter medo de errar.. !
O que temos em mãos ?
Arduino
O que é Arduino
● Arduino é uma plataforma de prototipagem eletrônica open-
source, baseada nos princípios de flexibilidade e facilidade de
uso para hardware e software.
● Consiste de uma placa com microcontrolador programável
preparada para receber sinais de sensores e acionar
atuadores.
● Sua linguagem de programação é baseada em Wiring
(baseado em C/C++).
● A placa pode funcionar em conjunto ou de forma independente
do computador
● É uma comunidade !
Se você já conhece pode pular muitas páginas...
Hardware (modelos)
Hardware (modelos)
Arduino é Open Source
● Todo o hardware é aberto e os projetos estão
disponíveis
● Quem quiser, pode comprar os componentes e
montar a sua placa
● O software de programação também é livre e
está disponível para download gratuitamente
● O que não temos, podemos criar !
● O que não temos, podemos criar !
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3
Problema !!
Como fazer a comunicação
com esses equipamentos / dispositivos ?
Os padrões ainda estão sendo criados.... (verdadeira gerra !)
É preciso ser fácil
1
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3
Alternativas com JAVA ?
● A Sun nos abandonou ! (JavaComm/JSR80 ?!?)
● RXTX tem muitos problemas e tem ajustes manuais
- Consegue fazer via JNI (Java Native Interface)
- Pra quem quer começar é um problema !
● Usb4java – Nova, mas parece promissora !
...A IDE do Arduino usa RXTX por baixo dos panos
USB ??
1
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3
Alternativas com JAVA ?
● Aqui só no J2ME (JSR-82) e Android.
● Desktop nem pensar !! e Raspberry ?? rsrsr
● Saída : Bluecove (usando JNI)
● Problema : Ultimo release é de 2008
Snapshot em 2010
Bluetooth ??
* JNI faz chamadas a bibliotecas em C, produzidas para e
1
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3
Alternativas com JAVA ?
Esse não podemos reclamar !
Rede / TCP / IP?
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3
Tudo junto ?
Dá um trabalhinho !
E você precisa criar sua própria forma de
comunicação
Lidar com detalhes de baixo nível
Correção de Erros
Precisa ter uma boa experiência
Etc.. etc...
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3
Solução ?
Quem pode nos ajudar ?
OpenDevice
Open 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
Objetivos
● Facilitar o desenvolvimento de aplicações para IoT
● Solução completa para integração entre plataformas
● Integração entre diferentes dispositivos e protocolos
● Utilização em dispositivos com limitações de
processamento e memória
● Oferecer um protocolo aberto e extensível
● Simplificação na criação de dispositivos inteligentes
● Oferecer uma plataforma base para criação de
projetos especializados
Foco no que é importante !
Isso permite que você se concentre em seu
projeto e na inovação, deixando os detalhes de
baixo nível dos protocolos de comunicação e
especificações com OpenDevice, permitindo você
focar no que é 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)
Funcionalidades
● Hardware
● Desktop
● Cloud
● Web
Suas ferramentas tangem todas as camadas envolvidas
no ecossistema de IoT:
Funcionalidades
● Armazenamento
● Controle
● Configuração
● Visualização
Infraestrutura de comunicação e serviços de:
Event-driven and Real-Time
Você não precisa consultar a informação,
ela vem até você quando os dados
estiverem disponíveis
Visão Geral
<WebSockt, Rest>
<Bluetooth, Ethernet>
<USB, TCP>
Clients
Middleware
(Local)
Firmware
Firmware
<Bluetooth,Wifi>
Devices <MQTT>
<MQTT>
Um pouco de códigos...
Boa parte dos exemplos a seguir estão em:
https://github.com/OpenDevice/opendevice-examples/tree/master/opendevice-tutorial
Blink – Arduino (C/C++)
Biblioteca disponível em: https://github.com/OpenDevice/opendevice-lib-arduino
PS: Logo estará disponível no gerenciador de bibliotecas (em: set/2015)
Blink – Arduino (C/C++)
Outras opções.....
Blink - Java
Orientado a Objetos
Blink Java (sem o.O)
Enviando comandos diretamente....
Comandos Customizados
Java: UserCommandsDemo.java
Arduino: UserCommands.ino
OBS: Parte dos códigos foram omitidos
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
Link do Exemplo no Github
API JavaScript para WebSocket
Exemplo utilizando Gráficos: jquery.flot.js
Link do Exemplo no Github
JavaScript no Server Side
● Permite desenvolver em JavaScript no lado do Servidor, algo
semelhante ao que o Node.js faz.
● Utiliza o Nashorn (engine JavaScript padrão do Java 8)
● Você cria a aplicação em JavaScript (podendo acessar as classes
Java do OpenDevice)
● Ou estender, usando Hooks (eventos)
● Suporte a JavaFX
● Módulo: opendevice-js-engine (adicione no pom.xml)
– Gera um jar: odevjs.jar , para ser usado de forma independente
– odevjs.exe -fx myscript.js
[1] – Use o profile: windows quando for compilar usando o maven
JavaScript no Server Side
Link do Exemplo no Github
Executando:
Android
● Não poderíamos esquecer do Android
● Atualmente o OpenDevice suporta:
– Cliente WebSocket (opendevice-wasync-client)
– Bluetooth (opendevice-android-stream)
– Usb (aguardando contribuições...)
Android
● Adicione as dependências no app/build.gradle
● Os códigos são basicamente os mesmos do Java
● Aplicação exemplo disponível em:
https://github.com/OpenDevice/opendevice-examples/tree/master/opendevice-android-demo
Visualização e controle dos dispositivos
● Módulo opendevice-web-view:
– HTML5
– WebSocket (OpenDevice.js)
– AngularJS
– Gráficos (em tempo real e históricos)
– Criação de Dashboard's (com Drag and Drop)
Visualização e controle dos dispositivos
Protocolo
● Voltado para dispositivos com restrições de
memória e processamento
– Microcontroladores AVR 8-bits, 2Kb de RAM
● Baseado em ASCII
● Influências do protocolo MIDI e Rest
● Pode ser utilizado em conjunto com:
– USB, Bluetooth, Ethernet e Wi-Fi;
– WebSocket e MQTT.
Formato da Mensagem
Os comandos do OpenDevice possuem um cabeçalho fixo, contento:
● Tipo do comando (CommandType)
● ID do comando (sequêncial e gerenciado pela aplicação)
● + Bloco “Command Extension”, que varia de acordo com o tipo de
comando.
COMMAND TYPE ID {......} 'r'
Start EndCommand ExtensionSeparator
Exemplo - Comando: DIGITAL
Instalação (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
Instalação (Java)
● 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>
OpenDevice + Blender
https://github.com/OpenDevice/opendevice-examples/tree/master/opendevice-3d-blender
https://github.com/OpenDevice/opendevice-extensions/tree/master/python-client
Integração com Ambientes 3D
● Blender
Dúvidas ?
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
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://iot.criativasoft.com.br
Obrigado pela sua atenção.

Mais conteúdo relacionado

Mais procurados

Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar Arduino
Isvaldo Souza
 

Mais procurados (20)

Java.ino - Plataforma de Programação para Arduino com Java
Java.ino - Plataforma de Programação para Arduino com JavaJava.ino - Plataforma de Programação para Arduino com Java
Java.ino - Plataforma de Programação para Arduino com Java
 
Strider CD - Deploy Contínuo com JavaScript
Strider CD -  Deploy Contínuo com JavaScriptStrider CD -  Deploy Contínuo com JavaScript
Strider CD - Deploy Contínuo com JavaScript
 
WRVA 2015
WRVA 2015WRVA 2015
WRVA 2015
 
Integrando a Programação Java com Arduino Utilizando o Javino
Integrando a Programação Java com Arduino Utilizando o JavinoIntegrando a Programação Java com Arduino Utilizando o Javino
Integrando a Programação Java com Arduino Utilizando o Javino
 
Construção de interfaces on-demand baseadas em Realidade Aumentada Projetiva ...
Construção de interfaces on-demand baseadas em Realidade Aumentada Projetiva ...Construção de interfaces on-demand baseadas em Realidade Aumentada Projetiva ...
Construção de interfaces on-demand baseadas em Realidade Aumentada Projetiva ...
 
Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011
 
Aula sobre arduino
Aula sobre arduinoAula sobre arduino
Aula sobre arduino
 
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeita
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeitaPalestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeita
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeita
 
TDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceTDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDevice
 
Apresentando o Arduino - UESPI
Apresentando o Arduino - UESPIApresentando o Arduino - UESPI
Apresentando o Arduino - UESPI
 
PLCduino - A PLC using Arduino platform
PLCduino - A PLC using Arduino platformPLCduino - A PLC using Arduino platform
PLCduino - A PLC using Arduino platform
 
O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014
O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014
O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014
 
Aula de Arduino: Primeiros Passos
Aula de Arduino: Primeiros PassosAula de Arduino: Primeiros Passos
Aula de Arduino: Primeiros Passos
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar Arduino
 
Py S60
Py S60Py S60
Py S60
 
Introdução ao java Alo Mundo
Introdução ao java Alo MundoIntrodução ao java Alo Mundo
Introdução ao java Alo Mundo
 
Webinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoWebinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcado
 
Micropython - Python para microcontroladores
Micropython - Python para microcontroladoresMicropython - Python para microcontroladores
Micropython - Python para microcontroladores
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017
 

Semelhante a OpenDevice IoT - 2016 (LowLevel)

Netbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 PortuguesNetbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 Portugues
Rodrigo Peleias
 

Semelhante a OpenDevice IoT - 2016 (LowLevel) (20)

Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDeviceHackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
 
arduino presentation
arduino presentationarduino presentation
arduino presentation
 
Curso Básico Android - Aula 01
Curso Básico Android - Aula 01Curso Básico Android - Aula 01
Curso Básico Android - Aula 01
 
Netbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 PortuguesNetbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 Portugues
 
Plataformas open-source para Internet das Coisas (IoT)
Plataformas open-source para Internet das Coisas (IoT)Plataformas open-source para Internet das Coisas (IoT)
Plataformas open-source para Internet das Coisas (IoT)
 
Phonegap
PhonegapPhonegap
Phonegap
 
Netduino e .NET Micro Framework
Netduino e .NET Micro FrameworkNetduino e .NET Micro Framework
Netduino e .NET Micro Framework
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
Projetos Mono e Moonlight
Projetos Mono e MoonlightProjetos Mono e Moonlight
Projetos Mono e Moonlight
 
[iv festival games for change américa latina] oficina pt. 2
[iv festival games for change américa latina] oficina pt. 2[iv festival games for change américa latina] oficina pt. 2
[iv festival games for change américa latina] oficina pt. 2
 
IoT para Devs c#
IoT para Devs c#IoT para Devs c#
IoT para Devs c#
 
2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android
 
.NET Open Source
.NET Open Source.NET Open Source
.NET Open Source
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010
 
Apresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno CottaApresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno Cotta
 
Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...
Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...
Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...
 
Programação de Microcontroladores com .NET Micro Framework
Programação de Microcontroladores com .NET Micro FrameworkProgramação de Microcontroladores com .NET Micro Framework
Programação de Microcontroladores com .NET Micro Framework
 
Ampliando suas fronteiras com Node-Webkit
Ampliando suas fronteiras com Node-WebkitAmpliando suas fronteiras com Node-Webkit
Ampliando suas fronteiras com Node-Webkit
 
Desenvolvendo para Android
Desenvolvendo para AndroidDesenvolvendo para Android
Desenvolvendo para Android
 
Palestra SFD etec Netbeans e Java 3D
Palestra SFD etec Netbeans e Java 3DPalestra SFD etec Netbeans e Java 3D
Palestra SFD etec Netbeans e Java 3D
 

OpenDevice IoT - 2016 (LowLevel)

  • 1. OpenDevice Open IoT (Internet Of Things) Platform and Framework. “Conjunto de ferramentas e APIs para construção de soluções de Internet das Coisas” Ricardo JL Rufino <ricardo@criativasoft.com.br>
  • 2. AgendaAgenda ● Introdução a Internet das Coisas (fast !!) ● Arduino ● OpenDevice (Hands-On) ● Arduino / Raspberry e Similares ● Protocolos de Comunicação ● Brincando via JavaScript ● Comunicação em real-time utilizando WebSockets ● Utilizando o Android
  • 3. AgendaApresentação Ricardo JL Rufino ➔ Esp. em Engenharia de Software ➔ Mestrado em Gestão de TI (UFPE) ➔ Sócio fundador da CriativaSoft (Teresina / PI) ➔ 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, Arduino IDE (autocomplete) e instrutor de cursos de Java.
  • 5. Internet das Coisas ● Que coisas são essas ? – Computadores – Smart Phones – Tablets – Sensores – Roupas – Pessoas – Pode ser o que você quiser ! Até cidades !
  • 6. Conceito ● O Conceito de “Internet das Coisas” começou a ser desenvolvido em 1999 nos laboratórios do MIT. A proposta é ligar todas as coisas à Internet, de sofisticados equipamentos até lâmpadas, para que esses objetos passam se comunicar entre si e com os usuários, a fim de gerar informações com diversos potenciais e finalidades
  • 7. Momento Atual Fonte: Gartner (ago. 2015) - http://www.gartner.com/newsroom/id/3114217
  • 8. Envolvidos ? ● Grandes empresas estão aderindo... – Google ● Compra da Nest ($3.2 ~ R$ 7.5 bilhões ) ● Compra da Boston Dynamics (robôs) ● Sistema Operacional para carros. (Android Auto) – Apple (HomeKit, healthkit, ) – Microsoft ● Lançando plataformas de IoT – Dell, Intel e Samsung – Muitas outras e em breve ….. a ;)
  • 9. O vamos fazer agora ? ● Nós somos desenvolvedores, não somos pessoas normais .. ACEITE !!! ● Vamos HACKEAR as coisas ● Vamos CRIAR novas coisas – É preciso estudar bastante – Não ter medo de errar.. !
  • 10. O que temos em mãos ?
  • 12. O que é Arduino ● Arduino é uma plataforma de prototipagem eletrônica open- source, baseada nos princípios de flexibilidade e facilidade de uso para hardware e software. ● Consiste de uma placa com microcontrolador programável preparada para receber sinais de sensores e acionar atuadores. ● Sua linguagem de programação é baseada em Wiring (baseado em C/C++). ● A placa pode funcionar em conjunto ou de forma independente do computador ● É uma comunidade ! Se você já conhece pode pular muitas páginas...
  • 15. Arduino é Open Source ● Todo o hardware é aberto e os projetos estão disponíveis ● Quem quiser, pode comprar os componentes e montar a sua placa ● O software de programação também é livre e está disponível para download gratuitamente
  • 16. ● O que não temos, podemos criar !
  • 17. ● O que não temos, podemos criar !
  • 18. Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3 Problema !! Como fazer a comunicação com esses equipamentos / dispositivos ? Os padrões ainda estão sendo criados.... (verdadeira gerra !) É preciso ser fácil
  • 19. 1 Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3 Alternativas com JAVA ? ● A Sun nos abandonou ! (JavaComm/JSR80 ?!?) ● RXTX tem muitos problemas e tem ajustes manuais - Consegue fazer via JNI (Java Native Interface) - Pra quem quer começar é um problema ! ● Usb4java – Nova, mas parece promissora ! ...A IDE do Arduino usa RXTX por baixo dos panos USB ??
  • 20. 1 Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3 Alternativas com JAVA ? ● Aqui só no J2ME (JSR-82) e Android. ● Desktop nem pensar !! e Raspberry ?? rsrsr ● Saída : Bluecove (usando JNI) ● Problema : Ultimo release é de 2008 Snapshot em 2010 Bluetooth ?? * JNI faz chamadas a bibliotecas em C, produzidas para e
  • 21. 1 Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3 Alternativas com JAVA ? Esse não podemos reclamar ! Rede / TCP / IP?
  • 22. Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3 Tudo junto ? Dá um trabalhinho ! E você precisa criar sua própria forma de comunicação Lidar com detalhes de baixo nível Correção de Erros Precisa ter uma boa experiência Etc.. etc...
  • 23. Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3 Solução ? Quem pode nos ajudar ?
  • 24. OpenDevice Open IoT (Internet Of Things) Platform and Framework. “Conjunto de ferramentas e APIs para construção de soluções de Internet das Coisas”
  • 25. OpenDevice ● APIs e Ferramentas que permitem construir sistemas de: – Automação Residencial – Monitoramento de Sensores – Monitoramento de Energia – Controle de Robôs – Smart City
  • 26. Objetivos ● Facilitar o desenvolvimento de aplicações para IoT ● Solução completa para integração entre plataformas ● Integração entre diferentes dispositivos e protocolos ● Utilização em dispositivos com limitações de processamento e memória ● Oferecer um protocolo aberto e extensível ● Simplificação na criação de dispositivos inteligentes ● Oferecer uma plataforma base para criação de projetos especializados
  • 27. Foco no que é importante ! Isso permite que você se concentre em seu projeto e na inovação, deixando os detalhes de baixo nível dos protocolos de comunicação e especificações com OpenDevice, permitindo você focar no que é importante para o sucesso de seu projeto.
  • 29. 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)
  • 30. Funcionalidades ● Hardware ● Desktop ● Cloud ● Web Suas ferramentas tangem todas as camadas envolvidas no ecossistema de IoT:
  • 31. Funcionalidades ● Armazenamento ● Controle ● Configuração ● Visualização Infraestrutura de comunicação e serviços de:
  • 32. Event-driven and Real-Time Você não precisa consultar a informação, ela vem até você quando os dados estiverem disponíveis
  • 33. Visão Geral <WebSockt, Rest> <Bluetooth, Ethernet> <USB, TCP> Clients Middleware (Local) Firmware Firmware <Bluetooth,Wifi> Devices <MQTT> <MQTT>
  • 34. Um pouco de códigos... Boa parte dos exemplos a seguir estão em: https://github.com/OpenDevice/opendevice-examples/tree/master/opendevice-tutorial
  • 35. Blink – Arduino (C/C++) Biblioteca disponível em: https://github.com/OpenDevice/opendevice-lib-arduino PS: Logo estará disponível no gerenciador de bibliotecas (em: set/2015)
  • 36. Blink – Arduino (C/C++) Outras opções.....
  • 38. Blink Java (sem o.O) Enviando comandos diretamente....
  • 39. Comandos Customizados Java: UserCommandsDemo.java Arduino: UserCommands.ino OBS: Parte dos códigos foram omitidos
  • 40. 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
  • 41. Adicionando Rest ! Adicione essa linha e seja feliz !!! Você pode acessar pelo navegador … ou com JavaScript !
  • 42. 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
  • 43. API JavaScript para WebSocket Link do Exemplo no Github
  • 44. API JavaScript para WebSocket Exemplo utilizando Gráficos: jquery.flot.js Link do Exemplo no Github
  • 45. JavaScript no Server Side ● Permite desenvolver em JavaScript no lado do Servidor, algo semelhante ao que o Node.js faz. ● Utiliza o Nashorn (engine JavaScript padrão do Java 8) ● Você cria a aplicação em JavaScript (podendo acessar as classes Java do OpenDevice) ● Ou estender, usando Hooks (eventos) ● Suporte a JavaFX ● Módulo: opendevice-js-engine (adicione no pom.xml) – Gera um jar: odevjs.jar , para ser usado de forma independente – odevjs.exe -fx myscript.js [1] – Use o profile: windows quando for compilar usando o maven
  • 46. JavaScript no Server Side Link do Exemplo no Github Executando:
  • 47. Android ● Não poderíamos esquecer do Android ● Atualmente o OpenDevice suporta: – Cliente WebSocket (opendevice-wasync-client) – Bluetooth (opendevice-android-stream) – Usb (aguardando contribuições...)
  • 48. Android ● Adicione as dependências no app/build.gradle ● Os códigos são basicamente os mesmos do Java ● Aplicação exemplo disponível em: https://github.com/OpenDevice/opendevice-examples/tree/master/opendevice-android-demo
  • 49. Visualização e controle dos dispositivos ● Módulo opendevice-web-view: – HTML5 – WebSocket (OpenDevice.js) – AngularJS – Gráficos (em tempo real e históricos) – Criação de Dashboard's (com Drag and Drop)
  • 50. Visualização e controle dos dispositivos
  • 51. Protocolo ● Voltado para dispositivos com restrições de memória e processamento – Microcontroladores AVR 8-bits, 2Kb de RAM ● Baseado em ASCII ● Influências do protocolo MIDI e Rest ● Pode ser utilizado em conjunto com: – USB, Bluetooth, Ethernet e Wi-Fi; – WebSocket e MQTT.
  • 52. Formato da Mensagem Os comandos do OpenDevice possuem um cabeçalho fixo, contento: ● Tipo do comando (CommandType) ● ID do comando (sequêncial e gerenciado pela aplicação) ● + Bloco “Command Extension”, que varia de acordo com o tipo de comando. COMMAND TYPE ID {......} 'r' Start EndCommand ExtensionSeparator
  • 53.
  • 55. Instalação (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
  • 56. Instalação (Java) ● 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>
  • 57. 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>
  • 59. Integração com Ambientes 3D ● Blender
  • 61. Postura ! Nós somos desenvolvedores, não somos “normais”. ACEITE ISSO.. !!! Devemos ser agentes de Transformação e Criação.
  • 62. 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
  • 63. Contatos ● E-mail: – ricardo@criativasoft.com.br – rjlr@cin.ufpe.br ● Facebook – /ricardojlrufino
  • 64. 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://iot.criativasoft.com.br
  • 65. Obrigado pela sua atenção.