hristo-atanasov / Tasmota-IRHVAC

Home Assistant platform for controlling IR Air Conditioners via Tasmota IRHVAC command and compatible hardware
208 stars 68 forks source link

IFeel seeting #99

Closed nagyrobi closed 5 months ago

nagyrobi commented 2 years ago

Is there a way to implement the IFeel setting, which is supported by many brands (Gree, Airwell, Electra, Whirlpool, etc).? All data is available in the component to support it.

The IFeel function means that the AC's original remote controller has a built-in temp sensor, which sends periodically the measured temperature back to the AC unit, allowing for more accurate room temperature control. Given that the sensor built-in the AC unit is usually in an un-optimal location, it is indeed better to use the remote, which can be placed by the user in a proper location to feel the real temperature of the room. The remote's manual states that it has to be put down pointing to the AC unit so temperature codes can be transmitted.

This component already supports the temperature_sensor to be shown in the entity card in HA, but we could use this value to be sent to the AC unit via the IR Blaster too. A quick search in the IRremoteESP8266 repository for IFeel shows that it's supported. Afaik the temperature value should be sent to the AC unit every minute. If the unit doesn't receive temperatures, even if IFeel is enabled, it will fall back to the built-in sensor automatically, until it receives temp data again.

nao-pon commented 2 years ago

I took a look at IRremoteESP8266, but IFeel is an On/Off switch and doesn't seem to support temperature transmission.

hristo-atanasov commented 2 years ago

@nagyrobi I've made such automation based on Tasmota IRHVAC, but this is not optimal. Better use your remote and its iFeel function. If we make this functionality, this will increase dramaticaly the power usage of the AC. In practice we will make inverter AC unit in to non inverter AC unit. The AC itself (even not smart one) is smart enough to know when to start its pump and when not to do it. The end result was way more electricity used and constant beeping from the AC unit. The other problem is that we cannot send the curent ambient temp to the AC. Only the real remote can do it. It is using separate codes for this functionality. So the only way is to create automation for that. But the better way is to use your remote with iFeel, or setting such temperature, that you feel best. :) If you still want "custom iFeel", I can give you the automation for it.

nagyrobi commented 2 years ago

I'd love to see how you did it

hristo-atanasov commented 2 years ago

@nagyrobi This is one of the automations


alias: AC Automation
description: |-
  Example AC automation
trigger:
  - platform: state
    entity_id:
      - sensor.room_temperature
  - platform: state
    entity_id:
      - climate.livingroom_ac
    attribute: temperature
  - platform: time_pattern
    minutes: /15
condition: []
action:
  - if:
      - condition: time
        before: "16:30:00"
        after: "07:50:00"
        weekday:
          - mon
          - tue
          - wed
          - thu
          - fri
      - condition: state
        entity_id: climate.livingroom_ac
        state: "off"
        for:
          hours: 0
          minutes: 5
          seconds: 0
    then:
      - choose:
          - conditions:
              - condition: template
                value_template: >-
                  {{ states.sensor.room_temperature.state|float <
                  (state_attr("climate.livingroom_ac", "temperature") - 1)|float
                  }}
              - condition: not
                conditions:
                  - condition: state
                    entity_id: climate.livingroom_ac
                    state: heat
            sequence:
              - service: climate.turn_on
                data: {}
                target:
                  entity_id: climate.livingroom_ac
              - service: climate.set_hvac_mode
                data:
                  hvac_mode: heat
                target:
                  entity_id: climate.livingroom_ac
        default: []
    else:
      - if:
          - condition: not
            conditions:
              - condition: state
                entity_id: climate.livingroom_ac
                state: "off"
              - condition: time
                before: "12:00:00"
                weekday:
                  - sat
                  - sun
                after: "00:00:00"
        then:
          - service: climate.turn_off
            data: {}
            target:
              entity_id: climate.livingroom_ac
  - if:
      - condition: time
        before: "13:00:00"
        weekday:
          - sat
        after: "10:00:00"
    then:
      - choose:
          - conditions:
              - condition: template
                value_template: >-
                  {{ states.sensor.room_temperature.state|float <
                  (state_attr("climate.livingroom_ac", "temperature") - 1)|float
                  }}
              - condition: state
                entity_id: climate.livingroom_ac
                state: "off"
                for:
                  hours: 0
                  minutes: 5
                  seconds: 0
              - condition: not
                conditions:
                  - condition: state
                    entity_id: climate.livingroom_ac
                    state: heat
            sequence:
              - service: climate.turn_on
                data: {}
                target:
                  entity_id: climate.livingroom_ac
              - service: climate.set_hvac_mode
                data:
                  hvac_mode: heat
                target:
                  entity_id: climate.livingroom_ac
        default: []
    else:
      - if:
          - condition: not
            conditions:
              - condition: state
                entity_id: climate.livingroom_ac
                state: "off"
              - condition: time
                before: "12:00:00"
                weekday:
                  - fri
                  - thu
                  - wed
                  - tue
                  - mon
                after: "00:00:00"
        then:
          - service: climate.turn_off
            data: {}
            target:
              entity_id: climate.livingroom_ac
  - if:
      - condition: time
        before: "12:00:00"
        weekday:
          - sun
        after: "00:00:00"
      - condition: not
        conditions:
          - condition: state
            entity_id: climate.livingroom_ac
            state: "off"
    then:
      - service: climate.turn_off
        data: {}
        target:
          entity_id: climate.livingroom_ac
mode: single
nao-pon commented 2 years ago

@nagyrobi FYI, using ESPHome might give you the functionality you want.

nagyrobi commented 2 years ago

Yes, but unfortunately my AC devices are not supported by ESPHome.