# IR Blaster
# by AA van Zoelen
#
# Version: 1.1
# Date : 23 Aug 2022
#
# Description
# ===========
# Protocol : String in UPPERCASE
# Code : Some protocols name this also data, address, wand_id, rc_code1
# Command : Some protocols name this also nbits, magnitude, rc_code2
# Repeat : Optionally set the code to be repeated a number of times. Otherwise use 1.
#
# Implemented protocols
# - LG
# o POWER data=0x20DF10EF, nbits=32
# o MUTE data=0x20DF906F, nbits=32
# o HOME data=0x20DF3EC1, nbits=32
# o VOL+ data=0x20DF40BF, nbits=32
# o VOL- data=0x20DFC03F, nbits=32
# o CH+ data=0x20DF00FF, nbits=32
# o CH- data=0x20DF807F, nbits=32
# o 0 data=0x20DF08F7, nbits=32
# o 1 data=0x20DF8877, nbits=32
# o 2 data=0x20DF48B7, nbits=32
# o 3 data=0x20DFC837, nbits=32
# o 4 data=0x20DF28D7, nbits=32
# o 5 data=0x20DFA857, nbits=32
# o 6 data=0x20DF6897, nbits=32
# o 7 data=0x20DFE817, nbits=32
# o 8 data=0x20DF18E7, nbits=32
# o 9 data=0x20DF9867, nbits=32
# o ARROW UP data=0x20DF02FD, nbits=32
# o ARROW DOWN data=0x20DF827D, nbits=32
# o ARROW LEFT data=0x20DFE01F, nbits=32
# o ARROW RIGHT data=0x20DF609F, nbits=32
# o OK data=0x20DF22DD, nbits=32
# o SLEEP data=0x20DF708F, nbits=32
# o INPUT data=0x20DFD02F, nbits=32
# o INFO data=0x20DF55AA, nbits=32
#
# energy->20DFA956
# av. mode->20DF0CF3
# input->20DFD02F
# tv/rad->20DF0FF0
# list->20DFCA35
# quick view->20DF58A7
# guide->20DFD52A
# home->20DFC23D
# fav->20DF7887
# ratio->20DF9E61
# back->20DF14EB
# info->20DF55AA
# exit->20DFDA25
# red button->20DF4EB1
# green button->20DF8E71
# yellow button->20DFC639
# blue button ->20DF8679
# text->20DF04FB
# t.opot->20DF847B
# subtitle->20DF9C63
# stop->20DF8D72
# play->20DF0DF2
# pause->20DF5DA2
# rew->20DFF10E
# forward->20DF718E
# ad->20DF8976
#
# POWER OFF->20DFA35C
# POWER ON->20DF23DC
#
# INPUT Antenna->20DF6B94
# INPUT Component 1->20DFFD02
# INPUT AV->20DF5AA5
# INPUT HDMI1->20DF738C
# INPUT HDMI2->20DF33CC
# INPUT HDMI3->20DF9768
#
# Netflix->20DF6A95
# Amazon->20DF3AC5
#
#
# Details
# -------
# MCU used is an 8285
#
# Minimal components
# IR receiver such as TSOP38238 - IR receiver
# NPN transistor (e.g. BC549C, 2n2222)
# IR LED
#
esphome:
name: ir-blaster-downstairs
esp8266:
board: esp8285
# Enable logging
logger:
level: INFO
ota:
password: "redacted"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
power_save_mode: none
fast_connect: true
reboot_timeout: 3min
use_address: ir-blaster-downstairs.local
manual_ip:
static_ip: 192.168.1.59
gateway: 192.168.1.1
subnet: 255.255.255.0
button:
- platform: template
name: "Power LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF10EF
nbits: 32
- platform: template
name: "Power OFF LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DFA35C
nbits: 32
- platform: template
name: "Power ON LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF23DC
nbits: 32
- platform: template
name: "UP Arrow LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF02FD
nbits: 32
- platform: template
name: "DOWN Arrow LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF827D
nbits: 32
- platform: template
name: "LEFT Arrow LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DFE01F
nbits: 32
- platform: template
name: "RIGHT Arrow LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF609F
nbits: 32
- platform: template
name: "Input LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DFD02F
nbits: 32
# INPUT Antenna->20DF6B94
# INPUT HDMI1->20DF738C
# INPUT HDMI2->20DF33CC
# INPUT HDMI3->20DF9768
- platform: template
name: "Mute LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF906F
nbits: 32
- platform: template
name: "Home LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF3EC1
nbits: 32
- platform: template
name: "Vol Up LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF40BF
nbits: 32
- platform: template
name: "Vol Down LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DFC03F
nbits: 32
- platform: template
name: "Chan Up LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF00FF
nbits: 32
- platform: template
name: "Chan Down LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF807F
nbits: 32
- platform: template
name: "Arrow Up LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF02FD
nbits: 32
- platform: template
name: "Arrow Down LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF827D
nbits: 32
- platform: template
name: "Arrow Left LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DFE01F
nbits: 32
- platform: template
name: "Arrow Right LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF609F
nbits: 32
- platform: template
name: "Okay LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF22DD
nbits: 32
- platform: template
name: "0 Zero LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF08F7
nbits: 32
- platform: template
name: "1 One LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF8877
nbits: 32
- platform: template
name: "2 Two LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF48B7
nbits: 32
- platform: template
name: "3 Three LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DFC837
nbits: 32
- platform: template
name: "4 Four LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF28D7
nbits: 32
- platform: template
name: "5 Five LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DFA857
nbits: 32
- platform: template
name: "6 Six LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF6897
nbits: 32
- platform: template
name: "7 Seven LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DFE817
nbits: 32
- platform: template
name: "8 Eight LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF18E7
nbits: 32
- platform: template
name: "9 Nine LG"
on_press:
- remote_transmitter.transmit_lg:
data: 0x20DF9867
nbits: 32
# Enable Home Assistant API
api:
encryption:
key: !secret encryption_key
services:
- service: send_ir
variables:
protocol: string
code: string
command: string
repeats: string
then:
- lambda: 'ESP_LOGD("main", "Protocol: %s - Code: %s - Command: %s", protocol.c_str(), code.c_str(), command.c_str() ); '
- if:
condition: # --=[ *** LG *** ]=--
lambda: 'return protocol == "LG";'
then:
- logger.log: "Sending LG data...!"
- remote_transmitter.transmit_lg:
data: !lambda |-
int i;
sscanf(code.c_str(), "%x", &i );
return i;
nbits: !lambda |-
return std::stoi( command );
#remote_receiver:
# pin:
# number: GPIO14
# inverted: true
# dump: lg
remote_transmitter:
pin: GPIO4
carrier_duty_percent: 50%