Help me understand how IMP works under the hood

I have been pondering the inner workings of this little white card. I am trying to figure out how this little form factor can do all these things and why the need for the cloud. Here is what I have come up with. I am trying to wrap my head around this so I can better understand how to use it.

Ok here I go.

This little white sd card isn’t really a computer. I think it is simply a very smart wifi card that is able to send basic information about the state of its pins.

When we configure the pins for a specific function that information in the form of “firmware” is sent to the device. The device then sends back to the cloud service the state changes of the pins.

I think then that the software that we are running is running on the cloud not the device itself. It is the cloud software that is receiving the state changes and acts accordingly based on the software we write.

The cloud service can do the following things

make a http connection out
receive a http connection in
send to the device instructions to change the state of pin(s)
write to a log file
write to the planner view
accept cmds from the planner view
store permanent information in a table

When we go to interface the imp with other hardware we have to interface with that hardware using the protocols provided. So i2c,spi, uart or a simple gpio for the six exposed pins. If something required 8 bit parallel we would be out of luck unless we convert it to some form of serial protocol. Again if we needed more GPIO lines then we would have have a device with many gpio’s that would then talk to the IMP using one of the serial protocols.

I guess this is important for me to understand because I am old school and it is messing with my head to be thinking that I am writing a program that will run on the device.

Here are some questions I am have:

  1. can many imp’s can be commissioned with the same code base?
  2. when each device using the same software uses the server.permanent does it get it’s own table or because many devices use the same code, that only one table is created and they all must share it?
  3. does the planner view show each device separately using the same software or does the planner view have one view because it is the one code base with many devices using it.

I was hoping the powers at bay could help me sort this out. Yes you can tell I don’t have my hardware yet. I am writing code waiting for the cards. I am sure some of my questions will be apparent when I commission them.

I think then that the software that we are running is running on the cloud not the device itself. It is the cloud software that is receiving the state changes and acts accordingly based on the software we write.
Currently I don’t think it’s possible to prove that this isn’t how it works (except maybe by watching wifi traffic). But this isn’t how it works. The software that you write in Squirrel runs on the device itself, and in future this will become easier to prove as you’ll be able to, for instance, write code that watches a sensor (a temperature sensor, say) and only bothers bringing up wifi and contacting the cloud service if the temperature strays out of range.

1. can many imp’s can be commissioned with the same code base?
Yes. We’re already talking to device manufacturers, not just hobbyists, about putting imps in their stuff. Those folks will want many, many imps running the same code.

2. when each device using the same software uses the server.permanent does it get it’s own table or because many devices use the same code, that only one table is created and they all must share it?
Each device (specifically, each socket: each “impee”) gets its own server.permanent table. If you swap imp cards between sockets, the server.permanent stays with the socket, not the imp.

3. does the planner view show each device separately using the same software or does the planner view have one view because it is the one code base with many devices using it.
Each device appears separately on the planner, and indeed each one can appear on different people’s planners (different accounts) depending on whose imp has been plugged into it.

Peter

thanks Peter, After reading my post this AM it almost sounds like I am trying to reverse engineer the product. Believe me this is the farthest from the truth. I am a person that had to understand the bigger picture to help me with the more detailed stuff.

I wish I was young enough and located in Cali I would apply to work for the gang in a heart beat. It has been awhile since I have been in the game. I had my own internet company in the late 90’s that road the first DOT COM wave. Had a blast! Any how I can’t wait to get my imps and get developing.

thanks everyone!

Brad

I don’t even own one of these yet and I already have similar questions. It’s not clear to me if this device absolutely requires contact with the cloud at all times or if it can be programmed and operate independently without access to the service.

Yes - I know you have to use the service to program it, but after that’s done, can it send collected date directly to another computer on the same network? I don’t want to have to do some really funky firewall port forwarding … and I really don’t want my data on the site, either.

Oh - and another thing - how am I supposed to explore the capabilities when I don’t yet have an imp? I need to see if a concept is going to work before I spend money on this and the planner doesn’t let me do anything until an imp is commissioned. It doesn’t make any sense to do this the other way around: buy it, project doesn’t work out the way I had planned, and then I’m saying goodbye to $50. There are other things I could do with the money.

