CouchDB for BOSS

CouchDB is a document based database, which can provide JSON strings for BOSS devices.

To get started, install an instance of CouchDB, for example in a docker container.

After creating a database (in this example, we created a database my-boss) as described in the official CouchDB documentation, we can now create a CouchDB document with the following content:

{
  "_id": "http-test",
  "classname": "http.client.HTTPConnection",
  "arguments": {
    "host": "gitlab.com"
  }
}

Hint

It is also possible to include multiple devices in a single document like:

{
  "_id": "multi-devices",
  "rows": [
    { "<device definition>" },
    { "<device definition>" },
  ]
}

This example launches a simple HTTP Connection to gitlab. You can simply use a different class in the classname entry to use your device driver or any other arbitrary class you want to expose as HERO.

To use BOSS to start the HERO defined above, run

python -m boss.starter -u http://<user>:<pw>@<couchdb_host>:5984/my-boss/http-test

If you want to run all documents/devices in the database you can run

Note

This is not recommended in production. Use a view (see below) instead to avoid loading invalid documents and the ability to switch off/on devices quickly.

python -m boss.starter -u http://<user>:<pw>@<couchdb_host>:5984/my-boss/_all_docs?include_docs=true

Using Views

To make a view which includes all active devices, add a Design Document view entry with the following map function:

function(doc) {
 if(doc.active) {
   emit()
 }
}

With the following boss command, you can than start all devices that have the key active set to true in their json definition:

python -m boss.starter -u http://<user>:<pw>@<couchdb_host>:5984/my-boss/_design/active/_view/active?include_docs=true

Hint

If you want to directly see if your settings worked, you can use our rudimentary GUI.