Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Você me informou que está desenvolvendo no Android Studio. Com isso, os scripts em Python que forneci não serão diretamente úteis para você. No ambiente Android, o desenvolvimento de aplicativos para comunicação MQTT será em Java ou Kotlin, e a lógica de comunicação será diferente.
Passo a passo para acionar um LED usando MQTT em Android Studio
1. Requisitos e Ferramentas
· Android Studio instalado.
· Dispositivo Android (ou emulador) para rodar o app.
· A biblioteca Eclipse Paho MQTT Client para Android. Ela é a implementação oficial do Paho para Android. Você precisa adicioná-la ao seu projeto.
· Um broker MQTT (Mosquitto, HiveMQ, etc.).
2. Adicionando a dependência do MQTT ao seu projeto Android
1. Abra seu projeto no Android Studio.
2. Nos arquivos libs.versions.toml, build.gradle (Module: app), adicione a seguinte dependência dentro do bloco dependencies:
	mqttclient="1.2.5"
mqttservice="1.1.1"
...
mqttclient = { group = "org.eclipse.paho", name = "org.eclipse.paho.client.mqttv3", version.ref = "mqttclient" }
mqttservice = { group = "org.eclipse.paho", name = "org.eclipse.paho.android.service", version.ref = "mqttservice" }
Libs
	 buildTypes {
 release {
 isMinifyEnabled = true
 isShrinkResources = true
 proguardFiles(
 getDefaultProguardFile("proguard-android-optimize.txt"),
 "proguard-rules.pro"
 )
 }
 debug {
 isDebuggable = true
 }
 }
…
 implementation(libs.mqttclient)
 implementation(libs.mqttservice)
Module:app
3. Clique em "Sync Now" para sincronizar seu projeto com a nova dependência.
3. Permissões de Internet
Seu aplicativo precisará de permissões para se conectar à internet. Adicione as seguintes linhas no seu arquivo AndroidManifest.xml, dentro da tag e antes da tag :
	 
 
 
 
 
 *.acvbr.com
 
network_security_config.xml
4. Desenvolvendo a Lógica no Android (Exemplo em Kotlin)
Você precisará de um arquivo de layout (XML) para a interface do usuário e um arquivo de classe (Kotlin ou Java) para a lógica.
Exemplo de Layout (activity_main.xml):
	
 
 
XML
Exemplo de Lógica (MainActivity.kt):
Este é o script principal. Ele se conectará ao broker MQTT e publicará mensagens quando os botões forem clicados.
	import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import org.eclipse.paho.client.mqttv3.*
class MainActivity : AppCompatActivity() {
 private lateinit var mqttClient: MqttClient
 // Substitua pelo seu broker se for usar um privado
 private val brokerUri = "tcp://mqtt.eclipseprojects.io:1883"
 private val clientId = MqttClient.generateClientId()
 private val topic = "led/control"
 override fun onCreate(savedInstanceState: Bundle?) {
 super.onCreate(savedInstanceState)
 setContentView(R.layout.activity_main)
 connectToMqttBroker()
 val buttonOn: Button = findViewById(R.id.buttonOn)
 val buttonOff: Button = findViewById(R.id.buttonOff)
 buttonOn.setOnClickListener {
 publishMessage("on")
 }
 buttonOff.setOnClickListener {
 publishMessage("off")
 }
 }
 private fun connectToMqttBroker() {
 try {
 mqttClient = MqttClient(brokerUri, clientId, MqttDefaultFilePersistence(cacheDir.absolutePath))
 val options = MqttConnectOptions()
 options.isAutomaticReconnect = true
 options.isCleanSession = true
 mqttClient.connect(options)
 Log.d("MQTT", "Conectado ao broker MQTT")
 } catch (e: MqttException) {
 Log.e("MQTT", "Erro de conexão: ${e.message}")
 e.printStackTrace()
 }
 }
 private fun publishMessage(message: String) {
 if (!mqttClient.isConnected) {
 Log.d("MQTT", "Cliente não conectado. Tentando reconectar...")
 connectToMqttBroker()
 return
 }
 try {
 val mqttMessage = MqttMessage(message.toByteArray())
 mqttClient.publish(topic, mqttMessage)
 Log.d("MQTT", "Mensagem publicada no tópico '$topic': $message")
 } catch (e: MqttException) {
 Log.e("MQTT", "Erro ao publicar mensagem: ${e.message}")
 e.printStackTrace()
 }
 }
 override fun onDestroy() {
 super.onDestroy()
 if (mqttClient.isConnected) {
 try {
 mqttClient.disconnect()
 Log.d("MQTT", "Desconectado do broker.")
 } catch (e: MqttException) {
 e.printStackTrace()
 }
 }
 }
}
Kotlin
Exemplo de Lógica (MainActivity.java):
Este é o script principal. Ele se conectará ao broker MQTT e publicará mensagens quando os botões forem clicados.
	import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import org.eclipse.paho.client.mqttv3.IMqttMessageListener;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.persist.MqttDefaultFilePersistence;
