
MQTT-C est un client MQTT v3.1.1 écrit dans C. MQTT est un protocole de messagerie basé sur un éditeur léger qui est couramment utilisé dans les applications IoT et de mise en réseau où des liens à latence élevée et à faible taux de données sont attendus. Le but de MQTT-C est de fournir un client MQTT portable , écrit en C , pour les systèmes intégrés et les PC. MQTT-C le fait en fournissant une couche d'abstraction de plate-forme transparente (PAL) qui facilite le portage de nouvelles plateformes. MQTT-C est entièrement enfile mais peut également fonctionner parfaitement bien sur les systèmes monomoïdes, ce qui rend MQTT-C bien adapté aux systèmes et aux microcontrôleurs intégrés. Enfin, MQTT-C est petit; Il n'y a que deux fichiers source totalisant moins de 2000 lignes.
C'était génial d'entendre parler de tous les endroits que MQTT-C est utilisé! N'hésitez pas à me contacter ou à soumettre des problèmes sur GitHub!
Pour utiliser MQTT-C, vous instanciez d'abord un struct mqtt_client et l'initialisez en appelant @ref mqtt_init.
struct mqtt_client client ; /* instantiate the client */
mqtt_init ( & client , ...); /* initialize the client */Une fois votre client initialisé, vous devez vous connecter à un courtier MQTT.
mqtt_connect ( & client , ...); /* send a connection request to the broker. */À ce stade, le client est prêt à l'emploi! Par exemple, nous pouvons souscrire à un sujet comme tel:
/* subscribe to "toaster/temperature" with a max QoS level of 0 */
mqtt_subscribe ( & client , "toaster/temperature" , 0 );Et nous pouvons publier sur un sujet comme tel:
/* publish coffee temperature with a QoS level of 1 */
int temperature = 67 ;
mqtt_publish ( & client , "coffee/temperature" , & temperature , sizeof ( int ), MQTT_PUBLISH_QOS_1 );Ce sont les bases! De là, les exemples et la documentation de l'API sont de bons endroits pour commencer.
Il n'y a que deux fichiers source qui doivent être construits, mqtt.c et mqtt_pal.c . Ces fichiers sont compatibles ANSI C (C89) et doivent compiler avec tout compilateur C.
Ensuite, simplement #include <mqtt.h> .
Alternativement, vous pouvez construire MQTT-C avec CMake ou le Fourni MakeFile. Ceux-ci sont fournis pour la commodité.
La documentation prédéfinie peut être trouvée ici: https://liambindle.ca/mqtt-c. Assurez-vous également de consulter les exemples.
La documentation de l'API @ref contient tous les programmeurs d'application de documentation. La documentation @Ref PAL contient tout ce dont vous devriez avoir besoin pour porter MQTT-C à une nouvelle plate-forme, et les autres modules contiennent de la documentation pour les développeurs MQTT-C.
Les tests unitaires MQTT-C utilisent le cadre de test unitaire CMOCKA. Par conséquent, CMocka doit être installé sur votre machine pour construire et exécuter les tests unitaires. Pour plus de commodité, un simple "makefile" est inclus pour construire les tests unitaires et les exemples sur les machines de type Unix. Les tests et exemples unitaires peuvent être construits comme suit:
$ make all Les tests et exemples unitaires seront construits dans le répertoire "bin/" . Les tests unitaires peuvent être exécutés comme:
$ ./bin/tests [address [port]]Notez que l'adresse c et les arguments de port c sont à la fois facultatifs pour spécifier l'emplacement du courtier MQTT qui doit être utilisé pour les tests. Si aucune adresse C n'est donnée, le serveur de test Mosquitto MQTT sera utilisé. Si aucun port c n'est donné, le port 1883 sera utilisé.
MQTT-C fournit une couche d'abstraction de plate-forme transparente (PAL) dans mqtt_pal.h et mqtt_pal.c . Ces fichiers déclarent et implémentent les types et les appels que MQTT-C nécessite. Reportez-vous à @Ref PAL pour la documentation complète du PAL.
N'hésitez pas à soumettre des problèmes et à faire pression ici. Lors de la soumission d'une demande de pull, assurez-vous d'avoir entièrement documenté vos modifications et ajouté les tests unitaires appropriés.
Ce projet est autorisé sous la licence du MIT. Voir le fichier "LICENSE" pour plus de détails.
MQTT-C a été initialement développé en tant que projet final CMPT 434 (trimestre d'hiver 2018) à l'Université de la Saskatchewan par: