Jump to content
ELFORUM - Forumul electronistilor

MQTT publish-subscribe


XAN77

Recommended Posts

deci, să le iau pe rând:

-la mine în PubSubClient.h acea linie este ”#define MQTT_KEEPALIVE 15”

-unu din senzorii wifi avea același id cu altul din alta cameră, am modificat dar degeaba

-la mine clienții cu senzori trimit datele la 30 secunde, dar am pus acum să trimită și la 10 secunde și degeaba

-”ar fi mai simplu sa le trasmita cu retain” cum fac asta ?

 

LE acum are numele ”Dormitor-clock” plus acel hex

Edited by x_dadu
Link to comment
  • Replies 19
  • Created
  • Last Reply

Top Posters In This Topic

  • XAN77

    10

  • Viorel A

    2

Top Posters In This Topic

așa publică clientul cu senzorul dht:

 

    temperature = dht.readTemperature();
    humidity = dht.readHumidity();

    client.publish("dormitor/dht11/tmp", String(temperature,1).c_str(), true) ;    
    client.publish("dormitor/dht11/hum", String(humidity,1).c_str(), true) ; 

am schimbat si numele topicului ca să fie mai scurt

 

LE am suprascris în funcția setup acel timp de keepalive de 15 secunde cu comanda:

client.setKeepAlive(35);

Acum are timp să primească toate datele, îmi afișează tot ce vroiam, pare ok. Dar în terminalul raspberry pi văd că tot primesc mesaje că ceasul a întrerupt conexiunea și o reia și tot așa, deci ceva tot e aiurea, că numai el generează evenimentele alea. Doar că acum stă mai mult timp conectat și apucă să primească datele topicurilor la care e abonat.

Edited by x_dadu
Link to comment

Este ciudat ca apare "connection close". 
Normal era ca dupa client.subscribe() , clientul sa citeasca datele din server mqtt cu apelarea client.loop() (prin callback()) fara sa se deconecteze.
Pentru test, incearca sa apelezi client.loop() dupa fiecare diy_wait_ms(1000); in afara de ultimul diy_wait...



 

Edited by Guest
Link to comment

Mulțumesc @Liviu.Mihaiu asta era. Am lăsat keepalive la valoarea default de 15 secunde și am mai adăugat câteva linii client.loop() după acele delayuri, așa cum ai recomandat, iar acum nu mai apar evenimente generate de acel ceas, nu se mai deconectează și primește corect datele la care se abonează.

Problema a apărut pentru că eu adăugând un delay în plus, având o informație în plus de afișat pe display respectiv acel al 3-lea topic la care am făcut subscribe, am atins cumva o limită la care neexecutarea funcției client.loop() duce la o întrerupere a conexiunii client-broker.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines