Asyncio PJLink library (Class 1 and Class 2)
Project description
What is PJLink?
Most projectors that have RJ45 ports on the back can be controlled via PJLink.
PJLink is a communication protocol and unified standard for operating and controlling data projectors via TCP/IP
, regardless of manufacturer.
PJLink consists of Class 1 commands and queries, as well as Class 2 notifications and extensions.
- Class 1 is the most common type of PJLink, and is used for basic commands such as power on/off, input selection, and adjusting volume.
- Class 2 is an extended version of the protocol that supports additional commands such as opening and closing the projector's lens cover, and is typically used by more sophisticated devices.
What is aiopjlink?
A Python library that uses asyncio to talk to one or more projectors connected to a network using the PJLink protocol.
It has these advantages:
- ✅ Clean modern asyncio API
- ✅ High level API abstraction (eg.
lamp.hours
) - ✅ Pure Python 3 implementation (no dependencies)
- ✅ Full suite of test cases
- ✅ Context managers for keeping track of connections and resources
- ✅ High quality error handling
Usage
Each "connection" to a projector is managed through a PJLink
context manager. Once this is connected, you access the different functions through a high level API (e.g. conn.power.turn_off()
, conn.lamps.hours()
, conn.errors.query()
, etc).
For example, create a PJLink
connection to the projector and issue commands:
async with PJLink(address="192.168.1.120", password="secretpassword") as link:
# Turn on the projector.
await link.power.turn_on()
# Wait a few seconds, then print out all the error information.
await asyncio.sleep(5)
print("errors = ", await link.errors.query())
# Then wait a few seconds, then turn the projector off.
await asyncio.sleep(5)
await link.power.turn_off()
Development
We use the PDM package manager.
pdm install --dev # install all deps required to run and test the code
pdm run lint # check code quality
pdm run test # check all test cases run OK
pdm publish # Publish the project to PyPI
Other notes:
- There are more "pdm scripts" in the
.toml
file. - Set the env variable
AIOPJLINK_PRINT_DEBUG_COMMS
to print debug comms to the console.
Roadmap
Pull requests with test cases are welcome. There are still some things to finish, including:
- Search Protocol (§3.2)
- Status Notification Prototol (§3.3)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file aiopjlink-1.0.5.tar.gz
.
File metadata
- Download URL: aiopjlink-1.0.5.tar.gz
- Upload date:
- Size: 21.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.1.5 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf9746deec4b7f05e8e9ee82320fd6bc1d39f3dd046dcc5668f264da9f3960aa |
|
MD5 | ae5989256b7ceb0812f10a5094c9cf19 |
|
BLAKE2b-256 | 47320c50c6f53231e5a1e89ec3dfdfd21db5310ad4783e0631c352e9c7a6a519 |
File details
Details for the file aiopjlink-1.0.5-py3-none-any.whl
.
File metadata
- Download URL: aiopjlink-1.0.5-py3-none-any.whl
- Upload date:
- Size: 21.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.1.5 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ea0845ce75712973b66fe4ada24d877cc91b39ac006fc545529a6f4ea3478b7 |
|
MD5 | a44620f6993e39ab770bdb3c63b69e70 |
|
BLAKE2b-256 | e350479f440969c8dc52ae4ce4d02fc536223c3fa7768f96f337efe724b3d949 |