It's hard to explain this as there are many caveats but I will try anyways.
The "Current Temp" being sent/received is not accurate. I have a remote temperature source that is in C so I do not need the Fahrenheit compatibility mode but I find that using Fahrenheit compatability mode will give me more granular control as when I have it in C it is only "rounding" (does weird math were 23.3-24.2 is 24C) to the nearest whole number and not allowing any decimal changes.
Here is a screenshot
Also for some reason I can not get Target temp to do more fine tuning past .5 increments. I have tried everything and its not working.
Here is my config
substitutions:
name: heatpump-1
friendly_name: GreatRoom
remote_temp_sensor: sensor.livingthermostat_temp # Homeassistant sensor providing remote temperature
esphome:
name: mitsubishicontroller
friendly_name: MitsubishiController
esp32:
board: esp32dev
framework:
type: esp-idf
# Enable logging
logger:
# hardware_uart: UART1 # Uncomment on ESP8266 devices
level: INFO
logs:
EVT_SETS: INFO
WIFI: INFO
MQTT: INFO
WRITE_SETTINGS: INFO
SETTINGS: INFO
STATUS: INFO
CN105Climate: WARN
CN105: INFO
climate: WARN
sensor: WARN
chkSum: INFO
WRITE: WARN
READ: WARN
Header: INFO
Decoder: INFO
CONTROL_WANTED_SETTINGS: INFO
# level: DEBUG
# logs:
# EVT_SETS : DEBUG
# WIFI : INFO
# MQTT : INFO
# WRITE_SETTINGS : DEBUG
# SETTINGS : DEBUG
# STATUS : INFO
# CN105Climate: WARN
# CN105: DEBUG
# climate: WARN
# sensor: WARN
# chkSum : INFO
# WRITE : WARN
# READ : WARN
# Header: INFO
# Decoder : DEBUG
# CONTROL_WANTED_SETTINGS: DEBUG
# Enable Home Assistant API
api:
encryption:
key: "<NOTREAL>"
ota:
- platform: esphome
password: "<NOTREAL>"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Mitsubishicontroller"
password: "<NOTREAL>"
#ethernet:
# type: LAN8720
# mdc_pin: GPIO23
# mdio_pin: GPIO18
# clk:
# pin: GPIO0
# mode: CLK_EXT_IN
# phy_addr: 1
# power_pin: GPIO16
captive_portal:
uart:
id: HP_UART
tx_pin: GPIO14
rx_pin: GPIO15
baud_rate: 2400
external_components:
- source: github://echavet/MitsubishiCN105ESPHome
# refresh: 0s
sensor:
# Uptime sensor.
- platform: uptime
name: Uptime
# WiFi Signal sensor.
- platform: wifi_signal
name: WiFi Signal
update_interval: 120s
- platform: homeassistant
id: ha_remote_temp
name: "Remote Temperature Sensor"
entity_id: ${remote_temp_sensor} # Replace with your HomeAssistant remote sensor entity id, or include in substitutions
internal: false
# Enable Web server.
web_server:
port: 80
# Sync time with Home Assistant.
time:
- platform: homeassistant
id: homeassistant_time
# Text sensors with general information.
text_sensor:
# Expose ESPHome version as sensor.
- platform: version
name: ESPHome Version
# Expose WiFi information as sensors.
- platform: wifi_info
ip_address:
name: IP
ssid:
name: SSID
bssid:
name: BSSID
# Create a button to restart the unit from HomeAssistant. Rarely needed, but can be handy.
button:
- platform: restart
name: "Restart ${friendly_name}"
# Creates the sensor used to receive the remote temperature from Home Assistant
# Uses sensor selected in substitutions area at top of config
# Customize the filters to your application:
# Uncomment the first line to convert F to C when remote temps are sent
# If you have a fast or noisy sensor, consider some of the other filter
# options such as throttle_average.
climate:
- platform: cn105
id: hp
name: "${friendly_name}"
icon: mdi:heat-pump
visual:
min_temperature: 10 # Adjust to your unit's min temp. SmartSet units can go to 10C for heating
max_temperature: 31
temperature_step:
target_temperature: 0.1
current_temperature: 0.1
remote_temperature_source:
sensor_id: ha_remote_temp # References the sensor declared above
info: # Optional: exposes a text sensor showing the source name
name: "Remote Temp Source"
#remote_temperature_timeout: 30min
#remote_temperature_keepalive_interval: 20s
# Fahrenheit compatibility mode - uses Mitsubishi's "custom" unit conversions, set to
# "standard" (or "alt") for better support of Fahrenheit units in HomeAssistant.
# Options: "disabled" (default), "standard", "alt"
#fahrenheit_compatibility: "disabled"
update_interval: 2s
debounce_delay: 100ms
# Various optional sensors, not all sensors are supported by all heatpumps
outside_air_temperature_sensor:
name: Outside Air Temp
disabled_by_default: false
isee_sensor:
name: ISEE Sensor
disabled_by_default: true
stage_sensor:
name: Stage
entity_category: diagnostic
disabled_by_default: false
sub_mode_sensor:
name: Sub Mode
entity_category: diagnostic
disabled_by_default: false
auto_sub_mode_sensor:
name: Auto Sub Mode
entity_category: diagnostic
disabled_by_default: false
input_power_sensor:
name: Input Power
disabled_by_default: false
kwh_sensor:
name: Energy Usage
disabled_by_default: false
# hardware_settings:
# update_interval: 20s
# list:
# Code 101: Auto Restart
# - code: 101
# name: "01-Auto Restart after Power Failure"
# icon: "mdi:restart"
# options:
# 1: "ON (Default)"
# 2: "OFF"
# Code 102: Temperature Sensing Source
# Important for remote temperature control!
# - code: 102
# name: "02-Temperature Source"
# icon: "mdi:thermometer-check"
# options:
# 1: "Indoor Unit (Default)"
# 2: "Remote Controller"
# 3: "External (CN105/WiFi)"
# Code 103: Ventilation / Lossnay interaction
# - code: 103
# name: "03-Ventilation Link"
# options:
# 1: "None (Default)"
# 2: "With Lossnay"
# 3: "Forced"
# Code 104: Power Voltage
# - code: 104
# name: "04-Auto Energy Saving"
# options:
# 1: "240V (230V) (Default)"
# 2: "220V (208V)"
# Code 107: Filter Sign Interval
# - code: 107
# name: "07-Filter Sign Interval"
# icon: "mdi:air-filter"
# options:
# 1: "100 Hours (Default)"
# 2: "2500 Hours"
# 3: "No Indication"
# Code 108: Ceiling Height / Static Pressure
# - code: 108
# name: "08-Ceiling Height Mode"
# icon: "mdi:arrow-expand-vertical"
# options:
# 1: "Standard"
# 2: "High Ceiling (Default)"
# 3: "Low Ceiling"
# Code 110: Auto Mode Switching Logic
# - code: 110
# name: "Auto Mode Logic"
# icon: "mdi:sync"
# options:
# 1: "Energy Saving (Default)"
# 2: "Comfort / Performance"
# Code 111: Heater Control
# - code: 111
# name: "11-HeaterControl"
# options:
# 1: "Standard (Default)"
# 2: "Type 1"
# 3: "Type 2"
# Code 117: Defrost Control
# - code: 117
# name: "Defrost Logic"
# icon: "mdi:snowflake-melt"
# options:
# 1: "Standard (Default)"
# 2: "High Humidity / Frequent"
# Code 124: Heating Temperature Offset
# - code: 124
# name: "Heating Offset (+2°C)"
# options:
# 1: "ON (Default)"
# 2: "OFF"
# Code 125: Fan behavior during Thermo-OFF (Heating)
# - code: 125
# name: "Fan during Thermo-OFF (Heat)"
# icon: "mdi:fan-off"
# options:
# 1: "Extra Low (Default)"
# 2: "Stop"
# 3: "Set Speed"
# Code 127: Fan behavior during Thermo-OFF (Cooling)
# - code: 127
# name: "Fan during Thermo-OFF (Cool)"
# icon: "mdi:fan-off"
# options:
# 1: "Set Speed (Default)"
# 2: "Stop"
# Code 128: System Error Display
# - code: 128
# name: "Error Display on Remote"
# options:
# 1: "ON (Default)"
# 2: "OFF"
It's hard to explain this as there are many caveats but I will try anyways.
The "Current Temp" being sent/received is not accurate. I have a remote temperature source that is in C so I do not need the Fahrenheit compatibility mode but I find that using Fahrenheit compatability mode will give me more granular control as when I have it in C it is only "rounding" (does weird math were 23.3-24.2 is 24C) to the nearest whole number and not allowing any decimal changes.
Here is a screenshot
Also for some reason I can not get Target temp to do more fine tuning past .5 increments. I have tried everything and its not working.
Here is my config