3
respostas

App Trava quando comunica com Raspberry

Tudo ok usando o server iot.eclipse.org , só que quando troquei o server para o rasp, imitando oque fiz testando a comunicação via prompt, o App do celular trava na tela onde aparece o tópico, logo depois que o dispositivo se conecta ao rasp. Fui até o terminal do rasp e executei o prompt do Subscriber-test.py e consegui receber a informação via prompt. Quero saber se é normal o app travar quando o rasp faz o papel do Broker, se sim, porque?

Segue abaixo o código, como não tenho o DH11 ou DH22, fiz o experimento com o LDR, vale a observação, quando despluguei o nodeMCU do USB, e entrei no MQTT do rasp no cel, o tópico ficou com o valor do ultimo registro e quando liguei denovo o programa travou na hora

// --- WIFI ---
#include <ESP8266WiFi.h>
const char* ssid = "Lenovo C2";       // troque pelo nome da sua rede
const char* password = "abc123";   // troque pela senha da sua rede
WiFiClient nodemcuClient;

// --- MQTT ---
#include <PubSubClient.h>
const char* mqtt_Broker = "192.168.43.81";
const char* mqtt_ClientID = "termometro-remerces01";
PubSubClient client(nodemcuClient);
const char* topicoLum = "lab/temperatura";



void setup() {
  // put your setup code here, to run once:
 Serial.begin(9600);
 conectarWifi();
 client.setServer(mqtt_Broker, 1883);
}

void loop() {
  // put your main code here, to run repeatedly:
publicarLum();
Serial.print(analogRead(A0));

if (!client.connected()) {
    reconectarMQTT();
  }


}

void reconectarMQTT() {
  while (!client.connected()) {
    client.connect(mqtt_ClientID);
  }
}

//PUBLICAR

void publicarLum(){
  client.publish(topicoLum, String(analogRead(A0)).c_str(),true);
}

// ---Função Conectar WiFi---
void conectarWifi() {
  delay(10);

  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
}
3 respostas

Oi Nicholas,

Nos nossos testes isso não aconteceu mas como não desenvolvemos a app para Android é difícil de dizer o que causa esse problema.

Tem como vc testar a app em outro celular? Para ver se é algo especifico do seu aparelho.

abs, Nico

Peguei outro celular e testei, trava da mesma forma, após o travamento o app se desconecta do raspberry.

Será que seria algum problema nas configurações do rasp?

É que antes do alura eu caçava na net como configurar ele... não sei se posso ter instalado algo que prejudicou. Seria uma boa tentativa reinstalar o raspian?

O problema deve ser a quantidade de dados que você esta tentando ler pelo app (possivelmente um Client MQTT), no seu loop principal você esta enviando dados para o Broker numa taxa muito alta. Não há nenhum delay entre os envios da "publicarLum()", veja que seu loop pode ser executado em algumas centenas de milisegundos, isso pode ser um problema para o seu app, logo acredito que colocando um delay de 1 ou 2 segundos ou ir aumentando esse valor você consiga ver o app atualizando os dados de uma forma mais fluída.

void loop() {
  // put your main code here, to run repeatedly:
publicarLum();
Serial.print(analogRead(A0));

if (!client.connected()) {
    reconectarMQTT();
  }
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software