-
Notifications
You must be signed in to change notification settings - Fork 2
Integração com MQTT
Estevam edited this page Jun 1, 2024
·
1 revision
- Escolha do Broker MQTT:
- Instalação do Broker MQTT:
- Mosquitto:
sudo apt update
sudo apt install mosquitto mosquitto-clients- EMQX:
# Para instalar EMQX via Docker:
docker run -d --name emqx -p 1883:1883 -p 8083:8083 emqx/emqx- Configuração do Broker:
- Modifique o arquivo de configuração do broker para definir os parâmetros necessários, como porta, autenticação e autorização.
- Exemplo para Mosquitto:
listener 1883
allow_anonymous true- Iniciando o Broker:
- Mosquitto:
sudo systemctl start mosquitto
sudo systemctl enable mosquitto- EMQX:
docker start emqx- Verificação da Configuração:
- Use um cliente MQTT para verificar se o broker está funcionando corretamente.
mosquitto_pub -h localhost -t test/topic -m "Hello MQTT"
mosquitto_sub -h localhost -t test/topicLista de tópicos utilizados no projeto e suas descrições:
2bqsvw6678/temperatura2505- Descrição: Publicação da temperatura lida pelo sensor DHT11.
- Tipo: Publicação.
2bqsvw6678/humidade2505- Descrição: Publicação da umidade lida pelo sensor DHT11.
- Tipo: Publicação.
2bqsvw6678/nivelAgua2505- Descrição: Publicação do nível de água na cafeteira.
- Tipo: Publicação.
2bqsvw6678/- Descrição: Tópico base para controle da cafeteira (ligar/desligar).
- Tipo: Assinatura.
Para publicar mensagens nos tópicos MQTT, o código no microcontrolador deve usar a função client.publish(). Aqui está um exemplo de como isso é feito no código:
// Publica os valores de temperatura e umidade
void dht_sensor_getdata() {
float hm = dht.readHumidity();
float temp = dht.readTemperature();
// Converte os valores para String
String tempString = String(temp, 2);
String humString = String(hm, 2);
// Publica os valores no broker MQTT
client.publish("2bqsvw6678/temperatura2505", tempString.c_str());
client.publish("2bqsvw6678/humidade2505", humString.c_str());
}
// Publica o valor do nível de água
void water_sensor_getdata() {
// Subtrai a última leitura da soma
total = total - readings[readIndex];
// Lê a nova leitura do sensor de água
readings[readIndex] = analogRead(waterSensorPin);
// Adiciona a nova leitura à soma
total = total + readings[readIndex];
// Atualiza o índice da leitura
readIndex = readIndex + 1;
// Se estamos no final do array, volta ao início
if (readIndex >= numReadings) {
readIndex = 0;
}
// Calcula a média
average = total / numReadings;
// Converte o valor para String
String waterString = String(average);
// Publica o valor no broker MQTT
client.publish("2bqsvw6678/nivelAgua2505", waterString.c_str());
}Para assinar mensagens em um tópico MQTT, o código no microcontrolador deve usar a função client.subscribe() e definir um callback para processar as mensagens recebidas. Aqui está um exemplo de como isso é feito no código:
// Conecta ao broker MQTT e assina o tópico
bool connectMQTT() {
byte tentativa = 0;
while (!client.connected() && tentativa < 5) {
if (client.connect("arduinoClient", mqtt_username, mqtt_password)) {
Serial.println("Conexão bem-sucedida ao broker MQTT!");
client.subscribe("2bqsvw6678/");
return true;
} else {
Serial.print("Falha ao conectar: ");
Serial.println(client.state());
Serial.print("Tentativa: ");
Serial.println(tentativa);
delay(2000);
tentativa++;
}
}
Serial.println("Não foi possível conectar ao broker MQTT");
return false;
}
// Callback para processar mensagens recebidas
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Mensagem recebida no tópico: ");
Serial.println(topic);
String message = "";
for (int i = 0; i < length; i++) {
message += (char)payload[i];
}
Serial.print("Mensagem: ");
Serial.println(message);
if (message.equals("ligar")) {
toggleRelay(false);
} else if (message.equals("desligar")) {
toggleRelay(true);
}
}
// Alterna o estado do relé e publica o novo estado
void toggleRelay(bool state) {
relayState = state;
digitalWrite(relayPin, state ? HIGH : LOW);
client.publish("2bqsvw6678/", state ? "ligado" : "desligado");
}© 2024 - Cafeteira IoT com MQTT & Alexa. Todos os direitos reservados.
Desenvolvido por Aplic-de-cloud-iot-industria-4-0-python.
- Home
- Arquitetura do Sistema
- Changelog
- Configuração
- Configurações do projeto e do sistem
- Conhecimentos Necessários para o Projeto
- Contribuição
- Cronograma do Projeto Cafeteira IoT
- Custo total do projeto
- Depuração
- Descrição
- Developer Guide
- Está perdido? E não sabe por onde começa
- FAQs
- Fluxo de Dados
- Getting Started
- Git
- Instalação
- Integração com MQTT
- Interface com o Usuário
- Lista de possíveis projeto IoT
- Maintenance: Manutenção e Atualizaçõ
- Manutenção e Atualizações
- Padrões de Projeto para o Desenvolvim
- Plataformas para o projeto IoT
- Problemas e Soluções
- Requisitos
- Resources
- Roadmap para C com IoT
- Roadmap para Python com IoT
- SOLID em Python IoT
- Tecnologias Utilizadas
- Testing: Testes e Validação
- Tipos de Protocolos IoT
- Troubleshooting
- Uso
- Uso da cafeteira IoT
- Uso de SOLID com C para Projeto em IoT
- Utilizando a plataforma Sinric Pro
- Visão Geral do Projeto
- Wireshark