El Protocolo ClusterDuck (CDP), un innovador proyecto de código abierto bajo la Fundación Linux, representa un salto significativo en las comunicaciones de IoT, aprovechando el poder del bajo ancho de banda y la baja potencia, como la tecnología Lora. Distinto de Lorawan, este protocolo utiliza las capacidades punto a multipunto de Lora para facilitar la comunicación robusta en entornos diversos.
El Protocolo ClusterDuck fue creado por OWL Integrations (anteriormente Project Owl) para proporcionar a los desarrolladores una biblioteca avanzada para elaborar redes de comunicación distribuida, adaptadas para una variedad de aplicaciones IoT. Desde su creación, la visión del Protocolo ClusterDuck ha crecido más allá del servicio de los desastres naturales a grandes eventos (congestión celular), redes de sensores y más.
La red está compuesta por múltiples nodos llamados patos . Hay 3 tipos básicos de patos en una red Clusterduck: Ducklink, Mamaduck y Papaduck. Ducklinks sirve como nodos de borde que solo transmiten datos. Las mamaducks heredan la misma funcionalidad de los enlaces de pato, pero también pueden recibir mensajes. Esto permite a las Mamaducks transmitir mensajes de DuckLinks y/u otras Mamaducks a lo largo de la red (hacia la puerta de enlace). Los papaducks son el punto final de la red donde se recopilan todos los datos y se pueden almacenar o empujar hacia la nube. (Plataforma DMS de nivel de nivel gratuito en Beta! Comuníquese con nosotros en Discord para obtener más información)
Consulte el wiki para aprender a construir su propia red ClusterDuck. No dude en visitar el sitio web del Protocolo ClusterDuck para obtener más información sobre proyectos que la comunidad está construyendo. Puede comunicarse directamente en nuestra comunidad de Discord para cualquier pregunta y/o trabajar con la comunidad.
Para usar el protocolo ClusterDuck, siga el manual de instalación.
Comenzando con la versión 4.0.0 tenemos pruebas unitarias disponibles con la unity de marco de prueba de Platformio
Las pruebas se encuentran en la carpeta ClusterDuckProtocol/test . Estas pruebas son pruebas unitarias, ya que validan las API de accesibles públicamente CDP. Sin embargo, deben ejecutarse en un dispositivo. Esto significa que debe conectar un dispositivo a su máquina de desarrollo y construir las pruebas para ejecutarse en el dispositivo. El comando test de plataforma IO construirá, implementará y ejecutará las pruebas e informará los resultados en su consola terminal.
Las pruebas unitarias son excelentes para detectar problemas antes de que lleguen a la liberación, por lo que es importante no solo ejecutarlas para validar sus cambios, sino actualizarlos continuamente.
El proyecto platformio.ini define las configuraciones de entorno para tableros compatibles. Por ejemplo, a continuación se encuentra la configuración para las pruebas en el tablero Heltec Lora V3 Arduino
[env:test_heltec_wifi_lora_32_V3]
test_build_src = yes
test_filter = test_*
test_framework = unity
platform = ${env:heltec_wifi_lora_32_V3.platform}
board = ${env:heltec_wifi_lora_32_V3.board}
framework = ${env:heltec_wifi_lora_32_V3.framework}
monitor_speed = ${env.monitor_speed}
build_src_filter = +<./> +<./include> +<./include/boards>
lib_deps =
${env.lib_deps}
${env:heltec_wifi_lora_32_V3.lib_deps}
; why do I need to add the following libraries is a mystery to me
SPI
WIRE
FS
WIFI
build_flags =
${env.build_flags}
-std=gnu++11
-DUNIT_TEST
Estos son los pasos para ejecutar las pruebas (en Linux o Mac OS). Esto supone que tiene plataforma instalada en su sistema.
Para obtener más detalles sobre cómo configurar su entorno de desarrollo, consulte la Guía del desarrollador.
# Open a terminal
# goto the project root folder (where the platformio.ini is located)
$ cd ClusterDuckProtocol
$ platformio test -e test_heltec_wifi_lora_32_V3
Processing test_DuckUtils in test_heltec_wifi_lora_32_V3 environment
-------------------------------------------------------------------------------------------------------------------------------------
Building & Uploading...
Testing...
If you don't see any output for the first 10 secs, please reset board (press reset button)
test/test_DuckUtils/test_DuckUtils.cpp:181: test_DuckUtils_getCdpVersion [PASSED]
test/test_DuckUtils/test_DuckUtils.cpp:182: test_DuckUtils_toUpperCase [PASSED]
test/test_DuckUtils/test_DuckUtils.cpp:183: test_DuckUtils_stringToByteVector [PASSED]
test/test_DuckUtils/test_DuckUtils.cpp:184: test_DuckUtils_getRandomBytes [PASSED]
test/test_DuckUtils/test_DuckUtils.cpp:185: test_DuckUtils_createUuid_with_given_length [PASSED]
test/test_DuckUtils/test_DuckUtils.cpp:186: test_DuckUtils_createUuid_with_default_length [PASSED]
test/test_DuckUtils/test_DuckUtils.cpp:187: test_DuckUtils_convertToHex [PASSED]
test/test_DuckUtils/test_DuckUtils.cpp:188: test_DuckUtils_toString_printable_characters [PASSED]
test/test_DuckUtils/test_DuckUtils.cpp:189: test_DuckUtils_toString_non_printable_characters [PASSED]
test/test_DuckUtils/test_DuckUtils.cpp:190: test_DuckUtils_isEqual_true [PASSED]
test/test_DuckUtils/test_DuckUtils.cpp:191: test_DuckUtils_isEqual_false [PASSED]
test/test_DuckUtils/test_DuckUtils.cpp:192: test_DuckUtils_isEqual_false_with_different_sizes [PASSED]
test/test_DuckUtils/test_DuckUtils.cpp:193: test_DuckUtils_toUint32 [PASSED]
test/test_DuckUtils/test_DuckUtils.cpp:194: test_DuckUtils_saveWifiCredentials [PASSED]
test/test_DuckUtils/test_DuckUtils.cpp:195: test_DuckUtils_saveWifiCredentials_zero_length [PASSED]
test/test_DuckUtils/test_DuckUtils.cpp:196: test_DuckUtils_loadWifiSsid [PASSED]
-- test_heltec_wifi_lora_32_V3:test_DuckUtils [PASSED] Took 23.34 seconds -------------------------------------------------------------
Organizamos un ayuntamiento de CDP quincenal los lunes a las 2pm EST. El Ayuntamiento es el lugar para obtener actualizaciones sobre el protocolo, obtener sus preguntas sobre CDP respondidas y discutir proyectos en curso. Todos los proyectos actuales están documentados en una hoja de ruta pública en proyectos de GitHub.
Lea Contriping.MD para obtener detalles sobre nuestro Código de Conducta, el proceso para enviar mejoras en el protocolo ClusterDuck y cómo unirse a nuestros ayuntamientos y transmisiones en vivo.
Este proyecto se rige por su carta técnica y está dirigido por su comité de dirección técnica.
Este proyecto tiene licencia bajo la licencia Apache 2; consulte el archivo de licencia para obtener más detalles.