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
Hashes for aiopjlink-1.0.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ea0845ce75712973b66fe4ada24d877cc91b39ac006fc545529a6f4ea3478b7 |
|
MD5 | a44620f6993e39ab770bdb3c63b69e70 |
|
BLAKE2b-256 | e350479f440969c8dc52ae4ce4d02fc536223c3fa7768f96f337efe724b3d949 |