Baru-baru ini saya membeli beberapa relay wifi dari Xiaomi. Meskipun sejauh ini solid, saya benar-benar tidak menyukai aplikasi Xiaomi. Tapi, saya suka gagasan bahwa itu benar-benar berfungsi baik di LAN dan melalui internet. Ketika di LAN mereka sangat cepat untuk menghidupkan dan mematikan, mengingat server Xiaomi ada di Cina.
Jadi saya ingin memutar relay berbasis ESP8266 saya sendiri (saya tahu saya bisa menyiapkan perangkat keras, jadi itu bonus). Masalah saya adalah, bagaimana saya bisa secara otomatis mendeteksi relay di jaringan saya dari halaman web?
Dari "App" saya bisa menggunakan SSDP, mDNS-SD atau UPNP untuk mendeteksi sesuatu. Tapi saya belum menemukan info apakah ini mungkin dari browser web (Chrome pada Android pada dasarnya). Karena saya mengubah halaman web stasiun cuaca saya menjadi Aplikasi Web Progresif, saya terpikat. Saya benar-benar menyukai gagasan hanya menjadi laman web dan bukan aplikasi yang harus Anda pasang. Dan PWA mengisi celah dengan mode offline juga.
Anehnya, bagian "sulit" (menghidupkan dan mematikan relay dari luar LAN) sepele untuk dipecahkan melalui server MQTT. Tapi saya lebih suka tidak mengandalkan server MQTT eksternal. Jika saya menggunakan LAN, saya ingin berbicara langsung dengan relay. Jika tidak, maka kirim perintah melalui MQTT.
Saya tentu saja bisa mengandalkan server untuk menanyakan relay, tetapi dalam hal ini saya memerlukan koneksi internet (jika server MQTT saya ada di "cloud"), atau server yang dihosting di rumah. Saya memiliki server di rumah, dan bahkan jika tidak, pi raspberry dapat dengan mudah mengisi celahnya. Tetapi idealnya adalah bahkan tidak perlu server ketika berbicara dengan perangkat melalui LAN (Wifi dalam kasus ini). Saya lebih suka untuk tetap P2P sebanyak mungkin, dan hanya menggunakan MQTT sebagai jatuh kembali ketika saya menggunakan WAN (MQTT memecahkan masalah CG-NAT dan port forwarding).
sumber
Jawaban:
Saya tidak mengetahui adanya kemampuan pencarian lokal generik yang terpasang di browser. Sebenarnya saya akan mempertimbangkan kemampuan apa pun untuk menjadi keamanan terhormat karena akan memungkinkan penyerang untuk profil jaringan Anda dari jarak jauh kecuali jika ada langkah interaksi manual untuk memulainya, yang benar-benar akan memperlambat alur kerja yang saya pikir Anda tuju.
Saya dapat memikirkan 2 hal yang mendekati:
Kemudahan penemuan Chromecast dimasukkan ke dalam Chrome. Ini dulunya merupakan plugin terpisah sebelum digulirkan. Tetapi ini masih membutuhkan langkah manual ke mana pengguna memicu pencarian dan kemudian pemilihan manual rincian perangkat untuk dikembalikan ke halaman / javascript. (ini menggunakan SSDP di bawah selimut iirc)
Dukungan pemindaian WebBluetooth. Ini mengikuti model yang mirip dengan penemuan Chromecast, Pengguna harus memulai pemindaian, kemudian mereka harus memilih secara manual dari perangkat yang ditemukan oleh browser yang detailnya dapat dikembalikan ke javascript di halaman.
Saya telah menggunakan pendekatan WebBluetooth untuk menemukan saklar lampu lokal (Saya punya aplikasi BLE pada pi nol mengendalikan bola WeMo Belkin https://github.com/hardillb/physical-web-lightswitch ). Ini berfungsi tetapi tidak mulus karena membutuhkan setidaknya 2 interaksi pengguna untuk menemukan satu perangkat.
Meskipun tidak memenuhi semua persyaratan lokal Anda, saya pikir menggunakan pendekatan cloud broker bahkan ketika beroperasi secara lokal, itu akan menjadi pengalaman pengguna yang lebih lancar.
sumber
Jika Anda memiliki antarmuka web pada perangkat, dan mengonfigurasinya untuk memiliki nama host MDNS melalui layanan responden MDNS seperti bonjour atau avahi, maka dari sistem operasi yang berfitur Anda dapat mengarahkan browser Anda di
https: //livingroomlight.local
Atau apa pun yang Anda konfigurasikan untuk memanggil dirinya sendiri.
Ini akan bekerja di luar kotak dengan browser yang berjalan di OSX, iOS dan sebagian besar Linuces, yang semuanya mendukung resolusi nama host MDNS pada tingkat sistem.
Namun, ini tidak akan berfungsi dari Windows kecuali jika Anda menginstal dukungan MDNS add-on, dan itu tidak akan bekerja dengan browser Android stock meskipun dimungkinkan untuk membuat aplikasi browser kustom untuk Android yang mendukungnya.
Menemukan instance yang tidak dikenal di jaringan biasanya tidak didukung oleh browser, tetapi biasanya didukung melalui sistem operasi API dan alat baris perintah seperti
dns-sd
(OSX) danavahi-browse
(Linux).Jadi, meskipun tidak tampak jelas bahwa peramban dapat menemukan perangkat Anda, jika Anda dapat dengan mudah mengingat apa yang Anda sebut salah satu dari mereka, Anda dapat terhubung ke sana, dan itu berpotensi menunjukkan kepada Anda tautan ke semua rekan-rekannya, dengan melakukan MDNS cari sendiri.
Atau Anda dapat menjalankan terminal dan mendapatkan jawaban sendiri. Untuk itu Anda dapat menjalankan daemon lokal yang akan melakukan pencarian MDNS dan menunjukkan hasilnya sebagai halaman tautan yang hanya disajikan pada antarmuka loopback, dan karenanya tidak dapat diakses oleh mesin lain.
sumber