After five long years of AFROTC and Computer Engineering, I have reached Senior Design. We are going to make software for a preexisting air conditioner (I will refer to it as HVAC for short) that will allow it to connect to the internet, upload its stats to a database, and later make a smart phone application so that users can control the air conditioner from their phone, as well as check temperature and such.
Luckily, I have web programming experience in HTML, CSS and PHP, so when the client completely outsourced all hardware and asked us to make all this, I am now the tech lead because I have the most experience, even though that was five years ago.
The problem is this. The client's subcontractor recommended such services as pachube.com and iobridge.com. After setting up accounts for both sites and checking their overviews,
I have no idea what the fuck I am looking at.
My experience with web programming is making basic web pages with HTML and CSS, making databases with MySQL, and adding PHP to HTML pages to allow interaction with those databases. What is the point of these services and how do I apply them to such a project?
I'll answer any questions if it helps. Also, because the hardware was outsourced from us, our project is now 100% software. We no longer have to worry about connecting a device to all this stuff, but still we need to make something we can hand over to the client. For example, we will be making a plain HTML website to access any database and control the imaginary device for initial testing, we will have to make our own simulated HVAC program that can post to the database and take commands from the web based control system, and then we would move on to making the smart phone app doing the same thing.
Does anyone have suggestions about learning how to use these services? Should we be using them at all?
Posts
pachube.com looks like a "twitter" for appliances. Their quick start API page shows how to update your appliance's feed (I guess it's related to your "feed id"?), and how to fetch it back again, presumably through HTTP?
A quick dig through iobridge.com doesn't seem to reveal anything similar, but maybe I didn't dig deep enough... or greedily enough. I'm guessing that iobridge is just like pachube, in that your appliance will update its own feed, and your app will fetch it and do something with that information.
I haven't got any experience in the appliance and "Internet of Things" concepts that they're throwing around, so I can't really give an informed opinion of whether it's a great/poor idea.
It does seem sensible from the perspective of general development - i.e. instead of reinventing a protocol to get data to/from the appliance itself, the hardware guys will have it automatically talk to pachube/iobridge, and you just interface to pachube/iobridge.
I'm not sure that ZigBee is that advanced - while it does go pretty high up the OSI layers, I'm not sure that they'd define a SQL interface to it.
You ... could... but are you also going to be maintaining it for a long time, or would you prefer it to be delegated off? Rather, let me put it this way:
Is your client capable of maintaining a database with the desired up-time and reliability, or is it a better idea to pay someone else to do that?
Like Jimmy King says, part of development is figuring out how to best spend your time - would it be best if you spent your time developing the app, or do you have enough time to also maintain a database?
Probably spare a thought for what happens after the project ends, if you do get the client to maintain their own server: How do the database maintenance duties transfer once you've gone? Is it going to end up being one of those servers that everyone is afraid of rebooting, because it's become mission critical, and no one knows how to properly restart it?
Obviously, you know the client better than us, so if they've already got a dedicated database administrator, maybe this is not a problem.
Given how reliable a client is going to want something like this to be, using SaaS from a solid provider is probably a really good idea, unless said client wants to invest in the infrastructure to support it themselves.
Also, yesterday, there was a dramatic revelation that ****ed up the way my project was going to go. The client has not paid the subcontractor for his work, so we'll probably never see him again
He was nice enough to provide the details to his redesign of hardware. Our original mission of making the previous device cheaper and more mass-producable was outsource to him. But I'm now $360 in the hole because I had to buy all that shit on my own. It includes a PIC32 microprocessor to replace the previous team's Panda Board, a cheaper touch screen to replace the 600 dollar screen used before, ethernet and wireless extensions to connect it to the intertubes, and so on.
It will be the Electricals on the team's job to put this stuff together, and then I will have to get it posting and querying to a database. I have to learn how to link this thing to whatever database I make.
Item 1
Ethernet Daughter
Wi Fi Thingy
I/O component
Super Cheap Touchscreen
My issue is hardware, which I never work with. My knowledge is something like this:
[HTML/PHP Browser Client] <->[Server]<-> [MySQL Database]
And now I have this:
[PIC32 language? ]<->[ Thingspeak??? ]<->[Database of some kinda language] <->[Smart Phone Web App]
So from a quick glance, it looks like the "Ethernet daughter" board connects into your "I/O component", which then connects to your "Item 1". And from the product description for the ethernet board, it looks like Microchip offers a free TCP/IP stack which works with that board.
This is good news, because you don't want to roll your own TCP/IP stack, if you can avoid it.
You will probably be using C. Again, the product description for "Item 1" (the PIC32 board) says it includes a free C compiler with no restrictions, so you're good to go there. And since it includes the Microchip IDE, I assume that you'll probably be able to programme the PIC32 via that IDE, so again, you're good to go.
With the gear that you've bought, you're in a good spot to start, right now.
You might want to proceed down in this order:
1.) Install the PIC32 dev environment, and get the PIC32 board to just blink its LEDs. This is the "Hello world" equivalent for a lot of embedded boards.
2.) Get the ethernet board working with the provided TCP/IP stack.
3.) Create a simple echo server on the PIC32, which you can telnet into, and just have the PIC echo back what you type.
Once you've created that server, you should hopefully get an idea of where to go from there.