An open API service indexing awesome lists of open source software.

https://github.com/pimatic/pimatic-log-reader

Provides predicates for log entries in log files of other programs.
https://github.com/pimatic/pimatic-log-reader

log-reader pimatic pimatic-plugin

Last synced: 8 days ago
JSON representation

Provides predicates for log entries in log files of other programs.

Awesome Lists containing this project

README

        

pimatic log-reader plugin
=========================

The log-reader allows for defining sensors based on log entries in log files of other programs.
It is also possible to trigger rules based on log entries. See the example-Section for more details.

Configuration:
--------------

Add the plugin to to plugins-Array in the config.json file:

{
"plugin": "log-reader"
}

Then add a sensor for your log-entries to the devices section:

{
"id": "some-id",
"name": "some name",
"class": "LogWatcher",
"file": "/var/log/some-logfile",
"attributes": [
"someAttr"
],
"lines": [
{
"match": "some log entry 1",
"predicate": "entry 1",
"someAttr": "1"
},
{
"match": "some log entry 2",
"predicate": "entry 2",
"someAttr": "2"
}
]
}

Then you can use the predicates defined in your config.

Examples:
---------

### Turn a speaker on and off when a music player starts or stops playing:

Say you are using [gmediarender](https://github.com/hzeller/gmrender-resurrect) and the
log is written to `"/var/log/gmediarender"` you can define the following sensor:

{
"id": "gmediarender-status",
"name": "Music Player",
"class": "LogWatcher",
"file": "/var/log/gmediarender",
"attributes": [
"music-state"
],
"lines": [
{
"match": "TransportState: PLAYING",
"predicate": "music starts",
"music-state": "playing"
},
{
"match": "TransportState: STOPPED",
"predicate": "music stops",
"music-state": "stopped"
}
]
}

Following this you can add the following rules for an existing speaker actuator:

when music starts then turn the speaker on

when music stops then turn the speaker off

### Turn the printer on when you start printing:

Define the following sensor:

{
"id": "printer-status",
"name": "Printer Log",
"class": "LogWatcher",
"file": "/var/log/cups/page_log",
"attributes": [],
"lines": [
{
"match": "psc_1100",
"predicate": "new print job"
}
]
}

Following this you can define the rule:

if new print job then turn printer on

### Gather temperature values from a log file:

If the log file looks like this:

temperature: 21.1
temperature: 22.2

You can create a TemperatureSensor for this with:

{
"id": "temperature-from-logfile",
"name": "Temperature",
"class": "LogWatcher",
"file": "/var/log/temperature",
"attributes": [
{
"name": "temperature",
"type": "number",
"unit": "°C",
"acronym": "T"
}
],
"lines": [
{
"match": "temperature: (.+)",
"temperature": "$1"
}
]
}

### Get a switch state from a logfile:

If the log file looks like this:

Switch1: On
Switch1: Off

You can create a SwitchSensor for this with:

{
"id": "switchstate-from-logfile",
"name": "Switch",
"class": "LogWatcher",
"file": "/var/log/switch",
"attributes": [
{
"name": "Switch1",
"type": "boolean",
"discrete": true
}
],
"lines": [
{
"match": "Switch1: On",
"Switch1": true
},
{
"match": "Switch1: Off",
"Switch1": false
}
]
}

{
"id": "switchstate-from-logfile",
"name": "Switch",
"class": "LogWatcher",
"file": "/var/log/switch",
"attributes": [
{
"name": "Switch1",
"type": "boolean"
"labels": [
"Is switched on",
"Is switched off"
]
}
],
"lines": [
{
"match": "Switch1: On",
"Switch1": true
},
{
"match": "Switch1: Off",
"Switch1": false
}
]
}