Slide 1

Slide 1 text

Expondo sua placa via servidor HTTP usando Python e Bottle

Slide 2

Slide 2 text

Olá Meu nome é Luiz Menezes Onde me encontrar: @luiz_amf github.com/lamenezes

Slide 3

Slide 3 text

1. Python Pequena e rápida introdução a Python

Slide 4

Slide 4 text

Python Visão Geral ▷ Simples, enxuta e poderosa ▷ Pilhas inclusas ▷ Interpretada e dinâmica ▷ Comunidade ativa e amigável

Slide 5

Slide 5 text

▷ IoT ○ MicroPython ○ Arduino, RaspberryPi, Intel Galileo, ... ▷ Web ○ Django, Flask, Bottle, Web2py, tornado, twisted, Celery, RQ ▷ Scripting Python Para que é usada?

Slide 6

Slide 6 text

▷ 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?

Slide 7

Slide 7 text

PyCon 2016 Python Por quem é usada?

Slide 8

Slide 8 text

▷ Demonstração ○ Função ○ Lista ○ Iteração Python Introdução

Slide 9

Slide 9 text

2. HTTP HTT...o que?

Slide 10

Slide 10 text

“ HTTP é um protocolo de comunicação utilizado para sistemas de informação de hipermídia, distribuídos e colaborativos Tim Berners-Lee

Slide 11

Slide 11 text

HTTP HyperText Transfer Protocol ▷ Definido pelo RFC 2616 ▷ Modelo cliente-servidor ○ Exemplos ■ Cliente: browser ■ Servidores: apache, nginx, microsoft IIS, etc.

Slide 12

Slide 12 text

HTTP HyperText Transfer Protocol ▷ Demonstração GET / HTTP/1.1 Host: uol.com.br GET / HTTP/1.1 Host: www.uol.com.br

Slide 13

Slide 13 text

▷ 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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

HTTP HyperText Transfer Protocol ▷ Códigos de status ○ 2xx Sucesso ○ 3xx Redirecionamento ○ 4xx Erro do cliente ○ 5xx Erro do servidor

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

HTTP HyperText Transfer Protocol ▷ Métodos ○ GET ○ HEAD ○ POST ○ PUT ○ DELETE

Slide 18

Slide 18 text

3. Bottle Framework de aplicações web Python

Slide 19

Slide 19 text

▷ Micro ▷ Arquivo único ○ Depende somente do Python ▷ Roteamento e Templates ▷ Servidor HTTP embutido ○ Testes locais e aplicações pequenas Bottle Microframework Web

Slide 20

Slide 20 text

▷ PyPI ○ pip install bottle ▷ Manual ○ baixe o bottle.py e coloque no diretório da sua aplicação Bottle Como instalar

Slide 21

Slide 21 text

Bottle Como usar

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

Mãos na massa O que faremos ▷ Servidor ○ Raspberry Pi ▷ Cliente ○ Navegador ○ Aplicação que faz requisições

Slide 24

Slide 24 text

▷ Rotas ○ Modo: /modo// ■ Modos: input e output ○ Leitura de pino: / ○ Saida: // ■ sinal : 0 e 1 Mãos na massa Aplicação servidor

Slide 25

Slide 25 text

▷ 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

Slide 26

Slide 26 text

Página que muda o modo do pino Mãos na massa Implementando

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

O jeito fácil pingo

Slide 33

Slide 33 text

▷ API fácil de usar para dispositivos ▷ Uniforme O jeito fácil pingo

Slide 34

Slide 34 text

▷ Hello World O jeito fácil pingo

Slide 35

Slide 35 text

▷ Hello World via HTTP ○ Servidor O jeito fácil pingo

Slide 36

Slide 36 text

▷ Hello World via HTTP ○ Cliente O jeito fácil pingo

Slide 37

Slide 37 text

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