Linux基金会下的创新开源项目ClusterDuck协议(CDP)代表着物联网通信的重大飞跃,利用了低带宽和低功率(例如Lora Technology)的力量。该协议不同于洛万(Lorawan),利用洛拉(Lora)的点对点功能来促进在不同环境中进行稳健的沟通。
ClusterDuck协议是由OWL Integrations(以前是Project OWL)创建的,为开发人员提供了用于制作分布式通信网络的高级库,该库是针对各种物联网应用程序量身定制的。自创建以来,ClusterDuck协议的愿景已不仅仅是为大型事件(蜂窝拥塞),传感器网络等提供自然灾害的发展。
该网络由多个名为Ducks的节点组成。群集网络中有3种基本类型的鸭子:Ducklink,Mamaduck和Papaduck。 DuckLinks用作仅传输数据的边缘节点。 Mamaducks继承了Ducklinks的相同功能,但也可以接收消息。这使Mamaducks可以沿网络(朝向网关)中的Ducklinks和/或其他Mamaducks中继消息。 Papaducks是网络的终点,该网络收集了所有数据,并且可以将其存储或推入云中。 (Beta中的免费tier云DMS平台!以获取更多信息与我们联系)
查看Wiki以了解如何构建自己的ClusterDuck网络。随时访问ClusterDuck协议网站,以获取有关社区正在构建的项目的更多信息。您可以直接在我们的Discord社区接触任何问题和/或与社区合作。
要使用ClusterDuck协议,请按照安装手册进行操作。
从发行版4.0.0开始,我们提供了Platformio测试框架unity单元测试
测试位于ClusterDuckProtocol/test文件夹中。这些测试是单位测试,因为它们验证了CDP可公开访问的API。但是它们必须在设备上运行。这意味着您必须将设备连接到开发机器并构建在设备上运行的测试。平台IO test命令将构建,部署和运行测试,并在您的终端控制台上报告结果。
单位测试在将问题发布到发布之前就很棒,因此很重要,不仅要运行它们来验证您的更改,而且要不断更新它们。
Project platformio.ini定义了支持董事会的环境配置。例如,以下是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
这是运行测试的步骤(在Linux或Mac OS上)。假设您在系统上安装了平台。
有关设置开发环境的更多详细信息,请参阅开发人员指南。
# 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 -------------------------------------------------------------
我们在美国东部标准时间下午2点举办了每两周一次的CDP市政厅。市政厅是获取协议更新,了解CDP的问题并讨论正在进行的项目的地方。当前的所有项目都记录在GitHub项目的公共路线图中。
请阅读有关我们的行为准则的详细信息,提交ClusterDuck协议改进的过程以及如何加入我们的市政厅和直播的详细信息。
该项目受其技术宪章的管辖,并由其技术指导委员会领导。
该项目已根据Apache 2许可证获得许可 - 有关详细信息,请参见许可证文件。