Implementation of ClimateDevice for controlling IP based AC units. This component is able to work with any AC unit which can be controlled with REST API. At this moment it is configured to work with:
- Samsung AC units available at port 8888 (new generation, REST API)
- Samsung AC units available at port 2878 (old generation, socket communication)
- Samsung MIM-H03 controller (REST API, port 8888)
- Samsung MIM-H04 controller via Smarthings cloud (REST API)
Support for any unit working with REST API can be easily added via YAML configuration file.
This component was created by SebuZet, he however appears to be MIA so I have forked and repaired his component https://github.com/SebuZet/samsungrac
- Download all files from repo to newly created folder
- move folder custom_components/climate_ip to your <ha_configuration_folder>
- In configuration.yaml file add section:
- For new generation units (REST API, port 8888)
- platform: climate_ip config_file: 'samsungrac.yaml' ip_address: 'device_ip' token: 'token' cert: 'ac14k_m.pem'
- For MIM-H03 controller (REST API, port 8888)
- platform: climate_ip config_file: 'mim-h03_heatpump.yaml' ip_address: 'device_ip' token: 'token' cert: 'ac14k_m.pem'
- For old generation units:
- platform: climate_ip config_file: 'samsung_2878.yaml' ip_address: 'device_ip' token: 'token' cert: 'ac14k_m.pem' #set as '' to skip certificate verification mac: 'AB:cd:EF:gh:IJ' poll: True
- For Samsung EHS Mono Quiet heat pump with MIM-H04EN controller connected to Smartthings:
# hot water controller - platform: climate_ip name: Samsung EHS DHW config_file: /config/custom_components/climate_ip/samsung_smartthings_dhw.yaml ip_address: api.smartthings.com device_id: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee token: !secret smartthings_token # heating controller - platform: climate_ip name: Samsung EHS Heating config_file: /config/custom_components/climate_ip/samsung_smartthings_hvac.yaml ip_address: api.smartthings.com device_id: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee token: !secret smartthings_token
- For new generation units (REST API, port 8888)
-
Configuration parameters:
Parameter description Required config_file YAML configuration filename Yes ip_address Device IP address (e.g. 192.178.1.200) Yes token Access token gathered from the device Yes cert_file certificate file name (default: ac14k_m.pem, Use None to not use certification) Usually Yes mac MAC address of device Only 2878 devices name Device name (by default this value is taken from YAML config file) No controller Controller type to use (default, and the only one for now: yaml) No poll Enable/disable state polling. Default: Taken from YAML config. Enabled for old gen devices No device_id Set the device for controllers like MIM-H03, which can control multiple air con units No. Strongly recommended for MIM-H03. Defaults to 032000000
debug Enable/disable more debugs. Default: False No -
You need to have your device token. I will create a guide to gather it
-
If you're using MIM-H03, you may need your device ID, this can be had by running the following command and select your aircon device. It might be device
0
.
curl -k -H "Content-Type: application/json" -H "Authorization: Bearer __DEVICE_TOKEN__" --cert ac14k_m.pem -X GET https://__CLIMATE_IP_HOST__:8888/devices/
- YAML configuration You can easily add, remove or modify any device paramter to meet device capabilities.
climate:
- platform: climate_ip
config_file: '/config/custom_components/climate_ip/samsung_2878.yaml'
ip_address: 192.178.1.200
token: SDADSAGFDfsdgdf234323
mac: AA:BB:CC:DD:EE:FF
name: 'AC Living Room'
poll: True
Functionality depends on yaml configuration file and can be easily changed by editing those files. Currently configuration provides:
- For new generation units (REST API, port 8888)
- turn device on and off
- sets and reads target/min/max temperatures
- sets and reads swing direction
- sets and reads fan level
- sets and reads fan maximum level
- sets and reads special mode (2Step, Comfort, Quiet etc)
- sets and reads good sleep mode
- turn purify mode on and off
- turn auto clean mode on and off
- turn beep mode on and off
- read current indoor temperature
- read device configuration
- For old generation units
- turn device on and off
- sets and reads target temperature
- sets and reads swing direction (if supported)
- sets and reads fan level (if supported)
- sets and reads special mode (Comfort, Quiet etc)
- turn purify mode on and off (if supported)
- turn auto clean mode on and off (if supported)
- read current indoor temperature
- read device configuration
This component implements Home Assistant ClimateDevice class. Functionality enabled in HA by default:
- turn device on/off
- select fan mode
- select swing mode
- select target temperatures (min, max and target)
Device specific functionality is added as extra service called climate.climate_ip_set_property. Every device attribute can be set using this service with proper params.
{
"entity_id" : "climate.salon_ac",
"power" : "on",
"purify" : "on",
"special_mode" : "comfort"
}
To make controllig device as easy as possible user can create template switches for operations defined as Switch (please see configuration file). Below is an example of template switch for Purify option
switch:
- platform: template
switches:
purify:
value_template: "{{ is_state_attr('climate.salon_ac', 'purify', 'on') }}"
turn_on:
service: climate.climate_ip_set_property
data:
entity_id: climate.salon_ac
purify: 'on'
turn_off:
service: climate.climate_ip_set_property
data:
entity_id: climate.salon_ac
purify: 'off'
Documentation...
SSL issues when running a pip install might be fixed with : #25