haasp.net/content/core/_index.md
2018-10-31 20:57:19 +01:00

161 lines
4.7 KiB
Markdown

+++
title = "Core"
weight = 6
date = "2018-08-06T20:43:20.000Z"
lastmodifierdisplayname = "Christoffer Martinsson"
lastmodifieremail = "christoffer.martinsson@mildef.com"
+++
HAASP Core engine that transport all event to and from all other modules. It also deliver configuration to all modules.
*! This module is required to have a funtional installation of HAASP !*
## Installation
**Docker image:**
`cmtec/haasp_core`
**Pip:**
Make sure you have python3, git and pip installed
`pip install -U git+https://git.cmtec.se/haasp/libhaasp.git`
`pip install -U git+https://git.cmtec.se/haasp/haasp_core.git`
## Usage
The config file is located at `~/.haasp/haasp_config.py`
This configuration is the essential part of manageing HAASP.
### Empty Template
```python
from libhaasp import EventObject, ConfigObject
class Config(ConfigObject):
def config(self):
config = {}
# -------------------------------------------------------------------------
# Configure modules
# -------------------------------------------------------------------------
return config
def setup(self):
# -------------------------------------------------------------------------
# Create event objects
# -------------------------------------------------------------------------
def process_event(self):
# -------------------------------------------------------------------------
# Create workflows
# -------------------------------------------------------------------------
```
Please see the configuration chapter for more example how to use the configuration file
## Built in applications
The core module has two built in application modules:
* Clock
* Timer
### Clock
**Config:**
`["clock"]["location"] = <string>` - local time definition as defined in XXXXXXX
**Object:**
`EventObject("clock", "now")`
* Value - Current time: HH:MM
* Event - Every minutes
`EventObject("clock", "day")`
* Value - Current day: `Monday`, `Tuseday`, `Wednesday`, `Thursday`, `Friday`, `Saturday` or `Sunday`
* Event - Every day at 00:01
`EventObject("clock", "sunset")`
* Value - Current time for todays sunset: HH:MM
* Event - Every day at 00:01
`EventObject("clock", "sunrise")`
* Value - Current time for todays sunrise: HH:MM
* Event - Every day at 00:01
**Example:**
```python
class Config(ConfigObject):
def config(self):
config = {}
# -------------------------------------------------------------------------
# Configure modules
# -------------------------------------------------------------------------
config["clock"] = {}
config["clock"]["location"] = "copenhagen"
return config
def setup(self):
# -------------------------------------------------------------------------
# Create event objects
# -------------------------------------------------------------------------
self.clock = EventObject("clock", "now")
self.day = EventObject("clock", "day")
self.sunset = EventObject("clock", "sunset")
self.sunrise = EventObject("clock", "sunrise")
def process_event(self):
# -------------------------------------------------------------------------
# Create workflows
# -------------------------------------------------------------------------
if self.clock.event == "06:30" or self.clock.event == self.sunset.value:
self.zwave_livingroom_window_light.set("true")
if self.clock.event == "23:00" or self.clock.event == self.sunrise.value:
self.zwave_livingroom_window_light.set("false")
```
### Timer
**Object:**
`EventObject("timer", "<NAME>)`
**\<NAME\>** - Name reference for timer
* Value - Countdown timer in seconds
* Set - Set new countdown value in seconds
* Event - `"triggered"` When timer reches 0 seconds
**Example:**
```python
class Config(ConfigObject):
def setup(self):
# -------------------------------------------------------------------------
# Create event objects
# -------------------------------------------------------------------------
self.timer_test = EventObject("timer", "test")
def process_event(self):
# -------------------------------------------------------------------------
# Create workflows
# -------------------------------------------------------------------------
if self.timer_sink.event == "triggered":
self.zwave_kitchen_sink_light.set("false")
if self.zwave_kitchen_motion.event == "true":
self.timer_sink.set(120)
```