mirror of
https://github.com/cassandra/home-information.git
synced 2026-04-18 21:49:16 -04:00
78 lines
2.9 KiB
Markdown
78 lines
2.9 KiB
Markdown
<img src="../../src/hi/static/img/hi-logo-w-tagline-197x96.png" alt="Home Information Logo" width="128">
|
|
|
|
# Data Model and Concepts
|
|
|
|
## Entity
|
|
|
|
- A physical or logical object with associated information.
|
|
- Has zero or more attributes.
|
|
- May or may not have sensors and controllers (from device integrations).
|
|
- May or may not have (hidden) EntityState variables.
|
|
- May or may not define other entities as delegates of its state.
|
|
|
|
## EntityState
|
|
|
|
- The hidden state of the entity/device that is sensed and/or controlled
|
|
- A single entity may have zero or more states.
|
|
|
|
## EntityStateDelegation
|
|
|
|
- An EntityState of an entity may just be a proxy for another entity's state. e.g., A thermometer entity with a temperature state is a proxy for an area that is a room.
|
|
- We use the terms 'delegate' and 'principal' for the entities involved in the relation.
|
|
- Main use is to have the delegate's visual representation reflect the status of the principal's state.
|
|
- May be one-to-one, one-to-many or many-to-one relationship.
|
|
|
|
## Location
|
|
|
|
- Has an SVG image that defines the visual and coordinate space.
|
|
- Has zero or more entities.
|
|
- Entities optionally associated with a position.
|
|
- Has zero or more collections.
|
|
- Collections optionally associated with a position.
|
|
- Can dfined one or more locations.
|
|
|
|
## LocationView
|
|
|
|
- Associated with a Location.
|
|
- Can define one or more Location Views for a Location.
|
|
- Defines the view a bounding box area and rotation of the location SVG.
|
|
- Defines what entities are and are not visible in this views.
|
|
- Defines the view context for sensors and controllers (info, control)
|
|
- ViewContext = { information, control }
|
|
|
|
## LocationItem
|
|
|
|
- Used as an abstraction/interface for items that can be associated with a Location.
|
|
- Helps define a consistent visual represenation for LocationView.
|
|
- Initially, Entity and Collection are the two concrete examples fof an LocationItem
|
|
|
|
## EntityPosition / CollectionPosition
|
|
|
|
- For entities/collections positioned in a Location an visually appearing as an icon.
|
|
- Defines the position, scale and rotation of the icon.
|
|
|
|
|
|
## EntityPath / CollectionPath
|
|
|
|
- For entities/collections positioned in a Location an visually appearing as an open or closed path.
|
|
|
|
## Device (runtime concept, not a DB model)
|
|
|
|
- An entity with at least one sensor or controller
|
|
|
|
## Sensor
|
|
|
|
- Provides an observation value of a single entity's state variable.
|
|
- Sensors and their states can only be created through integrations (not user editable).
|
|
|
|
## Controller
|
|
|
|
- Provides an action to affect a single entity state variable.
|
|
- Controllers and their states can only be created through integrations (not user editable).
|
|
|
|
## Collection
|
|
|
|
- Defines a logical connection for a group of one or more entities.
|
|
- Some entities in a collection may be unpositioned e.g., tools, appliances and devices are potential examples of unpositioned collections
|
|
- Collections may or may not be shown in a Location View (as a path).
|