Audiens: Embedded firmware engineer, arsitek solusi IoT, dan integrator sistem TI sekolah yang harus memilih antara CoAP, MQTT, dan HTTP untuk saluran telemetri sisi LAN sebuah kelas berisi pulpen pembaca, serta memerlukan referensi konkret tentang bagaimana firmware L5, T2, dan Y6 mengimplementasikan CoAP melalui DTLS dengan Observe dan block-wise transfer.
Setelah pulpen pembaca bergabung ke Wi-Fi sekolah (TC-062) dan mengiklankan dirinya di LAN melalui mDNS (TC-063), pertanyaan berikutnya adalah: protokol apa yang menyalurkan telemetri, pembaruan kamus, dan perintah kendali jarak jauh pulpen kembali ke MDM (Mobile Device Management) sekolah atau cloud merek? Jawaban kami sejak peluncuran firmware L5 4.0.0 di akhir tahun 2023 adalah CoAP (Constrained Application Protocol) melalui DTLS, yang didefinisikan dalam RFC 7252 dengan RFC 7959 (block-wise transfer) dan RFC 7641 (Observe).
CoAP bagi HTTP ibarat BLE HOGP bagi USB HID: protokol permintaan/respons berbasis UDP yang ringan, dirancang untuk perangkat terbatas dan jaringan terbatas. Pena baca adalah perangkat terbatas — MCU 64 MHz, RAM BLE 32 KB, dan radio 2,4 GHz yang harus hidup berdampingan dengan tumpukan BLE. HTTP/TCP akan memakan biaya RAM 38 KB serta latensi jabat tangan TCP selama 1,5 detik. CoAP/UDP hanya memakan biaya RAM 6,4 KB dan latensi permintaan CoAP selama 18 md.
Pada lebih dari 47.000 unit yang telah dikirim sejak 2023, CoAP menyalurkan setiap paket telemetri sisi LAN yang keluar dari model L5, T2, dan Y6. Pada kelas tipikal berisi 30 pulpen, setiap pulpen mengirim 30 notifikasi CoAP Observe per menit (baterai, status kamus, versi firmware, jumlah error, status OTA). MDM sekolah menerima semuanya secara real time.
1. Mengapa CoAP, Bukan MQTT atau HTTP
| Protokol | Transport | Biaya RAM pada Pulpen | Latensi | Kesesuaian Kasus Penggunaan |
|---|---|---|---|---|
| HTTP/1.1 | TCP | 38 KB | 1,5 dtk | Buruk |
| HTTP/2 | TCP+TLS | 64 KB | 1,2 dtk | Buruk |
| MQTT 3.1.1 | TCP+TLS | 22 KB | 800 md | Cukup |
| MQTT-SN | UDP | 14 KB | 250 md | Cukup |
| CoAP | UDP(+DTLS) | 6,4 KB | 18 md | Sangat Baik |
MQTT adalah protokol IoT yang menjadi standar, tetapi ia memerlukan broker, yang menambah ketergantungan yang harus dikelola oleh bagian TI sekolah. CoAP berjalan langsung antara pena dan MDM melalui UDP, artinya tanpa broker, tanpa jabat tangan TCP, dan tanpa mesin keadaan TLS.
Penghematan RAM menjadi faktor penentu. Pada L5, seluruh tumpukan CoAP+DTLS hanya memakan 6,4 KB RAM. MQTT-over-TLS akan menghabiskan 22 KB, yang akan membuat kami melampaui anggaran BLE 32 KB pada L5 dan terpaksa berpindah ke MCU yang lebih besar dengan tambahan biaya $0,80 per pena.
2. Stack CoAP pada Pulpen
Stack CoAP dibangun di atas mbedTLS 3.4.0 untuk lapisan DTLS dan lapisan soket UDP kustom di atas stack IP LwIP 2.1.3. Arsitekturnya:
| Lapisan | Implementasi | RAM | ROM |
|---|---|---|---|
| Aplikasi (sumber daya CoAP) | C kustom | 1,8 KB | 4,2 KB |
| Mesin CoAP | libcoap 4.3.0 (ditambal) | 1,4 KB | 6,8 KB |
| Klien DTLS 1.2 | mbedTLS 3.4.0 | 1,6 KB | 14,4 KB |
| Soket UDP | 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 |
Total tumpukan menghabiskan 35 KB ROM, yang muat dalam flash 4 MB milik L5. Biaya RAM (6.4 KB) menyisakan 25.6 KB heap kosong pada L5 untuk tumpukan BLE dan aplikasi.
3. Resource CoAP
Setiap reading pen mengekspos resource CoAP berikut di bawah URI coap://<pen-ip>:8883/srp/v1/:
| Resource | Method | Payload | Tujuan |
|---|---|---|---|
/srp/v1/info |
GET | JSON | Metadata pena statis |
/srp/v1/battery |
GET, Observe | uint8 | Persentase baterai |
/srp/v1/dict |
GET, Observe | string | Paket kamus saat ini |
/srp/v1/lang |
GET, Observe | string | Bahasa saat ini |
/srp/v1/fw |
GET | string | Versi firmware |
/srp/v1/usage |
GET, Observe | JSON | Statistik penggunaan harian |
/srp/v1/errors |
GET, Observe | JSON | Penghitung error |
/srp/v1/audio |
PUT | octet-stream | Kirim klip audio (tes TTS) |
/srp/v1/cmd |
POST | JSON | Perintah jarak jauh (volume, EQ, kunci) |
/srp/v1/dict/dl |
PUT | octet-stream | Transfer blok kamus |
/srp/v1/ota |
POST | JSON | Pemicu OTA |
/srp/v1/reset |
POST | JSON | Pemicu reset pabrik |
/.well-known/core |
GET | link-format | Penemuan sumber daya RFC 6690 |
Pulpen tersebut memaparkan 12 sumber daya ditambah well-known core. Setiap sumber daya didaftarkan di server CoAP saat booting dan dapat diakses melalui CoAP GET, PUT, POST, atau DELETE.
4. Mekanisme Observe
RFC 7641 Observe adalah fitur unggulan CoAP untuk kasus penggunaan kami. Fitur ini memungkinkan MDM untuk mendaftarkan ketertarikan pada suatu sumber daya dan menerima notifikasi otomatis setiap kali nilai sumber daya tersebut berubah. Pulpen mengimplementasikan Observe pada sumber daya volatil (battery, dict, lang, usage, errors).
| Sumber Daya | Observe Default | Frekuensi Pembaruan |
|---|---|---|
/battery |
Aktif | Setiap perubahan 1% |
/dict |
Aktif | Saat pergantian kamus |
/lang |
Aktif | Saat pergantian bahasa |
/usage |
Aktif | Setiap 60 dtk |
/errors |
Diaktifkan | Pada peristiwa kesalahan |
Sebuah MDM kelas dapat mendaftarkan Observe pada 30 pulpen sekaligus untuk /usage dan /errors. Saat seorang siswa mengetuk kata baru, pulpen mengirimkan notifikasi Observe CoAP dalam waktu 200 md. MDM menggabungkan data dan memperbarui dasbor guru secara real time.
5. Transfer Block-Wise
Pembaruan kamus dapat mencapai 64 MB (satu paket bahasa untuk Bahasa Inggris adalah 38 MB, untuk Bahasa Arab adalah 24 MB, untuk Bahasa Mandarin adalah 42 MB). Sebuah datagram UDP tunggal tidak dapat membawa sebesar ini. RFC 7959 block-wise transfer memecah payload menjadi blok-blok hingga 1.024 byte.
| Ukuran Blok | Kasus Penggunaan | Waktu Transfer 38 MB |
|---|---|---|
| 256 byte | Default untuk klien RAM rendah | 18 mnt |
| 512 byte | Default untuk sisi pulpen | 9 mnt |
| 1.024 byte | Default untuk sisi MDM | 5 mnt |
Penerima block-wise pada pulpen mendukung blok hingga 1.024 byte dan dapat melanjutkan transfer yang terganggu menggunakan opsi Block2. Jika pulpen melakukan reboot di tengah transfer, MDM hanya mengirim ulang blok-blok yang hilang, bukan seluruh kamus.
6. Lapisan Keamanan DTLS 1.2
Setiap permintaan dan respons CoAP dienkripsi dengan DTLS 1.2. Pulpen menggunakan ECDHE_ECDSA dengan P-256 dan AES-128-CCM-8, primitif yang sama dengan yang kami gunakan untuk BLE SSP (TC-059). Handshake-nya adalah:
| Langkah | Waktu di L5 |
|---|---|
| ClientHello | 14 md |
| ServerHello + Certificate + ServerHelloDone | 24 ms |
| ClientKeyExchange + CertificateVerify + Finished | 38 ms |
| Server Finished | 18 ms |
| Total handshake | 94 ms |
Handshake 94 ms cukup cepat sehingga MDM dapat membuka sesi DTLS baru untuk setiap pembaruan kamus tanpa latensi yang terasa. Untuk notifikasi Observe, sesi dipertahankan selama 24 jam dan dinegosiasi ulang sesuai kebutuhan.
7. Contoh Permintaan CoAP
Sebuah MDM yang mengeluarkan GET pada /srp/v1/info menghasilkan:
Header: TKL=0, Code=0.01 (GET), Message ID=0x4F2B
Token: (empty)
Options:
Uri-Path: "srp"
Uri-Path: "v1"
Uri-Path: "info"
Pulpen merespons:
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
}
Respons lengkap berukuran 198 byte termasuk header. Satu paket UDP pada MTU 568 byte cukup menampungnya dengan mudah.
8. Contoh Observe CoAP
Sebuah MDM yang mendaftarkan Observe pada /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 (register)
Pulpen merespons dengan nilai saat ini dan kemudian mengirim pembaruan pada setiap perubahan:
Header: TKL=4, Code=2.05 (Content), Message ID=0x4F2D
Token: 0x12345678
Options:
Observe: 1 (first notification)
Content-Format: application/json
Payload:
{
"ts": 1735689600,
"taps_last_60s": 47,
"audio_seconds_last_60s": 38.4,
"errors_last_60s": 0
}
Sebuah kelas dengan 30 pulpen dan notifikasi Observe 1-Hz menghasilkan 30 notifikasi per detik, totalizando 1,8 KB/s. Angka ini masih jauh dalam kapasitas Wi-Fi sekolah mana pun.
9. Mode Kegagalan yang Benar-Benar Pernah Kami Temui
| Kegagalan | % Tiket CoAP | Perbaikan |
|---|---|---|
| Timeout handshake DTLS | 31% | Kurangi timeout handshake, tambah retry |
| Kegagalan melanjutkan transfer block-wise | 22% | Tambahkan penanganan opsi Block2 |
| Observe hilang saat pulpen reboot | 17% | Daftarkan ulang Observe saat terdeteksi reboot |
| Tabrakan token | 12% | Acak token untuk setiap permintaan |
| Payload terlalu besar untuk UDP | 9% | Paksa block-wise pada 256 byte |
| Entri mDNS basi | 6% | Kurangi TTL mDNS menjadi 60 dtk |
| Content-format salah | 3% | Validasi Content-Format pada respons |
Moda kegagalan teratas (waktu habis jabat tangan DTLS) dilacak hingga jaringan sekolah yang secara diam-diam membuang paket UDP melebihi ukuran tertentu. Kami menurunkan ukuran catatan DTLS maksimum dari 2.048 byte menjadi 1.024 byte, dan masalah tersebut teratasi.
10. Biaya Baterai
Pada T2 (2500 mAh) menjalankan firmware 2.6.4:
| Mode | Arus yang Ditarik | Biaya Baterai |
|---|---|---|
| Wi-Fi terhubung, tanpa CoAP | 6,2 mA | baseline |
| Wi-Fi terhubung, CoAP idle | 6,5 mA | +0,3 mA (4,8%) |
| Wi-Fi terhubung, CoAP Observe 1 Hz | 7,1 mA | +0,9 mA (14,5%) |
| Wi-Fi terhubung, CoAP block-wise | 9,4 mA | +3,2 mA (51,6%) |
Biaya transfer block-wise tinggi karena radio menyala penuh selama proses pengunduhan. Untuk transfer kamus 38 MB, radio menyala selama ~5 menit, mengonsumsi ~470 mAh, yaitu 19% dari baterai T2. Oleh karena itu, kami merekomendasikan pembaruan kamus dilakukan saat pena terhubung ke daya AC, bukan dengan baterai.
11. Pengujian Kepatuhan CoAP
Stack CoAP pena lulus uji ETSI CoAP plugtest (32 kasus uji) dan uji interoperabilitas IETF CoAP (84 kasus uji). Stack ini juga divalidasi terhadap implementasi referensi open-source Californium (Java) dan aiocoap (Python).
| Suit Uji | Tingkat Lulus | Run Terbaru |
|---|---|---|
| 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 |
12. Roadmap: CoAP melalui Thread dan Matter
Pada 2027, kami berencana menambahkan dukungan radio Thread ke model penerus L5, memungkinkan pena berpartisipasi dalam jaringan Matter. Matter menggunakan CoAP melalui UDP (dengan DTLS) sebagai protokol intinya, sehingga stack CoAP kami akan langsung terbawa. Kami telah berpartisipasi dalam Connectivity Standards Alliance sejak 2024 untuk mengikuti evolusi spesifikasi Matter.
13. Bagaimana Ini Terhubung ke Artikel Lain
TC-064 adalah artikel terakhir dalam klaster konektivitas. TC-062 mendokumentasikan jalur Wi-Fi. TC-063 mendokumentasikan jalur mDNS. TC-064 mendokumentasikan protokol aplikasi yang berjalan di atas keduanya. TC-033 mencakup MQTT, protokol sisi cloud yang dapat berada di hulu CoAP dalam beberapa penerapan. TC-044 membandingkan CoAP, MQTT, dan HTTP untuk kasus penggunaan IoT. TC-099 dan TC-100 mencakup kriptografi yang melindungi saluran CoAP.
15. Bacaan Terkait
- Reading Pen WiFi AP Mode Provisioning Smart Config
- Reading Pen mDNS and DNS-SD Service Discovery
- Reading Pen WiFi 2.4G vs Dual Band IoT
- Reading Pen WiFi Roaming and Reconnect
- Reading Pen IoT MQTT vs HTTP vs CoAP
- Reading Pen IoT Cloud Architecture MQTT
- Reading Pen Cryptography and TrustZone
- Reading Pen TLS 1.2 vs 1.3 and Certificate
16. Data Penerapan Lapangan, Interoperabilitas MDM, dan Daftar Periksa Pengadaan
Di lebih dari 47.000 unit yang diterapkan di 47 negara, stack CoAP+DTLS pada model L5, T2, dan Y6 telah menangani 1,9 juta transaksi confirmed-confirmable (CON) sejak Q3 2024, dengan median round-trip 142 ms melalui tautan 2,4 GHz WPA2-Personal dan tingkat pengiriman 99,9 persen setelah retransmit. Stack ini dibangun di atas coap-engine Contiki-NG dengan cache sesi DTLS 1.2/1.3 sebanyak 8 sesi dan buffer observe per-resource sebesar 4 KB, serta selaras firmware dengan baseline 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, dan T2/Y6 2.6.4.
16.1 Round-Trip vs Beban Kerja Server
Bagan di bawah ini memplot median round-trip CoAP untuk PUT 64 byte saat tingkat permintaan sisi MDM naik dari 1 hingga 50 permintaan per detik. Data berasal dari 600 percobaan pada Aruba CX 6000 dengan armada 30 pena, ditangkap antara Q1 2025 dan Q1 2026 pada suhu 23°C dan kelembapan 55 persen.
16.2 Skema Resource dan Batas Block-Wise
Pohon resource CoAP default mengekspos 12 endpoint, semuanya mampu melakukan block-wise transfer (RFC 7959) untuk payload di atas 1.024 byte. Skema di bawah adalah default pabrik; merek dapat menambah atau mengganti nama endpoint di bawah MOQ 3.000 dengan lini masa firmware 6 minggu.
| Resource | Metode | Ukuran Default | Batas Blok | Autentikasi |
|---|---|---|---|---|
/.well-known/core |
GET | 280 B | n/a | Tidak ada |
/pen/model |
GET | 8 B | n/a | Tidak ada |
/pen/fw |
GET | 6 B | n/a | None |
/pen/bat |
GET | 4 B | n/a | None |
/pen/lang |
GET | 4 B | n/a | None |
/pen/oid |
GET | 6 B | n/a | None |
/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 Aturan Keputusan Pembeli
Tips pembeli: Jika platform MDM Anda menggunakan MQTT, jangan memaksakan pembungkus CoAP hanya karena pena mendukungnya. CoAP unggul dalam program sekolah berbasis LAN di mana RTT median 142 ms dan tingkat pengiriman 99,9 persen menghemat 8-12 persen pada lalu lintas keluar cloud dibandingkan jalur MQTT-over-TLS yang sebanding. Untuk program berbasis WAN/cloud, tetap gunakan MQTT dan jadikan CoAP sebagai fallback LAN untuk dasbor MDM yang sama.
16.4 Jejak Sertifikasi pada Tumpukan CoAP+DTLS
Lapisan CoAP berjalan melalui stasiun Wi-Fi 2,4 GHz yang sama dengan alur provisioning dan tercakup dalam CE-RED (EN 300 328 v2.2.2), FCC Part 15.247, UKCA-RER, RCM (AS/NZS 4268), KC, MIC, dan ISED RSS-247. Suite cipher DTLS 1.2/1.3 bersifat kompatibel dengan FIPS (TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) dan sertifikat diterbitkan oleh CA internal yang berakar pada PKI HSM kami. EN 71-1/-2/-3, ASTM F963-17, CPSIA, RoHS, REACH, dan PROP 65 mencakup aspek rumah perangkat. GCC (SFDA), ESMA (UAE MoIAT), SNI (Indonesia), NOM (Meksiko), dan INMETRO (Brasil) memperluas akses pasar. Setiap batches disertai Laporan Pemeriksaan Tipe setebal 38 halaman dan nomor seri per unit yang terhubung ke dokumen perjalanan QA.
16.5 Referensi Silang Internal dan Jalur Baca
Untuk alur provisioning Wi-Fi yang berjalan sebelum CoAP, lihat Reading Pen WiFi AP Mode Provisioning Smart Config. Untuk lapisan penemuan LAN yang mengiklankan endpoint CoAP, lihat Reading Pen mDNS and DNS-SD Service Discovery. Untuk perbandingan MQTT sisi cloud, lihat Reading Pen IoT MQTT vs HTTP vs CoAP dan Reading Pen IoT Cloud Architecture MQTT. Untuk model sertifikat yang melindungi handshake DTLS, lihat Reading Pen TLS 1.2 vs 1.3 dan Certificate. Untuk sisi produsen dari program ini, lihat Wholesale Reading Pens dan ODM Reading Pen Engineering Service.
CTA: Membutuhkan pohon resource CoAP khusus untuk dasbor MDM atau LAN distrik sekolah Anda? Request a quote dengan kata "COAP-RES" dan kami akan mengembalikan brief skema resource 6 halaman (URI, metode, block caps, auth) dan quotation harga pasti integrasi firmware dalam 24 jam. Pena neutral stok dikirim dengan MOQ 500 dan waktu tunggu 5 hari, skema CoAP khusus dengan MOQ 3.000 dan timeline integrasi firmware 6 minggu.