A python package to control JVC Projectors over IP.
⚠️ This project is looking for (co-)maintainers.
Times change, I might end up with a different projector brand, JVC might change the command interface for a newer model that I don't have. Enough people use this library now that I think it's important to think about think about its future. I would be grateful to have people who are competent in python and have access to a JVC projector on board. If you're willing to help, submit a pull request implementing new features, fixing bugs or tidying up my terrible programming and documentation!
If you'd like to make a donation to sponsor work on this project, you can donate on ko-fi, or github sponsors
This library is used by following software:
- JVC projector remote for Homeassistant (add-on for Home Assistant).
- homebridge-jvc-projector(plugin for Homebridge)
It can also be used standalone or in a Python script.
To read a property, use the JVCProjector.command(<command>) method.
Examples:
- Power state: send command
powerand the response will bestandby,lamp_on,cooling,reservedoremergency - Signal state: send command
signaland the response will beno_signaloractive_signal
To control the projector, use JVCProjector.command(<command>-<state>).
Examples:
- Power ON:
power-on - Change picture mode to film:
picture_mode-film - Switch lamp to high:
lamp-high
| Description | Command | State |
|---|---|---|
| Power | power | Read: standby, lamp_on, cooling, reserved, emergencyWrite: on, off |
| Lens Memory | memory | Read/Write: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 |
| Input | input | Read/Write: hdmi1, hdmi2 |
| Picture Mode | picture_mode | film, cinema, natural, hdr10, thx, user1, user2, user3, user4, user5, user6, hlg, frame_adapt_hdr, hdr10p, pana_pq |
| Low Latency Mode | low_latency | Read/Write: on, off |
| Mask | mask | Read/Write: off, custom1, custom2, custom3 |
| Lamp Setting | lamp | high, low, mid |
| Menu Buttons | menu | Write: menu, down, left, right, up, ok, back |
| Lens Aperture | aperture | Read/Write: off, auto1, auto2 |
| Anamorphic Mode | anamorphic | Read/Write: off, a, b, c, d |
| Signal Status | signal | Read: no_signal, active_signal |
| Get Mac Address | macaddr | Read: returns mac address string |
| Model Info | modelinfo | Read: returns the model info string |
| Test Connection | null | Write: no write payload, used for testing connection |
NOTE: Not all commands or states are supported by all models. You can easily tell by testing them on your JVC projector.
For the latest stable version,
$ python3 -m pip install jvc_projector_remoteIf you want to install the latest unstable commits from this repo,
$ python3 -m pip install -e git+https://github.com/bezmi/jvc_projector.git#egg=jvc-projector-remoteIf you've made changes and want to install them, ensure you have hatch.
$ python3 -m pip install hatchRun the build command from the root directory of this repository.
$ hatch buildFinally, you can install the package. Make sure the filename that you specify matches the one you want to install in the dist/ directory.
$ pip install dist/jvc_projector_remote-vX.X.X-py3-none-any.whlThe --force-reinstall flag will ensure that updated files are installed even if the version number of your build matches the pre-existing package.
For usage with Home Assistant, see here.
Below is an example for using this module standalone (see command format section for command strings):
>>> from jvc_projector_remote import JVCProjector
# replace with your projector's local IP
>>> host = "192.168.1.12"
# initialise (for models older than the NZ series)
>>> projector = JVCProjector(host, port=20554, delay_ms=600, connect_timeout=10, max_retries=10)
# initialise (alternate, with network password)
>>> projector = JVCProjector(host, password="MYPASSWORD", port=20554, delay_ms=600, connect_timeout=10, max_retries=10)
# power on, power off
>>> projector.power_on()
# check status once it's on
>>> projector.is_on()
True
>>> projector.power_off()
# check if it's off
>>> projector.is_on()
False
# Send arbitrary command
# see the command format section above
>>> projector.command("input-hdmi2")This module is confirmed to work for the models listed below. It should also work with projectors in the same series as the ones listed.
- DLA-X5900
- NX5
- NZ8/RS3100
- DLA-RS440
If you've confirmed functionality with a model that is unlisted, raise an issue or submit a pull request to have it added.
Raise an issue or open a pull request. Add new commands to the Commands class. The format is documented in the docstring for the parent Command class.