AirCare EP9R 800 humidifier pedestal

I recently purchased an ESP360 from CS and I am trying to figure out how I can use this thing with the RF 433 transmitter. I have a humidifier that has a remote that sends RF signals for things like; on, off, fan speed, humidity set-point. I can’t figure out how to exactly use this with the yaml configuration file. The RAW outputs are below, what should I be doing with this to convert it into a format esphome can understand?

ON
[13:09:48][I][remote.pronto:237]: Received Pronto: data=0000 006D 0014 0000 000B 001E 000C 001C 000C 001D 000C 001D 000C 001D 000C 001D 000C 0079 0015 0014 0014 003B 0015 003B 003C 0015 0014 0014 0014 0014 0014 0014 0014 0014 0014 0014 0014 003B 0015 003A 003C 0014 000C 009B 06C3
[13:09:48][I][remote.pronto:237]: Received Pronto: data=0000 006D 0014 0000 000C 001D 000C 001D 000C 001C 000C 001C 000C 001C 000C 001C 000C 0079 0015 0014 0014 003B 0015 003B 003C 0015 0014 0014 0014 0014 0014 0014 0014 0014 0014 0014 0014 003B 0015 003B 003C 0014 000C 009B 06C3
[13:09:48][I][remote.pronto:237]: Received Pronto: data=0000 006D 0014 0000 000C 001D 000C 001C 000C 001D 000C 001C 000C 001D 000C 001C 000C 0079 0015 0014 0014 003A 0015 003B 003C 0015 0014 0014 0014 0014 0014 0014 0014 0014 0014 0014 0014 003B 0015 003A 003C 0014 000C 009B 06C3
[13:09:48][I][remote.pronto:237]: Received Pronto: data=0000 006D 0014 0000 000C 001D 000C 001D 000C 001C 000C 001D 000C 001D 000C 001D 000C 0079 0015 0014 0014 003B 0015 003B 003C 0015 0014 0014 0014 0014 0014 0014 0014 0014 0014 0014 0014 003B 0015 003A 003C 0014 000C 009B 06C3
[13:09:48][I][remote.pronto:237]: Received Pronto: data=0000 006D 0014 0000 000C 001D 000C 001C 000C 001C 000C 001D 000C 001D 000C 001D 000C 0079 0015 0014 0014 003B 0015 003A 003C 0015 0014 0014 0014 0014 0014 0014 0014 0014 0014 0014 0014 003B 0015 003B 003C 0014 000C 009B 06C3
Average:
[13:09:48][I][remote.pronto:237]: Received Pronto: data=0000 006D 0014 0000 000C 001D 000C 001C 000C 001C 000C 001D 000C 001D 000C 001D 000C 0079 0015 0014 0014 003B 0015 003B 003C 0015 0014 0014 0014 0014 0014 0014 0014 0014 0014 0014 0014 003B 0015 003A 003C 0014 000C 009B 06C3


