Bibliothèque C de la pile de protocoles open source BACnet pour systèmes embarqués, Linux, MacOS, BSD et Windows http://bacnet.sourceforge.net/
Bienvenue dans le monde merveilleux de BACnet et dans la véritable interopérabilité des appareils !
Cette bibliothèque utilise des services d'intégration continue automatisés pour faciliter la compilation, la validation, le peluchage, l'analyse de sécurité et les tests unitaires automatisés afin de produire du code C robuste et des fonctionnalités BACnet.
GitHub Workflow : build CMake d'une bibliothèque et d'applications de démonstration sur Ubuntu, Windows et MacOS
Workflow GitHub : construction de la bibliothèque Ubuntu Makefile GCC, applications de démonstration BACnet/IP avec et sans BBMD, BACnet/IPv6, BACnet Ethernet et applications de démonstration BACnet MSTP, passerelle, routeur, routeur-ipv6, routeur-mstp, ports ARM (STM, Atmel), les ports AVR et les applications de démonstration BACnet/IP compilées avec MinGW32.
Workflow GitHub : scan-build (LLVM Clang Tools), cppcheck, codespell, tests unitaires et couverture de code.
Analyse CodeQL du flux de travail GitHub
Cette bibliothèque de pile de protocoles BACnet fournit des services de communication de couche application BACnet, de couche réseau et d'accès aux médias (MAC). Il s'agit d'une bibliothèque open source et libre de droits pour un système RTOS ou embarqué bare metal, ou un système d'exploitation complet tel que Windows, Linux, MacOS ou BSD.
BACnet - Un protocole de communication de données pour les réseaux d'automatisation et de contrôle des bâtiments - voir bacnet.org. BACnet est un protocole de communication de données standard pour les réseaux d'automatisation et de contrôle des bâtiments. BACnet est un protocole ouvert, ce qui signifie que n’importe qui peut contribuer à la norme et que n’importe qui peut l’utiliser. Le seul inconvénient est que le document standard BACnet lui-même est protégé par les droits d'auteur de l'ASHRAE, et qu'ils le vendent pour aider à couvrir les coûts de développement et de maintenance de la norme (similaire à l'IEEE, à l'ANSI ou à l'ISO).
Pour les développeurs de logiciels, le protocole BACnet est un moyen standard d'envoyer et de recevoir des messages contenant des données comprises par d'autres appareils compatibles BACnet. La norme BACnet définit une manière standard de communiquer sur divers fils ou radios, appelée liaison de données/couches physiques : Ethernet, EIA-485, EIA-232, ARCNET et LonTalk. La norme BACnet définit également une manière standard de communiquer via UDP, IP, HTTP (Web Services) et Websockets.
Cette implémentation de la pile de protocoles BACnet est spécialement conçue pour l'appliance BACnet intégrée, en utilisant une licence GPL avec exception (comme eCos), ce qui signifie que toutes les modifications apportées au code principal distribuées sont partagées, mais la bibliothèque BACnet peut être liée au code propriétaire. sans que le code propriétaire ne devienne GPL. Le texte de l'exception GPL incluse dans chaque fichier source est le suivant :
* SPDX-License-Identifier: GPL-2.0-or-later WITH GCC-exception-2.0
Notez que certains des fichiers sources sont conçus comme des fichiers squelettes, des exemples ou des modèles, et ne sont pas protégés par le droit d'auteur GPL. Le texte de la licence de ces fichiers est désigné dans chaque fichier source comme suit :
* SPDX-License-Identifier: MIT
* SPDX-License-Identifier: Apache-2.0
Une nomenclature logicielle peut être générée à l'aide de grep :
$ grep -nrw SPDX --include=*.[c,h]
Le code est écrit en C pour la portabilité et comprend des tests unitaires (tests unitaires basés sur PC). Le code étant conçu pour être portable, il se compile avec GCC ainsi qu'avec d'autres compilateurs, tels que Clang ou IAR.
Le protocole BACnet est une norme ASHRAE/ANSI/ISO, cette bibliothèque adhère donc à cette norme. BACnet n'impose aucune redevance ni restriction de licence, et l'enregistrement d'un identifiant de fournisseur BACnet est gratuit.
Pour un aperçu de cette architecture de bibliothèque et comment l'utiliser, voir https://sourceforge.net/p/bacnet/src/ci/master/tree/doc/README.developer
Cette pile comprend des tests unitaires qui peuvent être exécutés à l'aide du Makefile dans le répertoire racine du projet « make test ». Les tests unitaires peuvent également être exécutés à l’aide d’invocations make individuelles. Les tests unitaires exécutent un PC et continuent de le faire à chaque validation dans l'environnement d'intégration continue.
La pile BACnet a été testée fonctionnellement à l'aide d'une variété d'outils ainsi que de divers contrôleurs et postes de travail. Il a été inclus dans de nombreux produits qui ont passé avec succès les tests BTL.
À l'aide du Makefile situé dans le répertoire racine du projet, une douzaine d'exemples d'applications sont créés et s'exécutent sous Windows ou Linux. Ils utilisent par défaut la couche de liaison de données BACnet/IPv4 pour la communication, mais peuvent être compilés pour utiliser BACnet IPv6, Ethernet, ARCNET ou MS/TP.
Linux/Unix/Cygwin
$ make clean all
Windows MinGW Bash
$ make win32
Ligne de commande Windows
c:> build.bat
La pile BACnet peut être compilée par divers compilateurs. Le compilateur gratuit le plus courant est GCC (ou MinGW sous Windows). Les makefiles utilisent GCC par défaut.
La bibliothèque est également instrumentée pour utiliser CMake qui peut générer un projet ou des Makefiles pour une variété d'IDE ou de compilateur. Par exemple, pour générer un projet Code::Blocks :
$ mkdir build
$ cd build/
$ cmake .. -G"CodeBlocks - Unix Makefiles"
c:> mkdir build
c:> cd build/
c:> cmake .. -G"CodeBlocks - MinGW Makefiles"
Les tests unitaires utilisent également CMake et peuvent être exécutés avec la séquence de commandes :
$ make test
Le framework de tests unitaires utilise un ztest légèrement modifié et les tests se trouvent dans le dossier test/. Le générateur de tests unitaires utilise CMake et la couverture de test utilise LCOV. Les résultats HTML de la couverture des tests unitaires sont disponibles à partir du fichier test/build/lcoverage/index.html.
Les applications de démonstration sont toutes des applications client qui fournissent un service BACnet principal, à l'exception d'une application serveur et d'une application passerelle, de quelques applications de routeur et de quelques applications spécifiques MS/TP. Chaque application acceptera les paramètres de ligne de commande et imprimera la sortie sur stdout ou stderr. Les applications client sont basées sur une ligne de commande et peuvent être utilisées dans des scripts ou pour le dépannage. Les applications de démonstration utilisent des variables d'environnement pour configurer les options réseau. Voir chaque démo individuelle pour les options.
Il existe également des projets dans le répertoire ports/ pour ARM7, AVR, RTOS-32, PIC et autres. Chacun de ces projets dispose d'une application de démonstration pour un matériel spécifique. Dans le cas d'ARM7 et d'AVR, leur makefile fonctionne avec les compilateurs GCC et il existe des fichiers de projet pour IAR Embedded Workbench et Rowley Crossworks pour ARM.
La documentation du projet se trouve dans le répertoire doc/. Des documents similaires sont disponibles sur le site Web du projet à l'adresse http://bacnet.sourceforge.net/.
Si vous souhaitez contribuer à ce projet et avez des compétences en codage C, rejoignez-nous via https://github.com/bacnet-stack/bacnet-stack/ ou via https://sourceforge.net/p/bacnet/src/ et créez un fork ou une branche, et éventuellement une pull request pour que votre code soit pris en compte pour l'inclusion.
Si vous trouvez un bug dans ce projet, veuillez nous en informer sur https://sourceforge.net/p/bacnet/bugs/ ou https://github.com/bacnet-stack/bacnet-stack/issues
Si vous avez une demande d'assistance, vous pouvez la publier sur https://sourceforge.net/p/bacnet/support-requests/
Si vous avez une demande de fonctionnalité, vous pouvez la publier sur https://sourceforge.net/p/bacnet/feature-requests/
Si vous rencontrez des difficultés pour faire fonctionner cette bibliothèque sur votre appareil ou si vous avez une question sur BACnet, rejoignez la liste de diffusion des développeurs à l'adresse : http://lists.sourceforge.net/mailman/listinfo/bacnet-developers ou postez la question sur le Ouvrez les forums de discussion, de développement ou d'aide sur https://sourceforge.net/p/bacnet/discussion/
J'espère que votre appareil BACnet fonctionnera !
Steve Karg, Birmingham, Alabama États-Unis [email protected]
ASHRAE® et BACnet® sont des marques déposées de l'American Society of Heating, Refrigerating and Air-Conditioning Engineers, Inc. 180 Technology Parkway NW, Peachtree Corners, Géorgie 30092 US.