BACnet Open-Source-Protokoll-Stack-C-Bibliothek für eingebettete Systeme, Linux, MacOS, BSD und Windows http://bacnet.sourceforge.net/
Willkommen in der wunderbaren Welt von BACnet und echter Geräteinteroperabilität!
Diese Bibliothek nutzt automatisierte kontinuierliche Integrationsdienste, um die automatische Kompilierung, Validierung, Linting, Sicherheitsscans und Unit-Tests zu unterstützen und so robusten C-Code und BACnet-Funktionalität zu erstellen.
GitHub-Workflow: CMake-Build von Bibliotheks- und Demo-Apps auf Ubuntu, Windows und MacOS
GitHub-Workflow: Ubuntu Makefile GCC-Build der Bibliothek, BACnet/IP-Demo-Apps mit und ohne BBMD, BACnet/IPv6, BACnet Ethernet und BACnet MSTP-Demo-Apps, Gateway, Router, Router-IPv6, Router-MSTP, ARM-Ports (STM, Atmel), AVR-Ports und mit MinGW32 kompilierte BACnet/IP-Demo-Apps.
GitHub-Workflow: Scan-Build (LLVM Clang Tools), Cppcheck, Codespell, Unit-Tests und Code-Coverage.
GitHub-Workflow-CodeQL-Analyse
Diese BACnet-Protokoll-Stack-Bibliothek stellt Kommunikationsdienste für die BACnet-Anwendungsschicht, die Netzwerkschicht und die Medienzugriffsschicht (MAC) bereit. Es handelt sich um eine lizenzfreie Open-Source-Bibliothek für ein RTOS- oder Bare-Metal-Embedded-System oder ein vollständiges Betriebssystem wie Windows, Linux, MacOS oder BSD.
BACnet – Ein Datenkommunikationsprotokoll für Gebäudeautomatisierungs- und Steuerungsnetzwerke – siehe bacnet.org. BACnet ist ein Standard-Datenkommunikationsprotokoll für Gebäudeautomations- und Steuerungsnetzwerke. BACnet ist ein offenes Protokoll, was bedeutet, dass jeder zum Standard beitragen und ihn nutzen kann. Die einzige Einschränkung besteht darin, dass das BACnet-Standarddokument selbst dem Urheberrecht von ASHRAE unterliegt und das Dokument verkauft wird, um die Kosten für die Entwicklung und Pflege des Standards zu decken (ähnlich wie bei IEEE, ANSI oder ISO).
Für Softwareentwickler ist das BACnet-Protokoll eine Standardmethode zum Senden und Empfangen von Nachrichten mit Daten, die von anderen BACnet-kompatiblen Geräten verstanden werden. Der BACnet-Standard definiert eine Standardmethode für die Kommunikation über verschiedene Kabel oder Funkgeräte, die als Data Link/Physical Layers bezeichnet werden: Ethernet, EIA-485, EIA-232, ARCNET und LonTalk. Der BACnet-Standard definiert auch eine Standardmethode für die Kommunikation über UDP, IP, HTTP (Web Services) und Websockets.
Diese BACnet-Protokollstack-Implementierung ist speziell für die eingebettete BACnet-Appliance konzipiert und verwendet eine GPL mit Ausnahmelizenz (wie eCos), was bedeutet, dass alle Änderungen am Kerncode, die verteilt werden, geteilt werden, die BACnet-Bibliothek jedoch mit proprietärem Code verknüpft werden kann ohne dass der proprietäre Code zur GPL wird. Der Text der in jeder Quelldatei enthaltenen GPL-Ausnahme lautet wie folgt:
* SPDX-License-Identifier: GPL-2.0-or-later WITH GCC-exception-2.0
Beachten Sie, dass einige der Quelldateien als Skelett-, Beispiel- oder Vorlagendateien konzipiert sind und nicht dem Urheberrecht der GPL unterliegen. Der Text der Lizenz für diese Dateien ist in jeder Quelldatei wie folgt gekennzeichnet:
* SPDX-License-Identifier: MIT
* SPDX-License-Identifier: Apache-2.0
Eine Software-Stückliste kann mit grep generiert werden:
$ grep -nrw SPDX --include=*.[c,h]
Der Code ist aus Gründen der Portabilität in C geschrieben und umfasst Unit-Tests (PC-basierte Unit-Tests). Da der Code portierbar ist, lässt er sich sowohl mit GCC als auch mit anderen Compilern wie Clang oder IAR kompilieren.
Das BACnet-Protokoll ist ein ASHRAE/ANSI/ISO-Standard, daher hält sich diese Bibliothek an diesen Standard. Für BACnet fallen keine Lizenzgebühren oder Lizenzbeschränkungen an und die Registrierung für eine BACnet-Anbieter-ID ist kostenlos.
Eine Übersicht über diese Bibliotheksarchitektur und deren Verwendung finden Sie unter https://sourceforge.net/p/bacnet/src/ci/master/tree/doc/README.developer
Dieser Stack enthält Unit-Tests, die mit dem Makefile im Projektstammverzeichnis „make test“ ausgeführt werden können. Die Unit-Tests können auch über einzelne Make-Aufrufe ausgeführt werden. Die Unit-Tests führen einen PC aus und führen dies weiterhin bei jedem Commit innerhalb der Continuous Integration-Umgebung durch.
Der BACnet-Stack wurde mit verschiedenen Tools sowie verschiedenen Controllern und Workstations funktionsgeprüft. Es ist in vielen Produkten enthalten, die den BTL-Test erfolgreich bestanden haben.
Mithilfe des Makefiles im Projektstammverzeichnis werden ein Dutzend Beispielanwendungen erstellt, die unter Windows oder Linux laufen. Sie verwenden standardmäßig die BACnet/IPv4-Datenverbindungsschicht für die Kommunikation, können jedoch für die Verwendung von BACnet IPv6, Ethernet, ARCNET oder MS/TP kompiliert werden.
Linux/Unix/Cygwin
$ make clean all
Windows MinGW Bash
$ make win32
Windows-Befehlszeile
c:> build.bat
Der BACnet-Stack kann von verschiedenen Compilern kompiliert werden. Der gebräuchlichste kostenlose Compiler ist GCC (oder MinGW unter Windows). Die Makefiles verwenden standardmäßig GCC.
Die Bibliothek ist auch für die Verwendung von CMake instrumentiert, das ein Projekt oder Makefiles für eine Vielzahl von IDEs oder Compilern generieren kann. So generieren Sie beispielsweise ein Code::Blocks-Projekt:
$ mkdir build
$ cd build/
$ cmake .. -G"CodeBlocks - Unix Makefiles"
c:> mkdir build
c:> cd build/
c:> cmake .. -G"CodeBlocks - MinGW Makefiles"
Die Unit-Tests verwenden ebenfalls CMake und können mit der Befehlssequenz ausgeführt werden:
$ make test
Das Unit-Test-Framework verwendet ein leicht modifiziertes ztest und die Tests befinden sich im Ordner test/. Der Unit-Test-Builder verwendet CMake und die Testabdeckung verwendet LCOV. Die HTML-Ergebnisse der Unit-Testing-Abdeckung sind ab der Datei test/build/lcoverage/index.html verfügbar.
Bei den Demo-Anwendungen handelt es sich um alle Client-Anwendungen, die einen Haupt-BACnet-Dienst bereitstellen, mit Ausnahme der einen Server-Anwendung und einer Gateway-Anwendung, einigen Router-Anwendungen und einigen MS/TP-spezifischen Anwendungen. Jede Anwendung akzeptiert Befehlszeilenparameter und gibt die Ausgabe auf stdout oder stderr aus. Die Client-Anwendungen basieren auf der Befehlszeile und können in Skripten oder zur Fehlerbehebung verwendet werden. Die Demoanwendungen nutzen Umgebungsvariablen zum Einrichten der Netzwerkoptionen. Die Optionen finden Sie in jeder einzelnen Demo.
Es gibt auch Projekte im Ports/-Verzeichnis für ARM7, AVR, RTOS-32, PIC und andere. Für jedes dieser Projekte gibt es eine Demoanwendung für bestimmte Hardware. Im Fall von ARM7 und AVR funktioniert ihr Makefile mit GCC-Compilern und es gibt Projektdateien für IAR Embedded Workbench und Rowley Crossworks für ARM.
Die Projektdokumentation befindet sich im Verzeichnis doc/. Ähnliche Dokumente finden Sie auf der Projektwebsite unter http://bacnet.sourceforge.net/.
Wenn Sie zu diesem Projekt beitragen möchten und über einige C-Programmierkenntnisse verfügen, treten Sie uns über https://github.com/bacnet-stack/bacnet-stack/ oder über https://sourceforge.net/p/bacnet/src/ bei. und erstellen Sie einen Fork oder Branch und schließlich eine Pull-Anfrage, damit Ihr Code für die Aufnahme in Betracht gezogen wird.
Wenn Sie einen Fehler in diesem Projekt finden, teilen Sie uns diesen bitte unter https://sourceforge.net/p/bacnet/bugs/ oder https://github.com/bacnet-stack/bacnet-stack/issues mit
Wenn Sie eine Supportanfrage haben, können Sie diese unter https://sourceforge.net/p/bacnet/support-requests/ posten.
Wenn Sie eine Funktionsanfrage haben, können Sie diese unter https://sourceforge.net/p/bacnet/feature-requests/ posten.
Wenn Sie Probleme haben, diese Bibliothek für Ihr Gerät zum Laufen zu bringen, oder eine BACnet-Frage haben, treten Sie der Entwickler-Mailingliste unter http://lists.sourceforge.net/mailman/listinfo/bacnet-developers bei oder posten Sie die Frage an die Öffnen Sie Diskussions-, Entwickler- oder Hilfeforen unter https://sourceforge.net/p/bacnet/discussion/
Ich hoffe, dass Ihr BACnet-Gerät funktioniert!
Steve Karg, Birmingham, Alabama, USA [email protected]
ASHRAE® und BACnet® sind eingetragene Marken der American Society of Heating, Refrigerating and Air-Conditioning Engineers, Inc. 180 Technology Parkway NW, Peachtree Corners, Georgia 30092, USA.