├── paradox_alarm_interface ├── icon.png ├── README.md └── config.json ├── paradox_alarm_interface_2 ├── icon.png ├── README.md └── config.json ├── paradox_alarm_interface_3.x ├── CHANGELOG.md ├── icon.png ├── README.md └── config.json ├── paradox_alarm_interface_dev ├── icon.png ├── CHANGELOG.md ├── README.md └── config.json ├── paradox_alarm_interface_3.x_second ├── CHANGELOG.md ├── icon.png ├── README.md └── config.json ├── README.md ├── repository.json ├── .gitignore └── LICENSE /paradox_alarm_interface/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ParadoxAlarmInterface/hassio-repository/HEAD/paradox_alarm_interface/icon.png -------------------------------------------------------------------------------- /paradox_alarm_interface_2/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ParadoxAlarmInterface/hassio-repository/HEAD/paradox_alarm_interface_2/icon.png -------------------------------------------------------------------------------- /paradox_alarm_interface_3.x/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | Changelog is available at https://github.com/ParadoxAlarmInterface/pai/releases 4 | -------------------------------------------------------------------------------- /paradox_alarm_interface_3.x/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ParadoxAlarmInterface/hassio-repository/HEAD/paradox_alarm_interface_3.x/icon.png -------------------------------------------------------------------------------- /paradox_alarm_interface_dev/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ParadoxAlarmInterface/hassio-repository/HEAD/paradox_alarm_interface_dev/icon.png -------------------------------------------------------------------------------- /paradox_alarm_interface_3.x_second/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | Changelog is available at https://github.com/ParadoxAlarmInterface/pai/releases 4 | -------------------------------------------------------------------------------- /paradox_alarm_interface_3.x_second/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ParadoxAlarmInterface/hassio-repository/HEAD/paradox_alarm_interface_3.x_second/icon.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # hassio-repository 2 | HASS.IO repository 3 | 4 | ## Documentation 5 | See [PAI WiKi](https://github.com/ParadoxAlarmInterface/pai/wiki/Installation) 6 | -------------------------------------------------------------------------------- /repository.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Paradox Alarm Interface Hass.io Add-on repository", 3 | "url": "https://github.com/ParadoxAlarmInterface/hassio-repository", 4 | "maintainer": "Jevgeni Kiski " 5 | } 6 | -------------------------------------------------------------------------------- /paradox_alarm_interface_dev/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | Development branch is built version of `dev` branch. It is not stable and should not be used in production. 4 | 5 | See https://github.com/ParadoxAlarmInterface/pai for changes. 6 | -------------------------------------------------------------------------------- /paradox_alarm_interface_3.x/README.md: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | Discord 5 | 6 | 7 | Docker Arch 8 | Docker Pulls 9 | 10 | GitHub 11 |
12 |
13 | 14 | # PAI - Paradox Alarm Interface 15 | 16 | Middleware that aims to connect to a Paradox Alarm panel, exposing the interface for monitoring and control via several technologies. 17 | With this interface it is possible to integrate Paradox panels with HomeAssistant, OpenHAB, Homebridge or other domotics system that supports MQTT, as well as several IM methods. 18 | 19 | It supports MG/SP/EVO panels connected through a serial port, which is present in all panels (TTL 5V), or through a USB 307 module. It also supports connections using the IP150 module, both directly (firmware version <4.0), and through the SITE ID (firmware versions >4.0). 20 | 21 | Support for Magellan, Spectra and EVO panels is very stable. If you find a bug, please report it. 22 | 23 | For **configuration**, further information and detailed usage refer to the [**Wiki**](https://github.com/ParadoxAlarmInterface/pai/wiki). 24 | 25 | Also see changelog in [**Releases**](https://github.com/ParadoxAlarmInterface/pai/releases) 26 | -------------------------------------------------------------------------------- /paradox_alarm_interface_3.x_second/README.md: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | Discord 5 | 6 | 7 | Docker Arch 8 | Docker Pulls 9 | 10 | GitHub 11 |
12 |
13 | 14 | # PAI - Paradox Alarm Interface 15 | 16 | Middleware that aims to connect to a Paradox Alarm panel, exposing the interface for monitoring and control via several technologies. 17 | With this interface it is possible to integrate Paradox panels with HomeAssistant, OpenHAB, Homebridge or other domotics system that supports MQTT, as well as several IM methods. 18 | 19 | It supports MG/SP/EVO panels connected through a serial port, which is present in all panels (TTL 5V), or through a USB 307 module. It also supports connections using the IP150 module, both directly (firmware version <4.0), and through the SITE ID (firmware versions >4.0). 20 | 21 | Support for Magellan, Spectra and EVO panels is very stable. If you find a bug, please report it. 22 | 23 | For **configuration**, further information and detailed usage refer to the [**Wiki**](https://github.com/ParadoxAlarmInterface/pai/wiki). 24 | 25 | Also see changelog in [**Releases**](https://github.com/ParadoxAlarmInterface/pai/releases) 26 | -------------------------------------------------------------------------------- /paradox_alarm_interface/README.md: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | Discord 5 | 6 | 7 | Docker Arch 8 | Docker Pulls 9 | 10 | GitHub 11 |
12 |
13 | 14 | # PAI - Paradox Alarm Interface (deprecated, 2.7.1) 15 | 16 | Middleware that aims to connect to a Paradox Alarm panel, exposing the interface for monitoring and control via several technologies. 17 | With this interface it is possible to integrate Paradox panels with HomeAssistant, OpenHAB, Homebridge or other domotics system that supports MQTT, as well as several IM methods. 18 | 19 | It supports MG/SP/EVO panels connected through a serial port, which is present in all panels (TTL 5V), or through a USB 307 module. It also supports connections using the IP150 module, both directly (firmware version <4.0), and through the SITE ID (firmware versions >4.0). 20 | 21 | Support for Magellan, Spectra and EVO panels is very stable. If you find a bug, please report it. 22 | 23 | For **configuration**, further information and detailed usage refer to the [**Wiki**](https://github.com/ParadoxAlarmInterface/pai/wiki). 24 | 25 | Also see changelog in [**Releases**](https://github.com/ParadoxAlarmInterface/pai/releases) 26 | -------------------------------------------------------------------------------- /paradox_alarm_interface_dev/README.md: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | Discord 5 | 6 | 7 | Docker Arch 8 | Docker Pulls 9 | 10 | GitHub 11 |
12 |
13 | 14 | # PAI - Paradox Alarm Interface (Development version) 15 | 16 | Middleware that aims to connect to a Paradox Alarm panel, exposing the interface for monitoring and control via several technologies. 17 | With this interface it is possible to integrate Paradox panels with HomeAssistant, OpenHAB, Homebridge or other domotics system that supports MQTT, as well as several IM methods. 18 | 19 | It supports MG/SP/EVO panels connected through a serial port, which is present in all panels (TTL 5V), or through a USB 307 module. It also supports connections using the IP150 module, both directly (firmware version <4.0), and through the SITE ID (firmware versions >4.0). 20 | 21 | Support for Magellan, Spectra and EVO panels is very stable. If you find a bug, please report it. 22 | 23 | For **configuration**, further information and detailed usage refer to the [**Wiki**](https://github.com/ParadoxAlarmInterface/pai/wiki). 24 | 25 | Also see changelog in [**Releases**](https://github.com/ParadoxAlarmInterface/pai/releases) 26 | -------------------------------------------------------------------------------- /paradox_alarm_interface_2/README.md: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | Discord 5 | 6 | 7 | Docker Arch 8 | Docker Pulls 9 | 10 | GitHub 11 |
12 |
13 | 14 | # PAI - Paradox Alarm Interface (deprecated, 2.7.1, second instance) 15 | 16 | Middleware that aims to connect to a Paradox Alarm panel, exposing the interface for monitoring and control via several technologies. 17 | With this interface it is possible to integrate Paradox panels with HomeAssistant, OpenHAB, Homebridge or other domotics system that supports MQTT, as well as several IM methods. 18 | 19 | It supports MG/SP/EVO panels connected through a serial port, which is present in all panels (TTL 5V), or through a USB 307 module. It also supports connections using the IP150 module, both directly (firmware version <4.0), and through the SITE ID (firmware versions >4.0). 20 | 21 | Support for Magellan, Spectra and EVO panels is very stable. If you find a bug, please report it. 22 | 23 | For **configuration**, further information and detailed usage refer to the [**Wiki**](https://github.com/ParadoxAlarmInterface/pai/wiki). 24 | 25 | Also see changelog in [**Releases**](https://github.com/ParadoxAlarmInterface/pai/releases) 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | 131 | # IDE 132 | .idea -------------------------------------------------------------------------------- /paradox_alarm_interface/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Paradox Alarm Interface (deprecated)", 3 | "version": "2.7.1", 4 | "image": "paradoxalarminterface/pai", 5 | "stage": "deprecated", 6 | "slug": "paradox_alarm_interface", 7 | "description": "Supports SP/MG/EVO, Serial and IP150 connections.", 8 | "uart": true, 9 | "url": "https://github.com/ParadoxAlarmInterface/pai", 10 | "arch": ["armhf", "armv7", "aarch64", "amd64", "i386"], 11 | "startup": "application", 12 | "boot": "auto", 13 | "services": ["mqtt:need"], 14 | "map": [ 15 | "config" 16 | ], 17 | "environment": { 18 | "PAI_CONFIG_FILE": "/data/options.json" 19 | }, 20 | "ports": { 21 | "10000/tcp": 10000 22 | }, 23 | "ports_description": { 24 | "10000/tcp": "For IP connection from Babyware" 25 | }, 26 | "options": { 27 | "LOGGING_LEVEL_CONSOLE": 20, 28 | "LOGGING_LEVEL_FILE": 40, 29 | "CONNECTION_TYPE": "Serial", 30 | "SERIAL_PORT": "/dev/ttyUSB0", 31 | "SERIAL_BAUD": 9600, 32 | "IP_CONNECTION_HOST": "127.0.0.1", 33 | "IP_CONNECTION_PORT": 10000, 34 | "IP_CONNECTION_PASSWORD": "paradox", 35 | "KEEP_ALIVE_INTERVAL": 10, 36 | "LIMITS": { 37 | "zone": "auto", 38 | "user": "1-10", 39 | "door": "", 40 | "pgm": "1-5", 41 | "partition": "auto", 42 | "module": "", 43 | "repeater": "", 44 | "keypad": "", 45 | "key-switch": "" 46 | }, 47 | "SYNC_TIME": true, 48 | "SYNC_TIME_MIN_DRIFT": 120, 49 | "PASSWORD": "0000", 50 | "MQTT_ENABLE": true, 51 | "MQTT_HOST": "core-mosquitto", 52 | "MQTT_PORT": 1883, 53 | "MQTT_KEEPALIVE": 60, 54 | "MQTT_USERNAME": "pai", 55 | "MQTT_PASSWORD": "my_very_secure_password", 56 | "MQTT_HOMEASSISTANT_AUTODISCOVERY_ENABLE": true, 57 | "COMMAND_ALIAS": { 58 | "arm": "partition all arm", 59 | "disarm": "partition all disarm" 60 | }, 61 | "MQTT_COMMAND_ALIAS": { 62 | "armed_home": "arm_stay", 63 | "armed_night": "arm_sleep", 64 | "armed_away": "arm", 65 | "disarmed": "disarm" 66 | }, 67 | "HOMEASSISTANT_NOTIFICATIONS_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 68 | "PUSHBULLET_CONTACTS": [], 69 | "PUSHBULLET_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 70 | "PUSHOVER_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 71 | "PUSHOVER_BROADCAST_KEYS": [], 72 | "SIGNAL_CONTACTS": [], 73 | "SIGNAL_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 74 | "GSM_CONTACTS": [], 75 | "GSM_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 76 | "IP_INTERFACE_ENABLE": false, 77 | "IP_INTERFACE_PASSWORD": "paradox", 78 | "DUMMY_EVENT_FILTERS": [] 79 | }, 80 | "schema": { 81 | "LOGGING_LEVEL_CONSOLE": "int", 82 | "LOGGING_LEVEL_FILE": "int", 83 | "LOGGING_FILE": "str?", 84 | "LOGGING_FILE_MAX_SIZE": "int?", 85 | "LOGGING_FILE_MAX_FILES": "int?", 86 | "LOGGING_DUMP_PACKETS": "bool?", 87 | "LOGGING_DUMP_MESSAGES": "bool?", 88 | "LOGGING_DUMP_STATUS": "bool?", 89 | "LOGGING_DUMP_EVENTS": "bool?", 90 | "DEVELOPMENT_DUMP_MEMORY": "bool?", 91 | "CONNECTION_TYPE": "list(Serial|IP)", 92 | "SERIAL_PORT": "str?", 93 | "SERIAL_BAUD": "int(1200,)?", 94 | "IP_CONNECTION_HOST": "str?", 95 | "IP_CONNECTION_PORT": "port?", 96 | "IP_CONNECTION_PASSWORD": "str?", 97 | "IP_CONNECTION_SITEID": "str?", 98 | "IP_CONNECTION_EMAIL": "str?", 99 | "IP_CONNECTION_PANEL_SERIAL": "str?", 100 | "IP_CONNECTION_BARE": "bool?", 101 | "KEEP_ALIVE_INTERVAL": "int?", 102 | "LIMITS": { 103 | "zone": "str?", 104 | "user": "str?", 105 | "door": "str?", 106 | "pgm": "str?", 107 | "partition": "str?", 108 | "module": "str?", 109 | "repeater": "str?", 110 | "keypad": "str?", 111 | "key-switch": "str?" 112 | }, 113 | "LABEL_ENCODING": "str?", 114 | "LABEL_REFRESH_INTERVAL": "int?", 115 | "OUTPUT_PULSE_DURATION": "int?", 116 | "SYNC_TIME": "bool?", 117 | "SYNC_TIME_MIN_DRIFT": "int?", 118 | "PASSWORD": "str?", 119 | "PUSH_UPDATE_WITHOUT_CHANGE": "bool?", 120 | "MQTT_ENABLE": "bool?", 121 | "MQTT_HOST": "str?", 122 | "MQTT_PORT": "port?", 123 | "MQTT_KEEPALIVE": "int?", 124 | "MQTT_USERNAME": "str?", 125 | "MQTT_PASSWORD": "password?", 126 | "MQTT_RETAIN": "bool?", 127 | "MQTT_BIND_ADDRESS": "str?", 128 | "MQTT_BIND_PORT": "port?", 129 | "MQTT_REPUBLISH_INTERVAL": "int?", 130 | "MQTT_PUBLISH_DEFINITIONS": "bool?", 131 | "MQTT_BASE_TOPIC": "str?", 132 | "MQTT_ZONE_TOPIC": "str?", 133 | "MQTT_PARTITION_TOPIC": "str?", 134 | "MQTT_BUS_TOPIC": "str?", 135 | "MQTT_MODULE_TOPIC": "str?", 136 | "MQTT_SYSTEM_TOPIC": "str?", 137 | "MQTT_REPEATER_TOPIC": "str?", 138 | "MQTT_USER_TOPIC": "str?", 139 | "MQTT_EVENTS_TOPIC": "str?", 140 | "MQTT_CONTROL_TOPIC": "str?", 141 | "MQTT_DEFINITIONS_TOPIC": "str?", 142 | "MQTT_HOMEASSISTANT_DISCOVERY_PREFIX": "str?", 143 | "MQTT_OUTPUT_TOPIC": "str?", 144 | "MQTT_DOOR_TOPIC": "str?", 145 | "MQTT_KEYPAD_TOPIC": "str?", 146 | "MQTT_STATES_TOPIC": "str?", 147 | "MQTT_RAW_TOPIC": "str?", 148 | "MQTT_NOTIFICATIONS_TOPIC": "str?", 149 | "MQTT_SEND_PANIC_TOPIC": "str?", 150 | "MQTT_PUBLISH_RAW_EVENTS": "bool?", 151 | "MQTT_INTERFACE_TOPIC": "str?", 152 | "MQTT_USE_NUMERIC_STATES": "bool?", 153 | "MQTT_PUBLISH_COMMAND_STATUS": "bool?", 154 | "MQTT_COMMAND_STATUS_TOPIC": "str?", 155 | "MQTT_HOMEASSISTANT_AUTODISCOVERY_ENABLE": "bool?", 156 | "MQTT_DASH_PUBLISH": "bool?", 157 | "MQTT_DASH_TOPIC": "str?", 158 | "MQTT_DASH_TEMPLATE": "str?", 159 | "COMMAND_ALIAS": { 160 | "arm": "str?", 161 | "disarm": "str?" 162 | }, 163 | "MQTT_COMMAND_ALIAS": { 164 | "armed_home": "str?", 165 | "armed_night": "str?", 166 | "armed_away": "str?", 167 | "disarmed": "str?" 168 | }, 169 | "HOMEASSISTANT_NOTIFICATIONS_ENABLE": "bool?", 170 | "HOMEASSISTANT_NOTIFICATIONS_NOTIFIER_NAME": "str?", 171 | "HOMEASSISTANT_NOTIFICATIONS_MIN_EVENT_LEVEL": "str?", 172 | "HOMEASSISTANT_NOTIFICATIONS_EVENT_FILTERS": ["str?"], 173 | "PUSHBULLET_ENABLE": "bool?", 174 | "PUSHBULLET_KEY": "str?", 175 | "PUSHBULLET_CONTACTS": ["str?"], 176 | "PUSHBULLET_MIN_EVENT_LEVEL": "str?", 177 | "PUSHBULLET_EVENT_FILTERS": ["str?"], 178 | "PUSHOVER_ENABLE": "bool?", 179 | "PUSHOVER_KEY": "str?", 180 | "PUSHOVER_MIN_EVENT_LEVEL": "str?", 181 | "PUSHOVER_EVENT_FILTERS": ["str?"], 182 | "PUSHOVER_BROADCAST_KEYS": [ 183 | { 184 | "user_key": "str?", 185 | "devices": "str?" 186 | } 187 | ], 188 | "SIGNAL_ENABLE": "bool?", 189 | "SIGNAL_CONTACTS": ["str?"], 190 | "SIGNAL_MIN_EVENT_LEVEL": "str?", 191 | "SIGNAL_EVENT_FILTERS": ["str?"], 192 | "GSM_ENABLE": "bool?", 193 | "GSM_MODEM_BAUDRATE": "int(1200,)?", 194 | "GSM_MODEM_PORT": "str?", 195 | "GSM_CONTACTS": ["str?"], 196 | "GSM_MIN_EVENT_LEVEL": "str?", 197 | "GSM_EVENT_FILTERS": ["str?"], 198 | "IP_INTERFACE_ENABLE": "bool?", 199 | "IP_INTERFACE_PASSWORD": "password?", 200 | "DUMMY_INTERFACE_ENABLE": "bool?", 201 | "DUMMY_MIN_EVENT_LEVEL": "str?", 202 | "DUMMY_EVENT_FILTERS": ["str?"] 203 | } 204 | } 205 | -------------------------------------------------------------------------------- /paradox_alarm_interface_2/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Paradox Alarm Interface (Second Instance, deprecated)", 3 | "version": "2.7.1", 4 | "image": "paradoxalarminterface/pai", 5 | "stage": "deprecated", 6 | "slug": "paradox_alarm_interface_2", 7 | "description": "Second instance. Supports SP/MG/EVO, Serial and IP150 connections.", 8 | "uart": true, 9 | "url": "https://github.com/ParadoxAlarmInterface/pai", 10 | "arch": ["armhf", "armv7", "aarch64", "amd64", "i386"], 11 | "startup": "application", 12 | "boot": "auto", 13 | "services": ["mqtt:need"], 14 | "map": [ 15 | "config" 16 | ], 17 | "environment": { 18 | "PAI_CONFIG_FILE": "/data/options.json" 19 | }, 20 | "ports": { 21 | "10000/tcp": 10000 22 | }, 23 | "ports_description": { 24 | "10000/tcp": "For IP connection from Babyware" 25 | }, 26 | "options": { 27 | "LOGGING_LEVEL_CONSOLE": 20, 28 | "LOGGING_LEVEL_FILE": 40, 29 | "CONNECTION_TYPE": "Serial", 30 | "SERIAL_PORT": "/dev/ttyUSB0", 31 | "SERIAL_BAUD": 9600, 32 | "IP_CONNECTION_HOST": "127.0.0.1", 33 | "IP_CONNECTION_PORT": 10000, 34 | "IP_CONNECTION_PASSWORD": "paradox", 35 | "KEEP_ALIVE_INTERVAL": 10, 36 | "LIMITS": { 37 | "zone": "auto", 38 | "user": "1-10", 39 | "door": "", 40 | "pgm": "1-5", 41 | "partition": "auto", 42 | "module": "", 43 | "repeater": "", 44 | "keypad": "", 45 | "key-switch": "" 46 | }, 47 | "SYNC_TIME": true, 48 | "SYNC_TIME_MIN_DRIFT": 120, 49 | "PASSWORD": "0000", 50 | "MQTT_ENABLE": true, 51 | "MQTT_HOST": "core-mosquitto", 52 | "MQTT_PORT": 1883, 53 | "MQTT_KEEPALIVE": 60, 54 | "MQTT_USERNAME": "pai", 55 | "MQTT_PASSWORD": "my_very_secure_password", 56 | "MQTT_HOMEASSISTANT_AUTODISCOVERY_ENABLE": true, 57 | "COMMAND_ALIAS": { 58 | "arm": "partition all arm", 59 | "disarm": "partition all disarm" 60 | }, 61 | "MQTT_COMMAND_ALIAS": { 62 | "armed_home": "arm_stay", 63 | "armed_night": "arm_sleep", 64 | "armed_away": "arm", 65 | "disarmed": "disarm" 66 | }, 67 | "HOMEASSISTANT_NOTIFICATIONS_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 68 | "PUSHBULLET_CONTACTS": [], 69 | "PUSHBULLET_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 70 | "PUSHOVER_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 71 | "PUSHOVER_BROADCAST_KEYS": [], 72 | "SIGNAL_CONTACTS": [], 73 | "SIGNAL_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 74 | "GSM_CONTACTS": [], 75 | "GSM_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 76 | "IP_INTERFACE_ENABLE": false, 77 | "IP_INTERFACE_PASSWORD": "paradox", 78 | "DUMMY_EVENT_FILTERS": [] 79 | }, 80 | "schema": { 81 | "LOGGING_LEVEL_CONSOLE": "int", 82 | "LOGGING_LEVEL_FILE": "int", 83 | "LOGGING_FILE": "str?", 84 | "LOGGING_FILE_MAX_SIZE": "int?", 85 | "LOGGING_FILE_MAX_FILES": "int?", 86 | "LOGGING_DUMP_PACKETS": "bool?", 87 | "LOGGING_DUMP_MESSAGES": "bool?", 88 | "LOGGING_DUMP_STATUS": "bool?", 89 | "LOGGING_DUMP_EVENTS": "bool?", 90 | "DEVELOPMENT_DUMP_MEMORY": "bool?", 91 | "CONNECTION_TYPE": "list(Serial|IP)", 92 | "SERIAL_PORT": "str?", 93 | "SERIAL_BAUD": "int(1200,)?", 94 | "IP_CONNECTION_HOST": "str?", 95 | "IP_CONNECTION_PORT": "port?", 96 | "IP_CONNECTION_PASSWORD": "str?", 97 | "IP_CONNECTION_SITEID": "str?", 98 | "IP_CONNECTION_EMAIL": "str?", 99 | "IP_CONNECTION_PANEL_SERIAL": "str?", 100 | "IP_CONNECTION_BARE": "bool?", 101 | "KEEP_ALIVE_INTERVAL": "int?", 102 | "LIMITS": { 103 | "zone": "str?", 104 | "user": "str?", 105 | "door": "str?", 106 | "pgm": "str?", 107 | "partition": "str?", 108 | "module": "str?", 109 | "repeater": "str?", 110 | "keypad": "str?", 111 | "key-switch": "str?" 112 | }, 113 | "LABEL_ENCODING": "str?", 114 | "LABEL_REFRESH_INTERVAL": "int?", 115 | "OUTPUT_PULSE_DURATION": "int?", 116 | "SYNC_TIME": "bool?", 117 | "SYNC_TIME_MIN_DRIFT": "int?", 118 | "PASSWORD": "str?", 119 | "PUSH_UPDATE_WITHOUT_CHANGE": "bool?", 120 | "MQTT_ENABLE": "bool?", 121 | "MQTT_HOST": "str?", 122 | "MQTT_PORT": "port?", 123 | "MQTT_KEEPALIVE": "int?", 124 | "MQTT_USERNAME": "str?", 125 | "MQTT_PASSWORD": "password?", 126 | "MQTT_RETAIN": "bool?", 127 | "MQTT_BIND_ADDRESS": "str?", 128 | "MQTT_BIND_PORT": "port?", 129 | "MQTT_REPUBLISH_INTERVAL": "int?", 130 | "MQTT_PUBLISH_DEFINITIONS": "bool?", 131 | "MQTT_BASE_TOPIC": "str?", 132 | "MQTT_ZONE_TOPIC": "str?", 133 | "MQTT_PARTITION_TOPIC": "str?", 134 | "MQTT_BUS_TOPIC": "str?", 135 | "MQTT_MODULE_TOPIC": "str?", 136 | "MQTT_SYSTEM_TOPIC": "str?", 137 | "MQTT_REPEATER_TOPIC": "str?", 138 | "MQTT_USER_TOPIC": "str?", 139 | "MQTT_EVENTS_TOPIC": "str?", 140 | "MQTT_CONTROL_TOPIC": "str?", 141 | "MQTT_DEFINITIONS_TOPIC": "str?", 142 | "MQTT_HOMEASSISTANT_DISCOVERY_PREFIX": "str?", 143 | "MQTT_OUTPUT_TOPIC": "str?", 144 | "MQTT_DOOR_TOPIC": "str?", 145 | "MQTT_KEYPAD_TOPIC": "str?", 146 | "MQTT_STATES_TOPIC": "str?", 147 | "MQTT_RAW_TOPIC": "str?", 148 | "MQTT_NOTIFICATIONS_TOPIC": "str?", 149 | "MQTT_SEND_PANIC_TOPIC": "str?", 150 | "MQTT_PUBLISH_RAW_EVENTS": "bool?", 151 | "MQTT_INTERFACE_TOPIC": "str?", 152 | "MQTT_USE_NUMERIC_STATES": "bool?", 153 | "MQTT_PUBLISH_COMMAND_STATUS": "bool?", 154 | "MQTT_COMMAND_STATUS_TOPIC": "str?", 155 | "MQTT_HOMEASSISTANT_AUTODISCOVERY_ENABLE": "bool?", 156 | "MQTT_DASH_PUBLISH": "bool?", 157 | "MQTT_DASH_TOPIC": "str?", 158 | "MQTT_DASH_TEMPLATE": "str?", 159 | "COMMAND_ALIAS": { 160 | "arm": "str?", 161 | "disarm": "str?" 162 | }, 163 | "MQTT_COMMAND_ALIAS": { 164 | "armed_home": "str?", 165 | "armed_night": "str?", 166 | "armed_away": "str?", 167 | "disarmed": "str?" 168 | }, 169 | "HOMEASSISTANT_NOTIFICATIONS_ENABLE": "bool?", 170 | "HOMEASSISTANT_NOTIFICATIONS_NOTIFIER_NAME": "str?", 171 | "HOMEASSISTANT_NOTIFICATIONS_MIN_EVENT_LEVEL": "str?", 172 | "HOMEASSISTANT_NOTIFICATIONS_EVENT_FILTERS": ["str?"], 173 | "PUSHBULLET_ENABLE": "bool?", 174 | "PUSHBULLET_KEY": "str?", 175 | "PUSHBULLET_CONTACTS": ["str?"], 176 | "PUSHBULLET_MIN_EVENT_LEVEL": "str?", 177 | "PUSHBULLET_EVENT_FILTERS": ["str?"], 178 | "PUSHOVER_ENABLE": "bool?", 179 | "PUSHOVER_KEY": "str?", 180 | "PUSHOVER_MIN_EVENT_LEVEL": "str?", 181 | "PUSHOVER_EVENT_FILTERS": ["str?"], 182 | "PUSHOVER_BROADCAST_KEYS": [ 183 | { 184 | "user_key": "str?", 185 | "devices": "str?" 186 | } 187 | ], 188 | "SIGNAL_ENABLE": "bool?", 189 | "SIGNAL_CONTACTS": ["str?"], 190 | "SIGNAL_MIN_EVENT_LEVEL": "str?", 191 | "SIGNAL_EVENT_FILTERS": ["str?"], 192 | "GSM_ENABLE": "bool?", 193 | "GSM_MODEM_BAUDRATE": "int(1200,)?", 194 | "GSM_MODEM_PORT": "str?", 195 | "GSM_CONTACTS": ["str?"], 196 | "GSM_MIN_EVENT_LEVEL": "str?", 197 | "GSM_EVENT_FILTERS": ["str?"], 198 | "IP_INTERFACE_ENABLE": "bool?", 199 | "IP_INTERFACE_PASSWORD": "password?", 200 | "DUMMY_INTERFACE_ENABLE": "bool?", 201 | "DUMMY_MIN_EVENT_LEVEL": "str?", 202 | "DUMMY_EVENT_FILTERS": ["str?"] 203 | } 204 | } 205 | -------------------------------------------------------------------------------- /paradox_alarm_interface_3.x/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Paradox Alarm Interface", 3 | "version": "3.7.0", 4 | "image": "paradoxalarminterface/pai", 5 | "slug": "paradox_alarm_interface_3.x", 6 | "description": "Supports SP/MG/EVO, Serial and IP150 connections.", 7 | "uart": true, 8 | "url": "https://github.com/ParadoxAlarmInterface/pai", 9 | "arch": ["armhf", "armv7", "aarch64", "amd64", "i386"], 10 | "startup": "application", 11 | "boot": "auto", 12 | "homeassistant_api": true, 13 | "services": ["mqtt:need"], 14 | "map": [ 15 | "config" 16 | ], 17 | "environment": { 18 | "PAI_CONFIG_FILE": "/data/options.json" 19 | }, 20 | "ports": { 21 | "10000/tcp": 10000 22 | }, 23 | "ports_description": { 24 | "10000/tcp": "For IP connection from Babyware" 25 | }, 26 | "options": { 27 | "LOGGING_LEVEL_CONSOLE": 20, 28 | "LOGGING_LEVEL_FILE": 40, 29 | "CONNECTION_TYPE": "Serial", 30 | "SERIAL_PORT": "/dev/ttyUSB0", 31 | "SERIAL_BAUD": 9600, 32 | "IP_CONNECTION_HOST": "127.0.0.1", 33 | "IP_CONNECTION_PORT": 10000, 34 | "IP_CONNECTION_PASSWORD": "paradox", 35 | "KEEP_ALIVE_INTERVAL": 10, 36 | "IO_TIMEOUT": 0.5, 37 | "LIMITS": { 38 | "zone": "auto", 39 | "user": "1-10", 40 | "door": "", 41 | "pgm": "1-5", 42 | "partition": "auto", 43 | "module": "", 44 | "repeater": "", 45 | "keypad": "", 46 | "key-switch": "" 47 | }, 48 | "SYNC_TIME": true, 49 | "SYNC_TIME_MIN_DRIFT": 120, 50 | "PASSWORD": "0000", 51 | "MQTT_ENABLE": true, 52 | "MQTT_HOST": "core-mosquitto", 53 | "MQTT_PORT": 1883, 54 | "MQTT_KEEPALIVE": 60, 55 | "MQTT_USERNAME": "pai", 56 | "MQTT_PASSWORD": "my_very_secure_password", 57 | "MQTT_HOMEASSISTANT_AUTODISCOVERY_ENABLE": true, 58 | "MQTT_BASE_TOPIC": "paradox", 59 | "COMMAND_ALIAS": { 60 | "arm": "partition all arm", 61 | "disarm": "partition all disarm" 62 | }, 63 | "MQTT_COMMAND_ALIAS": { 64 | "armed_home": "arm_stay", 65 | "armed_night": "arm_sleep", 66 | "armed_away": "arm", 67 | "disarmed": "disarm" 68 | }, 69 | "HOMEASSISTANT_NOTIFICATIONS_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 70 | "HOMEASSISTANT_PUBLISH_PARTITION_PROPERTIES": ["target_state", "current_state"], 71 | "HOMEASSISTANT_PUBLISH_ZONE_PROPERTIES": ["open", "tamper"], 72 | "PUSHBULLET_CONTACTS": [], 73 | "PUSHBULLET_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 74 | "PUSHOVER_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 75 | "PUSHOVER_BROADCAST_KEYS": [], 76 | "SIGNAL_CONTACTS": [], 77 | "SIGNAL_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 78 | "GSM_CONTACTS": [], 79 | "GSM_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 80 | "IP_INTERFACE_ENABLE": false, 81 | "IP_INTERFACE_PASSWORD": "paradox", 82 | "DUMMY_EVENT_FILTERS": [] 83 | }, 84 | "schema": { 85 | "LOGGING_LEVEL_CONSOLE": "int", 86 | "LOGGING_LEVEL_FILE": "int", 87 | "LOGGING_FILE": "str?", 88 | "LOGGING_FILE_MAX_SIZE": "int?", 89 | "LOGGING_FILE_MAX_FILES": "int?", 90 | "LOGGING_DUMP_PACKETS": "bool?", 91 | "LOGGING_DUMP_MESSAGES": "bool?", 92 | "LOGGING_DUMP_STATUS": "bool?", 93 | "LOGGING_DUMP_EVENTS": "bool?", 94 | "DEVELOPMENT_DUMP_MEMORY": "bool?", 95 | "CONNECTION_TYPE": "list(Serial|IP)", 96 | "SERIAL_PORT": "str?", 97 | "SERIAL_BAUD": "int(1200,)?", 98 | "IP_CONNECTION_HOST": "str?", 99 | "IP_CONNECTION_PORT": "port?", 100 | "IP_CONNECTION_PASSWORD": "str?", 101 | "IP_CONNECTION_SITEID": "str?", 102 | "IP_CONNECTION_EMAIL": "str?", 103 | "IP_CONNECTION_PANEL_SERIAL": "str?", 104 | "IP_CONNECTION_BARE": "bool?", 105 | "KEEP_ALIVE_INTERVAL": "int?", 106 | "IO_TIMEOUT": "float?", 107 | "LIMITS": { 108 | "zone": "str?", 109 | "user": "str?", 110 | "door": "str?", 111 | "pgm": "str?", 112 | "partition": "str?", 113 | "module": "str?", 114 | "repeater": "str?", 115 | "keypad": "str?", 116 | "key-switch": "str?" 117 | }, 118 | "LABEL_ENCODING": "str?", 119 | "LABEL_REFRESH_INTERVAL": "int?", 120 | "OUTPUT_PULSE_DURATION": "int?", 121 | "SYNC_TIME": "bool?", 122 | "SYNC_TIME_MIN_DRIFT": "int?", 123 | "PASSWORD": "str?", 124 | "PUSH_UPDATE_WITHOUT_CHANGE": "bool?", 125 | "MQTT_ENABLE": "bool?", 126 | "MQTT_HOST": "str?", 127 | "MQTT_PORT": "port?", 128 | "MQTT_KEEPALIVE": "int?", 129 | "MQTT_USERNAME": "str?", 130 | "MQTT_PASSWORD": "password?", 131 | "MQTT_RETAIN": "bool?", 132 | "MQTT_BIND_ADDRESS": "str?", 133 | "MQTT_BIND_PORT": "port?", 134 | "MQTT_REPUBLISH_INTERVAL": "int?", 135 | "MQTT_PUBLISH_DEFINITIONS": "bool?", 136 | "MQTT_BASE_TOPIC": "str?", 137 | "MQTT_ZONE_TOPIC": "str?", 138 | "MQTT_PARTITION_TOPIC": "str?", 139 | "MQTT_BUS_TOPIC": "str?", 140 | "MQTT_MODULE_TOPIC": "str?", 141 | "MQTT_SYSTEM_TOPIC": "str?", 142 | "MQTT_REPEATER_TOPIC": "str?", 143 | "MQTT_USER_TOPIC": "str?", 144 | "MQTT_EVENTS_TOPIC": "str?", 145 | "MQTT_CONTROL_TOPIC": "str?", 146 | "MQTT_DEFINITIONS_TOPIC": "str?", 147 | "MQTT_HOMEASSISTANT_DISCOVERY_PREFIX": "str?", 148 | "MQTT_OUTPUT_TOPIC": "str?", 149 | "MQTT_DOOR_TOPIC": "str?", 150 | "MQTT_KEYPAD_TOPIC": "str?", 151 | "MQTT_STATES_TOPIC": "str?", 152 | "MQTT_RAW_TOPIC": "str?", 153 | "MQTT_NOTIFICATIONS_TOPIC": "str?", 154 | "MQTT_SEND_PANIC_TOPIC": "str?", 155 | "MQTT_PUBLISH_RAW_EVENTS": "bool?", 156 | "MQTT_INTERFACE_TOPIC": "str?", 157 | "MQTT_USE_NUMERIC_STATES": "bool?", 158 | "MQTT_PUBLISH_COMMAND_STATUS": "bool?", 159 | "MQTT_COMMAND_STATUS_TOPIC": "str?", 160 | "MQTT_HOMEASSISTANT_AUTODISCOVERY_ENABLE": "bool?", 161 | "MQTT_HOMEASSISTANT_CODE": "str?", 162 | "MQTT_DASH_PUBLISH": "bool?", 163 | "MQTT_DASH_TOPIC": "str?", 164 | "MQTT_DASH_TEMPLATE": "str?", 165 | "COMMAND_ALIAS": { 166 | "arm": "str?", 167 | "disarm": "str?" 168 | }, 169 | "MQTT_COMMAND_ALIAS": { 170 | "armed_home": "str?", 171 | "armed_night": "str?", 172 | "armed_away": "str?", 173 | "disarmed": "str?" 174 | }, 175 | "HOMEASSISTANT_NOTIFICATIONS_ENABLE": "bool?", 176 | "HOMEASSISTANT_NOTIFICATIONS_LOVELACE_URI": "str?", 177 | "HOMEASSISTANT_NOTIFICATIONS_NOTIFIER_NAME": "str?", 178 | "HOMEASSISTANT_NOTIFICATIONS_MIN_EVENT_LEVEL": "str?", 179 | "HOMEASSISTANT_NOTIFICATIONS_EVENT_FILTERS": ["str?"], 180 | "HOMEASSISTANT_PUBLISH_PARTITION_PROPERTIES": ["str?"], 181 | "HOMEASSISTANT_PUBLISH_ZONE_PROPERTIES": ["str?"], 182 | "PUSHBULLET_ENABLE": "bool?", 183 | "PUSHBULLET_KEY": "str?", 184 | "PUSHBULLET_CONTACTS": ["str?"], 185 | "PUSHBULLET_MIN_EVENT_LEVEL": "str?", 186 | "PUSHBULLET_EVENT_FILTERS": ["str?"], 187 | "PUSHOVER_ENABLE": "bool?", 188 | "PUSHOVER_KEY": "str?", 189 | "PUSHOVER_MIN_EVENT_LEVEL": "str?", 190 | "PUSHOVER_EVENT_FILTERS": ["str?"], 191 | "PUSHOVER_BROADCAST_KEYS": [ 192 | { 193 | "user_key": "str?", 194 | "devices": "str?" 195 | } 196 | ], 197 | "SIGNAL_ENABLE": "bool?", 198 | "SIGNAL_CONTACTS": ["str?"], 199 | "SIGNAL_MIN_EVENT_LEVEL": "str?", 200 | "SIGNAL_EVENT_FILTERS": ["str?"], 201 | "GSM_ENABLE": "bool?", 202 | "GSM_MODEM_BAUDRATE": "int(1200,)?", 203 | "GSM_MODEM_PORT": "str?", 204 | "GSM_CONTACTS": ["str?"], 205 | "GSM_MIN_EVENT_LEVEL": "str?", 206 | "GSM_EVENT_FILTERS": ["str?"], 207 | "IP_INTERFACE_ENABLE": "bool?", 208 | "IP_INTERFACE_PASSWORD": "password?", 209 | "DUMMY_INTERFACE_ENABLE": "bool?", 210 | "DUMMY_MIN_EVENT_LEVEL": "str?", 211 | "DUMMY_EVENT_FILTERS": ["str?"] 212 | } 213 | } 214 | -------------------------------------------------------------------------------- /paradox_alarm_interface_3.x_second/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Paradox Alarm Interface (Second Instance)", 3 | "version": "3.7.0", 4 | "image": "paradoxalarminterface/pai", 5 | "slug": "paradox_alarm_interface_3.x_second", 6 | "description": "Second instance. Supports SP/MG/EVO, Serial and IP150 connections.", 7 | "uart": true, 8 | "url": "https://github.com/ParadoxAlarmInterface/pai", 9 | "arch": ["armhf", "armv7", "aarch64", "amd64", "i386"], 10 | "startup": "application", 11 | "boot": "auto", 12 | "homeassistant_api": true, 13 | "services": ["mqtt:need"], 14 | "map": [ 15 | "config" 16 | ], 17 | "environment": { 18 | "PAI_CONFIG_FILE": "/data/options.json" 19 | }, 20 | "ports": { 21 | "10000/tcp": 10000 22 | }, 23 | "ports_description": { 24 | "10000/tcp": "For IP connection from Babyware" 25 | }, 26 | "options": { 27 | "LOGGING_LEVEL_CONSOLE": 20, 28 | "LOGGING_LEVEL_FILE": 40, 29 | "CONNECTION_TYPE": "Serial", 30 | "SERIAL_PORT": "/dev/ttyUSB0", 31 | "SERIAL_BAUD": 9600, 32 | "IP_CONNECTION_HOST": "127.0.0.1", 33 | "IP_CONNECTION_PORT": 10000, 34 | "IP_CONNECTION_PASSWORD": "paradox", 35 | "KEEP_ALIVE_INTERVAL": 10, 36 | "IO_TIMEOUT": 0.5, 37 | "LIMITS": { 38 | "zone": "auto", 39 | "user": "1-10", 40 | "door": "", 41 | "pgm": "1-5", 42 | "partition": "auto", 43 | "module": "", 44 | "repeater": "", 45 | "keypad": "", 46 | "key-switch": "" 47 | }, 48 | "SYNC_TIME": true, 49 | "SYNC_TIME_MIN_DRIFT": 120, 50 | "PASSWORD": "0000", 51 | "MQTT_ENABLE": true, 52 | "MQTT_HOST": "core-mosquitto", 53 | "MQTT_PORT": 1883, 54 | "MQTT_KEEPALIVE": 60, 55 | "MQTT_USERNAME": "pai", 56 | "MQTT_PASSWORD": "my_very_secure_password", 57 | "MQTT_HOMEASSISTANT_AUTODISCOVERY_ENABLE": true, 58 | "MQTT_BASE_TOPIC": "paradox2", 59 | "COMMAND_ALIAS": { 60 | "arm": "partition all arm", 61 | "disarm": "partition all disarm" 62 | }, 63 | "MQTT_COMMAND_ALIAS": { 64 | "armed_home": "arm_stay", 65 | "armed_night": "arm_sleep", 66 | "armed_away": "arm", 67 | "disarmed": "disarm" 68 | }, 69 | "HOMEASSISTANT_NOTIFICATIONS_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 70 | "HOMEASSISTANT_PUBLISH_PARTITION_PROPERTIES": ["target_state", "current_state"], 71 | "HOMEASSISTANT_PUBLISH_ZONE_PROPERTIES": ["open", "tamper"], 72 | "PUSHBULLET_CONTACTS": [], 73 | "PUSHBULLET_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 74 | "PUSHOVER_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 75 | "PUSHOVER_BROADCAST_KEYS": [], 76 | "SIGNAL_CONTACTS": [], 77 | "SIGNAL_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 78 | "GSM_CONTACTS": [], 79 | "GSM_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 80 | "IP_INTERFACE_ENABLE": false, 81 | "IP_INTERFACE_PASSWORD": "paradox", 82 | "DUMMY_EVENT_FILTERS": [] 83 | }, 84 | "schema": { 85 | "LOGGING_LEVEL_CONSOLE": "int", 86 | "LOGGING_LEVEL_FILE": "int", 87 | "LOGGING_FILE": "str?", 88 | "LOGGING_FILE_MAX_SIZE": "int?", 89 | "LOGGING_FILE_MAX_FILES": "int?", 90 | "LOGGING_DUMP_PACKETS": "bool?", 91 | "LOGGING_DUMP_MESSAGES": "bool?", 92 | "LOGGING_DUMP_STATUS": "bool?", 93 | "LOGGING_DUMP_EVENTS": "bool?", 94 | "DEVELOPMENT_DUMP_MEMORY": "bool?", 95 | "CONNECTION_TYPE": "list(Serial|IP)", 96 | "SERIAL_PORT": "str?", 97 | "SERIAL_BAUD": "int(1200,)?", 98 | "IP_CONNECTION_HOST": "str?", 99 | "IP_CONNECTION_PORT": "port?", 100 | "IP_CONNECTION_PASSWORD": "str?", 101 | "IP_CONNECTION_SITEID": "str?", 102 | "IP_CONNECTION_EMAIL": "str?", 103 | "IP_CONNECTION_PANEL_SERIAL": "str?", 104 | "IP_CONNECTION_BARE": "bool?", 105 | "KEEP_ALIVE_INTERVAL": "int?", 106 | "IO_TIMEOUT": "float?", 107 | "LIMITS": { 108 | "zone": "str?", 109 | "user": "str?", 110 | "door": "str?", 111 | "pgm": "str?", 112 | "partition": "str?", 113 | "module": "str?", 114 | "repeater": "str?", 115 | "keypad": "str?", 116 | "key-switch": "str?" 117 | }, 118 | "LABEL_ENCODING": "str?", 119 | "LABEL_REFRESH_INTERVAL": "int?", 120 | "OUTPUT_PULSE_DURATION": "int?", 121 | "SYNC_TIME": "bool?", 122 | "SYNC_TIME_MIN_DRIFT": "int?", 123 | "PASSWORD": "str?", 124 | "PUSH_UPDATE_WITHOUT_CHANGE": "bool?", 125 | "MQTT_ENABLE": "bool?", 126 | "MQTT_HOST": "str?", 127 | "MQTT_PORT": "port?", 128 | "MQTT_KEEPALIVE": "int?", 129 | "MQTT_USERNAME": "str?", 130 | "MQTT_PASSWORD": "password?", 131 | "MQTT_RETAIN": "bool?", 132 | "MQTT_BIND_ADDRESS": "str?", 133 | "MQTT_BIND_PORT": "port?", 134 | "MQTT_REPUBLISH_INTERVAL": "int?", 135 | "MQTT_PUBLISH_DEFINITIONS": "bool?", 136 | "MQTT_BASE_TOPIC": "str?", 137 | "MQTT_ZONE_TOPIC": "str?", 138 | "MQTT_PARTITION_TOPIC": "str?", 139 | "MQTT_BUS_TOPIC": "str?", 140 | "MQTT_MODULE_TOPIC": "str?", 141 | "MQTT_SYSTEM_TOPIC": "str?", 142 | "MQTT_REPEATER_TOPIC": "str?", 143 | "MQTT_USER_TOPIC": "str?", 144 | "MQTT_EVENTS_TOPIC": "str?", 145 | "MQTT_CONTROL_TOPIC": "str?", 146 | "MQTT_DEFINITIONS_TOPIC": "str?", 147 | "MQTT_HOMEASSISTANT_DISCOVERY_PREFIX": "str?", 148 | "MQTT_HOMEASSISTANT_CODE": "str?", 149 | "MQTT_OUTPUT_TOPIC": "str?", 150 | "MQTT_DOOR_TOPIC": "str?", 151 | "MQTT_KEYPAD_TOPIC": "str?", 152 | "MQTT_STATES_TOPIC": "str?", 153 | "MQTT_RAW_TOPIC": "str?", 154 | "MQTT_NOTIFICATIONS_TOPIC": "str?", 155 | "MQTT_SEND_PANIC_TOPIC": "str?", 156 | "MQTT_PUBLISH_RAW_EVENTS": "bool?", 157 | "MQTT_INTERFACE_TOPIC": "str?", 158 | "MQTT_USE_NUMERIC_STATES": "bool?", 159 | "MQTT_PUBLISH_COMMAND_STATUS": "bool?", 160 | "MQTT_COMMAND_STATUS_TOPIC": "str?", 161 | "MQTT_HOMEASSISTANT_AUTODISCOVERY_ENABLE": "bool?", 162 | "MQTT_DASH_PUBLISH": "bool?", 163 | "MQTT_DASH_TOPIC": "str?", 164 | "MQTT_DASH_TEMPLATE": "str?", 165 | "COMMAND_ALIAS": { 166 | "arm": "str?", 167 | "disarm": "str?" 168 | }, 169 | "MQTT_COMMAND_ALIAS": { 170 | "armed_home": "str?", 171 | "armed_night": "str?", 172 | "armed_away": "str?", 173 | "disarmed": "str?" 174 | }, 175 | "HOMEASSISTANT_NOTIFICATIONS_ENABLE": "bool?", 176 | "HOMEASSISTANT_NOTIFICATIONS_LOVELACE_URI": "str?", 177 | "HOMEASSISTANT_NOTIFICATIONS_NOTIFIER_NAME": "str?", 178 | "HOMEASSISTANT_NOTIFICATIONS_MIN_EVENT_LEVEL": "str?", 179 | "HOMEASSISTANT_NOTIFICATIONS_EVENT_FILTERS": ["str?"], 180 | "HOMEASSISTANT_PUBLISH_PARTITION_PROPERTIES": ["str?"], 181 | "HOMEASSISTANT_PUBLISH_ZONE_PROPERTIES": ["str?"], 182 | "PUSHBULLET_ENABLE": "bool?", 183 | "PUSHBULLET_KEY": "str?", 184 | "PUSHBULLET_CONTACTS": ["str?"], 185 | "PUSHBULLET_MIN_EVENT_LEVEL": "str?", 186 | "PUSHBULLET_EVENT_FILTERS": ["str?"], 187 | "PUSHOVER_ENABLE": "bool?", 188 | "PUSHOVER_KEY": "str?", 189 | "PUSHOVER_MIN_EVENT_LEVEL": "str?", 190 | "PUSHOVER_EVENT_FILTERS": ["str?"], 191 | "PUSHOVER_BROADCAST_KEYS": [ 192 | { 193 | "user_key": "str?", 194 | "devices": "str?" 195 | } 196 | ], 197 | "SIGNAL_ENABLE": "bool?", 198 | "SIGNAL_CONTACTS": ["str?"], 199 | "SIGNAL_MIN_EVENT_LEVEL": "str?", 200 | "SIGNAL_EVENT_FILTERS": ["str?"], 201 | "GSM_ENABLE": "bool?", 202 | "GSM_MODEM_BAUDRATE": "int(1200,)?", 203 | "GSM_MODEM_PORT": "str?", 204 | "GSM_CONTACTS": ["str?"], 205 | "GSM_MIN_EVENT_LEVEL": "str?", 206 | "GSM_EVENT_FILTERS": ["str?"], 207 | "IP_INTERFACE_ENABLE": "bool?", 208 | "IP_INTERFACE_PASSWORD": "password?", 209 | "DUMMY_INTERFACE_ENABLE": "bool?", 210 | "DUMMY_MIN_EVENT_LEVEL": "str?", 211 | "DUMMY_EVENT_FILTERS": ["str?"] 212 | } 213 | } 214 | -------------------------------------------------------------------------------- /paradox_alarm_interface_dev/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Paradox Alarm Interface (Development version)", 3 | "version": "dev", 4 | "image": "paradoxalarminterface/pai", 5 | "stage": "experimental", 6 | "slug": "paradox_alarm_interface_dev", 7 | "description": "Warning. Breaking changes. Clear MQTT before upgrading from deprecated version. Supports SP/MG/EVO, Serial and IP150 connections.", 8 | "uart": true, 9 | "url": "https://github.com/ParadoxAlarmInterface/pai/tree/dev", 10 | "arch": ["armhf", "armv7", "aarch64", "amd64", "i386"], 11 | "startup": "application", 12 | "boot": "auto", 13 | "homeassistant_api": true, 14 | "services": ["mqtt:need"], 15 | "map": [ 16 | "config" 17 | ], 18 | "environment": { 19 | "PAI_CONFIG_FILE": "/data/options.json" 20 | }, 21 | "ports": { 22 | "10000/tcp": 10000 23 | }, 24 | "ports_description": { 25 | "10000/tcp": "For IP connection from Babyware" 26 | }, 27 | "options": { 28 | "LOGGING_LEVEL_CONSOLE": 20, 29 | "LOGGING_LEVEL_FILE": 40, 30 | "CONNECTION_TYPE": "Serial", 31 | "SERIAL_PORT": "/dev/ttyUSB0", 32 | "SERIAL_BAUD": 9600, 33 | "IP_CONNECTION_HOST": "127.0.0.1", 34 | "IP_CONNECTION_PORT": 10000, 35 | "IP_CONNECTION_PASSWORD": "paradox", 36 | "KEEP_ALIVE_INTERVAL": 10, 37 | "IO_TIMEOUT": 0.5, 38 | "LIMITS": { 39 | "zone": "auto", 40 | "user": "1-10", 41 | "door": "", 42 | "pgm": "1-5", 43 | "partition": "auto", 44 | "module": "", 45 | "repeater": "", 46 | "keypad": "", 47 | "key-switch": "" 48 | }, 49 | "SYNC_TIME": true, 50 | "SYNC_TIME_MIN_DRIFT": 120, 51 | "PASSWORD": "0000", 52 | "MQTT_ENABLE": true, 53 | "MQTT_HOST": "core-mosquitto", 54 | "MQTT_PORT": 1883, 55 | "MQTT_KEEPALIVE": 60, 56 | "MQTT_USERNAME": "pai", 57 | "MQTT_PASSWORD": "my_very_secure_password", 58 | "MQTT_HOMEASSISTANT_AUTODISCOVERY_ENABLE": true, 59 | "COMMAND_ALIAS": { 60 | "arm": "partition all arm", 61 | "disarm": "partition all disarm" 62 | }, 63 | "MQTT_COMMAND_ALIAS": { 64 | "armed_home": "arm_stay", 65 | "armed_night": "arm_sleep", 66 | "armed_away": "arm", 67 | "disarmed": "disarm" 68 | }, 69 | "HOMEASSISTANT_NOTIFICATIONS_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 70 | "HOMEASSISTANT_PUBLISH_PARTITION_PROPERTIES": ["target_state", "current_state"], 71 | "HOMEASSISTANT_PUBLISH_ZONE_PROPERTIES": ["open", "tamper"], 72 | "PUSHBULLET_CONTACTS": [], 73 | "PUSHBULLET_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 74 | "PUSHOVER_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 75 | "PUSHOVER_BROADCAST_KEYS": [], 76 | "SIGNAL_CONTACTS": [], 77 | "SIGNAL_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 78 | "GSM_CONTACTS": [], 79 | "GSM_EVENT_FILTERS": ["live,alarm,-restore", "trouble,-clock", "live,tamper"], 80 | "IP_INTERFACE_ENABLE": false, 81 | "IP_INTERFACE_PASSWORD": "paradox", 82 | "DUMMY_EVENT_FILTERS": [] 83 | }, 84 | "schema": { 85 | "LOGGING_LEVEL_CONSOLE": "int", 86 | "LOGGING_LEVEL_FILE": "int", 87 | "LOGGING_FILE": "str?", 88 | "LOGGING_FILE_MAX_SIZE": "int?", 89 | "LOGGING_FILE_MAX_FILES": "int?", 90 | "LOGGING_DUMP_PACKETS": "bool?", 91 | "LOGGING_DUMP_MESSAGES": "bool?", 92 | "LOGGING_DUMP_STATUS": "bool?", 93 | "LOGGING_DUMP_EVENTS": "bool?", 94 | "DEVELOPMENT_DUMP_MEMORY": "bool?", 95 | "CONNECTION_TYPE": "list(Serial|IP)", 96 | "SERIAL_PORT": "str?", 97 | "SERIAL_BAUD": "int(1200,)?", 98 | "IP_CONNECTION_HOST": "str?", 99 | "IP_CONNECTION_PORT": "port?", 100 | "IP_CONNECTION_PASSWORD": "str?", 101 | "IP_CONNECTION_SITEID": "str?", 102 | "IP_CONNECTION_EMAIL": "str?", 103 | "IP_CONNECTION_PANEL_SERIAL": "str?", 104 | "IP_CONNECTION_BARE": "bool?", 105 | "KEEP_ALIVE_INTERVAL": "int?", 106 | "IO_TIMEOUT": "float?", 107 | "LIMITS": { 108 | "zone": "str?", 109 | "user": "str?", 110 | "door": "str?", 111 | "pgm": "str?", 112 | "partition": "str?", 113 | "module": "str?", 114 | "repeater": "str?", 115 | "keypad": "str?", 116 | "key-switch": "str?" 117 | }, 118 | "LABEL_ENCODING": "str?", 119 | "LABEL_REFRESH_INTERVAL": "int?", 120 | "OUTPUT_PULSE_DURATION": "int?", 121 | "SYNC_TIME": "bool?", 122 | "SYNC_TIME_MIN_DRIFT": "int?", 123 | "PASSWORD": "str?", 124 | "PUSH_UPDATE_WITHOUT_CHANGE": "bool?", 125 | "MQTT_ENABLE": "bool?", 126 | "MQTT_HOST": "str?", 127 | "MQTT_PORT": "port?", 128 | "MQTT_KEEPALIVE": "int?", 129 | "MQTT_USERNAME": "str?", 130 | "MQTT_PASSWORD": "password?", 131 | "MQTT_RETAIN": "bool?", 132 | "MQTT_BIND_ADDRESS": "str?", 133 | "MQTT_BIND_PORT": "port?", 134 | "MQTT_REPUBLISH_INTERVAL": "int?", 135 | "MQTT_PUBLISH_DEFINITIONS": "bool?", 136 | "MQTT_BASE_TOPIC": "str?", 137 | "MQTT_ZONE_TOPIC": "str?", 138 | "MQTT_PARTITION_TOPIC": "str?", 139 | "MQTT_BUS_TOPIC": "str?", 140 | "MQTT_MODULE_TOPIC": "str?", 141 | "MQTT_SYSTEM_TOPIC": "str?", 142 | "MQTT_REPEATER_TOPIC": "str?", 143 | "MQTT_USER_TOPIC": "str?", 144 | "MQTT_EVENTS_TOPIC": "str?", 145 | "MQTT_CONTROL_TOPIC": "str?", 146 | "MQTT_DEFINITIONS_TOPIC": "str?", 147 | "MQTT_HOMEASSISTANT_DISCOVERY_PREFIX": "str?", 148 | "MQTT_OUTPUT_TOPIC": "str?", 149 | "MQTT_DOOR_TOPIC": "str?", 150 | "MQTT_KEYPAD_TOPIC": "str?", 151 | "MQTT_STATES_TOPIC": "str?", 152 | "MQTT_RAW_TOPIC": "str?", 153 | "MQTT_NOTIFICATIONS_TOPIC": "str?", 154 | "MQTT_SEND_PANIC_TOPIC": "str?", 155 | "MQTT_PUBLISH_RAW_EVENTS": "bool?", 156 | "MQTT_INTERFACE_TOPIC": "str?", 157 | "MQTT_USE_NUMERIC_STATES": "bool?", 158 | "MQTT_PUBLISH_COMMAND_STATUS": "bool?", 159 | "MQTT_COMMAND_STATUS_TOPIC": "str?", 160 | "MQTT_HOMEASSISTANT_AUTODISCOVERY_ENABLE": "bool?", 161 | "MQTT_DASH_PUBLISH": "bool?", 162 | "MQTT_DASH_TOPIC": "str?", 163 | "MQTT_DASH_TEMPLATE": "str?", 164 | "COMMAND_ALIAS": { 165 | "arm": "str?", 166 | "disarm": "str?" 167 | }, 168 | "MQTT_COMMAND_ALIAS": { 169 | "armed_home": "str?", 170 | "armed_night": "str?", 171 | "armed_away": "str?", 172 | "disarmed": "str?" 173 | }, 174 | "MQTT_HOMEASSISTANT_CODE": "str?", 175 | "HOMEASSISTANT_NOTIFICATIONS_ENABLE": "bool?", 176 | "HOMEASSISTANT_NOTIFICATIONS_LOVELACE_URI": "str?", 177 | "HOMEASSISTANT_NOTIFICATIONS_NOTIFIER_NAME": "str?", 178 | "HOMEASSISTANT_NOTIFICATIONS_MIN_EVENT_LEVEL": "str?", 179 | "HOMEASSISTANT_NOTIFICATIONS_EVENT_FILTERS": ["str?"], 180 | "HOMEASSISTANT_PUBLISH_PARTITION_PROPERTIES": ["str?"], 181 | "HOMEASSISTANT_PUBLISH_ZONE_PROPERTIES": ["str?"], 182 | "PUSHBULLET_ENABLE": "bool?", 183 | "PUSHBULLET_KEY": "str?", 184 | "PUSHBULLET_CONTACTS": ["str?"], 185 | "PUSHBULLET_MIN_EVENT_LEVEL": "str?", 186 | "PUSHBULLET_EVENT_FILTERS": ["str?"], 187 | "PUSHOVER_ENABLE": "bool?", 188 | "PUSHOVER_KEY": "str?", 189 | "PUSHOVER_MIN_EVENT_LEVEL": "str?", 190 | "PUSHOVER_EVENT_FILTERS": ["str?"], 191 | "PUSHOVER_BROADCAST_KEYS": [ 192 | { 193 | "user_key": "str?", 194 | "devices": "str?" 195 | } 196 | ], 197 | "SIGNAL_ENABLE": "bool?", 198 | "SIGNAL_CONTACTS": ["str?"], 199 | "SIGNAL_MIN_EVENT_LEVEL": "str?", 200 | "SIGNAL_EVENT_FILTERS": ["str?"], 201 | "GSM_ENABLE": "bool?", 202 | "GSM_MODEM_BAUDRATE": "int(1200,)?", 203 | "GSM_MODEM_PORT": "str?", 204 | "GSM_CONTACTS": ["str?"], 205 | "GSM_MIN_EVENT_LEVEL": "str?", 206 | "GSM_EVENT_FILTERS": ["str?"], 207 | "IP_INTERFACE_ENABLE": "bool?", 208 | "IP_INTERFACE_PASSWORD": "password?", 209 | "DUMMY_INTERFACE_ENABLE": "bool?", 210 | "DUMMY_MIN_EVENT_LEVEL": "str?", 211 | "DUMMY_EVENT_FILTERS": ["str?"] 212 | } 213 | } 214 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Eclipse Public License - v 2.0 2 | 3 | THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE 4 | PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION 5 | OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 6 | 7 | 1. DEFINITIONS 8 | 9 | "Contribution" means: 10 | 11 | a) in the case of the initial Contributor, the initial content 12 | Distributed under this Agreement, and 13 | 14 | b) in the case of each subsequent Contributor: 15 | i) changes to the Program, and 16 | ii) additions to the Program; 17 | where such changes and/or additions to the Program originate from 18 | and are Distributed by that particular Contributor. A Contribution 19 | "originates" from a Contributor if it was added to the Program by 20 | such Contributor itself or anyone acting on such Contributor's behalf. 21 | Contributions do not include changes or additions to the Program that 22 | are not Modified Works. 23 | 24 | "Contributor" means any person or entity that Distributes the Program. 25 | 26 | "Licensed Patents" mean patent claims licensable by a Contributor which 27 | are necessarily infringed by the use or sale of its Contribution alone 28 | or when combined with the Program. 29 | 30 | "Program" means the Contributions Distributed in accordance with this 31 | Agreement. 32 | 33 | "Recipient" means anyone who receives the Program under this Agreement 34 | or any Secondary License (as applicable), including Contributors. 35 | 36 | "Derivative Works" shall mean any work, whether in Source Code or other 37 | form, that is based on (or derived from) the Program and for which the 38 | editorial revisions, annotations, elaborations, or other modifications 39 | represent, as a whole, an original work of authorship. 40 | 41 | "Modified Works" shall mean any work in Source Code or other form that 42 | results from an addition to, deletion from, or modification of the 43 | contents of the Program, including, for purposes of clarity any new file 44 | in Source Code form that contains any contents of the Program. Modified 45 | Works shall not include works that contain only declarations, 46 | interfaces, types, classes, structures, or files of the Program solely 47 | in each case in order to link to, bind by name, or subclass the Program 48 | or Modified Works thereof. 49 | 50 | "Distribute" means the acts of a) distributing or b) making available 51 | in any manner that enables the transfer of a copy. 52 | 53 | "Source Code" means the form of a Program preferred for making 54 | modifications, including but not limited to software source code, 55 | documentation source, and configuration files. 56 | 57 | "Secondary License" means either the GNU General Public License, 58 | Version 2.0, or any later versions of that license, including any 59 | exceptions or additional permissions as identified by the initial 60 | Contributor. 61 | 62 | 2. GRANT OF RIGHTS 63 | 64 | a) Subject to the terms of this Agreement, each Contributor hereby 65 | grants Recipient a non-exclusive, worldwide, royalty-free copyright 66 | license to reproduce, prepare Derivative Works of, publicly display, 67 | publicly perform, Distribute and sublicense the Contribution of such 68 | Contributor, if any, and such Derivative Works. 69 | 70 | b) Subject to the terms of this Agreement, each Contributor hereby 71 | grants Recipient a non-exclusive, worldwide, royalty-free patent 72 | license under Licensed Patents to make, use, sell, offer to sell, 73 | import and otherwise transfer the Contribution of such Contributor, 74 | if any, in Source Code or other form. This patent license shall 75 | apply to the combination of the Contribution and the Program if, at 76 | the time the Contribution is added by the Contributor, such addition 77 | of the Contribution causes such combination to be covered by the 78 | Licensed Patents. The patent license shall not apply to any other 79 | combinations which include the Contribution. No hardware per se is 80 | licensed hereunder. 81 | 82 | c) Recipient understands that although each Contributor grants the 83 | licenses to its Contributions set forth herein, no assurances are 84 | provided by any Contributor that the Program does not infringe the 85 | patent or other intellectual property rights of any other entity. 86 | Each Contributor disclaims any liability to Recipient for claims 87 | brought by any other entity based on infringement of intellectual 88 | property rights or otherwise. As a condition to exercising the 89 | rights and licenses granted hereunder, each Recipient hereby 90 | assumes sole responsibility to secure any other intellectual 91 | property rights needed, if any. For example, if a third party 92 | patent license is required to allow Recipient to Distribute the 93 | Program, it is Recipient's responsibility to acquire that license 94 | before distributing the Program. 95 | 96 | d) Each Contributor represents that to its knowledge it has 97 | sufficient copyright rights in its Contribution, if any, to grant 98 | the copyright license set forth in this Agreement. 99 | 100 | e) Notwithstanding the terms of any Secondary License, no 101 | Contributor makes additional grants to any Recipient (other than 102 | those set forth in this Agreement) as a result of such Recipient's 103 | receipt of the Program under the terms of a Secondary License 104 | (if permitted under the terms of Section 3). 105 | 106 | 3. REQUIREMENTS 107 | 108 | 3.1 If a Contributor Distributes the Program in any form, then: 109 | 110 | a) the Program must also be made available as Source Code, in 111 | accordance with section 3.2, and the Contributor must accompany 112 | the Program with a statement that the Source Code for the Program 113 | is available under this Agreement, and informs Recipients how to 114 | obtain it in a reasonable manner on or through a medium customarily 115 | used for software exchange; and 116 | 117 | b) the Contributor may Distribute the Program under a license 118 | different than this Agreement, provided that such license: 119 | i) effectively disclaims on behalf of all other Contributors all 120 | warranties and conditions, express and implied, including 121 | warranties or conditions of title and non-infringement, and 122 | implied warranties or conditions of merchantability and fitness 123 | for a particular purpose; 124 | 125 | ii) effectively excludes on behalf of all other Contributors all 126 | liability for damages, including direct, indirect, special, 127 | incidental and consequential damages, such as lost profits; 128 | 129 | iii) does not attempt to limit or alter the recipients' rights 130 | in the Source Code under section 3.2; and 131 | 132 | iv) requires any subsequent distribution of the Program by any 133 | party to be under a license that satisfies the requirements 134 | of this section 3. 135 | 136 | 3.2 When the Program is Distributed as Source Code: 137 | 138 | a) it must be made available under this Agreement, or if the 139 | Program (i) is combined with other material in a separate file or 140 | files made available under a Secondary License, and (ii) the initial 141 | Contributor attached to the Source Code the notice described in 142 | Exhibit A of this Agreement, then the Program may be made available 143 | under the terms of such Secondary Licenses, and 144 | 145 | b) a copy of this Agreement must be included with each copy of 146 | the Program. 147 | 148 | 3.3 Contributors may not remove or alter any copyright, patent, 149 | trademark, attribution notices, disclaimers of warranty, or limitations 150 | of liability ("notices") contained within the Program from any copy of 151 | the Program which they Distribute, provided that Contributors may add 152 | their own appropriate notices. 153 | 154 | 4. COMMERCIAL DISTRIBUTION 155 | 156 | Commercial distributors of software may accept certain responsibilities 157 | with respect to end users, business partners and the like. While this 158 | license is intended to facilitate the commercial use of the Program, 159 | the Contributor who includes the Program in a commercial product 160 | offering should do so in a manner which does not create potential 161 | liability for other Contributors. Therefore, if a Contributor includes 162 | the Program in a commercial product offering, such Contributor 163 | ("Commercial Contributor") hereby agrees to defend and indemnify every 164 | other Contributor ("Indemnified Contributor") against any losses, 165 | damages and costs (collectively "Losses") arising from claims, lawsuits 166 | and other legal actions brought by a third party against the Indemnified 167 | Contributor to the extent caused by the acts or omissions of such 168 | Commercial Contributor in connection with its distribution of the Program 169 | in a commercial product offering. The obligations in this section do not 170 | apply to any claims or Losses relating to any actual or alleged 171 | intellectual property infringement. In order to qualify, an Indemnified 172 | Contributor must: a) promptly notify the Commercial Contributor in 173 | writing of such claim, and b) allow the Commercial Contributor to control, 174 | and cooperate with the Commercial Contributor in, the defense and any 175 | related settlement negotiations. The Indemnified Contributor may 176 | participate in any such claim at its own expense. 177 | 178 | For example, a Contributor might include the Program in a commercial 179 | product offering, Product X. That Contributor is then a Commercial 180 | Contributor. If that Commercial Contributor then makes performance 181 | claims, or offers warranties related to Product X, those performance 182 | claims and warranties are such Commercial Contributor's responsibility 183 | alone. Under this section, the Commercial Contributor would have to 184 | defend claims against the other Contributors related to those performance 185 | claims and warranties, and if a court requires any other Contributor to 186 | pay any damages as a result, the Commercial Contributor must pay 187 | those damages. 188 | 189 | 5. NO WARRANTY 190 | 191 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT 192 | PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" 193 | BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR 194 | IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF 195 | TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR 196 | PURPOSE. Each Recipient is solely responsible for determining the 197 | appropriateness of using and distributing the Program and assumes all 198 | risks associated with its exercise of rights under this Agreement, 199 | including but not limited to the risks and costs of program errors, 200 | compliance with applicable laws, damage to or loss of data, programs 201 | or equipment, and unavailability or interruption of operations. 202 | 203 | 6. DISCLAIMER OF LIABILITY 204 | 205 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT 206 | PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS 207 | SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 208 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST 209 | PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 210 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 211 | ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE 212 | EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE 213 | POSSIBILITY OF SUCH DAMAGES. 214 | 215 | 7. GENERAL 216 | 217 | If any provision of this Agreement is invalid or unenforceable under 218 | applicable law, it shall not affect the validity or enforceability of 219 | the remainder of the terms of this Agreement, and without further 220 | action by the parties hereto, such provision shall be reformed to the 221 | minimum extent necessary to make such provision valid and enforceable. 222 | 223 | If Recipient institutes patent litigation against any entity 224 | (including a cross-claim or counterclaim in a lawsuit) alleging that the 225 | Program itself (excluding combinations of the Program with other software 226 | or hardware) infringes such Recipient's patent(s), then such Recipient's 227 | rights granted under Section 2(b) shall terminate as of the date such 228 | litigation is filed. 229 | 230 | All Recipient's rights under this Agreement shall terminate if it 231 | fails to comply with any of the material terms or conditions of this 232 | Agreement and does not cure such failure in a reasonable period of 233 | time after becoming aware of such noncompliance. If all Recipient's 234 | rights under this Agreement terminate, Recipient agrees to cease use 235 | and distribution of the Program as soon as reasonably practicable. 236 | However, Recipient's obligations under this Agreement and any licenses 237 | granted by Recipient relating to the Program shall continue and survive. 238 | 239 | Everyone is permitted to copy and distribute copies of this Agreement, 240 | but in order to avoid inconsistency the Agreement is copyrighted and 241 | may only be modified in the following manner. The Agreement Steward 242 | reserves the right to publish new versions (including revisions) of 243 | this Agreement from time to time. No one other than the Agreement 244 | Steward has the right to modify this Agreement. The Eclipse Foundation 245 | is the initial Agreement Steward. The Eclipse Foundation may assign the 246 | responsibility to serve as the Agreement Steward to a suitable separate 247 | entity. Each new version of the Agreement will be given a distinguishing 248 | version number. The Program (including Contributions) may always be 249 | Distributed subject to the version of the Agreement under which it was 250 | received. In addition, after a new version of the Agreement is published, 251 | Contributor may elect to Distribute the Program (including its 252 | Contributions) under the new version. 253 | 254 | Except as expressly stated in Sections 2(a) and 2(b) above, Recipient 255 | receives no rights or licenses to the intellectual property of any 256 | Contributor under this Agreement, whether expressly, by implication, 257 | estoppel or otherwise. All rights in the Program not expressly granted 258 | under this Agreement are reserved. Nothing in this Agreement is intended 259 | to be enforceable by any entity that is not a Contributor or Recipient. 260 | No third-party beneficiary rights are created under this Agreement. 261 | 262 | Exhibit A - Form of Secondary Licenses Notice 263 | 264 | "This Source Code may also be made available under the following 265 | Secondary Licenses when the conditions for such availability set forth 266 | in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), 267 | version(s), and exceptions or additional permissions here}." 268 | 269 | Simply including a copy of this Agreement, including this Exhibit A 270 | is not sufficient to license the Source Code under Secondary Licenses. 271 | 272 | If it is not possible or desirable to put the notice in a particular 273 | file, then You may include the notice in a location (such as a LICENSE 274 | file in a relevant directory) where a recipient would be likely to 275 | look for such a notice. 276 | 277 | You may add additional accurate notices of copyright ownership. 278 | --------------------------------------------------------------------------------