even an arduino sketch can do the job…
Works on Windows8! Nice…
Any chance of licensing this app so that we can preprogram (and hide) the account credentials and just let the user enter network info?
How do you want to preprogram (and hide) the account credentials on an existing application?
In a commercial environment, there are other ways.
The blinkup packet includes a single-use token that the server matches to an account, alongside the wifi information.
You can’t preprogram this. However, if you’re trying to store associations between a device and a user, so they can’t reprogram this, you can just do this on your server using the device ID.
OK, I understand the concept but missing a few details. Perhaps I don’t quite understand how an custom agent gets associated with a specific imp. Let me walk through an example and you can point out where I am getting lost (is this documented somewhere?).
- We create a database server with MACor ATSHA IDs mapped to a customer.
- The MAC/ATSHA IDs are obtained from the batch of imps / ATSHA204 chips we use and get loaded into the database before shipping.
- We send out the impees to an end-use location for installation.
- The installer/building owner uses a custom Blink-up to enter the local network parameters. (Isn’t our login/password required so the imps know who they should be associated with?
- The powered up imp reads the ATSHA204 ID and connects to the imp servers and passes its MAC and ATSHA ID.
- A custom agent somehow gets triggered so that it sends the MAC / ATSHA ID to our server (it also passes a token for the return URL?).
- On our database, we match the MAC/ATSHA ID up with our database info and store the token for that imp.
- When we want to send a command to the Imp, we look up the token and do an HTTPS call with the token.
- The passed token causes our custom agent to get evoked.
- Our agent routes the command to the Imp.
Am I going down the right path? Step 4 is where I get lost. Doesn’t the Blink-Up have to pass a login/password so the imp can associate itself with our agent? Or is there a unique ID that is assigned to us so it is used instead of the login credentials?
Thanks in advance for your help.
1/2/3 - ok
Two things: first, the custom blinkup uses an API key for your organization, not a login.
second, unrelated to the above API key, when your devices are made, they are associated with the code for your device, and will load the right code when they go online in the field.
5 - ok
6 - as soon as the imp connects, the counterpart agent will run which then connects to your server and can forward data (including the agent URL) to your server
7 - exactly, apart from the “token” is the agent URL
8 - yep
9 - your agent is already running, it runs for 32 days after the last time the imp connected in fact.
Thanks, it’s starting to come together! Will spend more in-depth time with the Agent docs.
Does our app hand the blink-up libraries a unique API key (probably obtained from our server and associated with a user) so that we can make an association between user and a specific imp in the field during commissioning? And then this API key is handed back to our server along with the agent URL from the imp’s counterpart agent to complete the loop?
Or am I missing something and the API key is unique only among different organizations? If that’s the case then how do we associate the agent URL with a specific user?
You app does hand out a unique token to the device over blinkup, yes. This is obtained using your API key in a server transaction on the phone.
The app then polls the server with the same token to find the agent’s URL when the imp comes online.
Thanks Hugo. Just to make sure I understand:
- Our app uses our API key in a call to your server to get a unique blink-up token.
- Our app transmits that token to the imp during the blink-up process
- Our app polls your server using our API key and the token to find out when the imp comes online and then your server returns the agent URL to us
- Our app could then transmit the agent URL back to our own servers for correlation with a specific user or for a specific user and device instance.
Does this mean that for an implementation where only one app running on the phone that did the blink-up will be the only thing to ever interact with the imp then we do not need our own server at all? Just an API key from you that is built-in to our apps. The app could store the agent URL locally. I realize this may not be a useable scenario but just making sure I understand.
Yes on 1-4. In 4, the agent could also send the URL (and user info from the phone) back to your server.
For simple “phone controlled/monitored” devices you’re correct, you can rely totally on our server.
Thanks for the app, Rob. However, the link to the app isn’t working any more. Can you make it available again please?
As a side note, I’d really like to get BlinkUp to work on a Windows Phone. Any chance I can get some info on how it’s done? If the algorithm is proprietary, would Electric Imp be willing to collaborate privately with me on this?
I have many problems on Android, I lost a lot of time trying to set up with Android and this application was at first!
Could you re-try with android now the imp has got online and updated itself?
Hi Hugo, thanks for your question!
I didn’t know that the imp was updated when it’s online.
Now it’s much faster to connect (on Android)!
My web site went down a few days ago when the host’s server exploded. They were unable to restore a backup and I’ve since switched to a less crap host, but unfortunately I don’t have any of my blog content, including this app. The person who developed it no longer has the source - it was just a spike which seemed to have out lived its usefulness.
Perhaps someone who downloaded it could send you a copy?
The File is attached