This is an old revision of the document!
The primary objective of this project is to enable the integration of non-smart infrared (IR) devices into a home automation system. This integration focuses on enhancing control methods beyond the traditional remote control. A key motivation for this project is the need to automate air conditioning (AC) units. The goal is to establish automation, such as activating heating or cooling when approaching the home under specific temperature conditions. Additionally, the project aims to facilitate voice control of the AC units using Amazon Alexa.
The circuit and PCB were designed using KiCad. The ESP32-C3's small footprint and low power requirements make it ideal for creating compact sensors. A PN2222A transistor and a 470Ω resistor are used to adapt the 5V requirement of the IR emitter to the 3.3V ESP architecture. The DHT11 sensor is integrated to provide room temperature data, assisting the climate control plugin, mainly since some AC units do not relay their state via IR.
To ensure the device blends seamlessly into day-to-day environments without exposing wires or internal components, a custom enclosure was designed using Fusion 360. The design includes:
esphome: name: ir-controller friendly_name: IR controller libraries: # fix for https://github.com/esphome/issues/issues/4208 - IRremoteESP8266=https://github.com/predam/IRremoteESP8266.git#v2.8.6 esp32: board: seeed_xiao_esp32c3 framework: type: arduino # Enable logging logger: # Enable Home Assistant API api: encryption: key: "***" ota: password: "***" wifi: ssid: !secret wifi_ssid password: !secret wifi_password manual_ip: # Set this to the IP of the ESP static_ip: 192.168.1.x # Set this to the IP address of the router. Often ends with .1 gateway: 192.168.1.1 # The subnet of the network. 255.255.255.0 works for most home networks. subnet: 255.255.255.0 # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Ir-Controller Fallback Hotspot" password: "***" external_components: - source: github://Jorre05/remote_receiver components: [ remote_receiver ] - source: github://predam/remote_transmitter components: [ remote_transmitter ] captive_portal: remote_receiver: id: rcvr pin: number: 4 #D2 inverted: true mode: input: true pullup: true rmt_channel: 2 tolerance: 55% dump: all remote_transmitter: id: trsm pin: 3 #D1 rmt_channel: 1 # Infrared remotes use a 50% carrier signal carrier_duty_percent: 50% switch: - platform: template name: "AC On" turn_on_action: remote_transmitter.transmit_panasonic: address: 0x4004 command: 0x0720008C - platform: template name: "AC DRY" turn_on_action: remote_transmitter.transmit_panasonic: address: 0x4004 command: 0x07200004 sensor: - platform: dht pin: 7 #D6 temperature: name: "Living Room Temperature" humidity: name: "Living Room Humidity" update_interval: 60s climate: - platform: heatpumpir protocol: panasonic_dke horizontal_default: auto vertical_default: auto max_temperature: 30 min_temperature: 16 name: "Living Room AC" receiver_id: rcvr transmitter_id: trsm