node package manager

consequences

Consequences

Consequences provides the scaffolding for automation.

This is achieved by loading globally installed addons, automatically performing actions based on a set of rules and triggers, and providing an HTTP interface to inspect and update the state of the application.

Concept

On the surface Consequences does not offer a lot. From a user perspective it is comprised on:

  • Variables - A value that can change, e.g. the brightness value of a light bulb, or the status of a motion sensor
  • Condition - A rule that can be evaluated to either true of false, e.g. "the brightness of the lounge light bulb is 0"
  • Action - Something that will change the state of the application, e.g. "set the brightness of the lounge light to 45%"

Chains

With these basic concepts "chains" can be created, e.g. "when the lounge motion sensor detects motion, turn the lounge light bulb up to 65%".

Chains support multiple conditions and multiple branches, allowing for complex setups to be created with minimal effort, e.g.:

Motion Sensor (variable)
└── "detected motion" is true (condition)
    └── Lounge light bulb is off (condition)
        ├── The sun has set (condition)
        │   ├── Set the lounge light bulb's temperature to warm (action)
        │   └── Turn the lounge light bulb up to 70% (action)
        └── The has not set (condition)
            ├── Set the lounge light bulb's temperature to soft (action)
            └── Turn light bulb up to 30% (action)

Status

This project is currently under development and is considered unstable. Until a stable 1.0 version is released I would recommend you do not use this project, unless you wish to contribute.

Roadmap

  • Provide TypeScript types for addon authors
  • Load globally install addons
  • Provide a web API to retrieve and config addons
  • Provide a web API to modify variables
  • Provide a web API to setup "chains" e.g. condition[1-*] => action
  • Create a web GUI (in another project)

License

Consequences is released until the MIT license. See the LICENSE file for the full license.