Biblioteca C de pila de protocolos de código abierto BACnet para sistemas integrados, Linux, MacOS, BSD y Windows http://bacnet.sourceforge.net/
¡Bienvenido al maravilloso mundo de BACnet y a la verdadera interoperabilidad de dispositivos!
Esta biblioteca utiliza servicios automatizados de integración continua para ayudar en la compilación, validación, linting, escaneo de seguridad y pruebas unitarias automatizadas para producir código C sólido y funcionalidad BACnet.
Flujo de trabajo de GitHub: compilación CMake de biblioteca y aplicaciones de demostración en Ubuntu, Windows y MacOS
Flujo de trabajo de GitHub: compilación de biblioteca Ubuntu Makefile GCC, aplicaciones de demostración BACnet/IP con y sin BBMD, BACnet/IPv6, BACnet Ethernet y BACnet MSTP, puerta de enlace, enrutador, enrutador-ipv6, enrutador-mstp, puertos ARM (STM, Atmel), puertos AVR y aplicaciones de demostración BACnet/IP compiladas con MinGW32.
Flujo de trabajo de GitHub: escaneo-compilación (LLVM Clang Tools), cppcheck, codespell, pruebas unitarias y cobertura de código.
Análisis CodeQL del flujo de trabajo de GitHub
Esta biblioteca de pila de protocolos BACnet proporciona servicios de comunicaciones de capa de aplicación BACnet, capa de red y capa de acceso a medios (MAC). Es una biblioteca de código abierto y libre de regalías para un RTOS o un sistema integrado bare metal, o un sistema operativo completo como Windows, Linux, MacOS o BSD.
BACnet: un protocolo de comunicación de datos para redes de control y automatización de edificios; consulte bacnet.org. BACnet es un protocolo de comunicación de datos estándar para redes de control y automatización de edificios. BACnet es un protocolo abierto, lo que significa que cualquiera puede contribuir al estándar y cualquiera puede utilizarlo. La única advertencia es que el documento estándar BACnet en sí tiene derechos de autor de ASHRAE y ellos venden el documento para ayudar a sufragar los costos de desarrollo y mantenimiento del estándar (similar a IEEE, ANSI o ISO).
Para los desarrolladores de software, el protocolo BACnet es una forma estándar de enviar y recibir mensajes que contienen datos que otros dispositivos compatibles con BACnet entienden. El estándar BACnet define una forma estándar de comunicarse a través de varios cables o radios, conocida como enlace de datos/capas físicas: Ethernet, EIA-485, EIA-232, ARCNET y LonTalk. El estándar BACnet también define una forma estándar de comunicarse mediante UDP, IP, HTTP (servicios web) y Websockets.
Esta implementación de la pila de protocolos BACnet está diseñada específicamente para el dispositivo BACnet integrado, utilizando una GPL con licencia de excepción (como eCos), lo que significa que cualquier cambio en el código central que se distribuya se comparte, pero la biblioteca BACnet se puede vincular al código propietario. sin que el código propietario pase a ser GPL. El texto de la excepción GPL incluido en cada archivo fuente es el siguiente:
* SPDX-License-Identifier: GPL-2.0-or-later WITH GCC-exception-2.0
Tenga en cuenta que algunos de los archivos fuente están diseñados como archivos de esqueleto, de ejemplo o de plantilla, y no tienen derechos de autor como GPL. El texto de la licencia para estos archivos se designa en cada archivo fuente de la siguiente manera:
* SPDX-License-Identifier: MIT
* SPDX-License-Identifier: Apache-2.0
Se puede generar una lista de materiales de software usando grep:
$ grep -nrw SPDX --include=*.[c,h]
El código está escrito en C para portabilidad e incluye pruebas unitarias (pruebas unitarias basadas en PC). Dado que el código está diseñado para ser portátil, se compila con GCC y con otros compiladores, como Clang o IAR.
El protocolo BACnet es un estándar ASHRAE/ANSI/ISO, por lo que esta biblioteca cumple con ese estándar. BACnet no tiene regalías ni restricciones de licencia, y el registro para obtener una identificación de proveedor de BACnet es gratuito.
Para obtener una descripción general de la arquitectura de esta biblioteca y cómo usarla, consulte https://sourceforge.net/p/bacnet/src/ci/master/tree/doc/README.developer
Esta pila incluye pruebas unitarias que se pueden ejecutar utilizando el Makefile en el directorio raíz del proyecto "make test". Las pruebas unitarias también se pueden ejecutar mediante invocaciones de creación individuales. Las pruebas unitarias ejecutan una PC y continúan haciéndolo con cada confirmación dentro del entorno de Integración Continua.
La pila BACnet se probó funcionalmente utilizando una variedad de herramientas, así como varios controladores y estaciones de trabajo. Se ha incluido en muchos productos que completaron con éxito las pruebas BTL.
Utilizando Makefile en el directorio raíz del proyecto, se crean una docena de aplicaciones de muestra que se ejecutan en Windows o Linux. Usan la capa de enlace de datos BACnet/IPv4 para la comunicación de forma predeterminada, pero se pueden compilar para usar BACnet IPv6, Ethernet, ARCNET o MS/TP.
Linux/Unix/Cygwin
$ make clean all
Windows MinGW Bash
$ make win32
Línea de comando de Windows
c:> build.bat
La pila BACnet puede compilarse mediante una variedad de compiladores. El compilador gratuito más común es GCC (o MinGW en Windows). Los archivos MAKE utilizan GCC de forma predeterminada.
La biblioteca también está equipada para usar CMake, que puede generar un proyecto o Makefiles para una variedad de IDE o compiladores. Por ejemplo, para generar un proyecto Code::Blocks:
$ mkdir build
$ cd build/
$ cmake .. -G"CodeBlocks - Unix Makefiles"
c:> mkdir build
c:> cd build/
c:> cmake .. -G"CodeBlocks - MinGW Makefiles"
Las pruebas unitarias también usan CMake y pueden ejecutarse con la secuencia de comandos:
$ make test
El marco de prueba unitaria utiliza un ztest ligeramente modificado y las pruebas se encuentran en la carpeta test/. El generador de pruebas unitarias usa CMake y la cobertura de prueba usa LCOV. Los resultados HTML de la cobertura de pruebas unitarias están disponibles a partir del archivo test/build/lcoverage/index.html.
Las aplicaciones de demostración son todas aplicaciones cliente que proporcionan un servicio BACnet principal, excepto una aplicación de servidor y una aplicación de puerta de enlace, un par de aplicaciones de enrutador y un par de aplicaciones específicas de MS/TP. Cada aplicación aceptará parámetros de línea de comando e imprimirá la salida en stdout o stderr. Las aplicaciones cliente se basan en la línea de comandos y se pueden utilizar en scripts o para solucionar problemas. Las aplicaciones de demostración utilizan variables de entorno para configurar las opciones de red. Vea cada demostración individual para conocer las opciones.
También hay proyectos en el directorio ports/ para ARM7, AVR, RTOS-32, PIC y otros. Cada uno de esos proyectos tiene una aplicación de demostración para hardware específico. En el caso de ARM7 y AVR, su archivo MAKE funciona con compiladores GCC y hay archivos de proyecto para IAR Embedded Workbench y Rowley Crossworks para ARM.
La documentación del proyecto está en el directorio doc/. Hay documentos similares en el sitio web del proyecto en http://bacnet.sourceforge.net/.
Si desea contribuir a este proyecto y tiene algunas habilidades de codificación en C, únase a nosotros a través de https://github.com/bacnet-stack/bacnet-stack/ o https://sourceforge.net/p/bacnet/src/ y cree una bifurcación o rama y, eventualmente, una solicitud de extracción para que se considere la inclusión de su código.
Si encuentra un error en este proyecto, infórmenos en https://sourceforge.net/p/bacnet/bugs/ o https://github.com/bacnet-stack/bacnet-stack/issues
Si tiene una solicitud de soporte, puede publicarla en https://sourceforge.net/p/bacnet/support-requests/
Si tiene una solicitud de función, puede publicarla en https://sourceforge.net/p/bacnet/feature-requests/
Si tiene problemas para que esta biblioteca funcione en su dispositivo, o tiene una pregunta sobre BACnet, únase a la lista de correo de desarrolladores en: http://lists.sourceforge.net/mailman/listinfo/bacnet-developers o publique la pregunta en Abra los foros de discusión, desarrolladores o ayuda en https://sourceforge.net/p/bacnet/discussion/
¡Espero que consigas que tu dispositivo BACnet funcione!
Steve Karg, Birmingham, Alabama, EE. UU. [email protected]
ASHRAE® y BACnet® son marcas comerciales registradas de la Sociedad Estadounidense de Ingenieros de Calefacción, Refrigeración y Aire Acondicionado, Inc. 180 Technology Parkway NW, Peachtree Corners, Georgia 30092 EE. UU.