# Should be at /etc/pai/pai.conf import logging # Default configuration. # Edit as needed ### Logging # LOGGING_LEVEL_CONSOLE = logging.INFO # See documentation of Logging package # LOGGING_LEVEL_FILE = logging.ERROR # LOGGING_FILE = None # or set to file path LOGGING_FILE='/var/log/paradox.log' # LOGGING_FILE_MAX_SIZE = 10 # Max log file size in MB # LOGGING_FILE_MAX_FILES = 2 # Max old log files to keep # LOGGING_DUMP_PACKETS = False # Dump RAW Packets to log # LOGGING_DUMP_MESSAGES = False # Dump Messages to log # LOGGING_DUMP_STATUS = False # Dump Status to log # LOGGING_DUMP_EVENTS = False # Dump Event details to log # ### Development # DEVELOPMENT_DUMP_MEMORY = False # ### Connection Type # CONNECTION_TYPE = 'Serial' # Serial or IP # ### Serial Connection Details # SERIAL_PORT = '/dev/ttyS1' # Pathname of the Serial Port # SERIAL_BAUD = 9600 # 9600 for SP/MG. For EVO: Use 38400(default setting) or 57600. 115200 for + versions # ### IP Connection Details # IP_CONNECTION_HOST = '127.0.0.1' # IP Module address when using direct IP Connection # IP_CONNECTION_PORT = 10000 # IP Module port when using direct IP Connection # IP_CONNECTION_PASSWORD = 'paradox' # IP Module password. "paradox" is default. # IP_CONNECTION_SITEID = None # SITE ID. IF defined, connection will be made through this method. # IP_CONNECTION_EMAIL = None # Email registered in the site # IP_CONNECTION_PANEL_SERIAL = None # Use a specific panel. Set it to None to use the first # IP_CONNECTION_BARE = False # No not expect an IP150 module. Used this for base Serial over TCP tunnels # ### Paradox # KEEP_ALIVE_INTERVAL = 10 # Interval between status updates # IO_TIMEOUT = 0.5 # Timeout for IO operations # # LIMITS = { # By default all zones will be monitored # # 'zone': range(1, 17), # Zones to monitor and control # # 'user': [1, 2, 3, 4], # Users to consider # # 'door': range(1, 32), # Doors to consider # # 'pgm': range(1, 17), # PGMs to monitor and control # # 'partition': [1, 2], # Partitions to monitor and control # # 'module': range(1, 17), # Buses to monitor # # 'repeater': range(1, 9), # Repeaters to monitor # # 'keypad': range(1, 9) # Keypads to monitor # } # # LABEL_ENCODING = 'paradox-en' # Encoding to use when decoding labels. paradox-* or https://docs.python.org/3/library/codecs.html#standard-encodings # LABEL_REFRESH_INTERVAL = 15 * 60 # Interval between refresh of labels # OUTPUT_PULSE_DURATION = 1 # Duration of a PGM pulse in seconds # SYNC_TIME = False # Update panel time periodically when time drifts more than SYNC_TIME_MIN_DRIFT # SYNC_TIME_MIN_DRIFT = 60 # Minimum time drift in seconds to initiate time sync # SYNC_TIME_TIMEZONE='' # Timezone used for panel time synchronisation. PAI host timezone is used by default # PASSWORD = '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. # # PUSH_UPDATE_WITHOUT_CHANGE = False # Always notify interfaces of all changes # ### MQTT # MQTT_ENABLE = False # Enable MQTT Interface # MQTT_HOST = '127.0.0.1' # Hostname or address # MQTT_PORT = 1883 # TCP Port (TLS port if MQTT_TLS_CERT_PATH is set) # MQTT_TRANSPORT = "tcp" # Transport to use ("tcp" or "websockets") # MQTT_PROTOCOL = "3.1.1" # Protocol to use ("3.1", "3.1.1" or "5") # MQTT_QOS = 0 # Publish messages with QOS level (0 - fire and forget, 1 - at least once, 2 - exactly once) # MQTT_TLS_CERT_PATH = None # Path to ca cert (/etc/pai/certs/ca.pem), if you want TLS # MQTT_KEEPALIVE = 60 # Keep alive # MQTT_USERNAME = None # MQTT Username for authentication # MQTT_PASSWORD = None # MQTT Password # MQTT_RETAIN = True # Publish messages with Retain # MQTT_BIND_ADDRESS = '' # MQTT Client bind address. Default: "" - pick automatically # MQTT_BIND_PORT = 0 # MQTT Client bind port. Default: 0 - pick automatically # MQTT_REPUBLISH_INTERVAL = 60 * 60 * 12 # Interval for republishing all data # MQTT_PUBLISH_DEFINITIONS = False # Publish definitions of partitions/zones/users to MQTT. Not required in most cases. # ### MQTT Topics # MQTT_BASE_TOPIC = 'paradox' # Root of all topics # MQTT_ZONE_TOPIC = 'zones' # Base for zone states # MQTT_PARTITION_TOPIC = 'partitions' # Base for partition states # MQTT_BUS_TOPIC = 'buses' # Base for buses states # MQTT_MODULE_TOPIC = 'bus-module' # Base for bus module states # MQTT_SYSTEM_TOPIC = 'system' # Base for panel states # MQTT_REPEATER_TOPIC = 'repeaters' # Base for repeater states # MQTT_USER_TOPIC = 'users' # Base for user states # MQTT_EVENTS_TOPIC = 'events' # Base for events # MQTT_CONTROL_TOPIC = 'control' # Base for control of other elements (ROOT/CONTROL/TYPE) # MQTT_DEFINITIONS_TOPIC = 'control' # Base for definitions # MQTT_HOMEASSISTANT_DISCOVERY_PREFIX = 'homeassistant' # MQTT_HOMEASSISTANT_ENTITY_PREFIX = '' # If you want to prefix all entities you can use: "Paradox {serial_number} ", placeholders "serial_number" and "model" are supported. Default: "" - no prefix # MQTT_OUTPUT_TOPIC = 'outputs' # MQTT_DOOR_TOPIC = 'doors' # MQTT_KEYPAD_TOPIC = 'keypads' # MQTT_STATES_TOPIC = 'states' # MQTT_RAW_TOPIC = 'raw' # # MQTT_NOTIFICATIONS_TOPIC = 'notifications' # MQTT_SEND_PANIC_TOPIC = 'panic' # MQTT_PUBLISH_RAW_EVENTS = True # MQTT_INTERFACE_TOPIC = 'interface' # MQTT_TOGGLE_CODES = {} # MQTT_USE_NUMERIC_STATES = False # use 0 and 1 instead of True and False # # MQTT_PUBLISH_COMMAND_STATUS = False # Publish command statuses to MQTT # MQTT_COMMAND_STATUS_TOPIC = "command_status" # ### MQTT Home Assistant Auto Discovery # MQTT_HOMEASSISTANT_AUTODISCOVERY_ENABLE = False # MQTT_HOMEASSISTANT_CODE = None # HOMEASSISTANT_PUBLISH_PARTITION_PROPERTIES = [ # 'target_state', # 'current_state' # ] # HOMEASSISTANT_PUBLISH_ZONE_PROPERTIES = [ # 'open', # 'tamper' # ] # ### Dash App # MQTT_DASH_PUBLISH = False # MQTT_DASH_TOPIC = 'metrics/exchange/pai' # MQTT_DASH_TEMPLATE = '/etc/pai/mqtt_dash.txt' # ### Interfaces text command alias # COMMAND_ALIAS = { # alias for commands through text based interfaces # 'arm': 'partition all arm', # 'disarm': 'partition all disarm' # } # # MQTT_COMMAND_ALIAS = { # # For homebridge # 'armed_home': 'arm_stay', # 'armed_night': 'arm_sleep', # 'armed_away': 'arm', # 'disarmed': 'disarm' # } # # ### Home Assistant Notifications (HASS.io required) # HOMEASSISTANT_NOTIFICATIONS_ENABLE = False # HOMEASSISTANT_NOTIFICATIONS_API_URL = "http://supervisor/core/api/services/:domain/:service" # HOMEASSISTANT_NOTIFICATIONS_API_TOKEN = "" # Long-Lived Access Token. Required if you do not use HA Supervisor # HOMEASSISTANT_NOTIFICATIONS_LOVELACE_URI = "" # URI to open when notification is clicked # HOMEASSISTANT_NOTIFICATIONS_NOTIFIER_NAME = 'notify' # HOMEASSISTANT_NOTIFICATIONS_MIN_EVENT_LEVEL = 'INFO' ## Event filtering by tags: # HOMEASSISTANT_NOTIFICATIONS_EVENT_FILTERS = [ # list of tags to include or exclude see hardware event.py for tag list # 'live,alarm,-restore', # or # 'trouble,-clock', # or # 'live,tamper' # ] ## - OR - event filtering using regexp. Cannot be used together with _EVENT_FILTERS # HOMEASSISTANT_NOTIFICATIONS_ALLOW_EVENTS = [r".*"] # List of tuples or regexp matching "type,label,property=value,property2=value" eg. [(major, minor), "zone:HOME:entry_delay=True", ...] # HOMEASSISTANT_NOTIFICATIONS_IGNORE_EVENTS = [ # Same as previous but to ignore some specific events that matched in _ALLOW_EVENTS # r"zone,[\w]+,no_delay=True", # r"zone,[\w]+,exit_delay=.*" # ] # ### Pushbullet # PUSHBULLET_ENABLE = False # PUSHBULLET_KEY = '' # Authentication key used for Pushbullet # PUSHBULLET_CONTACTS = [] # Pushbullet user identifiers for notifications and interaction # PUSHBULLET_MIN_EVENT_LEVEL = 'INFO' ## Event filtering by tags: # PUSHBULLET_EVENT_FILTERS = [ # list of tags to include or exclude see hardware event.py for tag list # 'live,alarm,-restore', # or # 'trouble,-clock', # or # 'live,tamper' # ] ## - OR - event filtering using regexp. Cannot be used together with _EVENT_FILTERS # PUSHBULLET_ALLOW_EVENTS = [r".*"] # List of tuples or regexp matching "type,label,property=value,property2=value" eg. [(major, minor), "zone:HOME:entry_delay=True", ...] # PUSHBULLET_IGNORE_EVENTS = [ # Same as previous but to ignore some specific events that matched in _ALLOW_EVENTS # r"zone,[\w]+,no_delay=True", # r"zone,[\w]+,exit_delay=.*" # ] # # ### Pushover # PUSHOVER_ENABLE = False # PUSHOVER_KEY = '' # Application token for Pushover # PUSHOVER_BROADCAST_KEYS = [{ # Pushover user or group keys to broadcast notifications to # 'user_key': '', # 'devices': '*' # value can be '*' or comma separated list of device names # }] # PUSHOVER_MIN_EVENT_LEVEL = 'INFO' ## Event filtering by tags: # PUSHOVER_EVENT_FILTERS = [ # list of tags to include or exclude see hardware event.py for tag list # 'live,alarm,-restore', # or # 'trouble,-clock', # or # 'live,tamper' # ] ## - OR - event filtering using regexp. Cannot be used together with _EVENT_FILTERS # PUSHOVER_ALLOW_EVENTS = [r".*"] # List of tuples or regexp matching "type,label,property=value,property2=value" eg. [(major, minor), "zone:HOME:entry_delay=True", ...] # PUSHOVER_IGNORE_EVENTS = [ # Same as previous but to ignore some specific events that matched in _ALLOW_EVENTS # r"zone,[\w]+,no_delay=True", # r"zone,[\w]+,exit_delay=.*" # ] # # ### Signal # SIGNAL_ENABLE = False # SIGNAL_CONTACTS = [] # Contacts that are allowed to control the panel and receive notifications # # through Signal # SIGNAL_MIN_EVENT_LEVEL = 'INFO' ## Event filtering by tags: # SIGNAL_EVENT_FILTERS = [ # list of tags to include or exclude see hardware event.py for tag list # 'live,alarm,-restore', # or # 'trouble,-clock', # or # 'live,tamper' # ] ## - OR - event filtering using regexp. Cannot be used together with _EVENT_FILTERS # SIGNAL_ALLOW_EVENTS = [r".*"] # List of tuples or regexp matching "type,label,property=value,property2=value" eg. [(major, minor), "zone:HOME:entry_delay=True", ...] # SIGNAL_IGNORE_EVENTS = [ # Same as previous but to ignore some specific events that matched in _ALLOW_EVENTS # r"zone,[\w]+,no_delay=True", # r"zone,[\w]+,exit_delay=.*" # ] # # ### GSM # GSM_ENABLE = False # GSM_MODEM_BAUDRATE = 115200 # Baudrate of the GSM modem # GSM_MODEM_PORT = '' # Pathname of the serial port # GSM_CONTACTS = [] # Contacts that are allowed to control the panel and receive notifications # # through SMS # GSM_MIN_EVENT_LEVEL = 'CRITICAL' ## Event filtering by tags: # GSM_EVENT_FILTERS = [ # list of tags to include or exclude see hardware event.py for tag list # 'live,zone,alarm,trigger' # ] ## - OR - event filtering using regexp. Cannot be used together with _EVENT_FILTERS # GSM_ALLOW_EVENTS = [r".*"] # List of tuples or regexp matching "type,label,property=value,property2=value" eg. [(major, minor), "zone:HOME:entry_delay=True", ...] # GSM_IGNORE_EVENTS = [ # Same as previous but to ignore some specific events that matched in _ALLOW_EVENTS # r"zone,[\w]+,no_delay=True", # r"zone,[\w]+,exit_delay=.*" # ] # # ### IP Socket Interface # IP_INTERFACE_ENABLE = False # IP_INTERFACE_BIND_ADDRESS = '0.0.0.0' # IP_INTERFACE_BIND_PORT = 10000 # IP_INTERFACE_PASSWORD = 'paradox' # ### Dummy Interface for testing # DUMMY_INTERFACE_ENABLE = False # DUMMY_EVENT_FILTERS = [] # DUMMY_MIN_EVENT_LEVEL = 'DEBUG'