Serveur d'impression

MQTT – utiliser avec Arduino – Bien choisir son serveur d impression

Le 28 novembre 2019 - 3 minutes de lecture

Pour Arduino, il existe une bibliothèque qui vous permet de créer un client pour publier et souscrire à un sujet.
Le code suivant permet de s’abonner à un courtier public gratuit: broker.hivemq.com

/ *
Exemple de base MQTT

Cette esquisse illustre les capacités de base de la bibliothèque.
Il se connecte à un serveur MQTT puis:
- publie "Arduino Connected" sur le sujet "eiffel / text"
- s'abonne au sujet "eiffel / text", imprime tous les messages
il reçoit. NB - cela suppose que les données utiles reçues sont des chaînes non binaires
Il se reconnectera au serveur si la connexion est perdue à l'aide d'un blocage
fonction de reconnexion. Voir le fichier & # 39; mqtt_reconnect_nonblocking & # 39; exemple pour savoir comment
obtenir le même résultat sans bloquer la boucle principale. * /

#comprendre 
#comprendre 
#comprendre 

octet mac[] = 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED;
serveur de chars[]= "broker.hivemq.com";

annulation du rappel (char * topic, byte * payload, unsigned int length) 
Serial.print ("Message arrivé [");
Serial.print(topic);
Serial.print("] ");
pour (int i = 0; i <longueur; i ++) 
Serial.print ((char)) charge utile[i])

Serial.println ();

EthernetClient ethClient;
Client PubSubClient (ethClient);

void reconnect () 
// Boucle jusqu'à ce que nous soyons reconnectés
while (! client.connected ()) 
Serial.print ("Tentative de connexion MQTT ...");
// tentative de connexion
// renommer "arduinoClient" avec un identifiant unique
// comme "arduinoClient1524ztSDeRT"
if (client.connect ("arduinoClient")) 
Serial.println ("connecté");
// Une fois connecté, publiez une annonce ...

client.publish ("eiffel / text", "connecté à Arduino");
// ... et se réabonner
client.subscribe ("Eiffel / text");
 autre 
Serial.print ("failed, rc =");
Serial.print (client.state ());
Serial.println ("réessayez dans 5 secondes");
// attend 5 secondes avant de réessayer
délai (5000);



void setup ()

Serial.begin (115200);

client.setServer (serveur, 1883);
client.setCallback (rappel);

Ethernet.begin (mac); // obtient l'IP via DHCP
// Autorise le matériel à sortir
retard (1500);


boucle vide ()

if (! client.connected ()) 
reconnecter ();

client.loop ();

Pour tester le programme, il est nécessaire que la carte réseau de l'Arduino soit connectée à un réseau ayant accès à Internet (adresse IP et passerelle renseignées). Le programme utilise un paramétrage automatique DHCP.
Hivemq fournit une interface de test: http://www.hivemq.com/demos/websocket-client/
Le réglage est simple:
Cliquez sur le bouton Connecter (laissez les paramètres par défaut)

Une fois connecté, dépliez la bannière Subscriptions et cliquez sur Add New Topic Subscription

Puis entrez le thème du programme Arduino: eiffel / text

Pour provoquer une réinitialisation de la carte Arduino, lancez le moniteur Serial et observez la page hiveMQ. Le message "Arduino connected" ("Arduino connecté") apparaît, ce qui signifie que Arduino a publié ce message sur le sujet eiffel / text et que cela fonctionne!

Tapez un message dans la fenêtre Publier du site HiveMQ et cliquez sur Publier. Vous voyez normalement le message arriver dans la console du moniteur Arduino.

Si la carte Arduino tente de se reconnecter de façon permanente, l’ID de connexion est déjà utilisé par un autre appareil. la ligne 37 doit être modifiée



if (client.connect ("arduinoClient")) {

et remplacer "arduinoClient" par un identifiant unique

if (client.connect ("my_identifier_perso_1872AZT123p")) {

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.