Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

InterCon 2016 - Backend do IoT com RethinkDB e Python

419 views

Published on

Afonso Coutinho, Makerspace Monitor da Red Bull Basement fala sobre Backend do IoT com RethinkDB e Python no InterCon 2016.
Saiba mais em http://intercon2016.imasters.com.br/

Published in: Technology
  • Be the first to comment

InterCon 2016 - Backend do IoT com RethinkDB e Python

  1. 1. BACKEND DO IOT ARDUINO ESP8266 RASPBERRY PI FALCON RETHINKDB
  2. 2. SOBRE MIM AFONSO COUTINHO PROGRAMADOR
 PROFESSOR /AFONSOCOUTINHO FACEBOOK AFONSO@WOLKSEN.COM EMAIL
  3. 3. PORQUE BACKEND DA INTERNET DAS COISAS?
  4. 4. 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.
  5. 5. COMO FUNCIONA HOJE EM DIA O DESENVOLVIMENTO BACKEND?
  6. 6. SISTEMAS EMPRESARIAIS ▸ Software para servidores potentes, datacenters, etc. ▸ Desenvolvimento em uma plataforma unificada. ▸ Programação com alto nível de abstração.
  7. 7. SISTEMAS EMBARCADOS ▸ Software para dispositivos de várias configurações. ▸ Desenvolvimento para plataformas diferentes. ▸ Programação de baixo nível de abstração
  8. 8. AÍ ENTRA O INCRÍVEL MUNDO DOS SISTEMAS IOT PRA UNIFICAR TODOS!
  9. 9. ENTRETANTO…
  10. 10. PRECISAMOS DE GENTE DOMINANDO O BACKEND DESSE NOVO MUNDO! IoT
  11. 11. AGORA, COMO SER UM?
  12. 12. ISSO "NÓIS" ENTENDE! IOT É BASICAMENTE UM SISTEMA DE MENSAGENS COM: ▸ Mensagens assíncronas ▸ Mensagens pequenas ▸ Bastante mensagens
  13. 13. ISSO "NÓIS" ENTENDE TB! DESENVOLVIMENTO IOT FICA FÁCIL COM AS PRÁTICAS DE DEVOPS!
  14. 14. UIA! "NÓIS" TAMBÉM! IOT AMA LINUX!
  15. 15. IOT + POR QUÊ NÃO?
  16. 16. MAS, EXISTE UM LADO NEGRO…
  17. 17. É 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…
  18. 18. TER CONECTIVIDADE ESTÁVEL É UM LUXO… PLANEJAR O SISTEMA SEMPRE PENSANDO O PIOR É NECESSÁRIO!
  19. 19. …AS VEZES NEM ENERGIA! PLANEJAR O SISTEMA SEMPRE PENSANDO O PIOR É NECESSÁRIO! V2
  20. 20. PRECISAMOS PAGAR PRA USAR ALGUNS SERVIÇOS, COMO CELULAR, WIFI, ETC… PARECE ÓBVIO MAS POUCOS LEMBRAM DISSO!
  21. 21. É PRECISO SOBREVIVER NAS CONDIÇÕES ADVERSAS DO AMBIENTE DE PRODUÇÃO CHUVA, CALOR, FRIO, VENTO, VIBRAÇÃO, GPS SEM SINAL…
  22. 22. NECESSIDADE DE SER TUDO REMOTO DEPLOY REMOTO, ATUALIZAÇÃO REMOTA, MONITORAMENTO REMOTO, ETC…
  23. 23. HARDWARE
  24. 24. BACKEND DO IOT ARDUINO ▸ Open-Hardware ▸ Linguagem própria ▸ Plug'n'play ▸ Comunidade madura ▸ Paixão mundial ▸ Fácil de aprender ▸ Coringa pra prototipar
  25. 25. MODELOS
  26. 26. SHIELDS
  27. 27. MÓDULOS
  28. 28. MONTE O SEU EM CASA
  29. 29. BACKEND DO IOT RASPBERRY PI ▸ Open-Hardware(quase) ▸ Mini PC ▸ Ótimo para multimídia ▸ Comunidade madura ▸ GPIOs via software ▸ Barato ▸ Serve pra produção
  30. 30. PIBOY MAGIC MIRROR HACK FTW CARPUTER
  31. 31. 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
  32. 32. BACKEND DO IOT ESP8266 ▸ Open-Hardware ▸ Usa pouca energia ▸ WiFi ▸ Comunidade madura ▸ Pequeno ▸ Barato ▸ Ótimo pra produção
  33. 33. CHATO DE PROGRAMAR
  34. 34. NODEMCU WEMOS MICRO SHIELDS
  35. 35. RTL8710 ARM CORTEX-M3 ESP8285 WEARABLES ESP32 BLUETOOTH 4.2 DUAL CORE
  36. 36. SOFTWARE
  37. 37. 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/
  38. 38. Falcon Framework $ pip install falcon Guia Rápido!
  39. 39. 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!
  40. 40. Falcon Framework $ pip install gunicorn $ gunicorn oi:app Guia Rápido!
  41. 41. Falcon Framework $ curl localhost:8000/oi Guia Rápido!
  42. 42. 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
  43. 43. 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
  44. 44. r.table('chat').orderBy('last_update').changes() .changes()
  45. 45. r.http('https://api.github.com/repos/afonso/impressao3d/commits') r.http
  46. 46. 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
  47. 47. RethinkDB Query Language ReQL query = r.table('users').pluck('last_name').distinct() query.run(conn) Execução Server-side
  48. 48. 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
  49. 49. RethinkDB Query Language ReQL #matematica (r.expr(2) + 2 / 2).run(conn) #condicional (r.expr(2) > 3).run(conn) Divertido
  50. 50. 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
  51. 51. 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
  52. 52. CASES
  53. 53. HACKED VENDING MACHINE
  54. 54. CASES HACKED VENDING MACHINE ESP8266 INTERNET ARDUINO MOTORES CHUTE SENSOR TELEGRAM API CHAT BOT USUÁRIO Celular Vending Machine ESTRUTURA
  55. 55. CASES HACKED VENDING MACHINE
  56. 56. PONTOS CEGOS
  57. 57. 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
  58. 58. CASES PONTOS CEGOS
  59. 59. PLUVI.ON
  60. 60. 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
  61. 61. CASES PLUVI.ON
  62. 62. TELEGRAM? BOT DOMINATION!!!
  63. 63. TELEGRAM BOTS THE BOTFATHER 
 SÓ FALAR COM @BOTFATHER E SEGUIR AS INSTRUÇÕES
  64. 64. 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!
  65. 65. /AFONSOCOUTINHO FACEBOOK AFONSO@WOLKSEN.COM EMAIL FIM!

×