Teknisk dybdegående gennemsnit af læsepen CoAP, DTLS, observe, block transfer og OEM-integration til L5/T2/Y6-udrulninger i skoler og hjem.

Opslået den: mar. 31, 2021 - 110 Visninger

Læsepen CoAP Constrained Application Protocol IoT: Letvægtstelemetri og -styring

Målgruppe: Indlejrede firmwareingeniører, IoT-løsningsarkitekter og IT-systemintegratorer til skoler, som skal vælge mellem CoAP, MQTT og HTTP til LAN-siden af telemetrikanalen for et klasseeglt med læsepenneværktøjer, og som har brug for et konkret referenceeksempel på, hvordan L5-, T2- og Y6-firmwaren implementerer CoAP over DTLS med Observe og block-wise-overførsel.

Når en læsepen opretter forbindelse til skolens Wi-Fi (TC-062) og annoncerer sig selv på LAN'et via mDNS (TC-063), er det næste spørgsmål: hvilken protokol transporterer pennens telemetri, ordbogsopdateringer og fjernstyringskommandoer tilbage til skolens MDM (Mobile Device Management) eller brandets cloud? Vores svar siden lanceringen af L5-firmware 4.0.0 i slutningen af 2023 er CoAP (Constrained Application Protocol) over DTLS, defineret i RFC 7252 med RFC 7959 (block-wise-overførsel) og RFC 7641 (Observe).

CoAP er for HTTP, hvad BLE HOGP er for USB HID: en letvægts-, UDP-baseret request/response-protokolld designet til enheder med begrænsede ressourcer og netværk med begrænset båndbredde. En læsepen er en enhed med begrænsede ressourcer — en 64 MHz MCU, 32 KB BLE-RAM og en 2,4 GHz-radio, som skal sameksistere med BLE-stakken. HTTP/TCP ville koste os 38 KB RAM og en TCP-handshake-latens på 1,5 sekunder. CoAP/UDP koster os 6,4 KB RAM og en CoAP-request-latens på 18 ms.

På tværs af de 47.000+ enheder, der er sendt ud siden 2023, bærer CoAP hver eneste LAN-side telemetripakke, der strømmer ud af L5-, T2- og Y6-modellerne. I et typisk klasseglt med 30 penne sender pennen 30 CoAP Observe-notifikationer pr. pen pr. minut (batteri, ordbogstilstand, firmwareversion, fejltællere, OTA-status). Skolens MDM modtager dem alle i realtid.

1. Hvorfor CoAP og ikke MQTT eller HTTP

Protokol Transport RAM-omkostning på pen Latens Egnethed til anvendelse
HTTP/1.1 TCP 38 KB 1,5 s Dårlig
HTTP/2 TCP+TLS 64 KB 1,2 s Dårlig
MQTT 3.1.1 TCP+TLS 22 KB 800 ms OK
MQTT-SN UDP 14 KB 250 ms OK
CoAP UDP(+DTLS) 6,4 KB 18 ms Fremragende

MQTT er den kanoniske IoT-protokol, men den kræver en broker, hvilket tilføjer en afhængighed, som skolens IT-administrator skal administrere. CoAP kører direkte mellem pennen og MDM'en over UDP, hvilket betyder ingen broker, ingen TCP-handshake og ingen TLS-tilstandsmaskine.

RAM-besparelsen er afgørende. På L5 passer hele CoAP+DTLS-stakken i 6,4 KB RAM. MQTT-over-TLS ville forbruge 22 KB, hvilket ville skubbe os væk fra L5's 32 KB BLE-budget og over på en større MCU til $0,80 mere pr. pen.

2. CoAP-stakken på pennen

CoAP-stakken er bygget oven på mbedTLS 3.4.0 til DTLS-laget og et tilpasset UDP-socketlag over LwIP 2.1.3 IP-stakken. Arkitekturen:

Lag Implementering RAM ROM
Applikation (CoAP-ressourcer) Tilpasset C 1,8 KB 4,2 KB
CoAP-motor libcoap 4.3.0 (patchet) 1,4 KB 6,8 KB
DTLS 1.2-klient mbedTLS 3.4.0 1,6 KB 14,4 KB
UDP-socket LwIP 2.1.3 0,6 KB 1,2 KB
IPv4/IPv6 LwIP 2.1.3 1,0 KB 8,4 KB
Total 6,4 KB 35,0 KB

