Add paradoxalarminterface chart

Signed-off-by: Sean McGrath <sean@mcgrath.net.nz>
This commit is contained in:
Sean McGrath 2022-07-28 17:11:29 +12:00
parent 6574501569
commit 4c87928ca8
8 changed files with 750 additions and 0 deletions

View File

@ -0,0 +1,26 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
# OWNERS file for Kubernetes
OWNERS
# helm-docs templates
*.gotmpl

View File

@ -0,0 +1,27 @@
apiVersion: v2
appVersion: 3.0.1
description: Middleware that aims to connect to a Paradox Alarm panel, exposing the interface for monitoring and control via several technologies.
name: paradoxalarminterface
version: 1.0.9
kubeVersion: ">=1.16.0-0"
keywords:
- paradox
- pai
- alarm
- home-assistant
- mqtt
home: https://github.com/k8s-at-home/charts/tree/master/charts/stable/paradoxalarminterface
icon: https://raw.githubusercontent.com/ParadoxAlarmInterface/pai/master/docs/pai_logo.png
sources:
- https://github.com/ParadoxAlarmInterface/pai
maintainers:
- name: wipash
email: paichart@dont.ltd
dependencies:
- name: common
repository: https://library-charts.k8s-at-home.com
version: 4.4.2
annotations:
artifacthub.io/changes: |
- kind: added
description: Initial version

View File

