MQTT / UDP pre-roll: konfigurasi jarak jauh dan tanda tangan digital

Musim dingin berakhir, dan ini adalah kesempatan untuk menggambar garis lain dan memberi tahu apa yang baru di MQTT / UDP.

Sebagai permulaan, tautan ke pengantar dan artikel sebelumnya.

Terima kasih kepada semua orang yang bereaksi dengan penuh minat dan terutama kepada mereka yang berbagi pemikiran mereka. Anda benar-benar membantu saya dengan pendekatan tanda tangan digital. Jadi, apa yang berubah dalam skala besar:

  • Sebuah mekanisme untuk ekstensi protokol yang fleksibel telah muncul: Tagged Tail Records, TTRs
  • Berdasarkan itu, skema tanda tangan paket digital telah dibuat
  • Mekanisme untuk konfigurasi komponen jarak jauh telah dibuat
  • Mengangkat siklus CI lengkap: perakitan, tes unit, tes protokol ujung-ke-ujung (4 * 4 bahasa pemrograman)
  • Implementasi C sekarang mendukung arsitektur yang berbeda dan dapat berintegrasi dengan OS dan monitor yang berbeda.
  • Ada paket publik untuk Python dan Lua, meskipun, tentu saja, mereka sudah usang.

Nah, ada banyak hal kecil: integrasi dengan OpenHAB, file konfigurasi dan logging, memeriksa kompatibilitas dengan layanan cloud MQTT, kasus uji untuk Wemos D1 (NodeMCU), kasus uji untuk atmega128 + ethernet (bukan arduino), contoh dari konektor protokol pada Java (CCU825), contoh dari informer-controller di baki desktop dibuat (akhirnya saya bisa menyalakan lampu di ruangan dengan dua klik mouse :), dan banyak lagi.

Sekarang sudah beres.

Tag Tail Tail yang ditandai


Saya menjadi sesak sebagai bagian dari paket MQTT. Saya menambahkan aditif ekor ke paketnya dalam bentuk tag-length-content, di mana Anda sekarang dapat memasukkan data yang diperlukan. Hari ini adalah id dari paket, id dari paket yang kami jawab (untuk QoS, ini masih berfungsi) dan tanda tangan digital, jika diaktifkan. Direncanakan juga bahwa tanggal-waktu dalam milidetik dari saat pengukuran nilai dan saat pengiriman paket (sebagai paliatif pada saat pengukuran), dan perluasan sewenang-wenang selanjutnya dimungkinkan dalam ukuran paket UDP.

(SVG tidak dimasukkan, ilustrasi di sini )

Itu sudah bekerja di mana-mana kecuali Lua. (Secara umum, Lua mengecewakan saya, dan hanya NodeMCU yang menahannya, dan kemudian saya akan mencoba untuk beralih ke Python di sana).

Tanda tangan digital


Saya takut untuk mendekati bobot ini, tetapi setelah munculnya ekstensi tag semuanya menjadi sangat sederhana. Paket yang dikirim ditandatangani sesuai dengan standar HMAC MD5 (paket lain yang menurut saya terlalu lama untuk paket UDP pendek), suatu pemeriksaan dilakukan pada input. Apakah atau tidak menerima paket tanpa tanda tangan diserahkan pada kode aplikasi. Benar, di Jawa ada saklar "tolak semua yang tidak ditandatangani", tetapi ini tampaknya bersifat maksimal.

Konfigurasi jarak jauh


gambar

Bahkan, semuanya sederhana lagi: ada program desktop (Java, bekerja di mana-mana) yang membuat permintaan (paket SUBSCRIBE) untuk topik jenis tertentu ( $SYS/conf/# ). Semua node yang dapat dikonfigurasi dari jarak jauh sesuai dengan nilai saat ini dari parameter yang dapat dikonfigurasi. Program dari ini mensintesis UI sederhana dengan nama dan bidang input, pengguna mengubah pengaturan, perintah pembaruan terbang kembali. Seluruh infrastruktur di perpustakaan, dari sisi kode aplikasi, Anda hanya perlu mengeluarkan daftar parameter dan dapat menulis / membacanya ke file atau NVRAM.

Arsitektur dan Kode Ketergantungan Sistem untuk C


Sekarang Anda dapat menambahkan pengaturan untuk arsitektur (toolchain) dan kode lem untuk OS target atau monitor. Ini diuji pada tiga konfigurasi - unix / cygwin (./configure), mingw, dan NUT / OS (tanpa konfigurasi).

Yah, mungkin, itu saja untuk hari ini. Tidak ada waktu untuk perincian, tetapi jika ada minat, saya akan menulis lebih banyak.

Dokumentasi untuk proyek , lebih dari sekadar aspirasi, masih cukup relevan, dan ditulis dengan baik di sana. Maaf karena kurangnya bahasa Rusia, tetapi sangat sedikit waktu untuk ini, saya ingin menerjemahkan berdasarkan infrastruktur, dan saya belum menemukan layanan publik yang dapat diterima (editor online) untuk menerjemahkan sebuah paragraf ke dalam sebuah paragraf.

Nah, repositori itu sendiri .

Source: https://habr.com/ru/post/id440438/


All Articles