OFF
[13:05:28][I][remote.pronto:237]: Received Pronto: data=0000 006D 0014 0000 001E 000C 001C 000C 001C 000C 001C 000C 001C 000C 001C 000C 0078 0015 003A 0015 0014 0014 0014 003B 003C 0015 0014 0014 0014 003B 0014 003B 0015 0014 003B 0015 0014 003B 003B 0015 003A 000C 009B 06C3
[13:05:28][I][remote.pronto:237]: Received Pronto: data=0000 006D 0014 0000 000C 001D 000C 001C 000C 001C 000C 001D 000C 001C 000C 001C 000C 0079 0015 003A 0015 0014 0014 0014 003B 003C 0015 0014 0014 0014 003B 0014 003B 0015 0014 003B 0015 0014 003B 003B 0015 003A 000C 009B 06C3
[13:05:28][I][remote.pronto:237]: Received Pronto: data=0000 006D 0014 0000 000C 001D 000C 001C 000C 001D 000C 001C 000C 001D 000C 001C 000C 0078 0015 003B 0015 0014 0014 0014 003B 003C 0015 0014 0014 0014 003B 0015 003B 0015 0014 003B 0015 0014 003B 003B 0015 003A 000C 009B 06C3
[13:05:28][I][remote.pronto:237]: Received Pronto: data=0000 006D 0014 0000 000C 001D 000C 001D 000C 001C 000C 001D 000C 001D 000C 001C 000C 0078 0015 003A 0015 0014 0014 0014 003B 003C 0015 0014 0014 0014 003B 0014 003B 0015 0014 003B 0015 0014 003B 003B 0015 003A 000C 009B 06C3
[13:05:29][I][remote.pronto:237]: Received Pronto: data=0000 006D 0014 0000 000C 001D 000C 001C 000C 001C 000C 001D 000C 001D 000C 001D 000C 0078 0015 003B 0015 0014 0014 0014 003B 003C 0015 0014 0014 0014 003B 0014 003B 0015 0014 003B 0015 0014 003B 003B 0015 003A 000C 009B 06C3
Average:
[13:05:29][I][remote.pronto:237]: Received Pronto: data=0000 006D 0014 0000 000C 001D 000C 001C 000C 001C 000C 001D 000C 001D 000C 001C 000C 0078 0015 003B 0015 0014 0014 0014 003B 003C 0015 0014 0014 0014 003B 0014 003B 0015 0014 003B 0015 0014 003B 003B 0015 003A 000C 009B 06C3

I finally got a good binary output from the device directly and was able to add them into the configuration. I can’t get the switch to stay on and I don’t know if the repeats are sending correctly. The device requires 5 repeats of the signal immediately, then every 60 seconds after with the 5 repeats otherwise it thinks the remote is lost. I am pretty new to ESPHome outside of a couple of ESP-cam’s and a couple of ESP8266 relay boards.

The device is an AirCare humidifier pedestal EP9R 800.

I have also been able to copy the codes on my flipper to send both the turn on and turn off with success, just not with the ESP360.

esphome:
  name: lr-esp360
  friendly_name: lr-esp360

esp32:
  board: esp32dev
  framework:
    type: arduino

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_pswd

api:
  encryption:
    key: XXXXX
  services:
    - service: send_ir_raw
      variables:
        command: int[]
      then:
        - remote_transmitter.transmit_raw:
            transmitter_id: IR_TX
            code: !lambda 'return command;'
    - service: send_rf_raw
      variables:
        protocol_number: int
        raw_data: string
      then:
        - remote_transmitter.transmit_rc_switch_raw:
            transmitter_id: RF_TX
            protocol: !lambda 'return  esphome::remote_base::RC_SWITCH_PROTOCOLS[protocol_number];'
            code: !lambda 'return raw_data;'

#i2c bus definition

i2c:
  sda: 21
  scl: 22
  scan: true
  id: bus_a

#Offsets have been added to the measurements taken. 
#These are necessary due to the heat generated by the PCB, the second layer of the board, and the case. 
#This way, sufficiently accurate values are obtained for automations

sensor:
  - platform: shtcx
    temperature:
      name: "ESP360 Temperature Living Room"
      filters:
        - median: 
            window_size: 5
            send_every: 1
        - offset: -3.7
    humidity:
      name: "ESP360 Humidity Living Room"
      filters:
        - median: 
            window_size: 5
            send_every: 1
        - offset: +19.1   
    address: 0x70
    update_interval: 300s
  - platform: bh1750
    name: "ESP360 BH1750 Illuminance Living Room"
    filters:
      - multiply: 5
    address: 0x23
    update_interval: 10s
  - platform: wifi_signal
    name: "ESP360 Living Room WiFi signal"
    update_interval: 60s

#Setting up IR and RF receivers