Den samlede stak bruger 35 KB ROM, hvilket passer inden for L5'ens 4 MB flash. RAM-omkostningen (6,4 KB) efterlader L5 med 25,6 KB fri heap til BLE-stakken og applikationen.

3. CoAP-ressourcerne

Hver læsepen eksponerer følgende CoAP-ressourcer under URI'en coap://<pen-ip>:8883/srp/v1/:

Ressource Metode Payload Formål
/srp/v1/info GET JSON Statisk pen-metadata
/srp/v1/battery GET, Observe uint8 Batteriprocent
/srp/v1/dict GET, Observe streng Aktuel ordbogspakke
/srp/v1/lang GET, Observe streng Aktuelt sprog
/srp/v1/fw GET streng Firmware-version
/srp/v1/usage GET, Observe JSON Daglige brugsstatistikker
/srp/v1/errors GET, Observe JSON Fejltællere
/srp/v1/audio PUT octet-stream Skub lydklip (TTS-test)
/srp/v1/cmd POST JSON Fjernkommando (lydstyrke, EQ, lås)
/srp/v1/dict/dl PUT octet-stream Ordblokoverførsel
/srp/v1/ota POST JSON OTA-udløser
/srp/v1/reset POST JSON Factory reset trigger
/.well-known/core GET link-format RFC 6690 resourceopdagelse

Pennen eksponerer 12 ressourcer plus well-known core. Hver ressource registreres i CoAP-serveren ved opstart og er tilgængelig via CoAP GET, PUT, POST eller DELETE.

4. Observe-mekanismen

RFC 7641 Observe er dræberfunktionen i CoAP til vores brugsscenarie. Den giver MDM mulighed for at registrere interesse i en ressource og modtage automatiske notifikationer, hver gang ressourceværdien ændres. Pennen implementerer Observe på de flygtige ressourcer (battery, dict, lang, usage, errors).

Ressource Observe standard Opdateringsfrekvens
/battery Aktiveret Ved hver ændring på 1 %
/dict Aktiveret Verefter ordskifte
/lang Aktiveret Ved sprogskift
/usage Aktiveret Hver 60. sekund
/errors Aktiveret Ved fejlhændelse

Et klasseværelse-MDM kan registrere Observe på alle 30 penne for /usage og /errors. Når en elev trykker på et nyt ord, sender pennen en CoAP Observe-notifikation inden for 200 ms. MDM'en samler dataene og opdaterer lærerens dashboard i realtid.

5. Blokvis overførsel

Ordbogsopdateringer kan være op til 64 MB (en enkelt sprogpakke for engelsk er 38 MB, for arabisk er 24 MB, for mandarin er 42 MB). En enkelt UDP-datagram kan ikke transportere dette. RFC 7959 blokvis overførsel opdeler nyttelasten i blokke på op til 1 024 bytes.

Blokstørrelse Brugsscenarie Tid til at overføre 38 MB
256 bytes Standard for klienter med lav RAM 18 min
512 bytes Standard for pennen 9 min
1.024 bytes Standard for MDM-siden 5 min

Pennens blokvise modtager understøtter blokke på op til 1.024 bytes og kan genoptage en afbrudt overførsel ved hjælp af Block2-egenskaben. Hvis pennen genstarter midt i overførslen, sender MDM'en kun de manglende blokke igen, ikke hele ordbogen.

6. DTLS 1.2-sikkerhedslaget

Hver CoAP-anmodning og -svar er krypteret med DTLS 1.2. Pennen bruger ECDHE_ECDSA med P-256 og AES-128-CCM-8, de samme primitiver som vi bruger til BLE SSP (TC-059). Håndtrykket er:

Trin Tid på L5
ClientHello 14 ms
ServerHello + Certificate + ServerHelloDone 24 ms
ClientKeyExchange + CertificateVerify + Finished 38 ms
Server Finished 18 ms
Samlet handshake 94 ms

Et handshake på 94 ms er hurtigt nok til, at MDM'en kan åbne en ny DTLS-session for hver ordbogsopdatering uden mærkbar latenstid. For Observe-notifikationer holdes sessionen åben i 24 timer og genforhandles efter behov.

7. CoAP-anmodningseksemplet

En MDM, der udsteder en GET på /srp/v1/info producerer:

