Bonsoir,
J'utilise la librairie MQTT.h dans un de mes projets qui utilise un Adruino UNO + Ethershield basé sur l'exemple de base. Fonctionne sans problème :
J'essaie simplement d'ajouter un "timestamp" chaque secondes dans la Loop en utilisant un clock RTC (DS3231 - Testé et fonctionnel)
Mais une fois la commande RTC ajoutée dans le "if (millis() - lastMillis > 1000)" l'heure apparaît chaque seconde mais la réception de message MQTT cesse de fonctionner (???).
Comme si le "void messageReceived(String &topic, String &payload)" de s'exécute plus lors de la réception d'un message MQTT sur le topic .
Note: Je peux confirmer que le Arduino est bien connecté au broker et inscrit au topic avec success.
Voici une partie du code et code complet en pièce jointe.
Merci d'avance.
. #include <Ethernet.h>
#include <MQTTClient.h>
#include <MQTT.h>
#include <Wire.h>
#include "RTClib.h"
RTC_DS3231 rtc;
...
...
...
void loop() {
client.loop();
if (!client.connected()) {
Serial.print("\nNOT CONNECTED TO BROKER....");
connect();
}
// publish a message roughly every second.
if (millis() - lastMillis > 1000) {
lastMillis = millis();
Serial.print("\nDEBUG\n");
DateTime now = rtc.now(); //THIS CAUSE ISSUE
Serial.print(now.hour(), DEC); //THIS CAUSE ISSUE
Serial.print(':'); //THIS CAUSE ISSUE
Serial.print(now.minute(), DEC); //THIS CAUSE ISSUE
Serial.print(':'); //THIS CAUSE ISSUE
Serial.print(now.second(), DEC); //THIS CAUSE ISSUE
Serial.println(); //THIS CAUSE ISSUE
}
}
Rien qui me saute aux yeux et qui pourrait expliquer le problème d'incompatibilité avec le RTC.
Par contre dans le code complet je vois que les pin sont utilisés pour des relais.
Le shield ethernet utilise le bus SPI. Attention aux conflits avec la cs pin.
Rien qui me saute aux yeux et qui pourrait expliquer le problème d'incompatibilité avec le RTC.
Par contre dans le code complet je vois que les pin sont utilisés pour des relais.
Le shield ethernet utilise le bus SPI. Attention aux conflits avec la cs pin.
Merci de l'info.
Tout fonctionne bien présentement. C'est seulement l'intégration du RTC qui cause problème pour le moment.
Le problème du RTC quel qu’il soit est la mise à jour de l'horloge. Une fois que le montage est opérationnel et en place, quelquefois peu accessible, il est plutôt fastidieux de le remettre sur le bureau 6mois ou 1 an après pour le mettre à l'heure, à moins d'y coller un clavier matriciel, où de développer une interface de mise à jour par la ligne série et de disposer d'un PC portable.