JVC Projector Component

Man @OtisPresley thanks so much for this. (and of course to @bezmi as well for creating this) I was unable to get this working until I read thru this thread and got to the end. I am also on Hassio so the apk was the missing link for me. Thanks for saving me some troubleshooting time.

This works SO well with my JVC DLA-RS1000 (same as NX5). So much more reliable for on/off than my Harmony Remote using IR. Actually have it working through Emulated Roku + Harmony Remote to ensure the device properly powers on/off.

I see the remote entity in Home Assistant and within the attributes it shows last state, but I haven’t yet figured out how to get that information to surface elsewhere in HA. e.g. I’d like to show the status of the projector on/off within a lovelace card. Is this possible? Not sure if I missed this detail somewhere…

Good to hear it is working well for you. You should be able to do this with an entities card. See the “Special row elements” section for information on how to display an attribute.

1 Like

Hey All, just a quick note to say a BIG thank you to @bezmi and @OtisPresley for the integration and details. I have this working and at last the projector behalves the way it should and its power is integrated to all the other AV kit in our movie room. Thanks Guys :clap:

1 Like

So I’ve just stumbled upon (and gotten working!) this addon, so thanks so much for that!

I know this is an old thread, but I’m curious if there’s a way to expose the remote entity to the Nabu Casa cloud, so that I can use it via Alexa?

Hi everyone, I have released a major update of the component (v2.0.0a2) with the ability to fetch information from the projector. I have also added extra state attributes that fetch the signal status, input, picture mode and lamp state. In addition to these, there is a new extra state attribute called last_commands_response, which stores the responses from the projector for any successful read commands. Have a look at the README which I have updated to suit the latest changes.

On the python library side of things, it is much more robust and supports reconnecting/retrying the command send if it failed due to a communication error. I have also added debug statements to the python library, which you can enable by having:

logger:
  logs:
    jvc_projector_remote.jvcprojector: debug

in your configuration.yaml.

Please test out the latest version and report any bugs. You’ll have to check the “install beta versions” toggle in HACS to be able to see the v2.0.0a2 tag as an option. v1.0.2 is the old “stable” build if you’d like to revert. If you have any issues, please be sure to pose something on the github page for the component.

Currently, the only planned features before releasing a “stable” version of this is config flow integration, so we can do away with the legacy configuration.yaml setup (in addition to more testing).

1 Like

Any chance you could implement lens memories 6-10? They are available for the N series and above afaik. :relaxed:

No problem. I have add an issue to track this feature request. I am a bit busy with postgrad stuff so it will be a little while.

1 Like

Hi all,

i am trying to set this up for a NZ8 projector but there seems to occur an error somewhere:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 281, in _async_setup_platform
    await asyncio.shield(task)
  File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/jvcprojector/remote.py", line 36, in setup_platform
    JVCRemote(name, host, password, port, delay, timeout, retries),
  File "/config/custom_components/jvcprojector/remote.py", line 69, in __init__
    self._lamp_state = "unknown" if not self._state else self._jvc.command("lamp")
  File "/usr/local/lib/python3.10/site-packages/jvc_projector_remote/jvcprojector.py", line 202, in command
    return self._send_command(getattr(Commands, commandl[0]))
  File "/usr/local/lib/python3.10/site-packages/jvc_projector_remote/jvcprojector.py", line 167, in _send_command
    result = command.read(jvc_sock)
  File "/usr/local/lib/python3.10/site-packages/jvc_projector_remote/jvccommands.py", line 212, in read
    return self.read_valsinv[resp]
KeyError: b'2'

My config is as follows:

platform: jvcprojector
name: NZ8
host: 10.2.0.50
scan_interval: 30

# only required for NZ series and up
#password: MyNZ8

# 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

Interesting as well is that my device has no option to set a network password…

Do you have any idea what could be wrong?

BR

Forgive me for showing a bit of the code, but if you look here, I am only dealing with two return values for the lamp power state, either “high” (return code b'1') or “low” (return code b'0').

Your error implies the NZ series has another lamp power state that corresponds to the key b'2' that I have simply not implemented as my older projector doesn’t have it. This will need looking into, but if you can put your lamp in a different power mode which doesn’t give the error, it should allow you to get it set up and kind-of working.

