Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yuxincs/aioapcaccess
A asyncio implementation of apcaccess
https://github.com/yuxincs/aioapcaccess
Last synced: about 1 month ago
JSON representation
A asyncio implementation of apcaccess
- Host: GitHub
- URL: https://github.com/yuxincs/aioapcaccess
- Owner: yuxincs
- License: mit
- Created: 2022-09-27T23:58:17.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-04T17:45:11.000Z (about 2 months ago)
- Last Synced: 2024-11-04T18:36:56.584Z (about 2 months ago)
- Language: Python
- Homepage:
- Size: 72.3 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# aioapcaccess
[![build](https://github.com/yuxincs/aioapcaccess/actions/workflows/build.yaml/badge.svg)](https://github.com/yuxincs/aioapcaccess/actions/workflows/build.yaml?query=branch%3Amain)
[![codecov](https://codecov.io/github/yuxincs/aioapcaccess/branch/main/graph/badge.svg?token=8zhys5YAk9)](https://codecov.io/github/yuxincs/aioapcaccess)
[![PyPI](https://img.shields.io/pypi/v/aioapcaccess)](https://pypi.org/project/aioapcaccess/)
[![GitHub](https://img.shields.io/github/license/yuxincs/aioapcaccess)](https://github.com/yuxincs/aioapcaccess/blob/main/LICENSE)An async implementation of [apcaccess](https://linux.die.net/man/8/apcaccess). This
library provides programmatic access to the status information provided by
[apcupsd](http://www.apcupsd.org/) over its Network Information Server (NIS) which
usually listens on TCP port 3551.This project is a re-implementation of the synchronous version
[flyte/apcaccess](https://github.com/flyte/apcaccess) using
[asyncio](https://docs.python.org/3/library/asyncio.html), where a lot of the logic is
borrowed and improved.# Install
Install with pip:
```
$ pip install aioapcaccess
```# Usage
The primary API for getting the status from APCUPS is `aioapcaccess.request_status`.
It returns a `collections.OrderedDict` mapping from field names (e.g., "SERIALNO") to
their values in string format. What fields are available will depend on the model of
your APC UPS, see [APCUPSD manual](http://www.apcupsd.org/manual/) for details.The following example shows a typical usage of `aioapcaccess`
```python
import asyncio
import aioapcaccessasync def main():
result = await aioapcaccess.request_status(host='localhost', port=3551)
print(result)if __name__ == '__main__':
asyncio.run(main())
```The example above will print the following (prettified and simplified):
```
OrderedDict([
('APC', '001,036,0879'),
...,
('BATTV', '13.7 Volts'),
('CUMONBATT', '0 Seconds')
))])
```In addition to `request_status`, we offer the following functions for advanced uses:
- `aioapcaccess.request_raw_status` for getting raw (unparsed) status in `bytes`.
- `aioapcaccess.parse_raw_status` for parsing the `bytes` to the dict shown above.
- `aioapcaccess.split_unit` for splitting the supported unit suffix from the value
strings, returning a tuple `(value, unit)`. You can check `aioapcaccess.UNITS` for
the set of supported units. Note that units are also in the forms of strings
(e.g., "Seconds", "Volts"). If no valid units are found in the value strings, `unit`
will be `None`.