Control old (2008) RX-V863 Yamaha receiver through home assistant

I was inspired by GitHub - samm-git/marantz-rc-esp32: Web based remote control for Marantz amplifier using ESP32. The project uses an ESP to control a Marantz receiver through an IR port on the amp rather than sending commands with IR Leds.

My Yamaha AV has a similar port, a jack 3.5mm in-port. After some digging around and combining some of the great work of others I now have a working prototype using ESPHome.

I have connected a mono jack cable to the D2 and GND of a wemos d1 mini and am now able to send IR commands to my old RX-V863 Yamaha through HA. Included below a link to my repo on Github:

Code for Denon is included in the original repo:

I have also used the work of:

5 Likes

I just bought my first ESP32 boards. I had idea of using them to control my floor heating, but now that I found this one maybe I try to make one of the boards to work with my old RX-V1900 AV receiver. Need to dig deeper into this.

The RX-V1900 has a serial port. It could be that it works with this custom integration GitHub - mvdwetering/yamaha_ynca: Custom integration for Home Assistant to support Yamaha AV receivers with the YNCA protocol (serial and network). (I am the author)

It does mean you would need to either connect it with serial cable to Home Assistant which may not be practical. Or use some kind of serial-to-TCP converter and connect through a network.

Nice, my prototype of nearly 2 yrs old still works without issue or delay. Only downside is that there is no feedback of the status. I can imagine the alternative option with the serial cable had that added benefit. An esp can also communicate over serial maybe with a rs485 or rs232 adapter. Good luck!

Thanks. I’m familiar with that integration but always thought my receiver is too old to use that. All this ESP stuff is new to me and I have no idea how serial cable or any kind of adaptors work. Need to google about this. :confused: :slight_smile:

I finally had some time on my hands to make this work. It was quite easy to do. And got it working at first try. Even my soldering skills didn’t let me down. Code needed little tweaking but other than that it was smooth sailing. :+1:

1 Like

I’ve tried to make it work without any sucess :confused: My ESP have been flashed using the yaml code provides but it does not show any services or action I can make :confused: Any clues of what I did wrong ? And HAS does not find any services

Can you share a log output of the esp? What does the entity/ device show in home assistant?

Yes sure
No entity showing up


On esphome side :

There are no entities generated in de log. Can you share yaml?

And perhaps the full log in text mode (as opposed to screen shot). Please use

Preformatted text when pasting code or logs

You seem to be in safe mode

Yes ! My bad for the format

esphome:
  name: esp-yamaha
  platform: ESP8266
  board: d1_mini

# Enable logging
logger:

remote_transmitter:
  - id: ir_out
    pin: 
      number: D2
      inverted: False
    carrier_duty_percent: 50%
ota:
  - platform: esphome
    port: 8266
    password: !secret ota_password

web_server:
  include_internal: true

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp-Yamaha Fallback Hotspot"
    password: !secret wifi_password
    
# Enable Home Assistant API
api:
  services:
    - service: remote_2code
      variables:
        rc_code_1: int
        rc_code_2: int
      then:
      - remote_transmitter.transmit_pioneer:
          rc_code_1: !lambda 'return rc_code_1;'
          rc_code_2: !lambda 'return rc_code_2;'
          repeat:
            times: 2
    - service: remote_1code
      variables:
        rc_code_1: int
      then:
      - remote_transmitter.transmit_pioneer:
          rc_code_1: !lambda 'return rc_code_1;'
          repeat:
            times: 2

    - service: power_on
      then:
        - remote_transmitter.transmit_pioneer:
            # YAMAHA ON
            rc_code_1: 0x7E7E

    - service: power_off
      then:
        - remote_transmitter.transmit_pioneer:
            # YAMAHA OFF
            rc_code_1: 0x7E7F

    - service: volume_up
      then:
        - remote_transmitter.transmit_pioneer:
            # YAMAHA VOLUME UP
            rc_code_1: 0x5E1A

    - service: volume_down
      then:
        - remote_transmitter.transmit_pioneer:
            # YAMAHA VOLUME DOWN
            rc_code_1: 0x5E1B
            
    - service: select_tv
      then:
        - remote_transmitter.transmit_pioneer:
            # YAMAHA DTV/CABLE
            rc_code_1: 0x5E54

    - service: select_volumio
      then:
        - remote_transmitter.transmit_pioneer:
            # YAMAHA MD/CDR
            rc_code_1: 0x5EC9
            
    - service: select_mibox
      then:
        - remote_transmitter.transmit_pioneer:
            # YAMAHA DVR
            rc_code_1: 0x5E13            

captive_portal:

Did you check actions in developer tools? Now remember I did not create any entities but solely use the actions (previously known as services)

Yes ! You rock ! It was it :slightly_smiling_face: ! I will adapt yaml file and submit a PR

It’s a prototype I made during COVID lockdown 3 yes ago. It still does the job :wink:

All sorts of plans to update/improve but gone are lockdown days with ample time😂

1 Like