For the network password, if it isn’t an option in your projector’s network settings, then there is no need to set it in the config. I have no idea which models actually have it (quick check of the manual says DLA-NZ9BK, DLA-NZ8BK, DLA-NZ7BK, DLA-RS4100K, DLA-RS3100K, DLA-RS2100K only).

I am trying to find the external command specifications for the NZ models, but so far, I have only come across the file for NX series, which was last updated in 2018. Since these are laser models, it is likely that the “lamp” commands are different.

Edit: found it! AVS Forum to the rescue! There is indeed a “mid power” lamp mode. I can have this implemented and pushed out fairly quickly. Stay tuned!

1 Like

Cool thanks very much for your promt answer!! There will be a firmware update midth of november which might change the file you found slightly again (should`nt change lamp/laser mode though).

Thats exactly the file i found as well.

I have released v2.0.0a3. It should greatly improve compatibility with newer projectors, among other bugfixes. Please give it a go and report back, there aren’t many users with the newest models that I know of.

If you are able to use this component without issues, I am inclined to push out the final v2.0.0 and start preparing for v3.0.0 which will allow web interface configuration and settings tweaks and hopefully bring the component up to the latest homeassistant standards.

1 Like

Wow that was fast :slight_smile: Just saw it. I will check it later on and let you know!

Update: looks better now:

 Logger: custom_components.jvcprojector.remote
Source: custom_components/jvcprojector/remote.py:105
Integration: jvcprojector (documentation)
First occurred: 17:33:17 (78 occurrences)
Last logged: 18:11:47
Couldn't connect to the projector at the specified address: 10.2.0.50:20554. Ensure the configuration is correct.

I will check again when i have turned on the projector later on.

Looks good, but i had to restart HA after turning the projector on before it worked out.

Let me know what you need me to test! :slight_smile:

Is there a way/command to control CMD, eShift and graphics mode as well?

but i had to restart HA after turning the projector on before it worked out.

Yes, I find that this is often the case. Unfortunately it is quite a pain to debug and optimise the communications as JVCs protocol is not great and has many quirks. Given how long the projector takes to restart, you can imagine how frustrating debugging these things can get. Hopefully writing v3 with web ui config flow will give me an opportunity to refactor some of the communications code.

Let me know what you need me to test!

Just go through the attributes in that list and make sure that they are working. Put it through regular usage and check the logs reasonably often, let me know if any weird warnings/error messages appear.

Is there a way/command to control CMD, eShift and graphics mode as well?

Not yet, but I try to add extra commands whenever I update the python library, so I’ll put them on the list.

Everything worked out well so far! Attributes where showing corresponding states. It might be even faster then the original remote which really sucks.

Is there a way to get the attribute states into a separate entity (like a status entity)? I am not a coder but please let me know if i can be of any help :slight_smile:

Is there a way to get the attribute states into a separate entity (like a status entity)?

Maybe try a markdown card.

Thanks for the hint. I have figured out how to use a template sensor like:

platform: template
sensors:
  nz8_power_state:
    value_template: "{{ state_attr('remote.nz8', 'power_state') }}"
    friendly_name: NZ8 Powerstate
    icon_template: mdi:power

Hi everyone, I have released v2.0.0 (stable) of the addon. No big changes from the alpha releases, except a bugfix for the annoying issue where the remote in homeassistant would briefly toggle back to ‘off’ when turning the projector on from the dashboard. This will be the last release that is configured through configuration.yaml

The current master branch contains a mostly working implementation of the component with a config flow based setup, which will be the v2.1.0 release. I aim to have it set up as a JVC projector device, with many entities:

  • the remote entity that we all know and love (same extra state attributes, etc so all existing automations work fine)
  • lots of (configurable) sensors allowing you to expose many of the projector attributes. This really needs to be configurable, as the projector I own (x5900) has issues with trying to access many things in quick succession. See my note below.

Once the config flow system is stable and well documented, I will start the push to integrate it into homeassistant core with all of the required clean up that will go along with that.

Note: if you have an NZ series projector, reduce the delay parameter in your configuration.yaml for the component and let me know the lowest value before the component starts misbehaving. On my projector, the limit approx 600-700ms before I start getting connection errors.

1 Like

Hi @bezmi ,

thanks for the update! i can check the delay setting for my NZ8 and let you know.

Update: set it to 450 yesterday and could not recognize issues while switching lasermode…