Introdução a fluxos de dados

Analisando Dados de IoT em Python

Matthias Voppichler

IT Developer

O que é um fluxo de dados

  • Fluxo constante de dados
  • Exemplos
    • Mensagens no Twitter
    • Artigos de notícias online
    • Fluxos de vídeo
    • Dados de sensores (IoT)
    • Ordens de mercado (financeiro)
Analisando Dados de IoT em Python

O que é um fluxo de dados

  • Fluxo constante de dados
  • Exemplos
    • Mensagens no Twitter
    • Artigos de notícias online
    • Fluxos de vídeo
    • Dados de sensores (IoT)
    • Ordens de mercado (financeiro)
Analisando Dados de IoT em Python

MQTT

  • Protocolo de mensagens
  • Publicar / assinar
  • Baixo consumo

Servidor -> Atua como um Broker de mensagens

Cliente:

  • Conecta a um Broker
  • Publica dados
  • Assina tópicos

Message Queuing Telemetry Transport

Fluxo de dados MQTT - Do produtor -> para o Broker -> para os consumidores

Analisando Dados de IoT em Python

Biblioteca Python

Eclipse Paho™ MQTT Python Client

# Import MQTT library
import paho.mqtt

Mais informações e documentação no GitHub https://github.com/eclipse/paho.mqtt.python

Analisando Dados de IoT em Python

Mensagem única

import paho.mqtt.subscribe as subscribe
msg = subscribe.simple("paho/test/simple", 
                       hostname="test.mosquitto.org")

print(f"{msg.topic}, {msg.payload}")

Saída:

paho/test/simple, {"time": 1549481572, "humidity": 77, "temp": 21}
Analisando Dados de IoT em Python

Callback

def on_message(client, userdata, message):

print(f"{message.topic} : {message.payload}")

Argumentos

  • client - instância do cliente
  • userdata - dados privados do usuário
  • message - instância de MQTTMessage
Analisando Dados de IoT em Python

Callback

import paho.mqtt.subscribe as subscribe


subscribe.callback(on_message, topics="datacamp/roomtemp", hostname="test.mosquitto.org")
Analisando Dados de IoT em Python

Assinar com MQTT

import paho.mqtt.subscribe as subscribe

def on_message(client, userdata, message): print("{} : {}".format(message.topic, message.payload))
subscribe.callback(on_message, topics="datacamp/roomtemp", hostname="test.mosquitto.org")
datacamp/roomtemp : b'{"time": 1543344857, "hum": 34, "temp": 24}'
datacamp/roomtemp : b'{"time": 1543344858, "hum": 35, "temp": 23}'
datacamp/roomtemp : b'{"time": 1543344860, "hum": 36, "temp": 22}'
datacamp/roomtemp : b'{"time": 1543344946, "hum": 37, "temp": 22}'
datacamp/roomtemp : b'{"time": 1543345010, "hum": 36, "temp": 13}'
Analisando Dados de IoT em Python

Vamos praticar!

Analisando Dados de IoT em Python

Preparing Video For Download...