Header: TKL=0, Code=0.01 (GET), Message ID=0x4F2B
Token: (tom)
Options: 
  Uri-Path: "srp"
  Uri-Path: "v1"
  Uri-Path: "info"

Pennen svarer:

Header: TKL=4, Code=2.05 (Content), Message ID=0x4F2B
Token: 0xA1B2C3D4
Options:
  Content-Format: application/json
Payload:
{
  "model": "Q8",
  "fw": "3.3.1",
  "brand": "acme",
  "lang": "en-US",
  "dict": "us-k-2-2026q1",
  "bat": 84,
  "mac": "AA:BB:CC:DD:EE:FF",
  "uptime_s": 38472,
  "tap_count_lifetime": 482193
}

Det fulde svar er 198 bytes inklusive headers. En enkelt UDP-pakke på 568 bytes MTU er mere end rigelig plads.

8. CoAP Observe-eksemplet

En MDM, der registrerer Observe på /srp/v1/usage:

Header: TKL=4, Code=0.01 (GET), Message ID=0x4F2C
Token: 0x12345678
Options:
  Uri-Path: "srp"
  Uri-Path: "v1"
  Uri-Path: "usage"
  Observe: 0 (registrer)

Pennen svarer med den aktuelle værdi og sender derefter opdateringer ved enhver ændring:

Header: TKL=4, Code=2.05 (Content), Message ID=0x4F2D
Token: 0x12345678
Options:
  Observe: 1 (første notifikation)
  Content-Format: application/json
Payload:
{
  "ts": 1735689600,
  "taps_last_60s": 47,
  "audio_seconds_last_60s": 38.4,
  "errors_last_60s": 0
}

Et klasseværelse med 30 penne og 1-Hz Observe-notifikationer genererer 30 notifikationer pr. sekund, i alt 1,8 KB/s. Det ligger langt under enhver skoles Wi-Fi-kapacitet.

9. De fejltilstande, vi faktisk har set

Fejl % af CoAP-tickets Løsning
DTLS-handshake-timeout 31% Reducer handshake-timeout, tilføj retry
Fejl i Block-wise-overførselsgenoptagelse 22% Tilføj Block2-option-håndtering
Observe tabt ved pen-genstart 17% Genregistrer Observe ved registrering af genstart
Token-kollision 12% Tilfældiggør token pr. pr. anmodning
Nyttelast for stor til UDP 9% Gennemtving block-wise ved 256 bytes
Forældet mDNS-post 6% Reducer mDNS-TTL til 60 s
Forkert content-format 3% Validér Content-Format på svar

Den hyppigste fejltilstand (DTLS-handshake-timeout) kunne spores til et skolenetværk, der tavst droppede UDP-pakker over en bestemt størrelse. Vi reducerede den maksimale DTLS-recordstørrelse fra 2.048 bytes til 1.024 bytes, hvilket løste problemet.

10. Batteriprisen

På T2 (2500 mAh) med firmware 2.6.4:

Tilstand Strømforbrug Batteripris
Wi-Fi forbundet, ingen CoAP 6,2 mA baseline
Wi-Fi forbundet, CoAP idle 6,5 mA +0,3 mA (4,8%)
Wi-Fi forbundet, CoAP Observe 1 Hz 7,1 mA +0,9 mA (14,5 %)
Wi-Fi forbundet, CoAP block-wise 9,4 mA +3,2 mA (51,6 %)

Omkostningen ved block-wise-overførsel er høj, fordi radioen er fuldt tændt under hele downloaden. For en 38 MB ordbogs-overførsel er radioen tændt i ca. 5 minutter og bruger ca. 470 mAh, svarende til 19 % af T2-batteriet. Vi anbefaler derfor, at ordbogsopdateringer kører, mens pennen er på AC-strøm, ikke på batteri.

11. CoAP-overensstemmelsestest

Pennens CoAP-stak består ETSI CoAP plugtest-suiterne (32 testcases) og IETF CoAP interop-testsuiterne (84 testcases). Stakken er også valideret mod open source-referenceimplementeringerne Californium (Java) og aiocoap (Python).

Testsuite Bestået-rate Seneste kørsel
ETSI CoAP plugtest 100 % (32/32) 2026-04
IETF CoAP interop 100 % (84/84) 2026-04
Californium interop 100 % (24/24) 2026-04
aiocoap interop 100 % (24/24) 2026-04

CoAP Latency per Operation (ms)

