Konfigurasi nirkabel ESP8266 dalam firmware DeviceHive v 0.3



Berita bagus, semuanya! Versi baru dari firmware DeviceHive untuk ESP8266 telah dirilis. Kami telah menerapkan dukungan untuk antarmuka paling populer untuk menghubungkan perangkat: GPIO, ADC, PWM, UART, I2C, SPI, 1-wire. Sekarang Anda dapat dengan mudah menghubungkan perangkat dengan antarmuka ini ke layanan cloud kami. Dan yang paling penting - kemampuan untuk mengkonfigurasi firmware secara nirkabel telah muncul (lihat tangkapan layar di bawah). Kami akan membicarakan ini hari ini.



Triple RESET, atau "Ayo pergi!"


Saat membuat perangkat IoT dengan koneksi nirkabel, Anda dapat sering menghadapi masalah yang tidak menyenangkan: mengatur perangkat ke pengguna akhir tidak semudah kelihatannya. Perangkat semacam itu biasanya tidak dilengkapi dengan layar dan keyboard, jadi pengaturan pengaturan awal (data jaringan Wi-Fi, misalnya) tidak akan berfungsi tanpa kabel yang sesuai dan perangkat lunak khusus. Kami mencoba menyelesaikan masalah ini dalam versi firmware baru.

Sekarang semuanya sangat mudah untuk dikonfigurasikan:
• perangkat melakukan reboot tiga kali (dengan interval tidak lebih dari 3 detik), setelah itu berubah menjadi titik akses Wi-Fi;
• Anda terhubung ke titik ini dan melalui browser masukkan semua pengaturan yang diperlukan;
• setelah menerapkan pengaturan, perangkat secara otomatis melakukan reboot dengan pengaturan baru.

Dengan cara ini, kedua masalah diselesaikan sekaligus - Anda tidak memerlukan kabel atau perangkat lunak khusus. Selain browser ... tetapi apakah Anda memiliki browser? Tombol RESET paling sering terletak langsung di badan perangkat, menekannya tiga kali seharusnya cukup sederhana.

Selain itu, di OS seluler modern, Anda bahkan tidak perlu membuka browser, karena kebanyakan dari mereka mendukung otentikasi portal captive. Pada perangkat Apple, halaman entri data terbuka secara otomatis. Android akan menampilkan pemberitahuan dengan mengklik di mana, Anda akan menemukan diri Anda di halaman ini.

Dalam video di bawah ini Anda dapat melihat bagaimana semuanya bekerja dengan firmware baru dan perangkat Android.



Lakukan sendiri


Mari kita lihat bagaimana sistem pengaturan seperti itu pada dasarnya bekerja, karena dapat diterapkan untuk perangkat nirkabel lain dengan Wi-Fi.

Untuk memulai, kami meningkatkan jaringan Wi-Fi biasa. Di dalamnya, kami membuat server DHCP yang akan mendistribusikan alamat IP ke perangkat yang terhubung. Tetapi sebagai server DNS, ia melewati alamat IP dari DNS "licik". Kuncinya adalah bahwa alamat IP yang sama dari server HTTP yang dengannya kita dapat mengonfigurasi perangkat akan selalu dikembalikan ke catatan DNS "A" query apa pun. Dalam kasus ESP8266, DHCP, DNS, dan server HTTP bekerja langsung pada chip. Dalam versi yang sangat mendasar, ini sudah cukup - membuka halaman apa saja di browser, kita akan melihat halaman dengan pengaturan. Tetapi, untuk menjadi cantik, Anda dapat memaksa perangkat yang mendukung otentikasi portal untuk menampilkan pemberitahuan tentang perlunya memasukkan data.

Otentikasi portal biasanya digunakan untuk memasukkan data dan / atau menampilkan perjanjian penggunaan di hotel, hotel dan hotspot Wi-Fi lainnya. Kami menggunakan teknik ini untuk menampilkan halaman kami.

Android saat menghubungkan ke jaringan Wi-Fi akan mencoba masuk ke clients3.google.com/generate_204 .
Perangkat Apple sedang mencoba terhubung ke captive.apple.com .

Setelah mengirim permintaan ke sana, Anda akan menerima respons dari formulir:

$ curl http://clients3.google.com/generate_204 -i
HTTP/1.1 204 No Content
Content-Length: 0
Date: Mon, 07 Sep 2015 14:58:21 GMT
Server: GFE/2.0


$ curl http://captive.apple.com -i
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 68
Date: Mon, 07 Sep 2015 15:00:32 GMT
Connection: keep-alive

<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>


Artinya, sebagai respons terhadap permintaan HTTP, mereka mengembalikan respons dengan status 2xx. Berkat permintaan ini, perangkat menentukan apakah mereka terhubung ke Internet. Untuk menerapkan otentikasi portal, perlu untuk mengirim respons dengan kode 302 Pindah Sementara dalam menanggapi permintaan ini (atau hanya untuk semua permintaan yang menarik bagi kami) dan menunjukkan bidang Lokasi dengan alamat kami di header, mis. Jawabannya harus perkiraan seperti ini:

HTTP/1.1 302 Moved Temporarily
Content-Length: 0
Location: http://example.com


Setelah menerima jawaban ini, perangkat akan memahami bahwa perlu untuk menampilkan halaman pengaturan pada alamat yang ditentukan - perangkat Apple akan membuka halaman ini di layar sendiri, dan Android akan menampilkan pemberitahuan. Dalam sistem operasi tanpa dukungan untuk otentikasi portal, cukup menuliskan di bilah alamat peramban alamat apa pun yang dimulai dengan "http: //" - peramban akan membuka halaman pengaturan. Pada saat yang sama, Anda tidak akan menyesatkan pengguna, karena alamat halaman dengan pengaturan akan ditampilkan di bilah alamat. Dalam firmware untuk ESP8266 kami menggunakan alamat devicehive.config .

Kami berharap semua ini bermanfaat bagi Anda. Selamat mencoba membuat solusi IoT Anda sendiri!

Diposting oleh Nikolai Khabarov, Senior Embedded Developer

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


All Articles