Shortly after I wrote the Node.js article yesterday I found an email from DDL via Kickstarter in my mailer that announced the arrival of something called “Vector Web Setup”. At first I was excited and thought that this would be the Escape Pod beta test that was announced for july 15th, but of course it is not.
Vector Web Setup is a node.js package that is aimed at replacing the apps for iOS and Android that are used to configure Vectors. From the text of the mail this will be the foundation for further future things as Escape Pod and OSKR (since you will for example later be able to put own, modified firmwares onto the robot). Yesterday it was too late for me to try it (central european summer time), so I invested a few hours today morning into it. From the looks even if DDL calls this “version 1.0.0” it looks more like an early alpha, since there are features missing and heaps of problems and bugs. It would probably have been better to declare this at least as a beta and warn less tech-savvy users not to try it.
The installation is somewhat straightforward if you know how to use npm, the node.js package manager in a console or command line interface window. In their mail (that is in fact just the readme file from the Github repository) they omitted that you need admin rights on Linux to install this, else you see lots of missing user rights errors, something I was able to solve with sudo (but I think for userfriendlyness this should be in the documentation anyway).
Aside from that on a RasPi 3B+ with a modern TP-LinkBT LE Bluetooth dongle nearly nothing worked. The RasPi immediately crashed and when I took it in my hand to pull the power plug to reset it, I noticed that it got very hot. A simple web interface should really not do that. I restarted and while the minicomputer still got quite warm it kept running. I am, however, not confident that this is good for long time usage due to strain on the processor.
In their mail the developers wrote that you need to use Chrome, because Chrome is the only browser that supports the Web Bluetooth API technology. That is not entirely true, there are other browsers that support it, you can see that on a page of the Mozilla project (funny thing here is, that the browser that implements the most of this API is the much frowned upon Microsoft Edge). Personally I went away from Chrome for privacy reasons a long time ago, So I would prefer to use another browser with less privacy problems.
I have no idea if the Chromium that comes with Raspian is de-googled, but since I do not want to use the RasPi for surfing anyway I thought it would be fine to use it, and since it was a quite recent version I hoped that it would work. It did not. I only got a notice that I have to use a browser that is capable of Web Bluetooth.
So I opened port 8000 in the RasPi firewall and tried to connect to it from another machine in my local network, but regardless wht Browser I used (even Chrome), I got the same message. In the meantime the RasPi again was quite hot, so I stopped my experiments here as failure.
I have a Windows Box with freshly installed Windows 10/64 that I use for experiments and it was installed recently. So I decided to try that.
Installation of node.js with the Windows installer was no problem, also the installation of the Vector Web Setup package was easy (because of the … limited … user rights system in windows there were no problems with that and I did run the console with admin rights anyway).
However: Whoever wrote something about “Normal End User Usage” in the mail and the readme file clearly has only limited ideas on how clueless most computer users are nowadays and that they are not comfortable using the CMD window to get tasks done. So this needs to be way more easy and streamlined in the future.
After starting the web app and pointing my browser (Chrome) to localhost:8000 I actually did see something.
After an intro screen where I can probably select something in the future, but the dropdown only gives me “prod” at the moment, the app want to pair with Vector via Bluetooth the same way the app does. I find that very curious since if the robot is in the same network as the app, giving the serial should suffice. In the Github repository Wire told me the reason after I posted an issue:
As for why they used Bluetooth: it is the only way to communicate with recovery firmware, and they need to use it to get the account details into the robot. After that, the robot settings actually do use similar to the SDK gRPC endpoints. Recovery firmware can be changed, but it is a tedious process that may not be done.
Aside from that the pairing failed. I tried several of my Vectors and i tried them near the dongle and two meters away from it. After an hour of frustrating tries I was ready to just give up on this and wait on updates, when I decided to reinstall Chrome (that was freshly installed on the computer about an hour ago).
And to my great amazement that did it and I was able to connect to one of my Vectors.
And all that work for nothing more than to be able to set time zone, and what systems I want to use for temperature and distance, metric or imperial. A lot of other settings we know from the app are just missing, e.g. language flavour or eye color.
Also the Vector Web Setup should be able to transfer a firmware to the robot. For that you have to issue some commands in the command line console to download an older firmware version (that did work) and to sign it. Signing it with “ota-sign” did not work, since the command is not even implemented in the current version (as the help parameter showed me), other than the documentation suggested.
So I think that calling this alpha state a “version 1.0.0” is somewhat … optimistic. The installation and usage is finicky and tedious even if you know what you are doing. “Normal End Users” are most probably overwhelmed by this.
In addition all of this can be forked on Github, it is distributed under the MIT license, a license that is somewhat frowned upon by Open Source enthusiasts, as future development can be taken out of public doimain with this license, read more about it here. But that is prone to opinion, others think MIT license is just fine.
I forked the code on Github and cloned it to my local computer to have a look at it. From a little skimming of the files I could see that there seems to be absolutely no commenting or documentation done in the code. That is bad for an open source project because it makes it way more difficult for third parties to modify it, as is allowed under the MIT license. And also additional documentation other than the short readme file with missing sections is completely absent. But obviously DDL found it immensly important the first line of code in every file reads:
/* Copyright (c) 2019-2020 Digital Dream Labs. See LICENSE file for details. */
I may of course be wrong, but from lots of details like missing commands, missing features, incomplete documentation and the fact that the kickstarter email is just a carbon copy of the readme file in the Github repository that the mail probably was sent yesterday by error and it was meant to be sent later. But of course I may be wrong here. As usual the communication and information by DDL could be better in my opinion, especially there should be way more information on what this is and what it actually can do in its current state for less tech oriented users. I already saw quite some questions on what the heck all this possibly means. It should have made been clearer that this is a test for more technical inclined users and there will be versions for everyone later on.
So for now my verdict is: If you are confident on a command line interface and if you are really interested in doing this, give it a try and expect trial and error. If you just want to use your Vectors stay away from it for now.
This can get more interesting in the moment the OTA (firmware) upload actually works. Because then you will be able to go back to 1.6 if you wish to do so – and a lot of people said they would like to.
When and if that works I will write a tutorial on how to do it – but caveat: you will need to use a CMD window for that and you will need to install node.js.