12. Roadmap: CoAP over Thread og Matter

I 2027 planlægger vi at tilføje Thread-radio-understøttelse til L5-efterfølgermodellen, så pennen kan deltage i et Matter-netværk. Matter bruger CoAP over UDP (med DTLS) som sin kerneprotokol, så vores CoAP-stak kan videreføres direkte. Vi har deltaget i Connectivity Standards Alliance siden 2024 for at følge udviklingen af Matter-specifikationen.

13. Hvordan dette hænger sammen med de andre artikler

TC-064 er den sidste artikel i connectivity-klyngen. TC-062 dokumenterer Wi-Fi-stien. TC-063 dokumenterer mDNS-stien. TC-064 dokumenterer den applikationsprotokol, der kører over begge. TC-033 dækker MQTT, den cloud-side-protokol, der i nogle udrulninger kan sidde opstrøms for CoAP. TC-044 sammenligner CoAP, MQTT og HTTP til IoT-brugsscenarier. TC-099 og TC-100 dækker den kryptografi, der beskytter CoAP-kanalen.

15. Relateret læsning


Anmod om tilbud — få et hurtigt svar fra fabrikken

16. Feltdata, MDM-interoperabilitet og indkøbscheckliste

På tværs af de 47.000+ udrullede enheder i 47 lande har CoAP+DTLS-stakken på L5-, T2- og Y6-modellerne håndteret 1,9 millioner bekræftede confirmable (CON)-transaktioner siden Q3 2024 med en median round-trip på 142 ms over et 2,4 GHz WPA2-Personal-link og en leveringsrate på 99,9 procent efter retransmission. Stakken er bygget på Contiki-NG's coap-engine med en DTLS 1.2/1.3-sessioncache på 8 sessioner og en observe-buffer på 4 KB pr. ressource og er firmwarejusteret med B1/B2 2.4.7, F8 3.1.2, K7/KF1 1.9.5, L5 4.2.0, P2 2.0.3, Q6/Q8 3.3.1 og T2/Y6 2.6.4-basislinjen.

16.1 Round-trip vs. server-arbejdsbyrde

Diagrammet nedenfor viser median CoAP-round-trip for en 64-byte PUT, efterhånden som MDM-side-anmodningsraten stiger fra 1 til 50 anmodninger pr. sekund. Dataene kommer fra 600 forsøg på en Aruba CX 6000 med en flåde på 30 penne, indsamlet mellem Q1 2025 og Q1 2026 ved 23 °C og 55 % RF.

CoAP Round-Trip vs Server Workload

16.2 Ressource-skema og block-wise-grænser

Det standard CoAP-ressourcetræ eksponerer 12 endepunkter, som alle er block-wise-overførselsklare (RFC 7959) for payloads over 1.024 bytes. Skemaet nedenfor er fabrikkens standard; brands kan tilføje eller omdøbe endepunkter ved MOQ 3.000 med en 6-ugers firmware-tidslinje.

Ressource Metode Standardstørrelse Block-cap Auth
/.well-known/core GET 280 B i/t Ingen
/pen/model GET 8 B i/t Ingen
/pen/fw GET 6 B n/a Ingen
/pen/bat GET 4 B n/a Ingen
/pen/lang GET 4 B n/a Ingen
/pen/oid GET 6 B n/a Ingen
/pen/telemetry GET 64 B 1.024 B DTLS-PSK
/pen/telemetry POST n/a 4.096 B DTLS-PSK
/pen/log GET n/a 16.384 B DTLS-PSK
/pen/cmd PUT 32 B 256 B DTLS-PSK
/pen/ota PUT n/a 65.536 B DTLS-PSK + cert
/pen/cfg GET 256 B 1.024 B DTLS-PSK

16.3 Køberens beslutningsregler

Købertip: Hvis din MDM-stak taler MQTT, så tving ikke en CoAP-indpakning ind, bare fordi pennen understøtter det. CoAP skinner i LAN-bundne skoleprogrammer, hvor 142 ms median RTT og en leveringsrate på 99,9 procent sparer dig 8-12 procent på cloud-egress sammenlignet med en tilsvarende MQTT-over-TLS-sti. For WAN/cloud-første programmer bør du holde dig til MQTT og bruge CoAP som LAN-reserve for det samme MDM-dashboard.

16.4 Certificeringsaftryk for CoAP+DTLS-stakken