remote_receiver:
  - id: RF_RX
    pin: 
      number: GPIO5
      inverted: True
    dump: raw
    tolerance: 35%
    filter: 255us
    idle: 10ms
    buffer_size: 10kb
    on_rc_switch:
      - homeassistant.event:
          event: esphome.rf_code_received
          data:
            protocol: !lambda 'return x.protocol;'
            code: !lambda 'return x.code;' 
  - id: IR_RX
    pin: 
      number: GPIO19
      inverted: False
    dump: all
    on_raw:
       - homeassistant.event:
          event: esphome.ir_raw_code_received
          data:
            code: !lambda '
            reverse(x.begin(), x.end());
            std::string str = "";
            for (auto it = x.begin(); it != x.end(); ++it)
            {
              str += to_string(*it);
              str += ",";
              if (it != x.end() - 1) str += " ";
            }
            if (str.size() > 0)  str.erase( str.end() - 2);
            return esphome::to_string("[" + str + "]");'   
    on_pronto:
       - homeassistant.event:
          event: esphome.ir_pronto_code_received
          data:
            code: !lambda 'return x.data;'
    on_lg:
       - homeassistant.event:
          event: esphome.ir_lg_code_received
          data:
            data: !lambda 'return x.data;'
            nbits: !lambda 'return x.nbits;'
    on_panasonic:
       - homeassistant.event:
           event: esphome.ir_panasonic_code_received
           data:
            address: !lambda 'return x.address;'
            command: !lambda 'return x.command;'

#Setting up IR and RF transmitters

remote_transmitter:
  - id: RF_TX
    pin: GPIO18
    carrier_duty_percent: 100%
  - id: IR_TX
    pin: GPIO13
    carrier_duty_percent: 50%

#Status LED

switch:
  - platform: gpio
    pin: 12
    name: "Status Led"
    restore_mode: ALWAYS_ON

  - platform: template
    name: "Humidifier Switch"
    turn_on_action:
      - remote_transmitter.transmit_raw:
          code: [-244, 814, -244, 814, -244, 814, -244, 814, -244, 814, -244, 824, -244, 3215, -520, 520, -520, 1542, -520, 1542, -1548, 1555, -519, 521, -520, 521, -519, 521, -520, 533, -520, 521, -520, 1549, -520, 1542, -1541, 1537, -247]
          transmitter_id: RF_TX
          repeat:
            times: 4
#            wait_time: 5ms
    turn_off_action:
      - remote_transmitter.transmit_raw:
          code: [-245, 814, -244, 814, -244, 814, -244, 814, -244, 814, -244, 814, -244, 3214, -520, 521, -520, 1541, -520, 521, -1541, 1562, -520, 520, -520, 521, -1541, 521, -1541, 533, -520, 528, -520, 1542, -1541, 1541, -520, 1537, -248]
          transmitter_id: RF_TX
          repeat:
            times: 4
#            wait_time: 5ms

#Enable internal web server

#web_server:
#  port: 80

ota:

# Enable logging
logger:
#  level: info

Did you try transmitting these as Pronto?

One way you could set this up is using a while loop…

While Humidifier Switch is on, send code including repeats, delay 60, loop…

Yes, on pronto I get an error so I changed everything to RAW

[08:58:04][E][remote.pronto:109]: Inconsistent data, not sending
[08:58:04][E][remote_transmitter:117]: Empty data

I have finally got a good capture of the signals by hooking up a probe kit to the ground and data pins.

Humidifier on with a fan speed of 4

    turn_on_action:
      - remote_transmitter.transmit_raw:
          code: [244,-814,244,-815,244,-814,245,-814,244,-814,244,-815,244,-3214,520,-1542,520,-521,520,-1542,1550,-533,520,-521,520,-521,520,-521,520,-534,520,-1543,520,-529,520,-1543,1542,-516,247]
          transmitter_id: RF_TX
          repeat:
            times: 4
            wait_time: 5ms
          carrier_frequency: 38kHz

Humidifier off

    turn_off_action:
      - remote_transmitter.transmit_raw:
          code: [244,-814,244,-814,244,-814,245,-814,244,-814,244,-814,244,-3205,520,-1542,521,-521,520,-521,1541,-1563,521,-521,520,-521,1541,-522,1541,-533,520,-1551,520,-521,1541,-1543,520,-1537,248]
          transmitter_id: RF_TX
          repeat:
            times: 4
            wait_time: 5ms
          carrier_frequency: 38kHz
1 Like