I think reading through some of the threads on the forum will show some of the current and future capabilities planned.

Here’s one thread but there a lot more to find. I guess it would help to put some of the more common questions and and answers into an FAQ or some more sticky threads.
Using the imp standalone

I’m hoping others will chime in - that thread linked in previous post isn’t very inspiring. Making internet access be a make or break deal for an embedded solution is a recipe for failure, imho. Requiring it for communication between devices is, technically speaking, unnecessary; especially if both devices are on the same network. I do hope someone can explain in more detail, but I do appreciate the contribution. :slight_smile:

Though my internet is reliable, I wouldn’t say it’s that reliable.

I noticed the Electric Imp on the www.coolcomponents.co.uk website this week, so Ive learnt all I can about it before purchase. Looking at the size and the ability to download firmware over the internet looks like a idea bit of hardware to add to my collection of embedded micros, eg Arduino & Arduino mega , Flyport , Sheevaplug etc etc etc . BUT having to connect to an outside server to control a second imp and not been able to pass data to a server on my local network directly may be a deal breaker and limit the possible use of the Electric Imp. Im not talking about having a built in web server, just direct communication between the Electric Imp and a local server with a very basic TCP connection.

YOu could always pair them with something like this Radioblocks

As I’ve noted in various other threads, we do not support local connectivity. If you are looking for a device to sit on a local network and send data to another local network device, there are lots of options out there - just not the imp.

Data is not stored on our site unless your server-side code persists it (and as there are no provisions for server side code right now, that means data is absolutely not stored on our site right now!).

Strike 1: electric imp is not open source
Strike 2: requiring the use of the cloud service
Strike 3: I don’t have exclusive access to my information.

Sorry, but this is a non starter for me.

That is absolutely fine, imp is not for everyone.

On 1: almost no wifi solutions are open source. There’s a lot of proprietary IP in there. I believe Microchip are about the only company that offer an open source wifi solution. Gainspan, Roving networks, etc are all closed source.

On 2: if you want to deal with NAT and firewalls and want to allow async bidirectional communication with nodes, you need a server. If you weren’t using ours, you’d have to use someone else’s (or run your own). That’s not necessarily something that many individuals or companies want to do.

On 3: I don’t understand the objection. As I noted above, you are the only person who gets access to your information unless you explicitly send it elsewhere with our APIs.

I am sorry i didnt mean for my observations to start an issue. I was really just wondering out loud how this all works. I am really impressed with the whole solution.

Cant wait for the future implimentations

Thanks

No need to apologize; I end up doing a lot of explaining in various places, because the product isn’t really like anything that’s come before. As I said, it’s not intended to suit everyone; as a small company we need to concentrate on our target market vs try and make everyone happy.

@islandmedic - No worries - I actually found your particular post refreshing and I appreciate your frank observations as I’m sure others have had the same so posting it here allows us to address them directly and provide clarification. We’re comfortable with folks who don’t think our solution fits their specific needs as we’ve never claimed to be the best or only solution for everyone. That being said, if you’re looking to easily connect a device to the internet and don’t want the headache of managing your own cloud server, then we may be exactly what you’re looking for.

We don’t mind if folks disagree with our solution or point out some of the desired features that our solution does not offer so long as they do it in a respectful manner and we hope that they’ve made some effort to understand our product so that their position is not merely one of criticism but encourages dialogue and clarification. As mentioned in other posts, we are very open to implementing any ideas that are suggested that we think others will find useful (there are several examples of this on this forum) - so long as it doesn’t require an overhaul of our entire product. Understand that our product is very young (just released a few months ago) and we’re sandboxing in this space that folks refer to as the Internet of Things, a space that is still being defined…I admit, some of these points are legitimate and wouldn’t it be great to be able to provide everything to everyone, but to even hope to get to this point, we’ll need to focus on making our product the best solution for our target market. 'Til then, different strokes for different folks.