CoAP-laget kører på den samme 2,4 GHz Wi-Fi-station som provisioning-flowet og er dækket af CE-RED (EN 300 328 v2.2.2), FCC Part 15.247, UKCA-RER, RCM (AS/NZS 4268), KC, MIC og ISED RSS-247. DTLS 1.2/1.3-chiffersuitene er FIPS-kompatible (TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384), og certifikaterne udstedes af en intern CA forankret i vores PKI HSM. EN 71-1/-2/-3, ASTM F963-17, CPSIA, RoHS, REACH og PROP 65 dækker kabinettet. GCC (SFDA), ESMA (UAE MoIAT), SNI (Indonesien), NOM (Mexico) og INMETRO (Brasilien) udvider markedsadgangen. Hvert parti ledsages af en 38-siders typeafprøvningsrapport og et serienummer pr. enhed, der knyttes til QA-traveleren.

16.5 Interne krydsreferencer og læseveje

For Wi-Fi-provisioning-flowet, der kører før CoAP, se Reading Pen WiFi AP Mode Provisioning Smart Config. For LAN-discovery-laget, der annoncerer CoAP-endepunkter, se Reading Pen mDNS and DNS-SD Service Discovery. For sammenligningen med MQTT på cloud-siden, se Læsepen IoT MQTT vs HTTP vs CoAP og Læsepen IoT Cloud-arkitektur MQTT. For certifikatmodellen, der beskytter DTLS-håndtrykket, se Læsepen TLS 1.2 vs 1.3 og certifikat. For producentsiden af programmet, se Engros læsepenne og ODM-læsepen ingeniørtjeneste.

CTA: Har du brug for et tilpasset CoAP-resourcetræ til dit MDM-dashboard eller skoledistriktets LAN? Anmod om et tilbud med ordet "COAP-RES", så returnerer vi et 6-siders ressource-skema-brief (URI'er, metoder, blokkapaciteter, godkendelse) og et fastprismæssigt tilbud på firmwareintegration inden for 24 timer. Neutrale læsepenne på lager sendes ved MOQ 500 med en leveringstid på 5 dage, tilpassede CoAP-skemaer ved MOQ 3.000 med en tidsplan på 6 uger for firmwareintegration.

Frequently Asked Questions

Understøtter læsepen CoAP over TCP (RFC 8323)?
Nej. Pennen understøtter kun CoAP over UDP. RFC 8323 CoAP-over-TCP kræver en TCP-stak, hvilket kræver yderligere 38 KB RAM. Pennens begrænsede hukommelsesbudget kan ikke rumme både BLE-stakken og en fuld TCP-stak.
Hvilken DTLS-version bruger pennen?
DTLS 1.2 (RFC 6347) med ECDHE_ECDSA, P-256 og AES-128-CCM-8. DTLS 1.3 (RFC 9147) er på 2027-roadmappen for efterfølgeren L5, men er ikke leveret i øjeblikket. DTLS 1.0 understøttes ikke.
Kan pennen fungere som både CoAP-server og CoAP-klient samtidigt?
Ja. Pennen er både en CoAP-server (som reagerer på MDM GET/PUT/POST) og en CoAP-klient (som udsender Observe-notifikationer). Den dobbelte rolle kræver 0,4 KB ekstra RAM og 1,2 KB ekstra ROM. L5, T2 og Y6 understøtter alle dobbelt rolle.
Hvad er den maksimale størrelse for en enkelt CoAP-payload?
Uden block-wise-overførsel er maksimum 1.152 bytes (UDP-datagrammets payload minus CoAP-headeromkostninger, passer inden for den typiske 1.500-byte Ethernet-MTU). Med block-wise-overførsel (RFC 7959) er der ingen effektiv grænse; vi har testet op til 64 MB ordbogsoverførsler.
Kan pennen deltage i et Matter-fabric?
Endnu ikke. Matter kræver Thread eller Wi-Fi plus en CoAP-stak. Vores L5, T2 og Y6 bruger i øjeblikket Wi-Fi plus CoAP, men mangler Matter-applikationslaget. Efterfølgeren til L5, som er planlagt til 2027, vil tilføje Thread-radio og Matter-understøttelse og genbruge den eksisterende CoAP-stak.
Din indkøbskurv
Din oplevelse på dette websted forbedres ved at tillade cookies. Cookiepolitik
Chat on WhatsApp