@mangar2/rules v3.0.0
Abstract
The rule history stores the history for each rule and each topic in the rule For all rulename entries , it stores the
- value : The current value of the message created by the rule
- firstFound : The date the same value was first found
- lastSent : The date the message was last sent
Contents
Meta
Type definitions
HistoryEntry {Object}
Name | Type | Description | |
---|---|---|---|
firstFound | Date | time the message was found/generated first | |
lastSent | Date | time the massage was sent last | |
value | string, number | value of the message |
Decision {Object}
Name | Type | Description | |
---|---|---|---|
value | boolean | boolean value of the decision | |
reason | string | explanation of the decision |
Rule {Object}
Name | Type | Description | |
---|---|---|---|
name | string | name of the rule | |
time | object, string | time , when the rule will be activated | |
doLog | integer | true , if the rule shall be logged |
Global functions
timeInMillisecondsToLocalTimeString
timeInMillisecondsToLocalTimeString (timestamp)
Converts a timestamp to a string with the local time of day in brackets
timeInMillisecondsToLocalTimeString Parameters
Name | Type | Description | |
---|---|---|---|
timestamp | number | timestamp in milliseconds |
Class ProcessRule
new ProcessRule(date, longitude, latitude)
Processes rules based on a set of variables
ProcessRule Parameters
Name | Type | Attribute | Default | Description | |
---|---|---|---|---|---|
date | Date | optional | now | current date | |
longitude | number | optional | 51 . 476852 | geographical longitued poistion of the automation target in degrees | |
latitude | number | optional | -0 . 000500 | geographical latitued poistion of the automation target in degrees |
ProcessRule Members
Name | Type | description |
---|---|---|
date | @type | Gets the current date/time |
date | @type | Sets the current date/time |
variables | @type | Sets all variables |
ProcessRule Methods
_checkWeekday
_checkWeekday (rule, weekdays) => {}
Check , if the days of the week of the rule matches the current weekday
_checkWeekday Parameters
Name | Type | Description | |
---|---|---|---|
rule | Object | rule to process | |
weekdays | string, array | days in the week to check |
_checkWeekday returns
Type | Description |
---|---|
| true , if weekdays is not specified or the day of the week matches the expectation |
_createMessage
_createMessage (topic, valueProperty, reason, qos) => {Message}
Creates a message
_createMessage Parameters
Name | Type | Description | |
---|---|---|---|
topic | string | topic of the message | |
valueProperty | string, number, objct | rule value property | |
reason | string | reason so far | |
qos | 0, 1, 2 | Quality of service |
_createMessage returns
Type | Description |
---|---|
Message | message |
_deriveAllMessagesFromRule
_deriveAllMessagesFromRule (rule, motionEvents, nonMotionEvents) => {Object.<messages:Message[], usedVariables>}
Derives all messages from the rule
_deriveAllMessagesFromRule Parameters
Name | Type | Attribute | Description | |
---|---|---|---|---|
rule | Object | rule to check | ||
motionEvents | Object | optional | map { topic : timestamp } list of events classified as motions | |
nonMotionEvents | Object | optional | { topic : true } list of events not classified as motions |
_deriveAllMessagesFromRule throws
Type | Description |
---|---|
Error | on error in the decision rule |
_deriveAllMessagesFromRule returns
Type | Description |
---|---|
Object.<messages:Message[], usedVariables> | Array of messages and object of variables used . |
check
check (rule, motionEvents, nonMotionEvents) => {Object.<messages:Message[], usedVariables>}
Processes a rule and if the rule demands , create a message
check Parameters
Name | Type | Attribute | Description | |
---|---|---|---|---|
rule | Object | rule to check | ||
motionEvents | Object | optional | map { topic : timestamp } list of events classified as motions | |
nonMotionEvents | Object | optional | { topic : true } list of events not classified as motions |
check throws
Type | Description |
---|---|
Error | on error in the decision rule |
check returns
Type | Description |
---|---|
Object.<messages:Message[], usedVariables> | Array of messages and object of variables used . |
determineNeededVariables
determineNeededVariables (rule) => {Object}
Gets a list of needed ( external ) variables for the rule
determineNeededVariables Parameters
Name | Type | Description | |
---|---|---|---|
rule | Object | rule to check |
determineNeededVariables returns
Type | Description |
---|---|
Object | { name : value } list of needed variables including current value |
setVariable
setVariable (name, value)
Sets a single variable
setVariable Parameters
Name | Type | Description | |
---|---|---|---|
name | string | name of the variable to set | |
value | \* | value of the variable to set |
Class Rules
new Rules(rulesTree, check)
Creates an object holding automation rules
Example
const rulesTree =
{
location1: {
rules: {
rule1: {
title: 'hello'
},
rule2: {
title: 'world'
}
}
},
location2: {
rule1: {
error: 'faulty rule'
}
}
}
const checkRule = new CheckInput({ type: 'object', properties: { title: { type: string } }, required: ['title'] })
const rules = new Rules(rulesTree, checkRules)
console.log(rules.rules.length) // prints 1, we have one correct rule
console.log(rules.invalidRules[0].messages) // prints the error messages for rule 'location2'
Rules Parameters
Name | Type | Description | |
---|---|---|---|
rulesTree | Object | rules tree | |
check | CheckInput | definition to check the validity of a rule |
Rules Methods
_addToNodeRec
_addToNodeRec (node, nameChunks, rule)
Adds a rule to a tree node recursively
_addToNodeRec Parameters
Name | Type | Description | |
---|---|---|---|
node | Object | current tree node | |
nameChunks | Array.<string> | remaining chunks of the rule name | |
rule | Rule | rule |
_invalidateRule
_invalidateRule (name, messages, validFlag)
Invalidates a rule , because it generates an error
_invalidateRule Parameters
Name | Type | Description | |
---|---|---|---|
name | string | name of the rule to invalidate | |
messages | Array.<string> | error messages | |
validFlag | boolean | false to flag the rule as invalid to not process it again |
checkRules
checkRules (processRule) => {Object.<variables:{[index:string]:string|number>Array.<, messages:Message>}
Checks all rules for errors , prints errors to console
checkRules Parameters
Name | Type | Description | |
---|---|---|---|
processRule | ProcessRule | algirithm to check the rules |
checkRules returns
Type | Description |
---|---|
Object.<variables:{[index:string]:string|number>Array.<, messages:Message> | } map of used variables ( variable name/variable value ) and error messages |
deleteRule
deleteRule (name)
Deletes a rule
deleteRule Parameters
Name | Type | Description | |
---|---|---|---|
name | string | name of the rule to delete |
findRule
findRule (name) => {Rule, null}
Finds a rule in the rule list
findRule Parameters
Name | Type | Description | |
---|---|---|---|
name | string | name of the rule |
findRule returns
Type | Description |
---|---|
Rule, null | rule found or null |
getInvalidRules
getInvalidRules () => {Array.<Rule>}
Get the invalid rules list
getInvalidRules returns
Type | Description |
---|---|
Array.<Rule> | array of invalid rules |
getRuleTree
getRuleTree () => {}
Returns all rules in a tree of rules
getRuleTree returns
Type | Description |
---|---|
| all rules organized in a tree based on the names |
getRules
getRules () => {Array.<Rule>}
Get the valid rules list
getRules returns
Type | Description |
---|---|
Array.<Rule> | array of rules |
setRule
setRule (rule) => {}
Adds or updates a rule to the list of rules , checks its validity and sets a "isValid" property accordingly
setRule Parameters
Name | Type | Description | |
---|---|---|---|
rule | Rule | to set |
setRule returns
Type | Description |
---|---|
| true , if the rule is valid |
Class Variables
new Variables(date, longitude, latitude)
Manages a set of variables
Variables Parameters
Name | Type | Attribute | Default | Description | |
---|---|---|---|---|---|
date | Date | optional | now | current date | |
longitude | number | optional | 51 . 476852 | geographical longitued poistion of the automation target in degrees | |
latitude | number | optional | -0 . 000500 | geographical latitued poistion of the automation target in degrees |
Variables Methods
_addInternVariable
_addInternVariable (name, value)
Adds a variable ( coming from the service itself ) to the variable list
_addInternVariable Parameters
Name | Type | Description | |
---|---|---|---|
name | string | name of the variabl | |
value | any | value of the variable |
calculateInternalVariables
calculateInternalVariables ()
Calculates all internal variables ( usually after a date change )
getAllVariables
getAllVariables () => {Object.<key:string, value:any>}
Gets a key/value map of all variables
getAllVariables returns
Type | Description |
---|---|
Object.<key:string, value:any> | key/value map of all variables |
getValue
getValue (name) => {any}
Returns the value of the variable
getValue Parameters
Name | Type | Description | |
---|---|---|---|
name | string | name of the variable |
getValue returns
Type | Description |
---|---|
any | value of the variable |
isExternVariable
isExternVariable (name) => {boolean}
Returns true , if the variable is an external variable required from outside
isExternVariable Parameters
Name | Type | Description | |
---|---|---|---|
name | string | name of the variable |
isExternVariable returns
Type | Description |
---|---|
boolean | true , if the variable is external ( send to the service ) |
setValue
setValue (name, value)
Sets the value of an existing variable
setValue Parameters
Name | Type | Description | |
---|---|---|---|
name | string | name of the variable | |
value | any | value of the variable |