Upload
imasters
View
164
Download
2
Embed Size (px)
Citation preview
BACKEND DO IOT
ARDUINO ESP8266 RASPBERRY PI FALCON RETHINKDB
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 IOTPRA 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 MIRRORHACK 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 LanguageReQL
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 LanguageReQL
query = r.table('users').pluck('last_name').distinct()
query.run(conn)
Execução Server-side
RethinkDB Query LanguageReQL
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 LanguageReQL
#matematica
(r.expr(2) + 2 / 2).run(conn)
#condicional
(r.expr(2) > 3).run(conn)
Divertido
RethinkDB Query LanguageReQL
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.ONESTRUTURA
ESP8266TEMPERATURA
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 BOTFATHERSÓ 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!