@ -0,0 +1,247 @@
# paradoxalarminterface
![Version: 1.0.9](https://img.shields.io/badge/Version-1.0.9-informational?style=flat-square) ![AppVersion: 3.0.1](https://img.shields.io/badge/AppVersion-3.0.1-informational?style=flat-square)
Middleware that aims to connect to a Paradox Alarm panel, exposing the interface for monitoring and control via several technologies.
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
## Source Code
* <https://github.com/ParadoxAlarmInterface/pai>
## Requirements
Kubernetes: `>=1.16.0-0`
## Dependencies
| Repository | Name | Version |
|------------|------|---------|
| https://library-charts.k8s-at-home.com | common | 4.4.2 |
## TL;DR
```console
helm repo add k8s-at-home https://k8s-at-home.com/charts/
helm repo update
helm install paradoxalarminterface k8s-at-home/paradoxalarminterface
```
## Installing the Chart
To install the chart with the release name `paradoxalarminterface`
```console
helm install paradoxalarminterface k8s-at-home/paradoxalarminterface
```
## Uninstalling the Chart
To uninstall the `paradoxalarminterface` deployment
```console
helm uninstall paradoxalarminterface
```
The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release.
## Configuration
Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values.
Other values may be used from the [values.yaml](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common).
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
```console
helm install paradoxalarminterface \
--set env.TZ="America/New York" \
k8s-at-home/paradoxalarminterface
```
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart.
```console
helm install paradoxalarminterface k8s-at-home/paradoxalarminterface -f values.yaml
```
## Custom configuration
N/A
## Values
**Important**: When deploying an application Helm chart you can add more values from our common library chart [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common)
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| config.commandAlias | object | `{"arm":"partition all arm","disarm":"partition all disarm"}` | alias for commands through text based interfaces |
| config.connectionType | string | `"Serial"` | Serial or IP Connection Type |
| config.developmentDumpMemory | bool | `false` | Development |
| config.dummyEventFilters | list | `[]` | |
| config.dummyInterfaceEnable | bool | `false` | Dummy Interface for testing |
| config.dummyMinEventLevel | string | `"DEBUG"` | |
| config.gsmAllowEvents | list | `[]` | Event filtering using regexp. Cannot be used together with gsmEventFilters List of tuples or regexp matching "type,label,property=value,property2=value" eg. [(major, minor), "zone:HOME:entry_delay=true", ...] eg r".*" |
| config.gsmContacts | list | `[]` | Contacts that are allowed to control the panel and receive notifications through SMS |
| config.gsmEnable | bool | `false` | |
| config.gsmEventFilters | list | `[]` | Event filtering by tags: list of tags to include or exclude see hardware event.py for tag list eg "live,alarm,-restore" or "live,trouble,-clock" or "live,tamper" |
| config.gsmIgnoreEvents | list | `[]` | Same as gsmAllowEvents but to ignore some specific events that matched in _ALLOW_EVENTS eg r"zone,[\w]+,no_delay=true" or r"zone,[\w]+,exit_delay=.*" |
| config.gsmMinEventLevel | string | `"CRITICAL"` | |
| config.gsmModemBaudrate | int | `115200` | Baudrate of the GSM modem |
| config.gsmModemPort | string | `""` | Pathname of the serial port |
| config.homeassistantNotificationsAllowEvents | list | `[]` | Event filtering using regexp. Cannot be used together with homeassistantNotificationsEventFilters List of tuples or regexp matching "type,label,property=value,property2=value" eg. [(major, minor), "zone:HOME:entry_delay=true", ...] eg r".*" |
| config.homeassistantNotificationsEnable | bool | `false` | Home Assistant Notifications (HASS.io required) |
| config.homeassistantNotificationsEventFilters | list | `[]` | Event filtering by tags: list of tags to include or exclude see hardware event.py for tag list eg "live,alarm,-restore" or "live,trouble,-clock" or "live,tamper" |
| config.homeassistantNotificationsIgnoreEvents | list | `[]` | Same as homeassistantNotificationsAllowEvents but to ignore some specific events that matched in _ALLOW_EVENTS eg r"zone,[\w]+,no_delay=true" or r"zone,[\w]+,exit_delay=.*" |
| config.homeassistantNotificationsMinEventLevel | string | `"INFO"` | |
| config.homeassistantNotificationsNotifierName | string | `"notify"` | |
| config.homeassistantPublishPartitionProperties[0] | string | `"target_state"` | |
| config.homeassistantPublishPartitionProperties[1] | string | `"current_state"` | |
| config.homeassistantPublishZoneProperties[0] | string | `"open"` | |
| config.homeassistantPublishZoneProperties[1] | string | `"tamper"` | |
| config.ipConnectionBare | bool | `false` | No not expect an IP150 module. Used this for base Serial over TCP tunnels |
| config.ipConnectionEmail | string | `nil` | Email registered in the site |
| config.ipConnectionHost | string | `"127.0.0.1"` | IP Module address when using direct IP Connection |
| config.ipConnectionPanelSerial | string | `nil` | Use a specific panel. Set it to None to use the first |
| config.ipConnectionPassword | string | `"paradox"` | IP Module password. "paradox" is default. |
| config.ipConnectionPort | int | `10000` | IP Module port when using direct IP Connection |
| config.ipConnectionSiteid | string | `nil` | SITE ID. IF defined, connection will be made through this method. |
| config.ipInterfaceBindAddress | string | `"0.0.0.0"` | |
| config.ipInterfaceBindPort | int | `10000` | |
| config.ipInterfaceEnable | bool | `false` | IP Socket Interface for remote PAI instance or Babyware |
| config.ipInterfacePassword | string | `"paradox"` | |
| config.keepAliveInterval | int | `10` | Interval between status updates in seconds |
| config.labelEncoding | string | `"paradox-en"` | Encoding to use when decoding labels. paradox-* or https://docs.python.org/3/library/codecs.html#standard-encodings |
| config.labelRefreshInterval | int | `900` | Interval between refresh of labels in seconds |
| config.limits.door | list | `[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]` | Doors to consider |
| config.limits.keypad | list | `[1,2,3,4,5,6,7,8,9]` | Keypads to monitor |
| config.limits.module | list | `[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]` | Buses to monitor |
| config.limits.partition | list | `[1,2]` | Partitions to monitor and control |
| config.limits.pgm | list | `[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]` | PGMs to monitor and control |
| config.limits.repeater | list | `[1,2,3,4,5,6,7,8,9]` | Repeaters to monitor |
| config.limits.user | list | `[1,2,3,4]` | Users to consider |
| config.limits.zone | list | `[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]` | Zones to monitor and control |
| config.loggingDumpEvents | bool | `false` | Dump Event details to log |
| config.loggingDumpMessages | bool | `false` | Dump Messages to log |
| config.loggingDumpPackets | bool | `false` | Dump RAW Packets to log |
| config.loggingDumpStatus | bool | `false` | Dump Status to log |
| config.loggingFile | string | `nil` | Log file path |
| config.loggingFileMaxFiles | int | `2` | Max old log files to keep |
| config.loggingFileMaxSize | int | `10` | Max log file size in MB |
| config.loggingLevelConsole | int | `20` | Console logging level; CRITICAL: 50, ERROR: 40, WARNING: 30, INFO: 20, DEBUG: 10 |
| config.loggingLevelFile | int | `40` | File logging level; CRITICAL: 50, ERROR: 40, WARNING: 30, INFO: 20, DEBUG: 10 |
| config.mqttBaseTopic | string | `"paradox"` | Root of all topics |
| config.mqttBindAddress | string | `""` | MQTT Client bind address. Default: "" - pick automatically |
| config.mqttBindPort | int | `0` | MQTT Client bind port. Default: 0 - pick automatically |
| config.mqttBusTopic | string | `"buses"` | Base for buses states |
| config.mqttCommandAlias | object | `{"armed_away":"arm","armed_home":"arm_stay","armed_night":"arm_sleep","disarmed":"disarm"}` | For homebridge |
| config.mqttCommandStatusTopic | string | `"command_status"` | Topic for command statuses |
| config.mqttControlTopic | string | `"control"` | Base for control of other elements (ROOT/CONTROL/TYPE) |
| config.mqttDashPublish | bool | `false` | Publish dashboard app |
| config.mqttDashTemplate | string | `"/etc/pai/mqtt_dash.txt"` | |
| config.mqttDashTopic | string | `"metrics/exchange/pai"` | |
| config.mqttDefinitionsTopic | string | `"control"` | Base for definitions |
| config.mqttDoorTopic | string | `"doors"` | Topic for door events |
| config.mqttEnable | bool | `false` | Enable MQTT Interface |
| config.mqttEventsTopic | string | `"events"` | Base for events |
| config.mqttHomeassistantAutodiscoveryEnable | bool | `false` | MQTT Home Assistant Auto Discovery |
| config.mqttHomeassistantCode | string | `nil` | |
| config.mqttHomeassistantDiscoveryPrefix | string | `"homeassistant"` | Prefix for Holme Assistant discovery |
| config.mqttHost | string | `"127.0.0.1"` | Hostname or address |
| config.mqttInterfaceTopic | string | `"interface"` | Topic for interfaces |
| config.mqttKeepalive | int | `60` | Keep alive |
| config.mqttKeypadTopic | string | `"keypads"` | Topic for keypad events |
| config.mqttModuleTopic | string | `"bus-module"` | Base for bus module states |
| config.mqttNotificationsTopic | string | `"notifications"` | Topic for notifications |
| config.mqttOutputTopic | string | `"outputs"` | Topic for output events |
| config.mqttPartitionTopic | string | `"partitions"` | Base for partition states |
| config.mqttPassword | string | `nil` | MQTT Password |
| config.mqttPort | int | `1883` | TCP Port (TLS port if mqttTlsCertPath is set) |
| config.mqttProtocol | string | `"3.1.1"` | Protocol to use ("3.1", "3.1.1" or "5") |
| config.mqttPublishCommandStatus | bool | `false` | Publish command statuses to MQTT |
| config.mqttPublishDefinitions | bool | `false` | Publish definitions of partitions/zones/users to MQTT. Not required in most cases. |
| config.mqttPublishRawEvents | bool | `true` | |
| config.mqttQos | int | `0` | Publish messages with QOS level (0 - fire and forget, 1 - at least once, 2 - exactly once) |
| config.mqttRawTopic | string | `"raw"` | Topic for raw events |
| config.mqttRepeaterTopic | string | `"repeaters"` | Base for repeater states |
| config.mqttRepublishInterval | int | `43200` | Interval for republishing all data |
| config.mqttRetain | bool | `true` | Publish messages with Retain |
| config.mqttSendPanicTopic | string | `"panic"` | |
| config.mqttStatesTopic | string | `"states"` | Topic for state events |
| config.mqttSystemTopic | string | `"system"` | Base for panel states |
| config.mqttTlsCertPath | string | `nil` | Path to ca cert (/etc/pai/certs/ca.pem), if you want TLS |
| config.mqttToggleCodes | object | `{}` | |
| config.mqttTransport | string | `"tcp"` | Transport to use ("tcp" or "websockets") |
| config.mqttUseNumericStates | bool | `false` | use 0 and 1 instead of true and false |
| config.mqttUserTopic | string | `"users"` | Base for user states |
| config.mqttUsername | string | `nil` | MQTT Username for authentication |
| config.mqttZoneTopic | string | `"zones"` | Base for zone states |
| config.outputPulseDuration | int | `1` | Duration of a PGM pulse in seconds |
| config.password | string | `"0000"` | PC Password. Set to None if Panel has no Password. In Babyware: Right click on your panel -> Properties -> PC Communication (Babyware) -> PC Communication (Babyware) Tab. |
| config.powerUpdateInterval | int | `60` | Interval between updates of the battery, DC and VDC voltages |
| config.pushPowerUpdateWithoutChange | bool | `true` | Always notify interfaces of power changes |
| config.pushUpdateWithoutChange | bool | `false` | Always notify interfaces of all changes |
| config.pushbulletAllowEvents | list | `[]` | Event filtering using regexp. Cannot be used together with pushbulletEventFilters List of tuples or regexp matching "type,label,property=value,property2=value" eg. [(major, minor), "zone:HOME:entry_delay=true", ...] eg r".*" |
| config.pushbulletContacts | list | `[]` | Pushbullet user identifiers for notifications and interaction |
| config.pushbulletEnable | bool | `false` | |
| config.pushbulletEventFilters | list | `[]` | Event filtering by tags list of tags to include or exclude see hardware event.py for tag list eg "live,alarm,-restore" or "live,trouble,-clock" or "live,tamper" |
| config.pushbulletIgnoreEvents | list | `[]` | Same as previous but to ignore some specific events that matched in _ALLOW_EVENTS eg r"zone,[\w]+,no_delay=true" or r"zone,[\w]+,exit_delay=.*" |
| config.pushbulletKey | string | `""` | Authentication key used for Pushbullet |
| config.pushbulletMinEventLevel | string | `"INFO"` | |
| config.pushoverAllowEvents | list | `[]` | Event filtering using regexp. Cannot be used together with pushoverEventFilters List of tuples or regexp matching "type,label,property=value,property2=value" eg. [(major, minor), "zone:HOME:entry_delay=true", ...] eg r".*" |
| config.pushoverBroadcastKeys | list | `[]` | Pushover user or group keys to broadcast notifications to @default [{user_key: "<user_key>", devices: "*"}] |
| config.pushoverEnable | bool | `false` | |
| config.pushoverEventFilters | list | `[]` | Event filtering by tags: list of tags to include or exclude see hardware event.py for tag list eg "live,alarm,-restore" or "live,trouble,-clock" or "live,tamper" |
| config.pushoverIgnoreEvents | list | `[]` | Same as pushoverAllowEvents but to ignore some specific events that matched in _ALLOW_EVENTS eg r"zone,[\w]+,no_delay=true" or r"zone,[\w]+,exit_delay=.*" |
| config.pushoverKey | string | `""` | Application token for Pushover |
| config.pushoverMinEventLevel | string | `"INFO"` | |
| config.serialBaud | int | `9600` | 9600 for SP/MG. For EVO: Use 38400(default setting) or 57600 |
| config.serialPort | string | `"/dev/ttyS1"` | Pathname of the Serial Port |
| config.signalAllowEvents | list | `[]` | Event filtering using regexp. Cannot be used together with signalEventFilters List of tuples or regexp matching "type,label,property=value,property2=value" eg. [(major, minor), "zone:HOME:entry_delay=true", ...] eg r".*" |
| config.signalContacts | list | `[]` | Contacts that are allowed to control the panel and receive notifications through Signal |
| config.signalEnable | bool | `false` | |
| config.signalEventFilters | list | `[]` | Event filtering by tags: list of tags to include or exclude see hardware event.py for tag list eg "live,alarm,-restore" or "live,trouble,-clock" or "live,tamper" |
| config.signalIgnoreEvents | list | `[]` | Same as signalAllowEvents but to ignore some specific events that matched in _ALLOW_EVENTS eg r"zone,[\w]+,no_delay=true" or r"zone,[\w]+,exit_delay=.*" |
| config.signalMinEventLevel | string | `"INFO"` | |
| config.syncTime | bool | `false` | Update panel time periodically when time drifts more than SYNC_TIME_MIN_DRIFT |
| config.syncTimeMinDrift | int | `60` | Minimum time drift in seconds to initiate time sync |
| env | object | See below | environment variables. See more environment variables in the [paradoxalarminterface documentation](https://paradoxalarminterface.org/docs). |
| env.TZ | string | `"UTC"` | Set the container timezone |
| image.pullPolicy | string | `"IfNotPresent"` | image pull policy |
| image.repository | string | `"paradoxalarminterface/pai"` | image repository |
| image.tag | string | chart.appVersion | image tag |
| ingress.main | object | See values.yaml | Enable and configure ingress settings for the chart under this key. |
| persistence | object | See values.yaml | Configure persistence settings for the chart under this key. |
| service | object | See values.yaml | Configures service settings for the chart. |
| service.main.enabled | bool | `false` | Main service is disabled, only enable if you want to connect Babyware |
| service.main.ports.babyware | object | `{"enabled":true,"port":10000,"protocol":"TCP"}` | Port for Babyware connection. Set config.ipInterfaceEnable to true if you enable this |
## Changelog
### Version 1.0.9
#### Added
* Initial version
#### Changed
N/A
#### Fixed
N/A
### Older versions
A historical overview of changes can be found on [ArtifactHUB](https://artifacthub.io/packages/helm/k8s-at-home/paradoxalarminterface?modal=changelog)
## Support
- See the [Docs](https://docs.k8s-at-home.com/our-helm-charts/getting-started/)
- Open an [issue](https://github.com/k8s-at-home/charts/issues/new/choose)
- Ask a [question](https://github.com/k8s-at-home/organization/discussions)
- Join our [Discord](https://discord.gg/sTMX7Vh) community
----------------------------------------------
Autogenerated from chart metadata using [helm-docs v0.1.1](https://github.com/k8s-at-home/helm-docs/releases/v0.1.1)

View File

@ -0,0 +1,9 @@
{{- define "custom.custom.configuration.header" -}}
## Custom configuration
{{- end -}}
{{- define "custom.custom.configuration" -}}
{{ template "custom.custom.configuration.header" . }}
N/A
{{- end -}}

View File

@ -0,0 +1 @@
{{- include "common.notes.defaultNotes" . -}}

View File

@ -0,0 +1,16 @@
{{/* Make sure all variables are set properly */}}
{{- include "common.values.setup" . }}
{{/* Append the configMap volume to the volumes */}}
{{- define "paradoxalarminterface.configVolume" -}}
enabled: "true"
mountPath: "/etc/pai"
type: "custom"
volumeSpec:
configMap:
name: {{ include "common.names.fullname" . }}-config
{{- end -}}
{{- $_ := set .Values.persistence "paradoxalarminterface-config" (include "paradoxalarminterface.configVolume" . | fromYaml) -}}
{{/* Render the templates */}}
{{ include "common.all" . }}

View File

@ -0,0 +1,65 @@
{{- include "common.values.setup" . -}}
{{- define "paradoxalarminterface.configValueFormat" }}
{{- $value := . }}
{{- if or (kindIs "bool" $value) (eq "none" ($value | toString | lower)) -}}
{{ $value | toString | title }}
{{- else if or (kindIs "float64" $value) (hasPrefix "r\"" ($value | toString)) -}}
{{ $value }}
{{- else -}}
{{ $value | squote }}
{{- end -}}
{{- end }}
{{- define "paradoxalarminterface.mapFormat" }}
{{- $value := index . 0 }}
{{- $ind := index . 1 }}
{{- range $key, $value := $value }}
{{- if $value }}
{{ $key | squote | indent ($ind | int) }}: {{ include "paradoxalarminterface.configFormat" (list $value (add $ind 4)) }},
{{- end }}
{{- end }}
{{- end }}
{{- define "paradoxalarminterface.sliceFormat" }}
{{- $value := index . 0 }}
{{- $ind := index . 1 }}
{{- range $i, $value := $value }}
{{- if $i }},{{ end }}{{- include "paradoxalarminterface.configFormat" (list $value (add $ind 4)) }}
{{- end }}
{{- end }}
{{- define "paradoxalarminterface.configFormat" }}
{{- $value := index . 0 }}
{{- $ind := index . 1 }}
{{- if kindIs "map" $value -}}
{{ "{" }}
{{- include "paradoxalarminterface.mapFormat" (list $value (add $ind 4)) }}
{{- "}" | nindent ($ind | int) }}
{{- else if kindIs "slice" $value -}}
{{ "[" }}
{{- include "paradoxalarminterface.sliceFormat" (list $value 4) }}
{{- "]" }}
{{- else }}
{{- include "paradoxalarminterface.configValueFormat" $value }}
{{- end }}
{{- end }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "common.names.fullname" . }}-config
labels:
{{- include "common.labels" . | nindent 4 }}
data:
pai.conf: |
###
import logging
###
{{- range $key := (keys $.Values.config | uniq | sortAlpha) }}
{{- $value := index $.Values.config $key }}
{{- if $value }}
{{ $key | snakecase | upper }} = {{ include "paradoxalarminterface.configFormat" (list $value 4) }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,359 @@
#
# -- IMPORTANT NOTE
#
# -- This chart inherits from our common library chart. You can check the default values/options here:
# -- https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml
#
image:
# -- image repository
repository: paradoxalarminterface/pai
# -- image tag
# @default -- chart.appVersion
tag:
# -- image pull policy
pullPolicy: IfNotPresent
# -- environment variables. See more environment variables in the [paradoxalarminterface documentation](https://paradoxalarminterface.org/docs).
# @default -- See below
env:
# -- Set the container timezone
TZ: UTC
# -- Configures service settings for the chart.
# @default -- See values.yaml
service:
main:
# -- Main service is disabled, only enable if you want to connect Babyware
enabled: false
ports:
# -- Port for Babyware connection. Set config.ipInterfaceEnable to true if you enable this
babyware:
enabled: true
port: 10000
protocol: TCP
http:
enabled: false
ingress:
# -- Enable and configure ingress settings for the chart under this key.
# @default -- See values.yaml
main:
enabled: false
# -- Configure persistence settings for the chart under this key.
# @default -- See values.yaml
persistence:
{}
# -- data:
# enabled: false
# mountPath: /data
config:
# -- Console logging level; CRITICAL: 50, ERROR: 40, WARNING: 30, INFO: 20, DEBUG: 10
loggingLevelConsole: 20
# -- File logging level; CRITICAL: 50, ERROR: 40, WARNING: 30, INFO: 20, DEBUG: 10
loggingLevelFile: 40
# -- Log file path
loggingFile:
# -- Max log file size in MB
loggingFileMaxSize: 10
# -- Max old log files to keep
loggingFileMaxFiles: 2
# -- Dump RAW Packets to log
loggingDumpPackets: false
# -- Dump Messages to log
loggingDumpMessages: false
# -- Dump Status to log
loggingDumpStatus: false
# -- Dump Event details to log
loggingDumpEvents: false
# -- Development
developmentDumpMemory: false
# -- Serial or IP Connection Type
connectionType: "Serial"
# -- Pathname of the Serial Port
serialPort: "/dev/ttyS1"
# -- 9600 for SP/MG. For EVO: Use 38400(default setting) or 57600
serialBaud: 9600
# -- IP Module address when using direct IP Connection
ipConnectionHost: "127.0.0.1"
# -- IP Module port when using direct IP Connection
ipConnectionPort: 10000
# -- IP Module password. "paradox" is default.
ipConnectionPassword: "paradox"
# -- SITE ID. IF defined, connection will be made through this method.
ipConnectionSiteid:
# -- Email registered in the site
ipConnectionEmail:
# -- Use a specific panel. Set it to None to use the first
ipConnectionPanelSerial:
# -- No not expect an IP150 module. Used this for base Serial over TCP tunnels
ipConnectionBare: false
# -- Interval between status updates in seconds
keepAliveInterval: 10
limits:
# -- Zones to monitor and control
zone: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
# -- Users to consider
user: [1, 2, 3, 4]
# -- Doors to consider
door: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32]
# -- PGMs to monitor and control
pgm: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
# -- Partitions to monitor and control
partition: [1, 2]
# -- Buses to monitor
module: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
# -- Repeaters to monitor
repeater: [1, 2, 3, 4, 5, 6, 7, 8, 9]
# -- Keypads to monitor
keypad: [1, 2, 3, 4, 5, 6, 7, 8, 9]
# -- Encoding to use when decoding labels. paradox-* or https://docs.python.org/3/library/codecs.html#standard-encodings
labelEncoding: "paradox-en"
# -- Interval between refresh of labels in seconds
labelRefreshInterval: 900
# -- Duration of a PGM pulse in seconds
outputPulseDuration: 1
# -- Update panel time periodically when time drifts more than SYNC_TIME_MIN_DRIFT
syncTime: false
# -- Minimum time drift in seconds to initiate time sync
syncTimeMinDrift: 60
# -- PC Password. Set to None if Panel has no Password.
# In Babyware: Right click on your panel -> Properties -> PC Communication (Babyware) ->
# PC Communication (Babyware) Tab.
password: "0000"
# -- Interval between updates of the battery, DC and VDC voltages
powerUpdateInterval: 60
# -- Always notify interfaces of power changes
pushPowerUpdateWithoutChange: true
# -- Always notify interfaces of all changes
pushUpdateWithoutChange: false
# -- Enable MQTT Interface
mqttEnable: false
# -- Hostname or address
mqttHost: "127.0.0.1"
# -- TCP Port (TLS port if mqttTlsCertPath is set)
mqttPort: 1883
# -- Transport to use ("tcp" or "websockets")
mqttTransport: "tcp"
# -- Protocol to use ("3.1", "3.1.1" or "5")
mqttProtocol: "3.1.1"
# -- Publish messages with QOS level (0 - fire and forget, 1 - at least once, 2 - exactly once)
mqttQos: 0
# -- Path to ca cert (/etc/pai/certs/ca.pem), if you want TLS
mqttTlsCertPath:
# -- Keep alive
mqttKeepalive: 60
# -- MQTT Username for authentication
mqttUsername:
# -- MQTT Password
mqttPassword:
# -- Publish messages with Retain
mqttRetain: true
# -- MQTT Client bind address. Default: "" - pick automatically
mqttBindAddress: ""
# -- MQTT Client bind port. Default: 0 - pick automatically
mqttBindPort: 0
# -- Interval for republishing all data
mqttRepublishInterval: 43200
# -- Publish definitions of partitions/zones/users to MQTT. Not required in most cases.
mqttPublishDefinitions: false
# -- Root of all topics
mqttBaseTopic: "paradox"
# -- Base for zone states
mqttZoneTopic: "zones"
# -- Base for partition states
mqttPartitionTopic: "partitions"
# -- Base for buses states
mqttBusTopic: "buses"
# -- Base for bus module states
mqttModuleTopic: "bus-module"
# -- Base for panel states
mqttSystemTopic: "system"
# -- Base for repeater states
mqttRepeaterTopic: "repeaters"
# -- Base for user states
mqttUserTopic: "users"
# -- Base for events
mqttEventsTopic: "events"
# -- Base for control of other elements (ROOT/CONTROL/TYPE)
mqttControlTopic: "control"
# -- Base for definitions
mqttDefinitionsTopic: "control"
# -- Prefix for Holme Assistant discovery
mqttHomeassistantDiscoveryPrefix: "homeassistant"
# -- Topic for output events
mqttOutputTopic: "outputs"
# -- Topic for door events
mqttDoorTopic: "doors"
# -- Topic for keypad events
mqttKeypadTopic: "keypads"
# -- Topic for state events
mqttStatesTopic: "states"
# -- Topic for raw events
mqttRawTopic: "raw"
# -- Topic for notifications
mqttNotificationsTopic: "notifications"
mqttSendPanicTopic: "panic"
mqttPublishRawEvents: true
# -- Topic for interfaces
mqttInterfaceTopic: "interface"
mqttToggleCodes: {}
# -- use 0 and 1 instead of true and false
mqttUseNumericStates: false
# -- Publish command statuses to MQTT
mqttPublishCommandStatus: false
# -- Topic for command statuses
mqttCommandStatusTopic: "command_status"
# -- MQTT Home Assistant Auto Discovery
mqttHomeassistantAutodiscoveryEnable: false
mqttHomeassistantCode:
# -- Publish dashboard app
mqttDashPublish: false
mqttDashTopic: "metrics/exchange/pai"
mqttDashTemplate: "/etc/pai/mqtt_dash.txt"
# -- alias for commands through text based interfaces
commandAlias:
arm: "partition all arm"
disarm: "partition all disarm"
# -- For homebridge
mqttCommandAlias:
armed_home: "arm_stay"
armed_night: "arm_sleep"
armed_away: "arm"
disarmed: "disarm"
# -- Home Assistant Notifications (HASS.io required)
homeassistantNotificationsEnable: false
homeassistantNotificationsNotifierName: "notify"
homeassistantNotificationsMinEventLevel: "INFO"
homeassistantPublishPartitionProperties:
- "target_state"
- "current_state"
homeassistantPublishZoneProperties:
- "open"
- "tamper"
# -- Event filtering by tags:
# list of tags to include or exclude see hardware event.py for tag list
# eg "live,alarm,-restore" or "live,trouble,-clock" or "live,tamper"
homeassistantNotificationsEventFilters: []
# -- Event filtering using regexp. Cannot be used together with homeassistantNotificationsEventFilters
# List of tuples or regexp matching "type,label,property=value,property2=value" eg. [(major, minor), "zone:HOME:entry_delay=true", ...]
# eg r".*"
homeassistantNotificationsAllowEvents: []
# -- Same as homeassistantNotificationsAllowEvents but to ignore some specific events that matched in _ALLOW_EVENTS
# eg r"zone,[\w]+,no_delay=true" or r"zone,[\w]+,exit_delay=.*"
homeassistantNotificationsIgnoreEvents: []
## -- Pushbullet
pushbulletEnable: false
# -- Authentication key used for Pushbullet
pushbulletKey: ""
# -- Pushbullet user identifiers for notifications and interaction
pushbulletContacts: []
pushbulletMinEventLevel: "INFO"
# -- Event filtering by tags
# list of tags to include or exclude see hardware event.py for tag list
# eg "live,alarm,-restore" or "live,trouble,-clock" or "live,tamper"
pushbulletEventFilters: []
# -- Event filtering using regexp. Cannot be used together with pushbulletEventFilters
# List of tuples or regexp matching "type,label,property=value,property2=value" eg. [(major, minor), "zone:HOME:entry_delay=true", ...]
# eg r".*"
pushbulletAllowEvents: []
# -- Same as previous but to ignore some specific events that matched in _ALLOW_EVENTS
# eg r"zone,[\w]+,no_delay=true" or r"zone,[\w]+,exit_delay=.*"
pushbulletIgnoreEvents: []
## -- Pushover
pushoverEnable: false
# -- Application token for Pushover
pushoverKey: ""
# -- Pushover user or group keys to broadcast notifications to
# @default [{user_key: "<user_key>", devices: "*"}]
pushoverBroadcastKeys: []
pushoverMinEventLevel: "INFO"
# -- Event filtering by tags:
# list of tags to include or exclude see hardware event.py for tag list
# eg "live,alarm,-restore" or "live,trouble,-clock" or "live,tamper"
pushoverEventFilters: []
# -- Event filtering using regexp. Cannot be used together with pushoverEventFilters
# List of tuples or regexp matching "type,label,property=value,property2=value" eg. [(major, minor), "zone:HOME:entry_delay=true", ...]
# eg r".*"
pushoverAllowEvents: []
# -- Same as pushoverAllowEvents but to ignore some specific events that matched in _ALLOW_EVENTS
# eg r"zone,[\w]+,no_delay=true" or r"zone,[\w]+,exit_delay=.*"
pushoverIgnoreEvents: []
## -- Signal
signalEnable: false
# -- Contacts that are allowed to control the panel and receive notifications through Signal
signalContacts: []
signalMinEventLevel: "INFO"
# -- Event filtering by tags:
# list of tags to include or exclude see hardware event.py for tag list
# eg "live,alarm,-restore" or "live,trouble,-clock" or "live,tamper"
signalEventFilters: []
# -- Event filtering using regexp. Cannot be used together with signalEventFilters
# List of tuples or regexp matching "type,label,property=value,property2=value" eg. [(major, minor), "zone:HOME:entry_delay=true", ...]
# eg r".*"
signalAllowEvents: []
# -- Same as signalAllowEvents but to ignore some specific events that matched in _ALLOW_EVENTS
# eg r"zone,[\w]+,no_delay=true" or r"zone,[\w]+,exit_delay=.*"
signalIgnoreEvents: []
## -- GSM
gsmEnable: false
# -- Baudrate of the GSM modem
gsmModemBaudrate: 115200
# -- Pathname of the serial port
gsmModemPort: ""
# -- Contacts that are allowed to control the panel and receive notifications through SMS
gsmContacts: []
gsmMinEventLevel: "CRITICAL"
# -- Event filtering by tags:
# list of tags to include or exclude see hardware event.py for tag list
# eg "live,alarm,-restore" or "live,trouble,-clock" or "live,tamper"
gsmEventFilters: []
# -- Event filtering using regexp. Cannot be used together with gsmEventFilters
# List of tuples or regexp matching "type,label,property=value,property2=value" eg. [(major, minor), "zone:HOME:entry_delay=true", ...]
# eg r".*"
gsmAllowEvents: []
# -- Same as gsmAllowEvents but to ignore some specific events that matched in _ALLOW_EVENTS
# eg r"zone,[\w]+,no_delay=true" or r"zone,[\w]+,exit_delay=.*"
gsmIgnoreEvents: []
# -- IP Socket Interface for remote PAI instance or Babyware
ipInterfaceEnable: false
ipInterfaceBindAddress: "0.0.0.0"
ipInterfaceBindPort: 10000
ipInterfacePassword: "paradox"
# -- Dummy Interface for testing
dummyInterfaceEnable: false
dummyEventFilters: []
dummyMinEventLevel: "DEBUG"