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許可證獲得許可 - 有關詳細信息,請參見許可證文件。