Skip to content

bezmi/homeassistant_jvc_projector_remote

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About us

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 component 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 support on-going work for this homeassistant component, you can donate on ko-fi or github sponsors.

JVC projector remote for Homeassistant

this repo contains a remote implementation for jvc projectors. For the most up-to-date documentation, visit the main repository page.

We also have a home assistant community page.

The jvcprojector remote platform allows you to control the state of a JVC Projector.

Known supported units:

  • DLA-X5900
  • DLA-RS1000
  • DLA-RS3100
  • NZ Series

The IP command format hasn't changed for a while and it should work with most JVC D-ILA projectors.

Getting started

Installation⏳

HACS (recommended)📕

For easy installation and updates, use HACS to install this custom component. The installation instructions for HASS are available here.

Once HACS is setup, go to Settings -> Custom Repositories and add the following Repository:

bezmi/homeassistant_jvc_projector_remote

And use type Integration.

After that, hit the 'add' button and search for/install the 'JVC Projector Remote' option. It is recommended you select the 'show beta releases' option and install the latest pre-release build shown in our releases as they contain the most up to date features. Don't install the 'master' option, as that will go off the master branch which you can expect to be highly experimental and might break at any time.

Configuration

Configuration variables

Required

Type Description
name string friendly name for your projector
host string your projector IP address
password int Network password. Only required for some projectors. It will say in the network settings for the device

Optional

Type Description
scan_interval float how often to poll for updates (in seconds)
port int which port to connect to. Default is 20554
timeout float how many seconds to wait for response from projector before a communciation error is called. Default is 10 seconds
delay int how many milliseconds to wait between consecutive commands. Default is 600 ms
max_retries int how many times to retry commands before connection error. Default is 10

Example configuration.yaml entry

Add this under remote in your configuration.yaml (NOTE: no web interface set up at the moment, there's an open issue for it):

remote:
  - platform: jvcprojector
    name: Projector
    host: 192.168.1.14
    scan_interval: 30

    # only required for NZ series and up
    password: MyPassword

    # optional, default is 20554
    port: 20554

    # optional, float, default is 0.5 seconds
    # how long to wait before raising a communication error
    timeout: 0.5

    # how long to wait between commands
    # optional, default is 600 milliseconds
    delay: 600

    # how many times to retry on connection error
    # optional, default is 5
    max_retries: 5

Once the configuration has been edited and you've restarted homeassistant, there should be a remote entity that you can add to your dashboard. Automations can be created through the homeassistant web interface, or you can implement changing of the projector input and lens memory based on input_select entities and some automation templates.

Example automation

Note: might not work on more recent builds of homeassistant, this part is still a WIP. Edit your automations.yaml (Thanks to OtisPresley for the instructions!):

  - alias: projector input
    trigger:
      platform: state
      entity_id: input_select.jvc_projector_input
    condition:
        - condition: state
          entity_id: remote.theater_room_projector
          state: 'on'
    action:
      service: remote.send_command
      data_template:
        entity_id: remote.theater_room_projector
        command: >-
            {% if is_state('input_select.jvc_projector_input', 'HDMI 1') %}
              input-hdmi1
            {% elif is_state('input_select.jvc_projector_input', 'HDMI 2') %}
              input-hdmi2
            {% endif %}

Make sure the entitity_id matches your projector. You can go to Developer Settings and under Services, use the Remote:Turn on service to select the entity. Then use GO TO YAML MODE to see the entity_id.

Add an Entities card to your dashboard to control it. Make sure the inputs switch stays on to be able to change projector inputs.

IMPORTANT NOTE: In your projector settings, you must make sure that the Control4 setting is turned OFF under Network options. While this is on, the projector will not expose port 20554, which means this integration won’t work.

Details

Extra state attributes

See the 'Read commands' table for descriptions of the extra state attributes. In addition to these, the component reports:

last_commands_sent: a list of the commands sent when remote.send_command was last called on this entity

last_commands_response: a list of the responses from the projector for each command in last_commands_sent. If the command was a successful write command (no response from projector), then the element in this list will be the string success. Otherwise, it will be a string representing the response from the projector.

Services

Service remote.turn_off:
Service data attribute Optional Description
entity_id no Entity ID to projector.
Service remote.turn_on:
Service data attribute Optional Description
entity_id no Entity ID to projector.
Service remote.send_command:
Service data attribute Optional Description
entity_id no Entity ID to projector.
command no A command (or list of commands) to send.
delay_secs yes The time in seconds to wait between each command in the list.

Command strings

Write commands

These command strings will perform an operation on the projector. The corresponding entry in the last_commands_response attribute will be success if the operation succeeded, or failed otherwise. Values in '{}' indicate multiple choices.

Type Commands note
Power power-{on,off} recommended to use the remote.turn_on and remote.turn_off services.
Lens memory memory-{1-10} Not all projectors will have all 10
Source input-{hdmi1, hdmi2}
Picture mode picture_mode-{cinema, natural, film, THX, hlg, hdr10, user{1-6}, hdr10p, pana_pq, frame_adapt_hdr} hdr10p, pana_pq and frame_adapt_hdr for NZ series only
Low latency mode low_latency-{on, off}
Mask mask-{off, custom1, custom2, custom3}
Lamp lamp-{high,low} mid for NZ series only
Menu controls menu-{menu, up, down, left, right, ok, back}
Lens aperture aperture-{off, auto1, auto2}
Anamorphic anamorphic-{off, a, b, c, d} d for NZ series only
Read commands

These command strings will store the response from the projector in the corresponding element of the last_commands_response attribute or failed otherwise

Type Commands Returns
Power status1 power lamp_on, standby, cooling, reserved, emergency
Input1 input hdmi1, hdmi2
Signal status1 signal active_signal, no_signal
Picture mode1 picture_mode cinema, natural, film, THX, hlg, hdr10, user{1-6}, hdr10p, pana_pq, frame_adapt_hdr
Low latency mode low_latency on, off
Mask mask off, custom1, custom2, custom3
Lamp1 lamp high, low
Lens aperture aperture off, auto1, auto2`
Anamorphic anamorphic off, a, b, c, NZ Series: d
MAC address macaddr projector MAC address
Model info modelinfo model string of the projector

1 These are reported in the extra state attributes.

Support🤝

Check out the Home Assistant Community Page and the discussion board if you're having trouble getting this working.

Any issues? ☠

If you'd like home assistant specific support, or would like me to implement a feature for the homeassistant component, post on the discussion board.

For problems with getting this to work with homeassistant, post on the discussion board first. That way we can raise an issue once we've identified actual bugs, whilst keeping tech support questions out of the issue tracker.

If you would like a new command to be implemented, please raise an issue in the jvc-projector-remote repo, or don't, and just report it here. I'm sure we'll figure it out.

For folks who want to contribute ❤

Check out the open issues

Fork this repo and create a pull request  🌈   ✨

Your contribution is highly appreciated 🙏.

This repository is maintained by bezmi

Show some ❤️ by giving us a star!