Pushing unique content to Imps

Hi guys,

I am designing a system that the Imp looks perfect for. I have managed to code it easily enough for one Imp but can’t work out how to make it scalable. I want to be able to address individual Imps with HTTP requests. It looks like the only way to do this currently is for every Imp I have to create an individual plan with a HTTP-In node and then manually cut-and-paste the URL to enter into my application. 

If I ever want to sell these devices for mass consumption, clearly this is not viable. 

Am I right? Is there another way? Is there a fix planned for the future?

There will be other ways, but not right now - these will be implemented over the coming months (along with the blessing business, which allows you to associate firmware with a whole class of devices).

An example of how this might work: each device, when connected, registers with your server via HTTP (passing its device ID and input URL). You can then see the devices registered and address them individually - it’s still your problem to work out what to send to which device though.

Alternative identification methods include storing some unique data in the ATSHA device at impee manufacture time, and passing this up to the server to identify the device. eg, a lightbulb could know what color it was.

Other suggestions are welcome, we want to make this as applicable and flexible as possible so that everyone can build a workable solution.

Thanks for that Hugo. You definitely have the right understanding of what i am asking for. 

Basic registration we already can do (on startup the imp hits a URL) and we have the target field for an unique ID. But of course we are missing the HTTP input. One solution might be to make the HTTP input and HTTP output a permanent and fixed part of the imp rather than an optional vimp. It seems likely that every use of the imp will include internet I/O. 

Without these things in place, such as the blessings and URL registration, there is really no way to put this into production. Every individual imp would need to be programmed through the planner.

Keep up the great work. You have put together a really nice platform thats an absolute pleasure to work with.

A huge plus of having people like Hugo, Peter, …, and RobV, all behind this thing, is that they have an excellent track record of listening to folks like us and following up on stuff.

Great work guys, keep at it!  :slight_smile:

Been waiting anxiously for blessing too :slight_smile:

Hugo, is it possible to ask the Imp for it’s ID? I made the wrong assumption that the “target” query param in the HTTP Request was the/an ID only to realise that it wasn’t when I put a second Imp into my planner. It would be great to be able to differentiate the Imps when talking to the server so I can provide server-side persistent storage and alike.

Server-side persistent storage (within the imp universe) will be in the next release, along with methods to read the impee ID (ATSHA ID), mac address, etc. Hoping this will be out in a week or less.

Awesome.  This is a fast moving game :slight_smile:

We found a good interim solution. We used imp.configparams to store the name of the device which we have to configure once per impee. We then pass that through to our HTTP server as the unique ID. We also use the name on the GUI and can FINALLY identify which Imp is which as they were all named the same before.

    local name = “”;
    if (“name” in imp.configparams) {
        name = imp.configparams.name;
    } else {
        name = “Unnamed”;
    imp.configure("ProgramName - " + name, [], [], {name = “Unnamed”});