Beruflich Dokumente
Kultur Dokumente
MQTT: Message Queuing Telemetry Transport, protocolo bastante popular que baseia-se em
protocolos publish/subscribe, sua principal aplicabilidade é para dispositivos de internet
das coisas em comunicação M2M(machine to machine) e dispositivos móveis.
HTTPS: Hyper Text Transfer Protocol Secure, pode ser definida como uma implementação do
HTTP com a adição de uma camada de segurança que faz uso de protocolos como SSL, permitindo
tráfego de dados com criptografia.
Implementação Inicial - HTTP
Cisco Packet Tracer
CoAP
● CoAP é:
○ Protocolo RESTful eficiênte
○ Ideal para redes e dispositivos com recursos limitados
○ Focado em comunicações M2M
○ Fácil comunicação com HTTP (Proxy de/para HTTP)
● CoAP não é:
○ Uma reposição generalizada do HTTP
○ Uma compressão do HTTP
○ Restrita para domótica
Características COaP
● Protocolo de transferência de Web incorporado (coap://)
● Modelo de transação assíncrono com vinculação UDP e
suporte a multicast
● GET, POST, PUT, DELETE métodos e suporte a URI
● Pequeno, simples cabeçalho de 4 bytes
Cabeçalho COaP
Implementações
● Python - aioCoap & COaPython
● Java - Californium
● C/C++ - libcoap
MQTT(Message Queue Telemetry Transport)
O protocolo de mensagens MQTT é projetado para:
subscribe
(tópico)
Ar-condicionado
Comunicação
via MQTT
Interface Mosquitto Lâmpada
Gráfica / Broker
Gateway
Rádio
Persiana
Tecnologias utilizadas no MQTT
Linux
http://www.steves-internet-guide.com/install-mosquitto-broker/
http://www.switchdoc.com/2016/02/tutorial-installing-and-testing-mosquitto-mqt
t-on-raspberry-pi/
MAC
https://simplifiedthinking.co.uk/2015/10/03/install-mqtt-server/
Teste
Em um terminal:
mosquitto_sub -d -t hello/world
Em outro terminal:
mosquitto_pub -d -t hello/world -m
"Hello from UFC!"
Criando o projeto
File>new>project>
maven project
Incluindo bilioteca
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ufc.br</groupId>
<artifactId>mqtt_java</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
</project>
Código Publisher
clientePublish.disconnect();
System.out.println("Disconectado");
System.exit(0);
...
catch (MqttException me) {
System.out.println("reason " + me.getReasonCode());
System.out.println("msg " + me.getMessage());
System.out.println("loc " + me.getLocalizedMessage());
System.out.println("cause " + me.getCause());
System.out.println("excep " + me);
me.printStackTrace();
}
Código Subscriber
clienteSubscribe.subscribe(topic);
...
} catch (MqttException me) {
System.out.println("reason " +
me.getReasonCode());
System.out.println("msg " + me.getMessage());
System.out.println("loc " +
me.getLocalizedMessage());
System.out.println("cause " + me.getCause());
System.out.println("excep " + me);
me.printStackTrace();
}
public class SimpleMqttCallBack implements MqttCallback {
String message;
@Override
public void connectionLost(Throwable throwable) {
System.out.println("Conexao com MQTT broker perdida!");
}
@Override
public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception {
message = new String(mqttMessage.getPayload());
System.out.println("Menssagem recebida" + " para " + topic + " :\t"+ message );
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
}
}
}
SmartHome - Cliente/Servidor e MQTT
https://youtu.be/Wz222xDk498