ultrasync


Nameultrasync JSON
Version 1.0.0 PyPI version JSON
download
home_pagehttps://github.com/caronc/ultrasync
SummaryWrapper to XGen/XGen8/ComNav/Hills/Interlogix NX-595E/UltraSync ZeroWire
upload_time2023-08-12 15:41:10
maintainer
docs_urlNone
authorChris Caron
requires_python>=3.7
licenseMIT
keywords xgen xgen8 hills comnav interlogix ultrasync nx-595e zerowire security panel
VCS
bugtrack_url
requirements click requests
Travis-CI No Travis.
coveralls test coverage
            # NX-595E Output Control Fork
This fork is designated to implementing the "Output Control" section of the NX-595E. The main objective is to enable communication with the outputs and ensure its proper implementation.

# NX-595E UltraSync Hub

Compatible with both NX-595E [Hills](https://www.hills.com.au/) ComNav, xGen, xGen8 (such as [NXG-8-Z-BO](https://firesecurityproducts.com/en/product/intrusion/NXG_8_Z_BO/82651)), [Interlogix](https://www.interlogix.com/), and [ZeroWire](https://www.interlogix.com/intrusion/product/ultrasync-selfcontained-hub) UltraSync solutions.

![ZeroWire Hub Image](https://raw.githubusercontent.com/caronc/ultrasync/master/static/zerowire_hub.jpeg)

[![Paypal](https://img.shields.io/badge/paypal-donate-green.svg)](https://paypal.me/lead2gold?locale.x=en_US)
[![Follow](https://img.shields.io/twitter/follow/l2gnux)](https://twitter.com/l2gnux/)<br/>
[![Python](https://img.shields.io/pypi/pyversions/ultrasync.svg?style=flat-square)](https://pypi.org/project/ultrasync/)
[![Build Status](https://github.com/caronc/ultrasync/actions/workflows/tests.yml/badge.svg)](https://github.com/caronc/ultrasync/actions/workflows/tests.yml)
[![CodeCov Status](https://codecov.io/github/caronc/ultrasync/branch/master/graph/badge.svg)](https://codecov.io/github/caronc/ultrasync)
[![Downloads](http://pepy.tech/badge/ultrasync)](https://pypi.org/project/ultrasync/)

## How Does It Work?

1. First you need to install it; this part is easy:

   ```bash
   # Install ultrasync onto your system
   pip install ultrasync
   ```

2. Create a configuration file that identifies:
   1. The hostname or IP address of the ComNav/ZeroWire hub you've got setup on some the network.
   1. Your ComNav/ZeroWire login User ID.
   1. Your ComNav/ZeroWire login pin.

   **Note**: You can only be logged into the ComNav/ZeroWire hub with the same user *once*; a subsequent login with the same user logs out the other. Since this tool/software actively polls and maintains a login session to your Hub, it can prevent you from being able to log into at the same time elsewhere (via it's website).  **It is strongly recommended that you create a second user account on your Hub dedicated to just this service.**

   ```yaml
   # An example of what would be found in your configuration file:
   # Use hashtags/pound symbols (#) to optionally add comments
   # Syntax is simply <key>: <value>
   #
   # You must specify a ip/hostname, user, and pin
   #
   host: 192.168.0.30
   user: My Username
   pin: 1234
   ```

3. Use the **--scene** (**-s**) to set your security system's alarm scene.  The possible options are: `disarm`, `away`, and `stay`.

   ```bash
   # By default if no --config= (-c) is specified, one will be automatically
   # loaded from the following location (if present):
   #  ~/.ultrasync
   #  ~/.config/ultrasync

   # Windows users can store their default configuration files here:
   #  %APPDATA%/UltraSync/config
   #  %LOCALAPPDATA%/UltraSync/config

   # Disarm your security system
   ultrasync --scene disarm

   # Arm your security system and activate all of your sensors when setting the
   # away mode macro
   ultrasync --scene away

   # Arm your security system and only activate your perimeter sensors:
   ultrasync --scene stay
   ```

## What Else Can It Do?

- You can put up a live monitor of your device by typing the following:

  ```bash
  # A live monitoring of your home security system:
  ultrasync --watch
  ```
![UltraSync Watch Mode](https://raw.githubusercontent.com/caronc/ultrasync/master/static/ultrasync-watch.gif)

- You can generate a snapshot (in JSON format) that greatly details everything taking place through your security home setup. It provides MUCH greater detail than the `--watch` which allows it to also be integrated with [Home Assistant](https://www.home-assistant.io/integrations/ultrasync/).

  ```bash
  # Print a JSON formatted snapshot of all home security details
  ultrasync --details
  ```

- You can perform a dump of all of the web based files (*that I've found to be useful so far*) to disk.  This makes troubleshooting much easier.

  ```bash
  # Extracts information from your UltraSync Hub that can be
  # incredibly useful in debugging and/or adding enhancements
  # later on:
  ultrasync --debug-dump
  ```

  The debug content gets written to a zip file (residing in the same folder you ran this command from) in the form of: `YYYYmmddHHMMSS.ultrasync-dump.zip`.

## Reverse Proxy

If you've exposed your panel to the internet, you can access it by setting your `host` to the full URL to it (instead of just the hosthame/ip).  For example:

```yaml
# A sample UltraSync configuration that requires you to pass through
# a proxy in order to get to your destination:
host: https://your.security.panel/
user: My Username
pin: 1234
```

If you've also protected your panel behind an additional user/pass combo using *Basic Auth* at the reverse proxy level, you can pass through it like so:

```yaml
# A sample ultrasync configuration that requires you to pass through
# a proxy expecting authentication in order to get to your destination:
host: https://user:pass@your.security.panel/
user: My Username
pin: 1234
# You can also optionally turn off the secure hostname verification
# by using the verify switch.  But default this is set to yes if not
# specified:
verify: no
```

## Global Variables

You can also (optionally) set the following global variables to provide the equivalent of what the configuration file could have.  If a configuration file is also loaded, it's settings will always prevail.  If an entry is missing, then the environment variable is used instead (if it's defined):

| Global Variable | Description |
| --- | --- |
| **ULTRASYNC_PIN** | Provides the `pin` variable to the library
| **ULTRASYNC_USER** | Provides the `user` variable to the library
| **ULTRASYNC_HOST** | Provides the `host` variable to the library
| **ULTRASYNC_SSL_VERIFY** | Provides the `verify` variable to the library

## Disclaimer

This software was created by reverse engineering my own personal security system. All of this code was generated through trial and error since there is no documentation that I could find that explains the registers. If you can help out by filling in some of the blanks throughout the code base, I would be greatly appreciative of it! Alternatively [buying me a coffee](https://paypal.me/lead2gold?locale.x=en_US) greatly inspires me to continue improving the application.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/caronc/ultrasync",
    "name": "ultrasync",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "XGen XGen8 Hills ComNav Interlogix UltraSync NX-595E ZeroWire Security Panel",
    "author": "Chris Caron",
    "author_email": "lead2gold@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/c9/f8/846f8dada1f79eb495f01557e8f0e160620c9d5d5bf5d6bc3f4cc6ce89e9/ultrasync-1.0.0.tar.gz",
    "platform": null,
    "description": "# NX-595E Output Control Fork\nThis fork is designated to implementing the \"Output Control\" section of the NX-595E. The main objective is to enable communication with the outputs and ensure its proper implementation.\n\n# NX-595E UltraSync Hub\n\nCompatible with both NX-595E [Hills](https://www.hills.com.au/) ComNav, xGen, xGen8 (such as [NXG-8-Z-BO](https://firesecurityproducts.com/en/product/intrusion/NXG_8_Z_BO/82651)), [Interlogix](https://www.interlogix.com/), and [ZeroWire](https://www.interlogix.com/intrusion/product/ultrasync-selfcontained-hub) UltraSync solutions.\n\n![ZeroWire Hub Image](https://raw.githubusercontent.com/caronc/ultrasync/master/static/zerowire_hub.jpeg)\n\n[![Paypal](https://img.shields.io/badge/paypal-donate-green.svg)](https://paypal.me/lead2gold?locale.x=en_US)\n[![Follow](https://img.shields.io/twitter/follow/l2gnux)](https://twitter.com/l2gnux/)<br/>\n[![Python](https://img.shields.io/pypi/pyversions/ultrasync.svg?style=flat-square)](https://pypi.org/project/ultrasync/)\n[![Build Status](https://github.com/caronc/ultrasync/actions/workflows/tests.yml/badge.svg)](https://github.com/caronc/ultrasync/actions/workflows/tests.yml)\n[![CodeCov Status](https://codecov.io/github/caronc/ultrasync/branch/master/graph/badge.svg)](https://codecov.io/github/caronc/ultrasync)\n[![Downloads](http://pepy.tech/badge/ultrasync)](https://pypi.org/project/ultrasync/)\n\n## How Does It Work?\n\n1. First you need to install it; this part is easy:\n\n   ```bash\n   # Install ultrasync onto your system\n   pip install ultrasync\n   ```\n\n2. Create a configuration file that identifies:\n   1. The hostname or IP address of the ComNav/ZeroWire hub you've got setup on some the network.\n   1. Your ComNav/ZeroWire login User ID.\n   1. Your ComNav/ZeroWire login pin.\n\n   **Note**: You can only be logged into the ComNav/ZeroWire hub with the same user *once*; a subsequent login with the same user logs out the other. Since this tool/software actively polls and maintains a login session to your Hub, it can prevent you from being able to log into at the same time elsewhere (via it's website).  **It is strongly recommended that you create a second user account on your Hub dedicated to just this service.**\n\n   ```yaml\n   # An example of what would be found in your configuration file:\n   # Use hashtags/pound symbols (#) to optionally add comments\n   # Syntax is simply <key>: <value>\n   #\n   # You must specify a ip/hostname, user, and pin\n   #\n   host: 192.168.0.30\n   user: My Username\n   pin: 1234\n   ```\n\n3. Use the **--scene** (**-s**) to set your security system's alarm scene.  The possible options are: `disarm`, `away`, and `stay`.\n\n   ```bash\n   # By default if no --config= (-c) is specified, one will be automatically\n   # loaded from the following location (if present):\n   #  ~/.ultrasync\n   #  ~/.config/ultrasync\n\n   # Windows users can store their default configuration files here:\n   #  %APPDATA%/UltraSync/config\n   #  %LOCALAPPDATA%/UltraSync/config\n\n   # Disarm your security system\n   ultrasync --scene disarm\n\n   # Arm your security system and activate all of your sensors when setting the\n   # away mode macro\n   ultrasync --scene away\n\n   # Arm your security system and only activate your perimeter sensors:\n   ultrasync --scene stay\n   ```\n\n## What Else Can It Do?\n\n- You can put up a live monitor of your device by typing the following:\n\n  ```bash\n  # A live monitoring of your home security system:\n  ultrasync --watch\n  ```\n![UltraSync Watch Mode](https://raw.githubusercontent.com/caronc/ultrasync/master/static/ultrasync-watch.gif)\n\n- You can generate a snapshot (in JSON format) that greatly details everything taking place through your security home setup. It provides MUCH greater detail than the `--watch` which allows it to also be integrated with [Home Assistant](https://www.home-assistant.io/integrations/ultrasync/).\n\n  ```bash\n  # Print a JSON formatted snapshot of all home security details\n  ultrasync --details\n  ```\n\n- You can perform a dump of all of the web based files (*that I've found to be useful so far*) to disk.  This makes troubleshooting much easier.\n\n  ```bash\n  # Extracts information from your UltraSync Hub that can be\n  # incredibly useful in debugging and/or adding enhancements\n  # later on:\n  ultrasync --debug-dump\n  ```\n\n  The debug content gets written to a zip file (residing in the same folder you ran this command from) in the form of: `YYYYmmddHHMMSS.ultrasync-dump.zip`.\n\n## Reverse Proxy\n\nIf you've exposed your panel to the internet, you can access it by setting your `host` to the full URL to it (instead of just the hosthame/ip).  For example:\n\n```yaml\n# A sample UltraSync configuration that requires you to pass through\n# a proxy in order to get to your destination:\nhost: https://your.security.panel/\nuser: My Username\npin: 1234\n```\n\nIf you've also protected your panel behind an additional user/pass combo using *Basic Auth* at the reverse proxy level, you can pass through it like so:\n\n```yaml\n# A sample ultrasync configuration that requires you to pass through\n# a proxy expecting authentication in order to get to your destination:\nhost: https://user:pass@your.security.panel/\nuser: My Username\npin: 1234\n# You can also optionally turn off the secure hostname verification\n# by using the verify switch.  But default this is set to yes if not\n# specified:\nverify: no\n```\n\n## Global Variables\n\nYou can also (optionally) set the following global variables to provide the equivalent of what the configuration file could have.  If a configuration file is also loaded, it's settings will always prevail.  If an entry is missing, then the environment variable is used instead (if it's defined):\n\n| Global Variable | Description |\n| --- | --- |\n| **ULTRASYNC_PIN** | Provides the `pin` variable to the library\n| **ULTRASYNC_USER** | Provides the `user` variable to the library\n| **ULTRASYNC_HOST** | Provides the `host` variable to the library\n| **ULTRASYNC_SSL_VERIFY** | Provides the `verify` variable to the library\n\n## Disclaimer\n\nThis software was created by reverse engineering my own personal security system. All of this code was generated through trial and error since there is no documentation that I could find that explains the registers. If you can help out by filling in some of the blanks throughout the code base, I would be greatly appreciative of it! Alternatively [buying me a coffee](https://paypal.me/lead2gold?locale.x=en_US) greatly inspires me to continue improving the application.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Wrapper to XGen/XGen8/ComNav/Hills/Interlogix NX-595E/UltraSync ZeroWire",
    "version": "1.0.0",
    "project_urls": {
        "Homepage": "https://github.com/caronc/ultrasync"
    },
    "split_keywords": [
        "xgen",
        "xgen8",
        "hills",
        "comnav",
        "interlogix",
        "ultrasync",
        "nx-595e",
        "zerowire",
        "security",
        "panel"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f3e089a1240a13536c7323eec00ac4daaf061fe7559d07f57143278cceb114d9",
                "md5": "cf1b556d2e597674e554eb7957e67761",
                "sha256": "b42d80eab8e7b42c7ce0d27029e8078cb32dc6b0868ac61fc69b407662a87a13"
            },
            "downloads": -1,
            "filename": "ultrasync-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "cf1b556d2e597674e554eb7957e67761",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 30122,
            "upload_time": "2023-08-12T15:41:08",
            "upload_time_iso_8601": "2023-08-12T15:41:08.849340Z",
            "url": "https://files.pythonhosted.org/packages/f3/e0/89a1240a13536c7323eec00ac4daaf061fe7559d07f57143278cceb114d9/ultrasync-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c9f8846f8dada1f79eb495f01557e8f0e160620c9d5d5bf5d6bc3f4cc6ce89e9",
                "md5": "fa24eb96f4697f7d895c75494e441e75",
                "sha256": "af02ce0e3fb7c36462405b9e5feadf8b8f2f9e1ae42ee1c531d178c91311b49d"
            },
            "downloads": -1,
            "filename": "ultrasync-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "fa24eb96f4697f7d895c75494e441e75",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 81462,
            "upload_time": "2023-08-12T15:41:10",
            "upload_time_iso_8601": "2023-08-12T15:41:10.695318Z",
            "url": "https://files.pythonhosted.org/packages/c9/f8/846f8dada1f79eb495f01557e8f0e160620c9d5d5bf5d6bc3f4cc6ce89e9/ultrasync-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-08-12 15:41:10",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "caronc",
    "github_project": "ultrasync",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "requirements": [
        {
            "name": "click",
            "specs": []
        },
        {
            "name": "requests",
            "specs": []
        }
    ],
    "tox": true,
    "lcname": "ultrasync"
}
        
Elapsed time: 0.09854s