public class MainActivity extends AppCompatActivity {
 private MqttClient mqttClient;
 // Substitua pelo seu broker se for usar um privado
 private final String brokerUri = "tcp://mqtt.eclipseprojects.io:1883";
 private final String clientId = MqttClient.generateClientId();
 private final String topic = "led/control";
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 connectToMqttBroker();
 Button buttonOn = findViewById(R.id.buttonOn);
 Button buttonOff = findViewById(R.id.buttonOff);
 buttonOn.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 publishMessage("on");
 }
 });
 buttonOff.setOnClickListener(new View.OnClickListener() {
 @Override
 public void void onClick(View v) {
 publishMessage("off");
 }
 });
 }
 private void connectToMqttBroker() {
 try {
 mqttClient = new MqttClient(brokerUri, clientId, new MqttDefaultFilePersistence(getCacheDir().getAbsolutePath()));
 MqttConnectOptions options = new MqttConnectOptions();
 options.setAutomaticReconnect(true);options.setCleanSession(true);
 mqttClient.connect(options);
 Log.d("MQTT", "Conectado ao broker MQTT");
 } catch (MqttException e) {
 Log.e("MQTT", "Erro de conexão: " + e.getMessage());
 e.printStackTrace();
 }
 }
 private void publishMessage(String message) {
 if (mqttClient == null || !mqttClient.isConnected()) {
 Log.d("MQTT", "Cliente não conectado. Tentando reconectar...");
 connectToMqttBroker();
 return;
 }
 try {
 MqttMessage mqttMessage = new MqttMessage(message.getBytes());
 mqttClient.publish(topic, mqttMessage);
 Log.d("MQTT", "Mensagem publicada no tópico '" + topic + "': " + message);
 } catch (MqttException e) {
 Log.e("MQTT", "Erro ao publicar mensagem: " + e.getMessage());
 e.printStackTrace();
 }
 }
 @Override
 protected void onDestroy() {
 super.onDestroy();
 if (mqttClient != null && mqttClient.isConnected()) {
 try {
 mqttClient.disconnect();
 Log.d("MQTT", "Desconectado do broker.");
 } catch (MqttException e) {
 e.printStackTrace();
 }
 }
 }
}
Java
5. Lógica no Dispositivo de Controle (Raspberry Pi/ESP32)
Lembre-se que este aplicativo Android é o Publicador. Você ainda precisará de um dispositivo que atuará como assinante. Este dispositivo se conectará ao mesmo broker, assinará o tópico led/control e, quando receber as mensagens on ou off, acionará ou desligará o LED fisicamente.
A lógica de código para o assinante será a mesma que descrevi no primeiro passo a passo, mas a escolha da linguagem (Python, C++, etc.) dependerá do microcontrolador ou dispositivo que você está utilizando.

Mais conteúdos dessa disciplina