-
Notifications
You must be signed in to change notification settings - Fork 333
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
First time setup over bluetooth/wifi (or similar) #175
Comments
Potentially useful documentation: https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md |
Also: https://github.com/atilag/ProximityBLEClient and https://github.com/atilag/ProximityBLEService It requires a native app, but otherwise works quite well. |
For Vaani we used this approach and worked well: https://github.com/mozilla/vaani.setup |
Personally my preference would be to start with the WiFi access point method because as Dave mentioned Bluetooth may require a completely new native app, whereas any smartphone/tablet/desktop computer can already connect to a WiFi access point and load a web page to carry out setup. |
A poor UX would be to ask the user to connect to a specific SSID and then type an IP address into their browser, such as http://192.168.0.1 or localhost. We should create a more intuitive approach. For Wi-Fi, the RPi can be setup to act like a public hotspot. That means redirecting any port 80 or port 443 traffic to a page hosted by the RPi. It is known in wi-fi hotspot lingo as a "captive portal" page. For example:
More elegant solutions are possible if the user installs a custom app or we do some sort of out-of-band key exchange method. |
Hi Kathy. This is exactly the UX we have on vaani.setup that I'll be integrating in the gateway. |
@andrenatal was there a UX spec for that? It might help in creating the UX spec for this feature for the gateway. |
AFAIR, it doesn't. |
Fixed by: 4b653a2 |
@andrenatal Where is the implementation of the user interface in the UX specification? (slides 3-8 https://docs.google.com/presentation/d/1rMeg6hep8JQflqwbiNIbhSoK9StCeVZ2npphmQHKda4/edit#slide=id.g221d7d7c9f_0_0). Who reviewed this code? The only code review I can see is #439 which provides a script to download a separate un-reviewed software repo and insert it into the gateway's build. #440 has no code review. It seems like you've just forked the vaani repository into the mozilla-iot GitHub org and hacked it to run on the gateway, without any effort to implement the UI in the specification or even bothering to rename it. This clearly doesn't meet the requirements. I can only suggest backing out these changes, implementing it as per the specification and getting a proper code review for this code. |
I reverted #440 and asked dave to review it #442 (review) Regarding UX for the wifi setup, I wanted to first implement the changes to make the captive portal work along the wifi setup and the integration into the gateway building system, to then modify the UI to meet the specification you mentioned and also change the docs and Vaani naming (#439 (comment)), things that I'm doing now. Regarding using Vaani's wifi setup method, I mentioned that I'd be using it on last two meetings and nobody objected. |
Thanks @andrenatal.
I see no problem re-using code, that's great, let's just make sure we integrate it cleanly, make sure it follows the UX spec, is properly reviewed and remove all the redundant and obsolete code (and audio files!) so that it isn't just an old project tacked on the side of the gateway. We don't want to be shipping legacy code and increasing the gateway image size unnecessarily. I'd suggest this should really be part of the gateway repo and feel like part of that codebase rather than something completely separate. |
I cleaned it and removed the references to vaani and the obsolete files. I also implemented the UX mockups (except for an icon that I don't have as mentioned here and here ). Regarding reviewing, could you please do it @dhylands (https://github.com/mozilla-iot/gateway-wifi-setup)? Regarding being part of the gateway repo or not, we decided not do it when we shipped Vaani to improve modularity since this method is linux and wifi only, and we also could use other setup methods (like bluetooth, sound and etc..), but if you want to merge that here is fine for me. |
@andrenatal Saw your note on the UX spec about the missing icons, sorry about that. I've uploaded exported SVG files to the icons folder on Google Drive.
|
Thank you for doing that. A quick grep reveals some mentions of vaani still remaining:
I notice that the
I'm OK with keeping WiFi setup as a separate repo if you and Dave agree that's the best approach. It certainly seems to make sense for the back end parts given how platform specific they are. However, given this is the first UI people will see when they use the gateway it's important that we get the UI right, how can I test this? Do I need to build my own OS image? I see that you've added some messages into the UI which is a good idea but I'd like to see how it looks in action. The setup process is also getting quite complex, passing between three separate NodeJS web servers so we need to make sure it's tested thoroughly, especially as there are currently no automated tests for this part. There still seems to be some redundant code like the un-used audio code in The fonts used in the UI should be Zilla Slab and Open Sans. Otherwise the font change will be quite obvious when moving through First Time Setup. Thanks for sticking at this and cleaning it up. I'll let Dave review all the WiFi stuff! |
I just tried the image Dave created and this is looking very cool! Some issues I've noticed:
Some comments on the visual design implementation (these may seem like small details, but this is literally the first UI users will see so it's important for the setup process to feel smooth):
Thanks for being patient in getting these details right. |
As a user I want to set up the gateway using WiFi or Bluetooth so I don't have to plug it into an Ethernet port to get it working.
The text was updated successfully, but these errors were encountered: