Apa cara yang baik untuk perangkat IoT untuk menerima pengaturan jaringannya?

15

Saya sedang dalam proses membangun perangkat IOT menggunakan ESP8266. Perangkat pada akhirnya akan berisi beberapa motor, dan saya ingin mengendalikan motor ini menggunakan MQTT. Saya ingin membuat perangkat semurah mungkin, jadi saya ingin menghindari hal-hal seperti display dan keyboard.

Jadi, ketika perangkat dihidupkan seharusnya terhubung ke WiFi lokal, dan kemudian ke broker MQTT. Tetapi bagaimana ia tahu tentang SSID lokal untuk terhubung, dan bagaimana dengan nama pengguna dan kata sandi? Karena perangkat tidak memiliki layar atau keyboard, tidak ada cara untuk memasukkan hal-hal ini. Dan bagaimana pengguna tahu apakah perangkat itu dapat terhubung atau tidak? Untuk pemecahan masalah, alangkah baiknya jika perangkat setidaknya memiliki beberapa cara untuk menunjukkan apa masalahnya.

Solusi yang saya pikirkan adalah memiliki satu tombol dan satu LED pada perangkat. Tombol akan ditandai "config" atau serupa. Ketika tombol ditekan, perangkat akan mulai beroperasi sebagai titik akses WiFi dengan SSID yang telah ditentukan. Ini akan memiliki server web, sehingga pengguna dapat terhubung dengan laptop atau telepon ke titik akses yang telah ditentukan ini dan memasukkan pengaturan jaringan lokal (SSID, nama pengguna dan kata sandi) serta alamat untuk broker MQTT. LED akan digunakan untuk menunjukkan mode operasi, dan juga sebagai indikasi kesalahan. Sebagai contoh, ketika LED menyala stabil semuanya terhubung, flash panjang berarti dalam mode konfigurasi, flash pendek berarti ada kesalahan, atau sesuatu yang serupa.

Pertanyaan saya adalah, apakah solusi yang saya usulkan merupakan cara standar dalam melakukan sesuatu dalam masalah ini? Yaitu apakah akan terasa seperti aliran akrab bagi pengguna, atau apakah cara lain akan lebih baik? Setelah melakukan sedikit pencarian saya menemukan contoh ini , yang tampaknya merupakan aliran pengguna yang serupa. Masih tertarik mendengar pengalaman apa yang Anda miliki tentang ini, dan mendengar bagaimana Anda akan menyelesaikannya?

Jika ternyata ini adalah cara yang baik dan berguna untuk menyelesaikan masalah ini, dan karena ini semacam solusi generik, alangkah baiknya untuk tidak menemukan kembali roda terlalu banyak. Saya berpikir bahwa mungkin ada perpustakaan yang bisa melakukan semua ini. Pustaka akan dikonfigurasikan dengan pin input untuk tombol dan pin output untuk LED, dan kemudian mengurus sisanya. Ini dapat dibangun di atas pustaka PubSubClient dan berdasarkan pada tutorial ESP8266: Menghubungkan ke broker MQTT . Jadi apakah ada perpustakaan yang melakukan ini atau yang serupa? Jika tidak, saya akan mengambil bacokan dan membuat saya sendiri, tetapi ingin mendengar tentang apa yang ada di luar sana terlebih dahulu.

Terima kasih!

Mikael Lindqvist
sumber

Jawaban:

14

Apa yang Anda jelaskan sebenarnya adalah cara yang cukup umum (paling umum?) Untuk memecahkan masalah mengintegrasikan perangkat WiFi IoT ke LAN lokal Anda.

Misalnya, dari pengalaman saya, Amazon Echo Devices diatur dengan cara ini atau berbagai sakelar pintar / colokan pintar (mis. Perangkat Shelly ).

Tergantung pada kebutuhan Anda, Anda juga bisa pergi tanpa LED dan tombol.
Berikut adalah solusi dengan perincian teknis yang akan mencoba menyambung ke jaringan yang dikonfigurasi dan jika tidak berhasil membuka jalur akses untuk konfigurasi.
Dan di sini implementasi kedua menggunakan portal captive dalam mode AP.

Implementasi bagian PubSub MQTT dan tombol dan LED ke sketsa masing-masing harus cukup mudah.

Alternatif:
Untuk kemungkinan alternatif penggunaan mode AP untuk konfigurasi, silakan lihat teknik Wi-Fi Protected Setup (WPS) dan Protokol Penyediaan Perangkat .

oh.dae.su
sumber
Terima kasih atas jawaban yang sangat bagus! Pustaka WifiManager di tautan kedua Anda tampaknya persis seperti yang saya cari. Saya akan mencobanya dan melihat apakah saya menyukainya. Jika tidak, saya akan menggunakan informasi di tautan pertama untuk membangun solusi saya sendiri ...
Mikael Lindqvist
1
Oh ... Dan ini adalah tambahan yang menambahkan bagian MQTT juga: github.com/dreed47/WifiMQTTManager
Mikael Lindqvist
3

Ada juga proyek luftdaten.info yang merupakan sensor partikel open-source dengan firmware sendiri. Mereka melakukan hal yang mirip dengan apa yang Anda usulkan, hanya tanpa tombol konfigurasi. Mereka melakukannya, dengan memulai server web per default, ketika perangkat dinyalakan. Setelah ambang tertentu (saya pikir itu antara 3-10 menit), server web internal akan dimatikan - sehingga tidak ada lagi konfigurasi yang mungkin hingga siklus daya berikutnya.

Solusi ini mungkin terlalu tidak aman untuk skenario tertentu, tetapi Anda mungkin ingin tahu tentang itu.

Edit:

Untuk mendapatkan konfigurasi awal ke dalam perangkat, prosedur berikut sudah ada:

Ketika perangkat di-boot, ia mencoba mencapai WLAN yang dikonfigurasi (tidak ada WLAN yang dikonfigurasi pada startup pertama). Jika gagal terhubung ke WLAN yang sudah dikonfigurasi sebelumnya, ia akan menetapkan IP statis dan merentang jaringan nirkabelnya sendiri tanpa kata sandi, di mana orang dapat terhubung ke dan melakukan konfigurasi awal melalui alamat IP statis.

Jens Kohl
sumber
3
Hanya memulai server web tidak menyelesaikan masalah tentang cara melewatkan SSID / Kata Sandi untuk jaringan wifi ke perangkat untuk benar-benar mendapatkannya di jaringan.
hardillb
1
@hardillb Benar, lihatlah luftdaten.info untuk lebih jelasnya . Ketika perangkat di-boot, ia mencoba mencapai WLAN yang dikonfigurasi (tidak ada WLAN yang dikonfigurasi pada startup pertama). Jika gagal terhubung ke WLAN yang sudah dikonfigurasi sebelumnya, ia akan menetapkan IP statis dan merentang jaringan nirkabelnya sendiri tanpa kata sandi, di mana orang dapat terhubung ke dan melakukan konfigurasi awal melalui alamat IP statis.
Jens Kohl