Tech Info

From MiOS
Revision as of 18:52, 10 October 2008 by Micasaverde (Talk | contribs)

Jump to: navigation, search

Vera is built on OpenWRT. Vera adds a consumer-friendly front-end and self-configuring network setup, a socket-based messaging architecture for devices similar to and binary-compatible with LinuxMCE, an easy to use http server for interrogating and controlling devices, and a secure online remote access / remote control gateway.

We've also put a Vera system online, at testvera.micasaverde.com, complete with a camera, Z-Wave accessories, and the secure remote access activated, so developers can play around with it and test having their own applications talk to it. learn more

Contents

For OpenWRT users

To make Vera appealing to a mainstream audience we added a self-configuring networking module that automatically determines whether you have another dhcp server on the network and if Vera can get an internal (192.168., 10., 172.) or routable ip, and automatically configures the firewall, dhcp server, and other network settings. To make wi-fi setup easy for a novice, each Vera comes pre-configured with wi-fi enabled with WPA2 encryption and a unique, strong password printed on the bottom of each unit, along with a unique SSID. We pre-configure the wireless accessories on our web shop to each particular customer's ssid/password. However, under the Net & Wi-fi tab when you click 'Advanced Configuration' it bypasses our simplified network setup and takes you directly into to the OpenWRT (Kamikaze) site. So you don't lose any of the advanced functionality in OpenWRT; we just add an extra layer on top to make it more consumer friendly.

For LinuxMCE users

Vera's architecture will look quite familiar. In fact the messaging layer is based on the same DCE protocol. Vera includes a message router that is compatible with LinuxMCE's DCERouter, although Vera's was re-written to use JSON files for storing device information, rather than a mysql database, since Vera can't run mysql. The device numbers, categories, etc., are the same, and your existing LinuxMCE devices can connect to Vera's message router and send/receive commands the same. If you have developed your own DCE Devices, they should work fine with Vera, although if you made devices that use the mysql database, that database will need to be hosted on a PC, not on Vera.

We also built our own data provider plugin for retrieving data. It is a lot more flexible than the DataGrid system in LinuxMCE, and returns data in XML and JSON format. We also built a request server that listens on port 3451 to accept messages and data requests as simple html requests. This makes it a lot easier to integrate Vera with other devices. more on the Data Provider Catalog Plugin

We are also working on Vera's own version of "Generic Serial Device". But instead of Ruby we're developing a Lua version, because Lua is more lightweight and can run on Vera, and for GSD devices, people didn't really need the full power that Ruby offered anyway.

For Mr. House users

We have not tried integrating Vera with Mr. House. However, there have been attempts at integrating Mr. House with LinuxMCE, and as mentioned above, any LinuxMCE->Mr. House bridge devices should work fine with Vera. There are a few benefits that Mr. House users would find to having a Vera->Mr. House bridge. First, leaving a PC running 24/7 uses a lot of electricity. See: Energy_Savings Having a way for Vera to provide the basic home control while the PC is off would save quite a bit. Next, Vera should do well with the WAF. There's an iPhone and Java (Blackberry/Nokia) front-end and it's easy to configure. So a bridge would allow a simple, stable front end for the spouse, and the geeky Mr. House stuff to run elsewhere.

Build environment

One of the issues with building custom modules for an OpenWRT platform is that it's not as easy to compile C/C++ code as for an X86 because you need to setup the correct kernel header, tool chain, etc. To make it easier for developers we've setup a dedicated build server with virtual machines. So, when a developer wants to do some custom stuff, we'll give him a VM on our build server which is pre-configured with everything he needs. Just run one script to build a new firmware image with your custom changes. And, we've forked our svn so the developers and FOSS community have their own branch where they can add the "geeky" stuff, and we periodically merge in the fixes/changes from our consumer branch.

Personal tools