synlinkpy


Namesynlinkpy JSON
Version 0.0.13 PyPI version JSON
download
home_pagehttps://synaccess.com
SummaryHTTP Python Wrapper for Synaccess SynLink PDU HTTP API.
upload_time2023-10-26 23:51:15
maintainer
docs_urlNone
authorSynaccess
requires_python>=3.6
license
keywords synlink pdu api client
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            

SynLink Python Library
-------
<!-- 
![pypi](https://img.shields.io/pypi/v/Slacker.svg)\_ ![build
status](https://img.shields.io/travis/os/slacker.svg)\_ ![pypi
downloads](https://img.shields.io/pypi/dm/slacker.svg)\_
![license](https://img.shields.io/github/license/os/slacker.svg)\_
![gitter chat](https://badges.gitter.im/Join%20Chat.svg)\_

![image](https://raw.githubusercontent.com/os/slacker/master/static/slacker.jpg) -->

### About

SynLink Python Library is a Python interface for the [SynLink Smart PDU API](https://synaccess.com/support/webapi).

### Installation

```bash
$ pip install synlinkpy
```

### Examples

```python
from synlinkpy import SynLinkPy

pdu1 = SynLinkPy("http://192.168.1.100", { "username": "admin", "password": "admin" })

# Change outlet state for a given PDU (Power Distribution Unit)
pdu1.outlets.set_state("1", "OFF") # accepts outlet number
pdu1.outlets.set_state("1-1200578", "ON") # accepts unique outlet ID
pdu1.outlets.set_state("2", "REBOOT") # acceptable states are "OFF", "ON", "REBOOT"

# Get information of all outlets
outlet_response = pdu1.outlets.list()
for outlet in outlet_response:
    print(outlet['id'], outlet['outletName'], outlet['state'])

# Get information on inlet(s)
inlet_response = pdu1.inlets.list()

for inlet in inlet_response:
    print(inlet['id'], inlet['inletCurrentRms'], inlet["inletVoltageRms"])


# Modify Configuration 
# https://synaccess.com/support/webapi#configuration
pdu1.conf.set({"lcdOutletControlEnabled": False})

```

### HTTP API Documentation

<https://synaccess.com/support/webapi>

### Authentication

Authentication can occur with [Personal Access Token (PATs)](https://synaccess.com/support/webapi#personal-access-token-based) or Username & Password. It is recommended to use Personal Access Tokens.

**Authenticating with Username and Password**
```python
pdu1 = SynLinkPy("http://192.168.1.100", { "username": "admin", "password": "admin" })

print(pdu1.device.info())
```

**Authenticating with Personal Access Token**
```python
pdu1 = SynLinkPy("http://192.168.1.100", { "token": "9wxBwnck6JpEH0b1DyI" })

print(pdu1.device.info())
```


### Python Library Commands

#### Outlet Commands

Outlet API Information
https://synaccess.com/support/webapi#outlets

```python
pdu1 = SynLinkPy("http://192.168.1.100", { "username": "admin", "password": "admin" })

# Change outlet state for a given PDU (Power Distribution Unit)
pdu1.outlets.set_state("1", "OFF") # accepts outlet number
pdu1.outlets.set_state("1-1200578", "ON") # accepts unique outlet ID
pdu1.outlets.set_state("2", "REBOOT") # acceptable states are "OFF", "ON", "REBOOT"

# Change outlet name for a given PDU
pdu1.outlets.change_config("1", { "outletName": "example name" })

# Get information of all outlets
outlet_response = pdu1.outlets.list()

for outlet in outlet_response:
    print(outlet['id'], outlet['outletName'], outlet['state'])

# OUTPUT
# 1-1200578 Outlet 1 ON
# 2-1200578 Rectifier #1 ON
# 3-1200578 Outlet 3 ON
# 4-1200578 Outlet 4 ON
```

#### Inlet Commands

Inlet API Information
https://synaccess.com/support/webapi#inlets

```python
pdu1 = SynLinkPy("http://192.168.1.100", { "username": "admin", "password": "admin" })

inlet_response = pdu1.inlets.list()
for inlet in inlet_response:
    print(inlet['id'], inlet['inletPlug'], inlet['inletCurrentRms'] )

# OUTPUT
# I1-1000036 0.0 117.4000015258789
```


#### Bank Commands

Bank API Information
https://synaccess.com/support/webapi#banks

```python
pdu1 = SynLinkPy("http://192.168.1.100", { "username": "admin", "password": "admin" })

banks_response = pdu1.banks.list()

for bank in banks_response:
    print(bank['id'], bank['currentRms'])

# OUTPUT
# 1200578 0.0
```


#### Device Commands

Device API Information
https://synaccess.com/support/webapi#device

```python
pdu1 = SynLinkPy("http://192.168.1.100", { "username": "admin", "password": "admin" })

device_response = pdu1.device.info() 

print (device_response['modelNumber'], device_response['enclosureSerialNumber'], device_response['formFactor'])

# OUTPUT
# 5001AIE-0E 1000036 Compact
```

#### Groups Commands

Groups API Information
https://synaccess.com/support/webapi#groups

```python
pdu1 = SynLinkPy("http://192.168.1.100", { "username": "admin", "password": "admin" })

groups_response = pdu1.groups.list()
for group in groups_response:
    print(group['id'], group['groupName'], group["outlets"])

# OUTPUT
# 1 Example Group [...] 
# 2 Important Equipment [...]
# 3 Non Essential Equipment [...]

# Create new group with name, to add outlets use groups.modify
pdu1.groups.create("Example Name")

# outlets value must be an array and will override pre-existing outlet's value. First argument is group ID
pdu1.groups.modify(1, { "outlets": ["1-200578", "3-200578"] })

# switch all outlets of the group, will switch according to sequencing time setting
pdu1.groups.set_state(1, "OFF")

# permanently remove based off of group ID
pdu1.groups.delete(1)

```

#### Configuration Commands

Configuration API Information
https://synaccess.com/support/webapi#configuration

```python
pdu1 = SynLinkPy("http://192.168.1.100", { "username": "admin", "password": "admin" })

conf_response = pdu1.conf.list()
print(conf_response["macAddr"], conf_response["deviceName"], conf_response["lcdOrientation"])

# OUTPUT
# 0C:73:EB:BE:00:27 Demo Compact PDU 90

# Set configuration with key value pairs
pdu1.conf.set({ "lcdOutletControlEnabled" : False })

```

#### Sensors Commands

Sensors API Information
https://synaccess.com/support/webapi#sensors

```python
pdu1 = SynLinkPy("http://192.168.1.100", { "username": "admin", "password": "admin" })

sensors_response = pdu1.sensors.list()
for sensor in sensors_response:
    print(sensor['sensorPort'], sensor['sensorName'], sensor['sensorTempInC'], sensor['sensorHumidity'])

# OUTPUT
# B Temperature & Humidity Sensor 22.9057 39.50677

```


#### Event & Action Commands

Events API Information
https://synaccess.com/support/webapi#events

Actions API Information
https://synaccess.com/support/webapi#actions

```python
pdu1 = SynLinkPy("http://192.168.1.100", { "username": "admin", "password": "admin" })

# List all events
event_response = pdu1.events.list()
for events in event_response:
    print(events['id'], events['name'], events['code'], events['params'], events['actions'], events['triggered'])
# OUTPUT
# 1 Example High Current Event for Bank #1 31 ['2003757', '16', '10'] [] False


# List all actions
action_response = pdu1.actions.list()
for actions in action_response:
    print(actions['id'], actions['name'], actions['code'], actions['params'])
# OUTPUT
#1 Example Power Cycle for Outlet #1 12 ['1-2003757', '', '']

# Create an action
example_action = pdu1.actions.create({ "name": "example reboot", "code": 12, "params": ["1-2003757","",""] })

# Create an event
example_event pdu1.events.create({"name": "example outlet current event", "code": 46, "params": ["1-2003757", "0.2", "3"], "actions": []})

# Modify an event
pdu1.events.modify(example_event['id'], "actions": [example_action['id']])

# Modify an action
pdu1.actions.modify(example_action['id'], { "name": "example reboot 2", "code": 12, "params": ["2-2003757","",""] })

# Delete an event
pdu1.events.delete(example_event['id'])

# Delete an action
pdu1.actions.delete(example_action['id'])



            

Raw data

            {
    "_id": null,
    "home_page": "https://synaccess.com",
    "name": "synlinkpy",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "synlink pdu api client",
    "author": "Synaccess",
    "author_email": "Kevin Han <kevin.han@synaccess.com>",
    "download_url": "https://files.pythonhosted.org/packages/21/43/ac386e105e05f63af757291c039ee905454c5d3cada206b4edece78c7170/synlinkpy-0.0.13.tar.gz",
    "platform": null,
    "description": "\n\nSynLink Python Library\n-------\n<!-- \n![pypi](https://img.shields.io/pypi/v/Slacker.svg)\\_ ![build\nstatus](https://img.shields.io/travis/os/slacker.svg)\\_ ![pypi\ndownloads](https://img.shields.io/pypi/dm/slacker.svg)\\_\n![license](https://img.shields.io/github/license/os/slacker.svg)\\_\n![gitter chat](https://badges.gitter.im/Join%20Chat.svg)\\_\n\n![image](https://raw.githubusercontent.com/os/slacker/master/static/slacker.jpg) -->\n\n### About\n\nSynLink Python Library is a Python interface for the [SynLink Smart PDU API](https://synaccess.com/support/webapi).\n\n### Installation\n\n```bash\n$ pip install synlinkpy\n```\n\n### Examples\n\n```python\nfrom synlinkpy import SynLinkPy\n\npdu1 = SynLinkPy(\"http://192.168.1.100\", { \"username\": \"admin\", \"password\": \"admin\" })\n\n# Change outlet state for a given PDU (Power Distribution Unit)\npdu1.outlets.set_state(\"1\", \"OFF\") # accepts outlet number\npdu1.outlets.set_state(\"1-1200578\", \"ON\") # accepts unique outlet ID\npdu1.outlets.set_state(\"2\", \"REBOOT\") # acceptable states are \"OFF\", \"ON\", \"REBOOT\"\n\n# Get information of all outlets\noutlet_response = pdu1.outlets.list()\nfor outlet in outlet_response:\n    print(outlet['id'], outlet['outletName'], outlet['state'])\n\n# Get information on inlet(s)\ninlet_response = pdu1.inlets.list()\n\nfor inlet in inlet_response:\n    print(inlet['id'], inlet['inletCurrentRms'], inlet[\"inletVoltageRms\"])\n\n\n# Modify Configuration \n# https://synaccess.com/support/webapi#configuration\npdu1.conf.set({\"lcdOutletControlEnabled\": False})\n\n```\n\n### HTTP API Documentation\n\n<https://synaccess.com/support/webapi>\n\n### Authentication\n\nAuthentication can occur with [Personal Access Token (PATs)](https://synaccess.com/support/webapi#personal-access-token-based) or Username & Password. It is recommended to use Personal Access Tokens.\n\n**Authenticating with Username and Password**\n```python\npdu1 = SynLinkPy(\"http://192.168.1.100\", { \"username\": \"admin\", \"password\": \"admin\" })\n\nprint(pdu1.device.info())\n```\n\n**Authenticating with Personal Access Token**\n```python\npdu1 = SynLinkPy(\"http://192.168.1.100\", { \"token\": \"9wxBwnck6JpEH0b1DyI\" })\n\nprint(pdu1.device.info())\n```\n\n\n### Python Library Commands\n\n#### Outlet Commands\n\nOutlet API Information\nhttps://synaccess.com/support/webapi#outlets\n\n```python\npdu1 = SynLinkPy(\"http://192.168.1.100\", { \"username\": \"admin\", \"password\": \"admin\" })\n\n# Change outlet state for a given PDU (Power Distribution Unit)\npdu1.outlets.set_state(\"1\", \"OFF\") # accepts outlet number\npdu1.outlets.set_state(\"1-1200578\", \"ON\") # accepts unique outlet ID\npdu1.outlets.set_state(\"2\", \"REBOOT\") # acceptable states are \"OFF\", \"ON\", \"REBOOT\"\n\n# Change outlet name for a given PDU\npdu1.outlets.change_config(\"1\", { \"outletName\": \"example name\" })\n\n# Get information of all outlets\noutlet_response = pdu1.outlets.list()\n\nfor outlet in outlet_response:\n    print(outlet['id'], outlet['outletName'], outlet['state'])\n\n# OUTPUT\n# 1-1200578 Outlet 1 ON\n# 2-1200578 Rectifier #1 ON\n# 3-1200578 Outlet 3 ON\n# 4-1200578 Outlet 4 ON\n```\n\n#### Inlet Commands\n\nInlet API Information\nhttps://synaccess.com/support/webapi#inlets\n\n```python\npdu1 = SynLinkPy(\"http://192.168.1.100\", { \"username\": \"admin\", \"password\": \"admin\" })\n\ninlet_response = pdu1.inlets.list()\nfor inlet in inlet_response:\n    print(inlet['id'], inlet['inletPlug'], inlet['inletCurrentRms'] )\n\n# OUTPUT\n# I1-1000036 0.0 117.4000015258789\n```\n\n\n#### Bank Commands\n\nBank API Information\nhttps://synaccess.com/support/webapi#banks\n\n```python\npdu1 = SynLinkPy(\"http://192.168.1.100\", { \"username\": \"admin\", \"password\": \"admin\" })\n\nbanks_response = pdu1.banks.list()\n\nfor bank in banks_response:\n    print(bank['id'], bank['currentRms'])\n\n# OUTPUT\n# 1200578 0.0\n```\n\n\n#### Device Commands\n\nDevice API Information\nhttps://synaccess.com/support/webapi#device\n\n```python\npdu1 = SynLinkPy(\"http://192.168.1.100\", { \"username\": \"admin\", \"password\": \"admin\" })\n\ndevice_response = pdu1.device.info() \n\nprint (device_response['modelNumber'], device_response['enclosureSerialNumber'], device_response['formFactor'])\n\n# OUTPUT\n# 5001AIE-0E 1000036 Compact\n```\n\n#### Groups Commands\n\nGroups API Information\nhttps://synaccess.com/support/webapi#groups\n\n```python\npdu1 = SynLinkPy(\"http://192.168.1.100\", { \"username\": \"admin\", \"password\": \"admin\" })\n\ngroups_response = pdu1.groups.list()\nfor group in groups_response:\n    print(group['id'], group['groupName'], group[\"outlets\"])\n\n# OUTPUT\n# 1 Example Group [...] \n# 2 Important Equipment [...]\n# 3 Non Essential Equipment [...]\n\n# Create new group with name, to add outlets use groups.modify\npdu1.groups.create(\"Example Name\")\n\n# outlets value must be an array and will override pre-existing outlet's value. First argument is group ID\npdu1.groups.modify(1, { \"outlets\": [\"1-200578\", \"3-200578\"] })\n\n# switch all outlets of the group, will switch according to sequencing time setting\npdu1.groups.set_state(1, \"OFF\")\n\n# permanently remove based off of group ID\npdu1.groups.delete(1)\n\n```\n\n#### Configuration Commands\n\nConfiguration API Information\nhttps://synaccess.com/support/webapi#configuration\n\n```python\npdu1 = SynLinkPy(\"http://192.168.1.100\", { \"username\": \"admin\", \"password\": \"admin\" })\n\nconf_response = pdu1.conf.list()\nprint(conf_response[\"macAddr\"], conf_response[\"deviceName\"], conf_response[\"lcdOrientation\"])\n\n# OUTPUT\n# 0C:73:EB:BE:00:27 Demo Compact PDU 90\n\n# Set configuration with key value pairs\npdu1.conf.set({ \"lcdOutletControlEnabled\" : False })\n\n```\n\n#### Sensors Commands\n\nSensors API Information\nhttps://synaccess.com/support/webapi#sensors\n\n```python\npdu1 = SynLinkPy(\"http://192.168.1.100\", { \"username\": \"admin\", \"password\": \"admin\" })\n\nsensors_response = pdu1.sensors.list()\nfor sensor in sensors_response:\n    print(sensor['sensorPort'], sensor['sensorName'], sensor['sensorTempInC'], sensor['sensorHumidity'])\n\n# OUTPUT\n# B Temperature & Humidity Sensor 22.9057 39.50677\n\n```\n\n\n#### Event & Action Commands\n\nEvents API Information\nhttps://synaccess.com/support/webapi#events\n\nActions API Information\nhttps://synaccess.com/support/webapi#actions\n\n```python\npdu1 = SynLinkPy(\"http://192.168.1.100\", { \"username\": \"admin\", \"password\": \"admin\" })\n\n# List all events\nevent_response = pdu1.events.list()\nfor events in event_response:\n    print(events['id'], events['name'], events['code'], events['params'], events['actions'], events['triggered'])\n# OUTPUT\n# 1 Example High Current Event for Bank #1 31 ['2003757', '16', '10'] [] False\n\n\n# List all actions\naction_response = pdu1.actions.list()\nfor actions in action_response:\n    print(actions['id'], actions['name'], actions['code'], actions['params'])\n# OUTPUT\n#1 Example Power Cycle for Outlet #1 12 ['1-2003757', '', '']\n\n# Create an action\nexample_action = pdu1.actions.create({ \"name\": \"example reboot\", \"code\": 12, \"params\": [\"1-2003757\",\"\",\"\"] })\n\n# Create an event\nexample_event pdu1.events.create({\"name\": \"example outlet current event\", \"code\": 46, \"params\": [\"1-2003757\", \"0.2\", \"3\"], \"actions\": []})\n\n# Modify an event\npdu1.events.modify(example_event['id'], \"actions\": [example_action['id']])\n\n# Modify an action\npdu1.actions.modify(example_action['id'], { \"name\": \"example reboot 2\", \"code\": 12, \"params\": [\"2-2003757\",\"\",\"\"] })\n\n# Delete an event\npdu1.events.delete(example_event['id'])\n\n# Delete an action\npdu1.actions.delete(example_action['id'])\n\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "HTTP Python Wrapper for Synaccess SynLink PDU HTTP API.",
    "version": "0.0.13",
    "project_urls": {
        "Bug Tracker": "https://github.com/synaccess/synlink-py/issues",
        "Homepage": "https://github.com/synaccess/synlink-py"
    },
    "split_keywords": [
        "synlink",
        "pdu",
        "api",
        "client"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "724bb189a7d58ae25e06e6936f81c1dc74e889e2e89c879fca9882dd15d4e933",
                "md5": "f13f173cdf26a4ef08f0a7eb5c42d151",
                "sha256": "9e4d6ace9a2cab72f4019bce6848e353fe876f3c0218a9ef5b3913449ae84b26"
            },
            "downloads": -1,
            "filename": "synlinkpy-0.0.13-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f13f173cdf26a4ef08f0a7eb5c42d151",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 6043,
            "upload_time": "2023-10-26T23:51:13",
            "upload_time_iso_8601": "2023-10-26T23:51:13.868544Z",
            "url": "https://files.pythonhosted.org/packages/72/4b/b189a7d58ae25e06e6936f81c1dc74e889e2e89c879fca9882dd15d4e933/synlinkpy-0.0.13-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2143ac386e105e05f63af757291c039ee905454c5d3cada206b4edece78c7170",
                "md5": "dce682ff461d62407a4d55ee76d76f58",
                "sha256": "f0179b433ba7f1af314dcb2b11e403697ce0e6932a4180adb20a64cea5c2161d"
            },
            "downloads": -1,
            "filename": "synlinkpy-0.0.13.tar.gz",
            "has_sig": false,
            "md5_digest": "dce682ff461d62407a4d55ee76d76f58",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 6401,
            "upload_time": "2023-10-26T23:51:15",
            "upload_time_iso_8601": "2023-10-26T23:51:15.227056Z",
            "url": "https://files.pythonhosted.org/packages/21/43/ac386e105e05f63af757291c039ee905454c5d3cada206b4edece78c7170/synlinkpy-0.0.13.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-26 23:51:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "synaccess",
    "github_project": "synlink-py",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "synlinkpy"
}
        
Elapsed time: 0.12604s