SlideShare uma empresa Scribd logo
BACKEND DO IOT
ARDUINO
ESP8266
RASPBERRY PI
FALCON
RETHINKDB
SOBRE MIM
AFONSO COUTINHO
PROGRAMADOR

PROFESSOR
/AFONSOCOUTINHO
FACEBOOK
AFONSO@WOLKSEN.COM
EMAIL
PORQUE BACKEND DA
INTERNET DAS
COISAS?
PRECISAMOS ENTENDER O QUE NOS
ESPERA…
▸ Em 2020> quase todas as coisas vão tá conectadas
na internet.
▸ Cada vez mais existe mais dispositivos consumindo
e alimentando nossos sistemas corporativos.
COMO FUNCIONA HOJE EM
DIA O DESENVOLVIMENTO
BACKEND?
SISTEMAS EMPRESARIAIS
▸ Software para servidores potentes, datacenters, etc.
▸ Desenvolvimento em uma plataforma unificada.
▸ Programação com alto nível de abstração.
SISTEMAS EMBARCADOS
▸ Software para dispositivos de várias configurações.
▸ Desenvolvimento para plataformas diferentes.
▸ Programação de baixo nível de abstração
AÍ ENTRA O INCRÍVEL MUNDO DOS
SISTEMAS IOT
PRA UNIFICAR TODOS!
ENTRETANTO…
PRECISAMOS DE GENTE DOMINANDO
O BACKEND DESSE NOVO MUNDO!
IoT
AGORA, COMO
SER UM?
ISSO "NÓIS"
ENTENDE!
IOT É BASICAMENTE UM
SISTEMA DE MENSAGENS
COM:
▸ Mensagens assíncronas
▸ Mensagens pequenas
▸ Bastante mensagens
ISSO "NÓIS"
ENTENDE TB!
DESENVOLVIMENTO
IOT FICA FÁCIL
COM AS PRÁTICAS
DE DEVOPS!
UIA! "NÓIS"
TAMBÉM!
IOT AMA
LINUX!
IOT
+
POR QUÊ
NÃO?
MAS, EXISTE UM LADO
NEGRO…
É COMUM USAR VÁRIOS PROTOCOLOS PRA
UMA ÚNICA SOLUÇÃO…
IPv4/IPv6, RPL, EPC, uCode, IPv6,
URIs, Wifi, Bluetooth, ZigBee,
NFC, Physical Web, mDNS, UPnP,
MQTT, CoAP, AMQP, Websocket,
XMPP, DDS, REST, SOAP…
TER CONECTIVIDADE ESTÁVEL É UM LUXO…
PLANEJAR O SISTEMA SEMPRE PENSANDO O
PIOR É NECESSÁRIO!
…AS VEZES NEM ENERGIA!
PLANEJAR O SISTEMA SEMPRE PENSANDO O
PIOR É NECESSÁRIO! V2
PRECISAMOS PAGAR PRA USAR ALGUNS
SERVIÇOS, COMO CELULAR, WIFI, ETC…
PARECE ÓBVIO MAS POUCOS LEMBRAM DISSO!
É PRECISO SOBREVIVER NAS CONDIÇÕES
ADVERSAS DO AMBIENTE DE PRODUÇÃO
CHUVA, CALOR, FRIO, VENTO, VIBRAÇÃO, GPS
SEM SINAL…
NECESSIDADE DE SER TUDO REMOTO
DEPLOY REMOTO, ATUALIZAÇÃO REMOTA,
MONITORAMENTO REMOTO, ETC…
HARDWARE
BACKEND DO IOT
ARDUINO
▸ Open-Hardware
▸ Linguagem própria
▸ Plug'n'play
▸ Comunidade madura
▸ Paixão mundial
▸ Fácil de aprender
▸ Coringa pra prototipar
MODELOS
SHIELDS
MÓDULOS
MONTE O SEU EM CASA
BACKEND DO IOT
RASPBERRY PI
▸ Open-Hardware(quase)
▸ Mini PC
▸ Ótimo para multimídia
▸ Comunidade madura
▸ GPIOs via software
▸ Barato
▸ Serve pra produção
PIBOY
MAGIC MIRROR
HACK FTW
CARPUTER
BANANA PI
C.H.I.P
WIFI + BLE
PI ZERO
WIFI + BLE CUSTOM SHIELDS
RECEPTOR IR
8GB INTERNO
4GB INTERNO
5 USD
9 USD
35 USD
BACKEND DO IOT
ESP8266
▸ Open-Hardware
▸ Usa pouca energia
▸ WiFi
▸ Comunidade madura
▸ Pequeno
▸ Barato
▸ Ótimo pra produção
CHATO DE PROGRAMAR
NODEMCU
WEMOS
MICRO SHIELDS
RTL8710
ARM CORTEX-M3
ESP8285
WEARABLES
ESP32
BLUETOOTH 4.2 DUAL CORE
SOFTWARE
BACKEND DO IOT
FALCON
▸ Focado para microservices
▸ Minimalista
▸ Rápido, Leve e Flexível
▸ Simples
▸ Fácil
▸ Roda em qualquer WSGI server
▸ Focado pra arquitetura REST
▸ 20% mais rápido se tiver Cython
▸ Suporta muito bem Unicode
▸ Intuitivo
▸ Suporta Python 2.6~2.7 e 3.3~3.5
▸ Compatível com PyPy e Jython
https://falconframework.org/
Falcon Framework
$ pip install falcon
Guia Rápido!
Falcon Framework
# oi.py
import falcon
class Hello(object):
def on_get(self, req, resp):
resp.status = falcon.HTTP_200
resp.body = ('nHello World! '
‘n…de cima! HUE.')
app = falcon.API()
oi = Hello()
app.add_route('/oi', oi)
Guia Rápido!
Falcon Framework
$ pip install gunicorn
$ gunicorn oi:app
Guia Rápido!
Falcon Framework
$ curl localhost:8000/oi
Guia Rápido!
BACKEND DO IOT
RETHINKDB
▸ Open-Source
▸ Rethink Query Language(ReQL)
▸ Escalável
▸ Fácil de Instalar e Usar
▸ Feito em C++ na unha
▸ Admin Dashboard é legal
▸ Sob licença AGPL v3
BACKEND DO IOT
CLIENT DRIVERS OFICIAIS
▸ Ruby
▸ Python
▸ Javascript/NodeJS
▸ Java
CLIENT DRIVERS MANTIDOS PELA COMUNIDADE
▸ C++
▸ C#
▸ R, etc..
BEM
DOCUMENTADOS
MAIS OU MENOS
DOCUMENTADOS
r.table('chat').orderBy('last_update').changes()
.changes()
r.http('https://api.github.com/repos/afonso/impressao3d/commits')
r.http
RethinkDB Query Language
ReQL
r.table('users').run(conn)
r.table(‘users').pluck('last_name').run(conn)
r.table(‘users').pluck('last_name').distinct().run(conn)
r.table('users').pluck('last_name').distinct().count().run(conn)
Chainable
RethinkDB Query Language
ReQL
query = r.table('users').pluck('last_name').distinct()
query.run(conn)
Execução Server-side
RethinkDB Query Language
ReQL
r.table('users').filter(lambda user: user['age'] > 30).run(conn)
# ou sem lambda
r.table('users').filter(r.row['age'] > 30).run(conn)
Query avançada
RethinkDB Query Language
ReQL
#matematica
(r.expr(2) + 2 / 2).run(conn)
#condicional
(r.expr(2) > 3).run(conn)
Divertido
RethinkDB Query Language
ReQL
r.table_create('fib').run(conn)
r.table('fib').insert([{'id': 0, 'value': 0}, {'id': 1, 'value': 1}]).run(conn)
r.expr([2, 3, 4, 5, 6, 7, 8, 9, 10, 11]).for_each(lambda x:
r.table('fib').insert({'id': x,
'value': (r.table('fib').order_by('id').nth(x - 1)['value'] +
r.table('fib').order_by('id').nth(x - 2)['value'])
})).run(conn)
r.table('fib').order_by('id')['value'].run(conn)
Divertido #fibonacci
BACKEND DO IOT
COMENTÁRIOS SOBRE O RETHINKDB
▸ É preciso criar o banco e as tabelas manualmente
▸ Não existe o .stats() como no mongodb.
▸ Prioriza consistência em vez de velocidade
▸ Não tem muito suporte pra rodar em Windows
▸ NASA tá usando pra integração de dados
▸ A empresa que criou e estava por trás do projeto faliu
▸ Agora o projeto é mantido 100% pela comunidade
CASES
HACKED
VENDING MACHINE
CASES
HACKED VENDING MACHINE
ESP8266
INTERNET
ARDUINO
MOTORES
CHUTE SENSOR
TELEGRAM API
CHAT BOT
USUÁRIO
Celular
Vending Machine
ESTRUTURA
CASES
HACKED VENDING MACHINE
PONTOS
CEGOS
CASES
PONTOS CEGOS
SD CARD
PARSING & UPLOAD
ARDUINO
LEDS
SENSORES
TELEGRAM API
CHAT BOT
USUÁRIO
Celular
Capacete
ESTRUTURA
BOTÃO
GPS
RETHINKDB
OPEN STREET MAPS
CASES
PONTOS CEGOS
PLUVI.ON
CASES
PLUVI.ON
ESTRUTURA
ESP8266
TEMPERATURA
HUMIDADE
TELEGRAM API
CHAT BOT
USUÁRIO
Celular
Pluviometro
CHUVA
RETHINKDB
FALCON
Consumo da API Rest
MAPS APPS
SITES
CASES
PLUVI.ON
TELEGRAM?
BOT DOMINATION!!!
TELEGRAM BOTS
THE BOTFATHER


SÓ FALAR COM @BOTFATHER
E SEGUIR AS INSTRUÇÕES
TELEGRAM BOTS
CONSUMINDO A API
PHP PYTHON JAVA
C#
RUBY
GO
LUA
NODEJS
HASKELL
JAVA
TELEGRAMBOTS
TELEGRAM.BOT
TELEGRAMBOT
TBOTAPI
LUA-TELEGRAM-BOT
TELEGRAM-NODE-BOT
HASKELL-TELEGRAM-API
TELEGRAMBOTS
TWX.BOTAPI
TELEPOT
TELEGRAM BOT SERVICE
HELLOBOT
SIMPLE POLL BOT
BOT API PHP SDK
TÁ TUDO NO GITHUB!
/AFONSOCOUTINHO
FACEBOOK
AFONSO@WOLKSEN.COM
EMAIL
FIM!

Mais conteúdo relacionado

PDF
InterCon 2016 - Gerenciando deploy e atualização de 450 apps sem enlouquecer
PDF
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
PDF
Rodando uma API Com Django Rest Framework no Google Cloud
PDF
Automatizando a implantação e operação de aplicações conteinerizadas no...
PDF
Ambiente de CI/CD com Google Cloud
PDF
Opções de Backends para seus apps móveis: Análise e Arquiteturas
PDF
Big Query - Escalabilidade Infinita para os seus Dados
PPTX
Arquitetura de uma aplicação web moderna - MVP ShowCast
InterCon 2016 - Gerenciando deploy e atualização de 450 apps sem enlouquecer
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
Rodando uma API Com Django Rest Framework no Google Cloud
Automatizando a implantação e operação de aplicações conteinerizadas no...
Ambiente de CI/CD com Google Cloud
Opções de Backends para seus apps móveis: Análise e Arquiteturas
Big Query - Escalabilidade Infinita para os seus Dados
Arquitetura de uma aplicação web moderna - MVP ShowCast

Mais procurados (20)

PPT
Android com Firebase
PDF
WebAssembly além da Web - Casos de Uso em IoT
PPTX
PDF
O que projetos de IoT precisam ?
PDF
Machine Learning para devs com ML.NET
ODP
Introdução ao Ruby on Rails (InstallFest 2006)
PDF
Soluções de IoT usando Arduino e Google Cloud
PDF
Criando seus próprios LIVROS DIGITAIS usando Software Livre
ODP
Plugin Geolocalização - Prêmio Cidadania Eletrônica
PPTX
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
PDF
Continuous integration, delivery and deployment in nodejs
PPTX
Meetup fujitsu
KEY
Programação Orientada a Testes
PPTX
Android Firebase
PDF
Construindo aplicações Cloud Native em Go
PDF
Continuous Delivery com ArgoCD
PPTX
12 factor app
PDF
Testes com xUnit + Coding Dojo
PPTX
Microserviços
PDF
Zabbix meetup RJ: Integrações e opensource
Android com Firebase
WebAssembly além da Web - Casos de Uso em IoT
O que projetos de IoT precisam ?
Machine Learning para devs com ML.NET
Introdução ao Ruby on Rails (InstallFest 2006)
Soluções de IoT usando Arduino e Google Cloud
Criando seus próprios LIVROS DIGITAIS usando Software Livre
Plugin Geolocalização - Prêmio Cidadania Eletrônica
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Continuous integration, delivery and deployment in nodejs
Meetup fujitsu
Programação Orientada a Testes
Android Firebase
Construindo aplicações Cloud Native em Go
Continuous Delivery com ArgoCD
12 factor app
Testes com xUnit + Coding Dojo
Microserviços
Zabbix meetup RJ: Integrações e opensource
Anúncio

Destaque (20)

PDF
InterCon 2016 - Internet of “Thinking” – IoT sem BS com ESP8266
PPTX
Testes O que são e para que servem? - LadyTalks
PDF
InterCon 2016 - HTTP/2 for Web Application Developers
PPTX
InterCon 2016 - Desenvolvimento para interfaces em vídeo e cases da plataform...
PPTX
InterCon 2016 - BioHacking: criando dispositivos de biotecnologia OpenSource/...
PDF
InterCon 2016 - Desafios de conectividade de dispositivos em realtime
PDF
InterCon 2016 - Performance, anti-patterns e stacks para desenvolvimento ágil
PDF
InterCon 2016 - Segurança de identidade digital levando em consideração uma a...
PPTX
15 Práticas para você aplicar hoje em Search Marketing e Melhorar o seu ROI
PDF
React e Ratchet, async e websockets com PHP, por Gabriel Couto
PDF
PHPExperience 2016 - Pirâmide de Testes
PDF
InterCon 2012 - Metricas - Search Marketing Optimization na Prática
PDF
Android DevConference - Firebase para desenvolvedores
PPTX
Sistemas Distribuídos e PHP - Darkmira Tour BR 2016
PDF
Android DevConference - Indo além com automação de testes de apps Android
PDF
Android DevConference - Android Clean Architecture
PDF
Database Camp 2016 @ United Nations, NYC - Michael Glukhovsky, Co-Founder, Re...
PDF
Home automation-in-the-cloud-with-the-esp8266-and-adafruit-io
PDF
Home Automation by ESP8266 #iotconfua
PPTX
Creating end-to-end IoT applications with Eclipse Kura & Solair IoT Platform
InterCon 2016 - Internet of “Thinking” – IoT sem BS com ESP8266
Testes O que são e para que servem? - LadyTalks
InterCon 2016 - HTTP/2 for Web Application Developers
InterCon 2016 - Desenvolvimento para interfaces em vídeo e cases da plataform...
InterCon 2016 - BioHacking: criando dispositivos de biotecnologia OpenSource/...
InterCon 2016 - Desafios de conectividade de dispositivos em realtime
InterCon 2016 - Performance, anti-patterns e stacks para desenvolvimento ágil
InterCon 2016 - Segurança de identidade digital levando em consideração uma a...
15 Práticas para você aplicar hoje em Search Marketing e Melhorar o seu ROI
React e Ratchet, async e websockets com PHP, por Gabriel Couto
PHPExperience 2016 - Pirâmide de Testes
InterCon 2012 - Metricas - Search Marketing Optimization na Prática
Android DevConference - Firebase para desenvolvedores
Sistemas Distribuídos e PHP - Darkmira Tour BR 2016
Android DevConference - Indo além com automação de testes de apps Android
Android DevConference - Android Clean Architecture
Database Camp 2016 @ United Nations, NYC - Michael Glukhovsky, Co-Founder, Re...
Home automation-in-the-cloud-with-the-esp8266-and-adafruit-io
Home Automation by ESP8266 #iotconfua
Creating end-to-end IoT applications with Eclipse Kura & Solair IoT Platform
Anúncio

Semelhante a InterCon 2016 - Backend do IoT com RethinkDB e Python (20)

PDF
Afinal, o que é Docker? (Meetup Laravel #12)
PDF
Afinal, o que é Docker? (Webinar Umbler)
PDF
Você não deveria escrever uma API para isso
PDF
O que é o Docker afinal? (Workshop Novatec)
PDF
Beers & Bytes - O Futuro da virtualização
PDF
Phonegap
PDF
Docker do básico a orquestração (PHPeste2016)
ODP
PDF
Desenvolvendo Produtos para Internet das Coisas
PPT
Software Livre, O Caminho do Futuro
PDF
Raspberry Pi + Python
PDF
Desenvolvimento android braga_geek_nights (1)
ODP
Funtoo escla
PDF
Semana Acadêmica ICET - Feevale - 12/04/2014
PDF
KNoT - Uma plataforma de IoT interoperável para o Brasil
ODP
Software Livre, o caminho do futuro
PDF
Supervisão e Monitorização
PPS
Casos De Sucesso De Software Livre Ap
PDF
Python e suas aplicações
PPS
Casos De Sucesso De Software Livre
Afinal, o que é Docker? (Meetup Laravel #12)
Afinal, o que é Docker? (Webinar Umbler)
Você não deveria escrever uma API para isso
O que é o Docker afinal? (Workshop Novatec)
Beers & Bytes - O Futuro da virtualização
Phonegap
Docker do básico a orquestração (PHPeste2016)
Desenvolvendo Produtos para Internet das Coisas
Software Livre, O Caminho do Futuro
Raspberry Pi + Python
Desenvolvimento android braga_geek_nights (1)
Funtoo escla
Semana Acadêmica ICET - Feevale - 12/04/2014
KNoT - Uma plataforma de IoT interoperável para o Brasil
Software Livre, o caminho do futuro
Supervisão e Monitorização
Casos De Sucesso De Software Livre Ap
Python e suas aplicações
Casos De Sucesso De Software Livre

Mais de iMasters (20)

PPTX
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
PDF
Postgres: wanted, beloved or dreaded? - Fabio Telles
PPTX
Por que minha query esta lenta? - Suellen Moraes
PPTX
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
PDF
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
PPTX
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
PDF
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
PDF
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
PDF
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
PDF
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
PDF
Entendendo os porquês do seu servidor - Talita Bernardes
PDF
Backend performático além do "coloca mais máquina lá" - Diana Arnos
PPTX
Dicas para uma maior performance em APIs REST - Renato Groffe
PPTX
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
PDF
Quem se importa com acessibilidade Web? - Mauricio Maujor
PDF
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
PDF
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
PDF
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
PDF
Construindo aplicações mais confiantes - Carolina Karklis
PDF
Monitoramento de Aplicações - Felipe Regalgo
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
Postgres: wanted, beloved or dreaded? - Fabio Telles
Por que minha query esta lenta? - Suellen Moraes
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Entendendo os porquês do seu servidor - Talita Bernardes
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Dicas para uma maior performance em APIs REST - Renato Groffe
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
Quem se importa com acessibilidade Web? - Mauricio Maujor
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Construindo aplicações mais confiantes - Carolina Karklis
Monitoramento de Aplicações - Felipe Regalgo

Último (20)

PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
PPTX
Émile Durkheim slide elaborado muito bom
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Aula sobre banco de dados com firebase db
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PPTX
Aula sobre desenvolvimento de aplicativos
PPTX
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Curso de Java 9 - (Threads) Multitarefas.pptx
Apple Pippin Uma breve introdução. - David Glotz
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
Émile Durkheim slide elaborado muito bom
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Aula sobre banco de dados com firebase db
Aula 18 - Manipulacao De Arquivos python
COBITxITIL-Entenda as diferença em uso governança TI
Processos na gestão de transportes, TM100 Col18
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Aula sobre desenvolvimento de aplicativos
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx

InterCon 2016 - Backend do IoT com RethinkDB e Python