You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
2.0 KiB
Markdown
57 lines
2.0 KiB
Markdown
# picc Tree
|
|
|
|
Data in picc is structured in a tree of paths, rooted at `app.picc.<domain>`, where `<domain>` uniquely identifies the
|
|
server. It must be a series of strings composed of lower case letters, numbers and/or symbols `-` and `_`, separated by
|
|
periods (`.`); in other words a hostname.
|
|
|
|
The same structure is used for the [directory](#data-directory), where data can be queried, and the [data
|
|
streams](#data-streams), which are AMQP topics/routing keys for pub-sub access to the data.
|
|
|
|
## Data Directory
|
|
|
|
The picc directory is key-value store where keys are picc paths and values are JSON documents. It serves both as a place
|
|
for looking up system configuration and for latest values in the data streams.
|
|
|
|
System information is available under
|
|
|
|
> `app.picc.<domain>.sys.people.person_<id>`
|
|
|
|
for information about people, and
|
|
|
|
> `app.picc.<domain>.sys.places.site_<id>.building_<id>.room_<id>`
|
|
|
|
for information about the building.
|
|
|
|
Data stream values are available under the same paths they are using to publish to AMQP, see [Data
|
|
Streams](#data-streams).
|
|
|
|
## Data Streams
|
|
|
|
Data streams are AMQP routing keys where drivers and entities publish their data.
|
|
|
|
### Entity Tree
|
|
|
|
Like the system tree, the entity streams tree is divided into people streams
|
|
|
|
> `app.picc.<domain>.streams.people.person_<id>`
|
|
|
|
and location streams
|
|
|
|
> `app.picc.<domain>.streams.places.site_<id>.building_<id>.room_<id>`
|
|
|
|
These streams are publishing processed data and are meant for user consumption.
|
|
|
|
### Device Tree
|
|
|
|
The device tree, like the entity tree, contains streams of data. In this case, the data is coming from devices in
|
|
relatively raw form.
|
|
|
|
Leaves in the device tree are the basic building blocks of picc. They are AMQP topics where device drivers post data and
|
|
accept commands. This data is meant to be processed by entities into user-friendly streams.
|
|
|
|
> `app.picc.<domain>.dev.lights.light_<id>.*`
|
|
>
|
|
> `app.picc.<domain>.dev.sensors.sensor_<id>.*`
|
|
>
|
|
> `app.picc.<domain>.dev.transformers.transformer_<id>`
|