Hacker News new | ask | show | jobs
by chch 4424 days ago
Perhaps this is just rephrasing ianawilson's reply, but it seems that if Crowsnest eventually supports fifty different cameras (or switches or thermostats or what have you), then (via the tumblr demo):

    crowsnest_data = request.json
    image = base64.b64decode(crowsnest_data['files']['image']['data'])
would be an abstraction layer over the internal functions of all of the cameras.

That way, if I wanted to, say, build an app that does mood lighting depending on how many people are in a room, I could use Crowsnest as my middleman, and then my app would support fifty different cameras and fifty different switches (hypothetically), instead of the one of each that I happen to own and test on. That way, I could swap out devices or distribute my code to others, without having to worry so much about hardware integration. That sounds valuable from my personal perspective.

At least, I think that's how it works, from browsing the site and demos. Feel free to correct me, ianawilson. :)

3 comments

That way, I could swap out devices or distribute my code to others, without having to worry so much about hardware integration. That sounds valuable from my personal perspective.

It is valuable, but has the downside of coupling to a closed-source third-party cloud.

Perhaps a better goal would be to encourage a public collection of CoAP- or OSC-based interfaces for these various end-point devices.

Crowsnest is encouraging people to write and submit such end-point code; better that it be workable with OSS infrastructure.

How would that work? Would there be a set of standard drivers that Crows Next interacts with, that you need to have for your devices?

It would be nice if this turned out to be the "VLC Player" of home hardware, where you could fire it up and expect it to work with most devices.

That would take a ton of work on Crows Nest's part though.

The idea is that Crowsnest organizes what devices can do into capabilities, and anyone can build a plugin for anything using our device integration framework. A plugin maps between what Crowsnest knows as capabilities and the actual calls that need to be made to the device. Of course, we can't build something for every device, so this framework will be open source with the idea that anyone can use plugins already created for existing devices, and hopefully we can engage the community to contribute and maintain these for devices as new ones are created. As soon as we release this, we're going to seed the community with a handful of integrations that we'll maintain. And if there is anything of particular interest to our users, we'd love to support that.

We've also been toying with the idea of using some device discovery so that devices can tell Crowsnest what they are capable of without needing to build a formal plugin for it.

Yup, that's exactly it!