Looks like it’s only for 5 pin CNS port, interesting there’s a zigbee version of this ac module.
That’s just a generic image from the installation doc. Their site makes you select the exact model you have, so I’m guessing they would send the appropriate cable.
Awesome I got a cable created for the Atom S3 Lite and it’s powering up… Do you have the esp config yaml file you created that works? I see so many different yaml configs in this endless topic
I’ve recently stumbled up on this project which is promising:
This is the wiring diagram for the Atom S3 Lite which requires reversing the Tx and Rx for anyone looking at this later. This is apparently not required for the non-Lite S3.
Good to hear,
Below my code
substitutions:
name: m5stack airco
friendly_name: m5stack airco
esphome:
name: m5stackairco
friendly_name: m5stack airco
name_add_mac_suffix: false
platformio_options:
board_build.flash_mode: dio
project:
name: esphome.web
version: '1.0'
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
logger:
level:
VERBOSE
api:
ota:
- platform: esphome
improv_serial:
wifi:
ssid:
password:
ap:
ssid: "m5stack airco Fallback Hotspot"
password:
captive_portal:
dashboard_import:
package_import_url: github://esphome/firmware/esphome-web/esp32s3.yaml@v2
import_full_config: true
web_server:
port: 80
time:
- platform: homeassistant
id: homeassistant_time
external_components:
- source: github://afarago/esphome_component_bthome
- source: github://echavet/MitsubishiCN105ESPHome
uart:
id: HP_UART
baud_rate: 2400
tx_pin: GPIO1
rx_pin: GPIO2
climate:
- platform: cn105
id: hp
name: "m5stack airco"
icon: mdi:heat-pump
visual:
min_temperature: 15
max_temperature: 31
temperature_step:
target_temperature: 0.5
current_temperature: 0.1
vertical_vane_select:
name: Vertical Vane
remote_temperature_timeout: 30min
debounce_delay : 500ms
update_interval: 4s
auto_sub_mode_sensor:
name: Auto submode sensor
sub_mode_sensor:
name: Submode sensor
stage_sensor:
name: Stage sensor
Wondering if you can explain some of the config options there:
esphome:
platformio_options:
board_build.flash_mode: dio
dashboard_import:
package_import_url: github://esphome/firmware/esphome-web/esp32s3.yaml@v2
import_full_config: true
I’m using this project:
with an M5Stack Atom S3 Lite. Tx and Rx are working but I’m having an issue getting the current temperature. It’s always reported as 0C / 32F.
To be clear, other functions work like turning the unit on/off, changing the vane position and changing temps
Screenshot from the web server:
Given everything else is working, I’m surprised that just the current temp is not.
My config is as follows:
substitutions:
name: my-room-climate
friendly_name: My Room Climate
esphome:
name: ${name}
friendly_name: ${friendly_name}
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
version: latest
light:
- platform: esp32_rmt_led_strip
name: Led
id: led
internal: true
rgb_order: GRB
pin: 35
num_leds: 4
rmt_channel: 1
chipset: ws2812
restore_mode: ALWAYS_ON
uart:
id: HP_UART
baud_rate: 2400
tx_pin: GPIO2
rx_pin: GPIO1
# Default logging level
logger:
level: INFO
external_components:
- source: github://echavet/MitsubishiCN105ESPHome
api:
encryption:
key: !secret esp_encryption_key
services:
- service: reboot
then:
- logger.log: "Reboot in progress..."
- lambda: |-
ESP.restart();
ota:
- platform: esphome
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "My-Room-Atom-S3-Lite"
password: !secret wifi_password
captive_portal:
web_server:
port: 80
# Sync time with Home Assistant.
time:
- platform: homeassistant
id: homeassistant_time
# Create a button to restart the unit from HomeAssistant. Rarely needed, but can be handy.
button:
- platform: restart
name: "Restart ${friendly_name}"
# Climate entity configuration
climate:
- platform: cn105
name: "My Room Climate"
icon: mdi:heat-pump
compressor_frequency_sensor:
name: ${name} Compressor Frequency
vertical_vane_select:
name: ${name} Vertical Vane
horizontal_vane_select:
name: ${name} Horizontal Vane
debounce_delay : 500ms
update_interval: 4s # update interval can be ajusted after a first run and logs monitoring*
text_sensor:
- platform: wifi_info
ip_address:
name: IP
ssid:
name: SSID
bssid:
name: BSSID
- platform: version
name: Version
hide_timestamp: true
disabled_by_default: false
icon: mdi:new-box
entity_category: diagnostic
# Sensors with general information.
sensor:
# Uptime sensor.
- platform: uptime
name: "Uptime"
disabled_by_default: false
force_update: false
unit_of_measurement: s
icon: mdi:timer-outline
accuracy_decimals: 0
device_class: duration
state_class: total_increasing
entity_category: diagnostic
update_interval: 60s
- platform: internal_temperature
name: Internal Esp temperature
entity_category: diagnostic
- platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
name: Signaal dB
id: wifi_signal_db
update_interval: 60s
entity_category: diagnostic
- platform: copy # Reports the WiFi signal strength in %
source_id: wifi_signal_db
name: Signaal %
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
unit_of_measurement: " %"
entity_category: diagnostic
device_class: ""
switch:
- platform: template
id: eps32_s3_led_switch
name: Led switch #${led_switch}
optimistic: true
restore_mode: RESTORE_DEFAULT_ON
lambda: return id(eps32_s3_led_switch).state;
turn_on_action:
- light.turn_on:
id: led
brightness: !lambda |-
// output value must be in range 0 - 1.0
return id(led_brightness).state / 100.0;
turn_off_action:
- light.turn_off:
id: led
number:
## Set led brightness
- platform: template
id: led_brightness
name: Led brightness #${led_brightness}
icon: mdi:toggle-switch-variant
mode: slider
entity_category: config
optimistic: true
min_value: 0
max_value: 100
step: 10
initial_value: 70
restore_value: yes
unit_of_measurement: "%"
on_value:
then:
- if:
condition:
- light.is_on: led
then:
- light.turn_on:
id: led
brightness: !lambda |-
// output value must be in range 0 - 1.0
return id(led_brightness).state / 100.0;
If i turn debug logging on, there’s this portion of output which shows it’s not able to get the current temp:
[20:26:16][D][SETTINGS:098]: [current]-> [power: OFF, target °C: 23.0, mode: COOL, fan: 4, vane: SWING, wvane: |]
[20:26:16][D][SETTINGS:098]: [received]-> [power: OFF, target °C: 23.0, mode: COOL, fan: 4, vane: SWING, wvane: |]
[20:26:16][D][EVT_SETS:057]: [wanted]-> [power: -, target °C: -1.0, mode: -, fan: -, vane: -, wvane: -, hasChanged ? -> NO, hasBeenSent ? -> NO]
[20:26:16][D][SETTINGS:079]: [climate]-> [mode: OFF, target °C: 23.0, fan: HIGH, swing: VERTICAL]
[20:26:16][V][CN105:239]: updating action back to espHome...
[20:26:16][D][CN105:267]: Climate mode is: 0
[20:26:16][D][CN105:268]: Climate action is: 0
[20:26:16][D][climate:396]: 'My Room Climate' - Sending state:
[20:26:16][D][climate:399]: Mode: OFF
[20:26:16][D][climate:401]: Action: OFF
[20:26:16][D][climate:404]: Fan Mode: HIGH
[20:26:16][D][climate:416]: Swing Mode: VERTICAL
[20:26:16][D][climate:419]: Current Temperature: 0.00°C
[20:26:16][D][climate:425]: Target Temperature: 23.00°C
[20:26:16][D][CYCLE:285]: 3a: Sending room °C request (0x03)
When i was setting up the m5 stack module in esphome this was in the basic yaml already. I let it there because i see no reason to delete it.
With the basic yaml setup for the airco did the internal temp sensor work ? Or did you dive right into the remote temperature configuration?
It never has worked. I’m starting to wonder if my Rx wire isn’t connected properly
from what i see in the log. You do get information back from unit. It states its settings like power and mode. In the climate entity:
You could try to put this in the entity its what i got in it.
visual:
min_temperature: 15
max_temperature: 31
temperature_step:
target_temperature: 0.5
current_temperature: 0.1
Most people are using esphome-mitsubishiheatpump and MitsubishiCN105ESPHome external components based on SwiCago but I saw in esphome changelog that they have a mitsubishi component for couple of months now: esphome/esphome/components/mitsubishi at dev · esphome/esphome · GitHub
Anyone did try it ?
If i’m not mistaken that is only for onee way IR remote control, so you can make IR remote control device with esp module and esphome. This way you don’t have any reverse information from climate, though.
Please correct me if i’m wrong…
Isn’t that just for the visual display in the thermostat? I wouldn’t expect that to change anything about being able to get the current temperature?
Did you ever get this figured out? I have an M5Stack Atom S3 Lite and having the same issue – no current temperature reading.
When you have the logger in debug
Do you see climate:419?
like with mine ?
``
[19:47:54][D][climate:399]: Mode: OFF
[19:47:54][D][climate:401]: Action: OFF
[19:47:54][D][climate:404]: Fan Mode: MEDIUM
[19:47:54][D][climate:416]: Swing Mode: VERTICAL
[19:47:54][D][climate:419]: Current Temperature: 25.00°C
[19:47:54][D][climate:425]: Target Temperature: 21.00°C
Anyone here tried using the Wemos D1 Mini v.4.0 and got it to work? I am currently in the process of purchasing but I noticed the latest is v4.0 and not sure if it will work. Any help is much appreciated!
Hi everyone. I have just landed here looking for a solution for my AC which is a Split Mitsubishi MSZ-AP25VGD. Kinda overwhelmed by the different versions or chip and project combo.
I have at hand a ESP-01m transceiver version which I had planned on using with esphome IR protocol. Just thought I google before installing it so now I am here.
Couple of questions.
Is any of the projects better than others etc?
Can I use the ESP-01m transceiver or should I use a Wemos D1 mini or Atom, and any differences?
I think I might need some help with the code given that I am seeing significantly different one reading this thread…
thanks for any assistance in advance.
Should work just fine, you just need this jst cable and connect to the cn105 port
You could flash esphome and use this custom component or mitsubishi2mqtt that fits your needs
Thanks.
So this is the latest fork etc I assume…?
So I am looking at the project and have a question about code for internal/external temps I dont understand which one to use and why?
Also not sure how outside_air_temperature_sensor: and isee_sensor: plays into it. There is also sensors to use as follows.
Get external temperature from a HomeAssistant Sensor through the HomeAssistant API
sensor:
- platform: homeassistant
id: current_temp
entity_id: sensor.my_temperature_sensor
internal: true
on_value:
then:
- lambda: |-
id(hp).set_remote_temperature(x);
Get external temperature from a networked sensor with a throttle filter
sensor:
- platform: pvvx_mithermometer
mac_address: "A4:C1:38:XX:XX:XX"
temperature:
name: Thermometer
id: temperature
device_class: temperature
state_class: measurement
filters:
throttle_average: 90s
on_value:
then:
- lambda: 'id(use_your_name).set_remote_temperature(x);'
I ended up with this but not sure if I got it right or missed something.
esphome:
name: garage-ac
friendly_name: Garage AC
esp8266:
board: esp01_1m
# Enable logging
logger:
hardware_uart: UART1
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: removed"
services:
- service: set_remote_temperature
variables:
temperature: float
then:
# Select between the C version and the F version
# Uncomment just ONE of the below lines. The top receives the temperature value in C,
# the bottom receives the value in F, converting to C here.
- lambda: 'id(hp).set_remote_temperature(temperature);'
# - lambda: 'id(hp).set_remote_temperature((temperature - 32.0) * (5.0 / 9.0));'
- service: use_internal_temperature
then:
- lambda: 'id(hp).set_remote_temperature(0);'
ota:
- platform: esphome
password: "removed"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Garage-Ac Fallback Hotspot"
password: "removed"
captive_portal:
# Enable Web server.
web_server:
port: 80
# Sync time with Home Assistant.
time:
- platform: homeassistant
id: homeassistant_time
text_sensor:
- platform: wifi_info
ip_address:
name: "garage-ac IP Address"
binary_sensor:
- platform: status
name: "garage-ac Connect"
uart:
id: HP_UART
baud_rate: 2400
tx_pin: 1
rx_pin: 3
# external_components:
# - source: github://geoffdavis/esphome-mitsubishiheatpump
# External component reference
external_components:
- source: github://echavet/MitsubishiCN105ESPHome
# Climate entity configuration
climate:
- platform: cn105
id: hp
name: Garage AC
icon: mdi:heat-pump
visual:
min_temperature: 15
max_temperature: 31
temperature_step:
target_temperature: 1
current_temperature: 0.1
compressor_frequency_sensor:
name: garage-ac Compressor Frequency
outside_air_temperature_sensor:
name: garage-ac Outside Air Temperature
vertical_vane_select:
name: garage-ac Vertical Vane
horizontal_vane_select:
name: garage-ac Horizontal Vane
isee_sensor:
name: garage-ac ISEE Sensor
remote_temperature_timeout: 30min
debounce_delay : 500ms
update_interval: 4s # update interval can be adjusted after a first run and logs monitoring*
sensor:
- platform: homeassistant
name: "garage-ac-Temp"
entity_id: sensor.garage_aq_temperature
id: current_temp
internal: true
on_value:
then:
- lambda: |-
id(hp).set_remote_temperature(x);
- platform: wifi_signal
name: "garage-ac WiFi Strength"
update_interval: 60s
- platform: uptime
name: "garage-ac Uptime"
switch:
- platform: restart
name: "garage-ac reboot"
# stage_sensor:
# name: Stage Sensor
# sub_mode_sensor:
# name: Sub Mode Sensor
# auto_sub_mode_sensor:
# name: Auto Sub Mode Sensor
Outside air temperature is added very recently, i think more or les “for fun”… not all climates support it. I have 5 climates and only 2 show it.
I have esp01 on all of my climates, all running perfectly. Echavet’s program is a fork from geoff davis’s one, but with some extra functions (also more actively maintained).
External room sensor function is a very good function, especially when heating. What it does is replace built-in climate’s room sensor whcih is pretty unaccurate, because it’s located inside room unit, thus measuring too high temperautre when heating - consequently it can heat too low so you must set target temperature way higher than actually is for room to be properly heated. Using external sensor, located, say, at the other wall of the room can result in much more accurate room temperature. You can use any sensor you have in the room (connected to HA) - i use xiaomi’s BLE thermo/hygro sensors.
Isee sensor is, if i’m not mistaken an ir sensor in some climates which “looks” for human presence and direct fan flow and climate work accordingly.