Expondo o Raspberry Pi via servidor web

Expondo o Raspberry Pi via servidor web

Palestra apresentada no Arduino Day no DC/UFSCar

Esta palestra ensina como acessar os pinos de um Raspberry Pi através de uma aplicação web escrita em Python e Bottle.

Fd349405eaec4414ccf8720edea9b4fa?s=128

Luiz Menezes

April 02, 2016
Tweet

Transcript

  1. Expondo sua placa via servidor HTTP usando Python e Bottle

  2. Olá Meu nome é Luiz Menezes Onde me encontrar: @luiz_amf

    github.com/lamenezes
  3. 1. Python Pequena e rápida introdução a Python

  4. Python Visão Geral ▷ Simples, enxuta e poderosa ▷ Pilhas

    inclusas ▷ Interpretada e dinâmica ▷ Comunidade ativa e amigável
  5. ▷ IoT ◦ MicroPython ◦ Arduino, RaspberryPi, Intel Galileo, ...

    ▷ Web ◦ Django, Flask, Bottle, Web2py, tornado, twisted, Celery, RQ ▷ Scripting Python Para que é usada?
  6. ▷ Programação científica ◦ SciPy, numpy, scikit-learn, pandas, IPython, matplotlib,

    ... ▷ Desktop ◦ PyGTK, PyQT, WxPython, tkinter ▷ Educação ◦ "BBC begin to deliver 1 million small programmable devices to the UK's 11 and 12 year old children." (PSF, 2016) Python Para que é usada?
  7. PyCon 2016 Python Por quem é usada?

  8. ▷ Demonstração ◦ Função ◦ Lista ◦ Iteração Python Introdução

  9. 2. HTTP HTT...o que?

  10. “ HTTP é um protocolo de comunicação utilizado para sistemas

    de informação de hipermídia, distribuídos e colaborativos Tim Berners-Lee
  11. HTTP HyperText Transfer Protocol ▷ Definido pelo RFC 2616 ▷

    Modelo cliente-servidor ◦ Exemplos ▪ Cliente: browser ▪ Servidores: apache, nginx, microsoft IIS, etc.
  12. HTTP HyperText Transfer Protocol ▷ Demonstração GET / HTTP/1.1 Host:

    uol.com.br GET / HTTP/1.1 Host: www.uol.com.br
  13. ▷ Requisição HTTP ◦ Requisição GET /static/image/logo.png HTTP/1.1 Host: www.exemplo.com.br

    ◦ Cabeçalho ▪ Host ▪ Accept-Language ▪ Last-Modified HTTP HyperText Transfer Protocol
  14. HTTP HyperText Transfer Protocol ▷ Resposta HTTP ◦ Status (ex:

    HTTP/1.1 200 OK) ◦ Cabeçalho de resposta ▪ Content-Type (text/html, image/png, ...) ▪ Content-Encoding (utf-8, ascii, ...) ▪ Content-Length ▪ Last-Modified
  15. HTTP HyperText Transfer Protocol ▷ Códigos de status ◦ 2xx

    Sucesso ◦ 3xx Redirecionamento ◦ 4xx Erro do cliente ◦ 5xx Erro do servidor
  16. HTTP HyperText Transfer Protocol ▷ Códigos de erros ◦ 4xx

    Erro do cliente ▪ 400 Bad Request ▪ 401 Unauthorized ▪ 403 Forbidden ▪ 404 Not found ◦ 5xx Erro do servidor ▪ 500 Internal Server Error ▪ 503 Service Unavaiable
  17. HTTP HyperText Transfer Protocol ▷ Métodos ◦ GET ◦ HEAD

    ◦ POST ◦ PUT ◦ DELETE
  18. 3. Bottle Framework de aplicações web Python

  19. ▷ Micro ▷ Arquivo único ◦ Depende somente do Python

    ▷ Roteamento e Templates ▷ Servidor HTTP embutido ◦ Testes locais e aplicações pequenas Bottle Microframework Web
  20. ▷ PyPI ◦ pip install bottle ▷ Manual ◦ baixe

    o bottle.py e coloque no diretório da sua aplicação Bottle Como instalar
  21. Bottle Como usar

  22. 4. Mãos na massa! Expondo a placa na "web"

  23. Mãos na massa O que faremos ▷ Servidor ◦ Raspberry

    Pi ▷ Cliente ◦ Navegador ◦ Aplicação que faz requisições
  24. ▷ Rotas ◦ Modo: /modo/<modo>/<pino> ▪ Modos: input e output

    ◦ Leitura de pino: /<pino> ◦ Saida: /<pino>/<sinal> ▪ sinal : 0 e 1 Mãos na massa Aplicação servidor
  25. ▷ Exemplo ◦ http://localhost:8080/modo/output/24 ▪ Coloca o pino 24 em

    modo de saída ◦ http://localhost:8080/24/1 ▪ Manda um sinal '1' para o pino 24 ◦ http://localhost:8080/24 ▪ Lê o pino Mãos na massa Aplicação servidor
  26. Página que muda o modo do pino Mãos na massa

    Implementando
  27. Página que lê o estado do pino Mãos na massa

    Implementando
  28. Página que escreve saída Mãos na massa Implementando

  29. Página que mostra o estado do LED Mãos na massa

    EXTRA
  30. https://github. com/lamenezes/raspberrypi-web- exemplo Mãos na massa Código-fonte

  31. 5. O jeito fácil Nem sempre vale a pena reinventar

    a roda
  32. O jeito fácil pingo

  33. ▷ API fácil de usar para dispositivos ▷ Uniforme O

    jeito fácil pingo
  34. ▷ Hello World O jeito fácil pingo

  35. ▷ Hello World via HTTP ◦ Servidor O jeito fácil

    pingo
  36. ▷ Hello World via HTTP ◦ Cliente O jeito fácil

    pingo
  37. Onde me encontrar: @luiz_amf github.com/lamenezes Obrigado! Dúvidas?