Xively – No Thanks! GroveStreams – Yes Please!

Preamble

Again from Building Wireless Sensor Networks, a project makes use of Pachube, to display data streamed from XBee temperature sensor nodes. Osmos/Pachube was a great little setup, until it was bought by Xively. Big business introduces cost cutting measures (Unfortunately, Xively is neither free, nor open source), such as:

Alternatives

Found and tried out another one.  This time it was thingspeak.com and it’s pretty nice.  The API to send data is a bit scattered about the site (take a look in places besides just the documentation), but it’s all there to be used.  I’m currently downloading a subset of the sensor data I collect to the site and it works fine.  I don’t have enough data up there yet to make a determination about speed, but it flies on the the stuff I’ve tried so far.

open.sen.se turned out to be pretty nice and supports cool little filters and combiners on the site that can do some interesting stuff.

emoncms.org is the most active and has a nice facility.  The only problem I found was that they don’t support cross site ajax requests.  That presents a problem with today’s multi-site techniques.

Cosm.com made some really significant improvements that virtually eliminated most of my complaints.  The problem was that they worked on the various changes for months without telling their user base anything and we started to get disgusted with their problems.   Then, one day, they turned on the changes for the entire user base.  Odd way to do things, but hey, it’s their site.  There seem to be a few problems still happening, but it’s really hard to tell which are problems with their site and which are mistakes by the people that are using it.

nimbits.com appears to be the most capable and claims to be free.  However there is a data charge for using the service as cloud based.  That’s not a problem for me, I don’t mind paying for what I use (within reason of course), but I went through the charge sheet and got totally lost.  Now, I have a degree in business and have taken enough accounting courses to choke a hippo, but it was too much for me to understand.  I even asked my neighbors son (17 yo) and he couldn’t understand it.  Additionally, the site documentation is so heavily buried in jargon that I couldn’t understand how to actually set it up.  Maybe one of you is willing to spend the time to figure it out.

Net, there are a number of viable services out there that can take our sensor data, store it, visualize it back to us, and return it to us if we want to go local for some reason.  We have no more excuses not to totally automate every thing in our lives.

And No, I don’t promise not to wake this thread up again when I stumble across another one. Desert Home links:

GroveStreams

There are a number of people talking about GroveStreams as a good, cheap alternative to Xively:

GroveStreams seems to be quite a popular alternative, so I decided to give it a go. However, not everyone rates GroveStreams, see Post #29 from Arduino, but that was 2 years ago, and things have moved on considerably since then.

Here is a video A short introduction to GroveStreams

I signed up, created a login, and then an Organisation. Opening the Organisation, I was presented with a blank Observation Studio and Component Studio. After a bit of random clicking and probing I found the API key, but there was very little in the way of a quick start wizard, as there had been with the Xively setup. I decided to take a break, during which I located a few tutorials, which made some sense, seeing as I had seen some of the referred to elements during my previous random clicking and probing.

Tutorials

  • GroveStream Python – Quick Start – Best to start off here, but uses default streams, so it will automatically create a component. From that component you can create a Component Template, and give it a Template ID of
    "sensor1 - TempHumidity"
  • GroveStreams Temperature Tutorial – Uses specified streams and component templates, but unfortunately uses an Electric Imp device. However from this example, it can be gleaned that you just need to add “compTmplId” to the end of the API call, so that, for example, if your Template ID is
    "sensor1 - TempHumidity"

    then the relevant code segment becomes

 #GroveStreams Settings
 api_key = "KEY-KEY-KEY-xxxx" #Change This!!!

 component_id = "sensor1 - Location"
 componentTemplate_id = "sensor1 - TempHumidity"
 base_url = '/api/feed?'

 conn = httplib.HTTPConnection('www.grovestreams.com')

 while True:

 temperature_val = random.randrange(-10, 40)
 humidity_val = random.randrange(0, 100)

 #Upload the feed
 try:
 #Let the GS servers set the sample times. Encode parameters
 url = base_url + urllib.urlencode({'compId' : component_id,
 'temperature' : temperature_val,
 'humidity' : humidity_val,
 'compTmplId' : componentTemplate_id})

Continuing with the Project

See also Modifying JPachube.jar to point to GroveStreams.

 

 

2 thoughts on “Xively – No Thanks! GroveStreams – Yes Please!”

Leave a comment