Update 1 It looks like Louis and I agree on this one since we both suggested the same idea at the exact same time :P. We're looking for feedback from other folks now on our proposals for how to interact with Fido via text messages.
I was just thinking about keypads attached to Fido when it occurred to me that there is already a keypad in the relationship here. Fido isn't just Fido, it's Fido and the cellphone that it's sending texts messages to. That cellphone also has a keypad and can send Fido text messages so the cellphone can act as Fido's keypad :).
To send Fido an upper limitSend a text to your Fido: "upper 95"
To send Fido a lower limitSend a text to your Fido: "lower 65".
To check your the current temperature that your Fido is readingSend a text to your Fido: "current".
To get a list of possible commandsJust text something incorrectly ;).
SecurityTo prevent any evil doers from reprogramming your Fido we could have a button that turns "reprogrammable mode" on and off. Another possibility is an authentication method like sending a password with each text.
to set for the first time: "set pass busybee" then with every text prepend with your pass: "busybee upper 92" and to reset: "busybee set new pass orangejuice"
@Louis I apologize if you proposed this before and I forgot. I figured I'd write it down here while I was thinking about it.
Nope - I think I came up with it around the same time that you did!
Anyway, I've been thinking about the protocol and how this could work and have the following proposal:
Fido will be programmable and reprogrammable by text message. You can text a bunch of different numbers separated by commas to program it all in one text (in some predetermined sequence so Fido knows what to do with it) or you can write some keyword followed by a number to change only a certain preference as RJ specified above.
I also think that I will implement some basic "usergroups". First off, Fido will answer any text message not started with '#' by telling the person the current time, UNLESS privacy is turned on (owner will be told that someone unauthorized is texting in this case). When privacy is on, only known numbers can ask for current.
Fido can remember up to 16 numbers plus the owner. Anybody can text '#' followed by the 4 number PIN determined by owner, followed by: - nothing or '0': they will be allowed to text for current even if privacy is on and they will get emergency text messages - '1': above, plus they will get daily summaries - '2': above, plus they will get updates throughout the day (ie: they get all the communications that owner gets)
Only owner can reprogram and remove users.
Anyway, I thought that incrementing of permissions made practical sense but let me know what you guys think. Also, let me know if you think anything is unclear or could be simplified!
Using the cell phone to program it sounds great. In thinking through the interface let's keep in mind that the basic text plan for the phone has 200 messages/ month so people will probably want to try to keep below their limit, although I'm sure some users will be fine with paying a little more to get more updates, etc.
Louis I like the idea of being able to program lots of variables with one text using commas. Maybe an added feature could be coming up with a little web interface to make this more intuitive-- farmer could plug in the variables into a form (fill in box for upper limit, lower, limit, check box for updates daily, hourly, etc) which would generate a text message to the Fido coded properly, using some kind of online SMS tool? I don't know enough about this to know if it would work, or how it could work, just an idea.
Or, the web form could just generate a series of numbers/characters for the farmer to then text to Fido, which Fido would understand-- just a way to make the inputting more user friendly.
An online Fido configuration service, that's a really great idea. Building the online form to generate the proper string is the easy part (1 hour), integrating with an SMS gateway so the website can send text messages is the tricky part. The easiest route to send a text message using an SMS gateway is to use a "web service" like Twilio that provides one easy to integrate with service point that works no matter what cellphone carrier the number you are sending to may be using. The downside here is that a service like Twilio costs a penny per text message while you can send text messages for free if you integrate with each carrier individually. I'm not going to worry about costs though because having so many people using a online Fido configuration service to the point it's costing us a noticeable amount of money is a problem we would like to have.
I think it makes sense that the online Fido configuration service generates the string and then gives the option to send the string to your Fido as opposed to just sending it right away. This leaves open the option to text the string yourself which can be seen as a learning experience. We can start by building the online Fido configuration service form as soon as we settle on a messaging protocol and then build the "Text this to your Fido!" option later.
Spent all day working on the user list management, their user groups, and can now program via text message! I'm starting to run low on memory though...
Right now, you can definitely program and reprogram it with text messages and other users can join by text message too. Once I have the whole program consolidated (I'm working on two different programs that I will merge soon), I will work on adding some bells and whistles like human readable commands like RJ was saying. However, I think that we will run out of space very fast that way so I will first start on user management commands, like seeing if a user exists and removing users.
Insofar as programming FOR people via web service, it would definitely be neat! I don't think it will even take any extra code to make Fido run with it.