#57 Let's Make HayStack a protocol too

Jason Briggs Wed 26 Sep 2012

Hey guys I'm really impressed with how far Project Haystack has come, and how tagging makes finding things so much easier to implement. I also think there is an opportunity to take Haystack to the next level. Over the last couple of years we have been using the oBIX protocol for getting BAS information. Although oBIX solves the problem of getting point and history data, it has many limitations and downsides, like it’s verbose, it's slow, and it doesn't give us everything we need. We have been working on implementing a new open source protocol using the Haystack model. We thought if Haystack solves the tagging problem; why not also use it to solve the above protocol problem too. We will be working closely with the open Source Java Haystack toolkit and plan on contributing code for this soon. Wouldn’t it be cool to have both the tagging model and a dedicated protocol to go with it. I’m hoping to get some help and some good feedback from the Haystack community. We will be contributing our code very shortly.

Any thoughts?

Brian Frank Wed 26 Sep 2012

There is definitely a need to create some standardized mechanisms to exchange haystack tagged data over HTTP. Today a couple of us are working thru this problem by collaborating on the Haystack Java toolkit open source project. But technically that is still a separate project. As Jason suggested, I think it makes a lot of sense to bring that work under this site and make this site the one-stop shop for docs on tagging model, data formats, and HTTP REST protocol.

Originally the Haystack Java project was something that Richard and I collaborated on as a simple way to add tagging to Niagara and bring the data cleanly into SkySpark. But the project has a tremendous value beyond that to make it easier to get data out of any server. We've already had requests to enhance it to get data using CSV and JSON.

What I've been working on lately is to massively beef up the Haystack Java toolkit to include:

  • Add multiple formats: CSV, JSON, Zinc (we are open sourcing this souped up CSV format we use in SkySpark)
  • Add HTTP content negotiation
  • Make HTTP REST API operations pluggable and discoverable
  • Make HTTP MIME formats plugabble and discoverable
  • Add support for two-dimensional grid data (required for tabular formats like CSV and Zinc)
  • Add client API
  • Making SkySpark REST API a first class, native Haystack REST API

So tons of great stuff going into that project. If everyone is on board with bringing that work under this site, then what I would suggest as concrete action items:

  • Move docs on data formats and REST API to this site
  • Add a page in our docs to list projects/products which implement the formats and REST API so we have centralized place for people to find stuff

Jason Briggs Wed 26 Sep 2012

Sounds great Brian... I'll get with you so we can upload the source code for what we have been working on.

I'm pretty excited about this

Richard McElhinney Thu 27 Sep 2012

Guys, this is all very exciting.

Great to see more people getting involved. When Brian touched base with me last week about making changes to our existing implementation I was a little concerned about breaking existing code but on reflection there are many great things we can do and getting more people involved will help us in growing the standardisation of system modelling.

I will continue to support my open source efforts by updating the axhaystack source and module to use the latest Haystack Java Toolkit. I'll keep everyone updated and look forward to being able to contribute to any documentation or links to projects where suitable.

Let's keep everyone up to date and in the loop and I'm sure that as we have more discussion and updates it will encourage more contributions to this area of Project Haystack's development.


Login or Signup to reply.