O Protocolo ClusterDuck (CDP), um projeto inovador de código aberto sob a Fundação Linux, representa um salto significativo nas comunicações da IoT, aproveitando o poder da baixa largura de banda e baixa potência, como a tecnologia LORA. Distintos de Lorawan, esse protocolo utiliza os recursos ponto a multiponto da Lora para facilitar a comunicação robusta em diversos ambientes.
O Protocolo ClusterDuck foi criado pela OWL Integrações (anteriormente Project OWL) para fornecer aos desenvolvedores uma biblioteca avançada para criar redes de comunicação distribuídas, adaptadas para uma variedade de aplicativos de IoT. Desde a sua criação, a visão para o protocolo ClusterDuck cresceu além da manutenção de desastres naturais a grandes eventos (congestionamento celular), redes de sensores e muito mais.
A rede é composta de vários nós chamados patos . Existem 3 tipos básicos de patos em uma rede ClusterDuck: Ducklink, Mamaduck e Papaduck. Os ritmos de patinhos servem como nós de borda que apenas transmitem dados. Mamaducks herdou a mesma funcionalidade dos Ducklinks, mas também pode receber mensagens. Isso permite que os Mamaducks transmitam mensagens de Ducklinks e/ou outros Mamaducks ao longo da rede (em direção ao gateway). Papaducks são o ponto final da rede, onde todos os dados são coletados e podem ser armazenados ou empurrados para a nuvem. (Plataforma DMS de nuvem de nível gratuita na versão beta! Entre em contato conosco na discórdia para obter mais informações)
Confira o wiki para aprender a criar sua própria rede ClusterDuck. Sinta -se à vontade para visitar o site do ClusterDuck Protocol para obter mais informações sobre projetos que a comunidade está construindo. Você pode entrar em contato diretamente com nossa comunidade de discórdios para obter perguntas e/ou trabalhar com a comunidade.
Para usar o protocolo ClusterDuck, siga o manual de instalação.
Começando com a Release 4.0.0, temos testes de unidade disponíveis com a unity de Estrutura de Teste de Platformio
Os testes estão localizados na pasta ClusterDuckProtocol/test . Esses testes são testes de unidade, pois validam as APIs CDP acessíveis publicamente. No entanto, eles devem ser executados em um dispositivo. Isso significa que você precisa conectar um dispositivo à sua máquina de desenvolvimento e criar os testes para executar no dispositivo. O comando test de IO da plataforma criará, implantará e executará os testes e reportará os resultados no seu console de terminal.
Os testes de unidade são ótimos na detecção de problemas antes de chegarem ao lançamento, por isso é importante não apenas executá -los para validar suas alterações, mas atualizá -las continuamente.
O projeto platformio.ini define configurações de ambiente para placas suportadas. Por exemplo, abaixo está a configuração para testes no quadro 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
Aqui estão as etapas para executar os testes (no Linux ou Mac OS). Isso pressupõe que você tenha plataforma instalado no seu sistema.
Para mais detalhes sobre a configuração do seu ambiente de desenvolvimento, consulte o Guia do desenvolvedor.
# 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 -------------------------------------------------------------
Realizamos uma prefeitura de CDP quinzenal às segundas-feiras às 14:00 EST. A prefeitura é o local para obter atualizações sobre o protocolo, receber suas perguntas sobre o CDP respondidas e discutir projetos em andamento. Todos os projetos atuais estão documentados em um roteiro público em projetos do GitHub.
Leia contribuindo.md para obter detalhes sobre nosso código de conduta, o processo para enviar melhorias no protocolo ClusterDuck e como ingressar em nossas prefeituras e transmissão ao vivo.
Este projeto é governado por sua carta técnica e liderada por seu comitê de direção técnica.
Este projeto está licenciado sob a licença Apache 2 - consulte o arquivo de licença para obter detalhes.