101 Commits

Author SHA1 Message Date
GrKoR
87f686564e ref: show firmware version at compile time 2024-05-08 02:19:51 +03:00
GrKoR
37c261700b upd: added uptime sensor 2024-05-08 02:09:37 +03:00
GrKoR
789053e4be ref: AP SSID name changed 2024-05-08 02:07:15 +03:00
GrKoR
f8d3714871 new AC tested: Centek CT-65EDC07 2024-05-07 18:45:05 +03:00
GrKoR
e5704ba869 new AC tested: Centek CT-65J09 2024-04-25 18:39:15 +03:00
GrKoR
e3e60e4f4f new AC tested: AUX AMWM-H12/4R3 multisplit 2024-04-21 22:46:53 +03:00
GrKoR
e98c67e75e new AC tested: IGC RAS-V09N2X 2024-04-21 22:29:16 +03:00
GrKoR
3f1e928a09 new AC tested: Centek CT-65FDC09 2024-04-21 21:34:47 +03:00
GrKoR
507fc06813 new AC tested: Mirage EWC121E - CWC121E 2024-04-21 21:23:37 +03:00
GrKoR
a48ec376b1 new AC tested: Royal Clima RC-VNR29HN 2024-04-21 19:26:05 +03:00
GrKoR
c2dfbefbcf new AC tested: Centek CT-65J12 2024-04-21 16:15:00 +03:00
GrKoR
f324cd1a0e upd: hardware description - USB pinout for newer ACs changed 2024-04-21 16:06:01 +03:00
GrKoR
4bd5c4509d new AC: Subtropic SUB-09HN1 tested 2024-04-08 12:15:48 +03:00
GrKoR
8228ee0777 docs: how to use specific version of the component 2024-04-04 17:24:38 +03:00
GrKoR
453f697c48 Doc - Info on 5V pin (RUS) 2024-04-04 17:22:27 +03:00
Najdanovic Ivan
82a17f0247 Descrption for the 5V PIN 2024-04-04 17:22:04 +03:00
Najdanovic Ivan
d14ed9650d new AC tested: Tesla TA35FFML-12410M 2024-04-04 17:21:18 +03:00
GrKoR
e7377604ba new AC tested: AUX ASM-H24LD 2024-04-04 17:20:30 +03:00
GrKoR
2f0f514ea6 new AC tested: AUX ASM-H12LL 2024-04-04 17:19:58 +03:00
GrKoR
394e64e1f8 new AC tested: Ishimatsu AVK-09I 2024-04-04 17:19:32 +03:00
GrKoR
fcbc853835 new AC tested: AUX AWM-09G1V4-X 2024-04-04 17:18:59 +03:00
GrKoR
c8d661377f new AC tested: AUX ASW-H12C5C4/JOR3DI-B8 2024-04-04 17:18:00 +03:00
GrKoR
9c6faeecb8 new AC tested: AUX ASW-H12A4/HA-R2DI 2024-04-04 17:16:10 +03:00
GrKoR
8afa70a999 new: advanced example have slider for power limitation function. 2024-04-04 17:15:38 +03:00
GrKoR
ca9a76124c new AC tested: Ballu BSUI-18HN8 2024-04-04 17:14:46 +03:00
GrKoR
dacd435177 doc update: new USB-connector pinout and voltage 2024-04-04 17:13:54 +03:00
GrKoR
bf8ab77c02 new AC tested: Xigma XG-SJ56RHA-IDU 2024-04-04 17:12:55 +03:00
GrKoR
61cad07acc fix: version++ 2023-11-09 23:14:13 +03:00
GK
3110c482c9 Merge pull request #88 from GrKoR/brokly's_power
fix: inverter power limitation by Brokly
2023-11-10 00:12:07 +04:00
GrKoR
53a886f818 ref: minor fixes of Brokly's changes 2023-11-09 23:07:54 +03:00
GrKoR
2d4162323a Brokly's changes for power limitation 2023-11-01 18:04:16 +03:00
GK
74d555b5e1 Merge pull request #87 from GrKoR/dev
fix: inverter power limitation off
2023-10-30 02:06:42 +04:00
GrKoR
7df8ab3cc2 fix: version++ 2023-10-30 01:05:30 +03:00
GrKoR
90d9a5cfa7 fix: inverter power limitation off 2023-10-28 22:42:04 +03:00
GrKoR
864ad07699 new AC tested: Ballu BSW-09HN1, Ballu BSW-12HN1 2023-10-17 01:18:16 +03:00
GrKoR
e595a4acf9 new AC tested: Roda RS-AL24F 2023-10-15 22:44:04 +03:00
GrKoR
3db80a19b7 fix: version++ 2023-10-12 21:34:11 +03:00
GK
b7a794e52b Merge pull request #84 from GrKoR:dev
new: Fahrenheit support for temperatures
2023-10-12 22:27:30 +04:00
GrKoR
ba9f41d3be fix: better handle fractional setpoints by KazWolfe 2023-10-12 21:17:02 +03:00
GrKoR
93a034f2be Merge remote-tracking branch 'refs/remotes/origin/dev' into dev 2023-10-12 18:10:19 +03:00
GrKoR
151e5af043 new: Fahrenheit support 2023-10-12 18:03:32 +03:00
GrKoR
f143240089 ref: made the code a bit prettier 2023-10-12 18:03:32 +03:00
GrKoR
dfc299b321 new AC tested: AUX ASW-H12U3/JIR1DI-US 2023-10-12 18:01:06 +03:00
GrKoR
8acae30989 new: Fahrenheit support 2023-10-12 17:44:07 +03:00
GrKoR
58f09bd280 ref: made the code a bit prettier 2023-10-12 17:11:24 +03:00
GK
70d127a302 Merge pull request #83 from KazWolfe/patch-1
fix: Better handle fractional setpoints
2023-10-12 17:23:07 +04:00
GrKoR
7765e080d2 fix: variable name misprint 2023-10-11 23:39:00 +03:00
GK
33f6dd6ef0 new AC tested: Argo (models: Greenstyle 9000 / 12000 / 18000) 2023-10-09 23:58:27 +04:00
KazWolfe
1fa581be3d fix: Better handle fractional setpoints 2023-10-07 18:37:34 -07:00
GK
5fab934d8c Merge pull request #82 from ilkarataev/patch-1 2023-09-22 18:05:20 +04:00
Ilia Karataev
92b9908bf3 Update AC_TESTED.md
Add tested conditioner
2023-09-22 16:59:35 +04:00
GK
be67e1e4ce new model tested: TOYOTOMI SONZAI THN/THG-A35SZ 2023-09-13 18:47:10 +04:00
GrKoR
c10d314581 new model tested: VOX IJO09-SC4D 2023-09-13 00:15:40 +03:00
GrKoR
fa05c40677 upd: version++ 2023-07-07 16:36:53 +03:00
GrKoR
92b3930413 upd: readme for optimistic mode (RU) 2023-07-07 16:35:33 +03:00
GK
6bfb9489bd Merge pull request #77 from bogdal/optimistic-mode
Make optimistic mode configurable
2023-07-07 17:22:21 +04:00
Adam Bogdał
c868e5b49b Make optimistic mode configurable 2023-07-03 21:46:47 +02:00
GrKoR
cdd97b8da3 new model tested: VOX IVA5-12JR1 2023-06-10 19:36:19 +04:00
GK
9c7be5ffc0 Merge pull request #75 from gleba/master
new AC: CENTEK CT-65V24 + fix of example
2023-06-03 17:36:48 +04:00
Gleb Y Panteleev
20f3061d12 new AC tested: CENTEK CT-65V24 2023-06-03 06:44:23 +03:00
Gleb Y Panteleev
945cc96ea2 fix: The name of sensor was changed in v.0.2.9
from 'invertor_power' to 'inverter_power'. Update your config please.
2023-06-02 23:18:02 +03:00
GrKoR
fcd5a97210 new AC tested: Бирюса B-07DPR/B-07DPQ 2023-06-01 21:58:08 +04:00
GrKoR
8b17ca7052 docs upd: how to request a feature 2023-05-22 15:29:53 +04:00
GK
935e97e795 Merge pull request #73 from glebsterx:master
mistypings in documentation + new doc (how to request a feature)
2023-05-22 15:01:44 +04:00
GrKoR
a0b8dcdce1 new model tested: Energolux SAS07L2-A 2023-05-22 14:47:31 +04:00
GrKoR
affb3bde06 new model tested: Energolux SAS09B3-A 2023-05-22 14:17:38 +04:00
GK
b6d09a132e fix: incorrect space in config (en) 2023-05-22 13:31:49 +04:00
GK
579b6aaf87 fix: incorrect space in config 2023-05-22 13:30:41 +04:00
GK
7013acef59 new AC tested: Centek CT-65F12 2023-05-22 13:26:02 +04:00
Gleb
f6f7887fe7 Update README-EN.md 2023-05-22 12:07:14 +03:00
Gleb
0b774546e8 Update README.md 2023-05-22 12:06:06 +03:00
Gleb
1031f6a885 Create HOW_TO_FEATURE_REQUEST-EN.md 2023-05-22 11:48:07 +03:00
Gleb
abf9c15c39 Merge branch 'GrKoR:master' into master 2023-05-22 11:40:20 +03:00
Gleb
31af2c546c Create HOW_TO_FEATURE_REQUEST.md 2023-05-22 11:39:20 +03:00
Gleb
db23c365db Update README-EN.md 2023-05-22 10:08:08 +03:00
Gleb
eb202e2f49 Update HARDWARE.md 2023-05-22 10:00:58 +03:00
GrKoR
abb9188642 new model tested: Centek CT-65U13 2023-05-22 01:14:14 +04:00
Gleb
276d8ef7a7 Update HARDWARE-EN.md 2023-05-21 00:16:43 +03:00
Gleb
78ec13f9f9 Update HARDWARE.md 2023-05-21 00:16:33 +03:00
Gleb
1c04078b57 Update HARDWARE.md 2023-05-21 00:13:18 +03:00
Gleb
d776dcf4fe Update HARDWARE-EN.md 2023-05-21 00:04:12 +03:00
Gleb
22e64b647c Update README-EN.md 2023-05-20 23:56:00 +03:00
Gleb
c6a800cdcd Update README.md 2023-05-20 23:12:10 +03:00
GrKoR
ba2a19e564 fix: yet another typing error 2023-05-20 23:32:27 +04:00
GrKoR
135d6b55a8 fix: typing error 2023-05-20 23:13:23 +04:00
GrKoR
a465dbc89a new model tested: iClima ICI-09A/IUI-09A 2023-05-20 23:05:14 +04:00
GrKoR
efe7c1a93a new AC: IGC RAS-07AX/RAC-07AX 2023-05-14 18:22:23 +04:00
GrKoR
13bb0baa69 Added link for AUX Aegean Sea ( 爱琴海 ) connection 2023-03-31 16:46:21 +04:00
GrKoR
62e83cb41b Chinese AUX family Aegean Sea(爱琴海) was tested 2023-03-31 16:35:54 +04:00
GK
e9cad615fb new AC: AUX ASW-HxxB4/JD-R1DI (ASW-H12B4/JD-R2DI) 2023-03-19 22:25:59 +04:00
GrKoR
4274a11ed5 USB connection was described 2023-03-11 17:29:15 +04:00
GK
a8b6f7c9e0 USB connection described 2023-03-11 16:51:50 +04:00
GK
766a4bd693 USB pinout image 2023-03-11 16:45:44 +04:00
GK
8d782b1070 Delete USB pinout.png 2023-03-11 16:45:00 +04:00
GK
7640cca9f2 USB pinout image 2023-03-11 16:42:35 +04:00
GrKoR
cc4a48f964 new models + minor fix 2023-02-22 20:56:05 +04:00
GK
18ca3cf72a v.0.2.10 - fractional part of target temperature fixed
fixed: target temperature frac part;
fixed: power limit when off
2023-02-04 02:56:57 +04:00
GrKoR
ad810b1a83 fix: bug with int part of target temperature 2023-02-04 02:29:47 +04:00
GrKoR
11a3440a56 test configs was changed according to v.0.2.9 syntax 2023-02-03 17:52:25 +04:00
GrKoR
6d4a4268e6 fixed: target temperature frac part; power limit when off 2023-02-03 17:45:12 +04:00
GrKoR
5bad8732e2 fw version updated 2023-02-03 14:55:50 +04:00
18 changed files with 3600 additions and 2927 deletions

View File

@@ -2,15 +2,15 @@
For communication about this project [please join this telegram chat](https://t.me/aux_ac).
For issues or feature requests, please go to [the issue section](https://github.com/GrKoR/esphome_aux_ac_component/issues). It will be perfect if you attach log to your issue. Log you can collect with [this python script](https://github.com/GrKoR/ac_python_logger). It helps you to save all data frames from the UART bus to a csv-file. This log combined with the detailed situation description will significantly speed up bug correction.
There is also a [detailed instruction describing how to properly request a feature](docs/HOW_TO_FEATURE_REQUEST-EN.md).
## DISCLAIMER ##
1. All data of this project (software, firmware, schemes, 3d-models etc.) are provided **'AS IS'**. Everything you do with your devices, you are doing at your own risk. If you don't strongly understand what you are doing, just buy wifi-module from your air conditioner manufacturer.
1. All data of this project (software, firmware, schemes, 3d-models etc.) are provided **'AS IS'**. Everything you do with your devices, you are doing at your own risk. If you don't strongly understand what you are doing, just buy Wi-Fi module from your air conditioner manufacturer.
2. I am not a programmer. So source code is certainly not optimal and badly decorated (but there are a lot of comments in it; sorry, a significant part of it is in Russian). Also, code may be written unsafe. I tried to test all parts of the code, but I'm sure I missed a lot of things. So treat it with suspicion, expect a trick from it, and if you discover something wrong write an issue here.
3. Russian and English readme files are substantially identical in meaning. But in case of differences, the [Russian](https://github.com/GrKoR/esphome_aux_ac_component#readme) version is more significant.
## Short description ##
This custom component allows you to control your air conditioner through wifi if it is made in the AUX factory.<br />
This custom component allows you to control your air conditioner through Wi-Fi if it is made in the AUX factory.<br />
Component tested with ESPHome 1.18.0 and Rovex ALS1 air conditioner. It looks like many other air conditioners can be controlled by `aux_ac`, but this possibility isn't tested. See list of tested ACs below for more details.
@@ -21,26 +21,16 @@ There is the following list of AUX-based air conditioner on the internet: AUX, A
### List of compatible ACs (tested) ###
[The list of tested ACs](docs/AC_TESTED.md) is placed in a separate file and includes tested by the author or by users ACs. This list is permanently updated, mainly based on feedback from users in [Telegram chat](https://t.me/aux_ac).<br />
If your AC is not in the list
If your AC is listed above you should take a closer look at aux_ac.
If the User Manual of your HVAC describes connection to wifi with mobile app ACFreedom it seems you may go deeper with aux_ac. But try all soft and hardware for your own risk. You must clearly understand what you are doing.
If you are unsure it is better to wait while other users will test your model of AC (but it may never). Or please go to telegram-chat with your questions. Maybe you will get help there.
If you have tested your air conditioner and aux_ac works with it please let me know about it. I'll add this info to the list of tested ACs above. The best way to report about your test results is write a message in the telegram or in the issue section.
How to use it
For correct component operation you need hardware and firmware. The hardware description is located in separate file.
Firmware: Integration aux_ac to your configuration
You need ESPHome v.1.18.0 or above. External_components have appeared in this version. But it is better to use ESPHome v.1.20.4 or above cause there was alot of external_components errors corrected before this version.
### If your AC is not in the list ###
If your AC is listed above, you should take a closer look at `aux_ac`.<br />
If the User Manual of your HVAC describes connection to wifi with mobile app ACFreedom it seems you may go deeper with `aux_ac`. But try all soft and hardware for your own risk. You must clearly understand what you are doing.<br />
If you are unsure, it is better to wait while other users will test your model of AC (but it may never). Or please [go to telegram-chat](https://t.me/aux_ac) with your questions. Maybe you will get help there.
If you have tested your air conditioner and `aux_ac` works with it, please let me know about it. I'll add this info to the list of tested ACs above.
The best way to report about your test results is writing a message in the [telegram](https://t.me/aux_ac) or [in the issue section](https://github.com/GrKoR/esphome_aux_ac_component/issues).
1. If your AC is listed above, you should take a closer look at `aux_ac`.<br />
2. If something about AUX is written on the nameplate of the air conditioner in the manufacturer line.<br />
3. If the User Manual of your HVAC describes connection to Wi-Fi with mobile app ACFreedom it seems you may go deeper with `aux_ac`. But try all soft and hardware for your own risk. You must clearly understand what you are doing.<br />
4. If the manufacturer of your AC offers a CTTM-40X24-WIFI-AKS Wi-Fi module (left) or the one in the photo on the right for control. Moreover, the right module can be either with a USB connector or with a 5-pin connector.<br />
<img src="https://user-images.githubusercontent.com/57137862/172053621-60fe39d8-066e-44fa-91c5-725fa1f5c3bc.png" height="300"> <img src="https://user-images.githubusercontent.com/57137862/172053744-8ce4a13d-28cb-4688-a998-11ca3a7129df.png" height="300">
If you are unsure, it is better to wait while other users will test your model of AC (maybe never). Or please [go to telegram-chat](https://t.me/aux_ac) with your questions. Maybe you will get help there.<br />
If you have tested your air conditioner and `aux_ac` works with it, please let me know about it. I'll add this info to the list of tested ACs above.<br />
The best way to report about your test results is writing a message in the [telegram](https://t.me/aux_ac) or [in the issue section](https://github.com/GrKoR/esphome_aux_ac_component/issues).<br />
## How to use it ##
For correct component operation, you need hardware and firmware. The hardware description is located [in a separate file](docs/HARDWARE-EN.md).
@@ -56,6 +46,14 @@ external_components:
type: git
url: https://github.com/GrKoR/esphome_aux_ac_component
```
In case you need a specific version of the component, you can use the component declaration from the example below. The example uses version 0.2.14 of the component. You can find a list of available versions [on the GitHub tags page](https://github.com/GrKoR/esphome_aux_ac_component/tags).
```yaml
external_components:
- source:
type: git
url: https://github.com/GrKoR/esphome_aux_ac_component
ref: v.0.2.14
```
2. Configure UART to communicate with air conditioner:
```yaml
uart:
@@ -99,7 +97,8 @@ climate:
period: 7s
show_action: true
display_inverted: false
timeout: 150
timeout: 150
optimistic: true
indoor_temperature:
name: AC Indoor Temperature
id: ac_indoor_temp
@@ -110,11 +109,11 @@ climate:
id: ac_outdoor_temp
internal: false
outbound_temperature:
name: AC Colant Outbound Temperature
name: AC Coolant Outbound Temperature
id: ac_outbound_temp
internal: false
inbound_temperature:
name: AC Colant Inbound Temperature
name: AC Coolant Inbound Temperature
id: ac_inbound_temp
internal: false
compressor_temperature:
@@ -184,7 +183,7 @@ climate:
- **period** (*Optional*, [time](https://esphome.io/guides/configuration-types.html#config-time), default ``7s``): Period between status requests to the AC. `Aux_ac` will receive the new air conditioner status only after a regular request, even if you change the settings of AC using IR-remote.
- **show_action** (*Optional*, boolean, default ``true``): Whether to show current action of the device (experimental). For example, in the HEAT-COOL mode, AC hardware may be in one of the following actions:
- **show_action** (*Optional*, boolean, default ``true``): Whether to show current action of the device (experimental). For example, in the HEAT_COOL mode, AC hardware may be in one of the following actions:
- HEATING: AC is heating the air in the room;
- IDLE: AC is working in the FAN mode, cause the target temperature is reached;
- COOLING: AC is cooling the air.
@@ -197,6 +196,8 @@ climate:
The only situation when you can play with timeout is heavily loaded ESP. When you are using your ESP for many hard tasks, it is possible that `aux_ac` does not have enough time to receive AC responses. In this case, you can slightly raise the timeout value. But the best solution would be to remove some of the tasks from the ESP.
The timeout is limited to a range from `150` to `600` milliseconds. Other values are possible only with source code modification. But I don't recommend that.
- **optimistic** (*Optional*, boolean, default ``true``): Whether entity states should be updated immediately after receiving a command from Home Assistant/ESPHome.
- **indoor_temperature** (*Optional*): Parameters of the room air temperature sensor.
- **name** (**Required**, string): The name for the temperature sensor.
- **id** (*Optional*, [ID](https://esphome.io/guides/configuration-types.html#config-id)): Set the ID of this sensor for use in lambdas.
@@ -226,7 +227,7 @@ climate:
- **inverter_power_limit_state** (*Optional*): Configuration of the power limit state sensor. It displays the state of the power limitation function for the inverter HVAC (is it ON or OFF). All settings are the same as for the **display_state** (see description above).
- **inverter_power_limit_value** (*Optional*): Configuration of the power limit value sensor. All settings are the same as for the **indoor_temperature** (see description above).
It reports the current value of the power limitation function for the inverter HVAC. This sensor represents the value only after the HVAC confirms the power limitation. The value is always in the range from 30 to 100%. This is the hardware limitation.
It reports the current value of the power limitation function for the inverter HVAC. This sensor represents the value only after the HVAC confirms the power limitation. The value is always in the range from 30% to 100%. This is the hardware limitation.
- **preset_reporter** (*Optional*): Parameters of text sensor with current preset. All settings are the same as for the **display_state** (see description above).
ESPHome Climate devices are not reporting their active presets (from **supported_presets** and **custom_presets** lists) to MQTT. This behavior has been noticed at least in version 1.20.0. In case you are using MQTT and want to receive information about active preset, you should declare this sensor in your yaml.
@@ -390,16 +391,16 @@ on_...:
## Simple example ##
The source code of this example is located in the [aux_ac_simple.yaml](https://github.com/GrKoR/esphome_aux_ac_component/blob/master/examples/simple/aux_ac_simple.yaml) file.
All settings in it is trivial. Just copy the file to your local folder, specify your wifi settings and compile YAML with ESPHome.
All settings in it is trivial. Just copy the file to your local folder, specify your Wi-Fi settings and compile YAML with ESPHome.
## Advanced example ##
All sources are located [in advanced example folder](https://github.com/GrKoR/esphome_aux_ac_component/tree/master/examples/advanced).
This time we'll configure two relative identical air conditioners with `aux_ac` custom component.<br />
Let's imagine we have ACs in a kitchen and in a living room. All ACs are the same brand and can be controlled by `aux_ac`.<br />
Let's imagine we have ACs in a kitchen and in a living room. Air conditioners can be of the same brand or different brands - the main thing is that they are compatible with `aux_ac` and can be controlled using `aux_ac`.<br />
Because we are lazy, we'll define all common configuration parts for two air conditioners in one `ac_common.yaml` file.<br />
All specific parts of configuration are located in the `ac_kitchen.yaml` and `ac_livingroom.yaml`. Here we set `devicename` and `upper_devicename` for correct sensors and component naming. And here we specify the correct IP-address of the device from `secrets.yaml`.<br />
All specific parts of configuration are located in the `ac_kitchen.yaml` and `ac_livingroom.yaml`. Here we set `devicename` and `upper_devicename` for correct sensors and component naming. And here we specify the correct IP address of the device from `secrets.yaml`.<br />
**Don't forget** to specify `wifi_ip_kitchen`, `wifi_ota_ip_kitchen`, `wifi_ip_livingroom` and `wifi_ota_ip_livingroom` in the `secrets.yaml` along with the other sensitive information, such as passwords, tokens etc.
If you try to compile `ac_common.yaml` it will raise errors. You need to compile `ac_kitchen.yaml` or `ac_livingroom.yaml` instead.

View File

@@ -1,17 +1,18 @@
# Кастомный компонент для ESPHome для управления кондиционером по wifi <!--[![GitHub release](https://img.shields.io/github/v/release/GrKoR/esphome_aux_ac_component)](https://github.com/GrKoR/esphome_aux_ac_component/releases/) [![Телеграм](https://img.shields.io/badge/Telegram-2CA5E0?style=flat&logo=telegram&logoColor=white)](https://t.me/aux_ac) -->
# Кастомный компонент для ESPHome для управления кондиционером по Wi-Fi <!--[![GitHub release](https://img.shields.io/github/v/release/GrKoR/esphome_aux_ac_component)](https://github.com/GrKoR/esphome_aux_ac_component/releases/) [![Телеграм](https://img.shields.io/badge/Telegram-2CA5E0?style=flat&logo=telegram&logoColor=white)](https://t.me/aux_ac) -->
English readme [is here](README-EN.md#esphome-aux-air-conditioner-custom-component-aux_ac).
Управляет кондиционерами на базе AUX по wifi.<br />
Управляет кондиционерами на базе AUX по Wi-Fi.<br />
По тексту ниже для компонента используется сокращение `aux_ac`.
Обсудить проект можно [в чате Телеграм](https://t.me/aux_ac).<br />
Отзывы о багах и ошибках, а так же запросы на дополнительный функционал оставляйте [в соответствующем разделе](https://github.com/GrKoR/esphome_aux_ac_component/issues).
Будет просто отлично, если к своему сообщению вы добавите лог и подробное описание. Для сбора логов есть [специальный скрипт на Python](https://github.com/GrKoR/ac_python_logger). С его помощью вы сможете сохранить в csv-файл все пакеты, которыми обменивается wifi-модуль и сплит-система. Если такой лог дополнить описанием, в какое время и что именно вы пытались включить, то это сильно ускорит исправление багов.
Будет просто отлично, если к своему сообщению вы добавите лог и подробное описание. Для сбора логов есть [специальный скрипт на Python](https://github.com/GrKoR/ac_python_logger). С его помощью вы сможете сохранить в csv-файл все пакеты, которыми обменивается Wi-Fi модуль и сплит-система. Если такой лог дополнить описанием, в какое время и что именно вы пытались включить, то это сильно ускорит исправление багов.
Также есть [подробная инструкция, описывающая как правильно запросить фичу](docs/HOW_TO_FEATURE_REQUEST.md).
## ДИСКЛЭЙМЕР (ОТМАЗКИ) ##
1. Все материалы этого проекта (программы, прошивки, схемы, 3D модели и т.п.) предоставляются "КАК ЕСТЬ". Всё, что вы делаете с вашим оборудованием, вы делаете на свой страх и риск. Автор не несет ответственности за результат и ничего не гарантирует. Если вы с абсолютной четкостью не понимаете, что именно вы делаете и для чего, лучше просто купите wifi-модуль у производителя вашего кондиционера.
1. Все материалы этого проекта (программы, прошивки, схемы, 3D модели и т.п.) предоставляются "КАК ЕСТЬ". Всё, что вы делаете с вашим оборудованием, вы делаете на свой страх и риск. Автор не несет ответственности за результат и ничего не гарантирует. Если вы с абсолютной четкостью не понимаете, что именно вы делаете и для чего, лучше просто купите Wi-Fi модуль у производителя вашего кондиционера.
2. Я ~~не настоящий сварщик~~ не программер. Поэтому код наверняка не оптимален и плохо оформлен (зато комментариев по коду я разместил от души), местами может быть написан небезопасно. И хоть я и старался протестировать всё, но уверен, что какие-то моменты упустил. Так что отнеситесь к коду с подозрением, ожидайте от него подвоха и если что-то увидели - [пишите в багрепорт](https://github.com/GrKoR/esphome_aux_ac_component/issues).
@@ -24,11 +25,11 @@ AUX - это один из нескольких OEM-производителей
[Список протестированных кондиционеров](docs/AC_TESTED.md) размещен в отдельном файле и включает те модели, на которых `aux_ac` был запущен автором компонента или пользователями. Этот список постоянно пополняется, преимущественно по обратной связи от пользователей [в чате Телеграм](https://t.me/aux_ac).<br />
### Если кондиционер в списке отсутствует ###
Если ваш кондиционер отсутствует в списке протестированных, то это еще не значит, что его не получится подключить к wifi. Вот основные "звоночки", которые могут говорить о высоких шансах на успех:
Если ваш кондиционер отсутствует в списке протестированных, то это еще не значит, что его не получится подключить к Wi-Fi. Вот основные "звоночки", которые могут говорить о высоких шансах на успех:
1. Если производитель вашего кондиционера есть в списке протестированных выше, но модели нет.
2. Если на шильдике кондиционера в строке производитель написано что-то про AUX или Аукс.
3. Если в инструкции пользователя вашего кондиционера что-то написано про возможность управления по wifi с помощью мобильного приложения ACFreedom.
4. Если производитель вашего кондиционера предлагает для управления wifi-модуль CTTM-40X24-WIFI-AKS (слева) или такой, как на фото справа. Причем правый модуль может быть как с USB-разъемом, так и с 5-контактным разъемом.
3. Если в инструкции пользователя вашего кондиционера что-то написано про возможность управления по Wi-Fi с помощью мобильного приложения ACFreedom.
4. Если производитель вашего кондиционера предлагает для управления Wi-Fi модуль CTTM-40X24-WIFI-AKS (слева) или такой, как на фото справа. Причем правый модуль может быть как с USB-разъемом, так и с 5-контактным разъемом.
<img src="https://user-images.githubusercontent.com/57137862/172053621-60fe39d8-066e-44fa-91c5-725fa1f5c3bc.png" height="300"> <img src="https://user-images.githubusercontent.com/57137862/172053744-8ce4a13d-28cb-4688-a998-11ca3a7129df.png" height="300">
@@ -53,6 +54,14 @@ external_components:
type: git
url: https://github.com/GrKoR/esphome_aux_ac_component
```
Если требуется прошить определенную версию компонента, используйте синтаксис из примера ниже. Здесь прошивается версия 0.2.14. Список версий смотрите [в тегах на гитхаб](https://github.com/GrKoR/esphome_aux_ac_component/tags).
```yaml
external_components:
- source:
type: git
url: https://github.com/GrKoR/esphome_aux_ac_component
ref: v.0.2.14
```
2. Настройте UART для коммуникации с вашим кондиционером:
```yaml
uart:
@@ -97,7 +106,7 @@ climate:
period: 7s
show_action: true
display_inverted: false
timeout: 150
timeout: 150
indoor_temperature:
name: AC Indoor Temperature
id: ac_indoor_temp
@@ -108,11 +117,11 @@ climate:
id: ac_outdoor_temp
internal: false
outbound_temperature:
name: AC Colant Outbound Temperature
name: AC Coolant Outbound Temperature
id: ac_outbound_temp
internal: false
inbound_temperature:
name: AC Colant Inbound Temperature
name: AC Coolant Inbound Temperature
id: ac_inbound_temp
internal: false
compressor_temperature:
@@ -180,9 +189,9 @@ climate:
- **uart_id** (*Опциональный*, [ID](https://esphome.io/guides/configuration-types.html#config-id)): Укажите ID [шины UART](https://esphome.io/components/uart.html), к которой подключен кондиционер. Если сконфигурирована одна шина, то компонент подключит её автоматически. Если шин несколько, то лучше указать вручную.
- **period** (*Опциональный*, [время](https://esphome.io/guides/configuration-types.html#config-time), по умолчанию ``7s``): Период между запросами статуса кондиционера. `Aux_ac` получает новое состояние кондиционера только после регулярного запроса, потому что сам кондиционер об изменении параметров своеё работы не уведомляет. Поэтому нужно запрашивать его, вдруг пользователь установил иной режим работы с помощью ИК-пульта.
- **period** (*Опциональный*, [время](https://esphome.io/guides/configuration-types.html#config-time), по умолчанию ``7s``): Период между запросами статуса кондиционера. `Aux_ac` получает новое состояние кондиционера только после регулярного запроса, потому что сам кондиционер об изменении параметров своей работы не уведомляет. Поэтому нужно запрашивать его, вдруг пользователь установил иной режим работы с помощью ИК-пульта.
- **show_action** (*Опциональный*, логическое, по умолчанию ``true``): Показывать ли текущую задачу кондиционера (экспериментальная функция). Например, в режиме HEAT-COOL кондиционер может выполнять одну из следующих задач:
- **show_action** (*Опциональный*, логическое, по умолчанию ``true``): Показывать ли текущую задачу кондиционера (экспериментальная функция). Например, в режиме HEAT_COOL кондиционер может выполнять одну из следующих задач:
- НАГРЕВ: нагревает воздух в комнате;
- ПРОСТОЙ: кондиционер работает в режиме вентилятора для перемешивания воздуха в комнате, поскольку целевая температура уже достигнута;
- ОХЛАЖДЕНИЕ: кондиционер охлаждает воздух в комнате.
@@ -195,6 +204,10 @@ climate:
Единственная ситуация, когда вам может пригодиться этот параметр, - это сильно загруженная ESP. Если по какой-то неподдающейся логике причине вы кроме `aux_ac` нагрузили свою ESP кучей дополнительных ресурсоемких задач, то у компонента может просто не хватать времени для оперативного приёма ответов от кондиционера. В этом в логе будут сообщения о том, что последовательность команд была прервана по таймауту. Чтобы это исправить, лучше, конечно, немного разгрузить ESP. Если это вам не подходит, тогда можно увеличить таймаут.
Значение таймаута в прошивке ограничено диапазоном от `150` до `600` миллисекунд. Устанавливать значения выше можно только отредактировав исходные коды компонента. Но сильно задирать таймаут не стоит. Кондиционер периодически рассылает пакеты без запроса со стороны `aux_ac` и это приводит к сбою в отправке команды.
- **optimistic** (*Опциональный*, логическое, по умолчанию ``true``) В «оптимистичном» режиме компонент не ждёт от кондиционера изменения параметров работы, а сразу после отправки команды в кондиционер сообщает в Home Assistant о новом состоянии. Если кондиционер команду не принял, то спустя несколько секунд eps получит текущее состояние всех систем и отправит в умный дом реальное состояние кондиционера. В итоге, если подавать в кондиционер неподдерживаемые команды, они будут записываться в историю Home Assistant и спустя время сбрасываться сбрасываться.
В «пессимистичном» режиме esp отправляет команду в кондиционер, но об изменении состояний не сообщает до тех пор, пока не получит информацию о фактическом режиме работы кондиционера.
В большинстве случаев разница между этими режимами будет практически незаметна.
- **indoor_temperature** (*Опциональный*): Параметры создаваемого датчика температуры воздуха, если такой датчик нужен
- **name** (**Обязательный**, строка): Имя датчика температуры.
- **id** (*Опциональный*, [ID](https://esphome.io/guides/configuration-types.html#config-id)): Можно указать свой ID для датчика для использования в лямбдах.
@@ -230,7 +243,7 @@ climate:
- **preset_reporter** (*Опциональный*): Параметры создаваемого текстового датчика текущего активного пресета. Параметры аналогичны датчику дисплея **display_state**.
Климатические устройства ESPHome не отправляют по MQTT активный пресет (см. **supported_presets** и **custom_presets**), в котором работает устройство. Если вы используете MQTT и хотите получать информацию о пресетах, то пропишите этот датчик в конфигурации.
- **vlouver_state** (*Опциональный*): Параметры создаваемого сенсора состояния вертикальных жалюзи. Параметры аналогичны датчику дисплея **display_state**. Состояние желюзи кодируется целочисленными значениями (подробнее смотри [aux_ac.vlouver_set action](#aux_ac_._vlouver_set) ниже).
- **vlouver_state** (*Опциональный*): Параметры создаваемого сенсора состояния вертикальных жалюзи. Параметры аналогичны датчику дисплея **display_state**. Состояние жалюзи кодируется целочисленными значениями (подробнее смотри [aux_ac.vlouver_set action](#aux_ac_._vlouver_set) ниже).
- **supported_modes** (*Опциональный*, список): Список поддерживаемых режимов работы. Возможные значения: ``HEAT_COOL``, ``COOL``, ``HEAT``, ``DRY``, ``FAN_ONLY``. Обратите внимание: некоторые производители кондиционеров указывают на пульте режим AUTO, хотя по факту этот режим не работает по расписанию и только лишь поддерживает целевую температуру. Такой режим в ESPHome называется HEAT_COOL. По умолчанию список содержит только значение ``FAN_ONLY``.
@@ -390,7 +403,7 @@ on_...:
Исходный код простейшего примера можно найти в файле [aux_ac_simple.yaml](https://github.com/GrKoR/esphome_aux_ac_component/blob/master/examples/simple/aux_ac_simple.yaml).
Все настройки в нем тривиальны и подробно описаны [в официальной документации на ESPHome](https://esphome.io/index.html) и дополнены в разделе о настройке компонента выше.<br />
Просто скопируйте yaml-файл примера в локальную папку у себя на компьютере, пропишите настройки вашей сети WiFi и откомпилируйте YAML с использованием ESPHome.
Просто скопируйте yaml-файл примера в локальную папку у себя на компьютере, пропишите настройки вашей сети Wi-Fi и откомпилируйте YAML с использованием ESPHome.
## Продвинутый пример ##

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,5 @@
import logging
from esphome.core import CORE, Define
import esphome.config_validation as cv
import esphome.codegen as cg
from esphome.components import climate, uart, sensor, binary_sensor, text_sensor
@@ -10,6 +11,7 @@ from esphome.const import (
CONF_DATA,
CONF_ID,
CONF_INTERNAL,
CONF_OPTIMISTIC,
CONF_PERIOD,
CONF_POSITION,
CONF_SUPPORTED_MODES,
@@ -31,6 +33,12 @@ from esphome.components.climate import (
ClimateSwingMode,
)
AUX_AC_FIRMWARE_VERSION = '0.2.15'
AC_PACKET_TIMEOUT_MIN = 150
AC_PACKET_TIMEOUT_MAX = 600
AC_POWER_LIMIT_MIN = 30
AC_POWER_LIMIT_MAX = 100
_LOGGER = logging.getLogger(__name__)
CODEOWNERS = ["@GrKoR"]
@@ -119,8 +127,6 @@ AirConPowerLimitationOnAction = aux_ac_ns.class_(
)
AC_PACKET_TIMEOUT_MIN = 150
AC_PACKET_TIMEOUT_MAX = 600
def validate_packet_timeout(value):
minV = AC_PACKET_TIMEOUT_MIN
maxV = AC_PACKET_TIMEOUT_MAX
@@ -129,8 +135,6 @@ def validate_packet_timeout(value):
raise cv.Invalid(f"Timeout should be in range: {minV}..{maxV}.")
AC_POWER_LIMIT_MIN = 30
AC_POWER_LIMIT_MAX = 100
def validate_power_limit_range(value):
minV = AC_POWER_LIMIT_MIN
maxV = AC_POWER_LIMIT_MAX
@@ -181,7 +185,7 @@ def validate_raw_data(value):
def output_info(config):
"""_LOGGER.info(config.items())"""
_LOGGER.info("AUX_AC firmware version: %s", AUX_AC_FIRMWARE_VERSION)
return config
@@ -193,7 +197,7 @@ CONFIG_SCHEMA = cv.All(
cv.Optional(CONF_SHOW_ACTION, default="true"): cv.boolean,
cv.Optional(CONF_DISPLAY_INVERTED, default="false"): cv.boolean,
cv.Optional(CONF_TIMEOUT, default=AC_PACKET_TIMEOUT_MIN): validate_packet_timeout,
cv.Optional(CONF_OPTIMISTIC, default="true"): cv.boolean,
cv.Optional(CONF_INVERTER_POWER_DEPRICATED): cv.invalid(
"The name of sensor was changed in v.0.2.9 from 'invertor_power' to 'inverter_power'. Update your config please."
),
@@ -329,6 +333,21 @@ CONFIG_SCHEMA = cv.All(
async def to_code(config):
CORE.add_define(
Define("AUX_AC_FIRMWARE_VERSION", '"'+AUX_AC_FIRMWARE_VERSION+'"')
)
CORE.add_define(
Define("AUX_AC_PACKET_TIMEOUT_MIN", AC_PACKET_TIMEOUT_MIN)
)
CORE.add_define(
Define("AUX_AC_PACKET_TIMEOUT_MAX", AC_PACKET_TIMEOUT_MAX)
)
CORE.add_define(
Define("AUX_AC_MIN_INVERTER_POWER_LIMIT", AC_POWER_LIMIT_MIN)
)
CORE.add_define(
Define("AUX_AC_MAX_INVERTER_POWER_LIMIT", AC_POWER_LIMIT_MAX)
)
var = cg.new_Pvariable(config[CONF_ID])
await cg.register_component(var, config)
await climate.register_climate(var, config)
@@ -400,6 +419,7 @@ async def to_code(config):
cg.add(var.set_show_action(config[CONF_SHOW_ACTION]))
cg.add(var.set_display_inverted(config[CONF_DISPLAY_INVERTED]))
cg.add(var.set_packet_timeout(config[CONF_TIMEOUT]))
cg.add(var.set_optimistic(config[CONF_OPTIMISTIC]))
if CONF_SUPPORTED_MODES in config:
cg.add(var.set_supported_modes(config[CONF_SUPPORTED_MODES]))
if CONF_SUPPORTED_SWING_MODES in config:
@@ -412,13 +432,13 @@ async def to_code(config):
cg.add(var.set_custom_fan_modes(config[CONF_CUSTOM_FAN_MODES]))
DISPLAY_ACTION_SCHEMA = maybe_simple_id(
{
cv.Required(CONF_ID): cv.use_id(AirCon),
}
)
@automation.register_action(
"aux_ac.display_off", AirConDisplayOffAction, DISPLAY_ACTION_SCHEMA
)
@@ -426,6 +446,7 @@ async def display_off_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, paren)
@automation.register_action(
"aux_ac.display_on", AirConDisplayOnAction, DISPLAY_ACTION_SCHEMA
)
@@ -434,13 +455,13 @@ async def display_on_to_code(config, action_id, template_arg, args):
return cg.new_Pvariable(action_id, template_arg, paren)
VLOUVER_ACTION_SCHEMA = maybe_simple_id(
{
cv.Required(CONF_ID): cv.use_id(AirCon),
}
)
@automation.register_action(
"aux_ac.vlouver_stop", AirConVLouverStopAction, VLOUVER_ACTION_SCHEMA
)
@@ -448,6 +469,7 @@ async def vlouver_stop_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, paren)
@automation.register_action(
"aux_ac.vlouver_swing", AirConVLouverSwingAction, VLOUVER_ACTION_SCHEMA
)
@@ -455,6 +477,7 @@ async def vlouver_swing_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, paren)
@automation.register_action(
"aux_ac.vlouver_top", AirConVLouverTopAction, VLOUVER_ACTION_SCHEMA
)
@@ -462,6 +485,7 @@ async def vlouver_top_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, paren)
@automation.register_action(
"aux_ac.vlouver_middle_above", AirConVLouverMiddleAboveAction, VLOUVER_ACTION_SCHEMA
)
@@ -469,6 +493,7 @@ async def vlouver_middle_above_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, paren)
@automation.register_action(
"aux_ac.vlouver_middle", AirConVLouverMiddleAction, VLOUVER_ACTION_SCHEMA
)
@@ -476,6 +501,7 @@ async def vlouver_middle_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, paren)
@automation.register_action(
"aux_ac.vlouver_middle_below", AirConVLouverMiddleBelowAction, VLOUVER_ACTION_SCHEMA
)
@@ -483,6 +509,7 @@ async def vlouver_middle_below_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, paren)
@automation.register_action(
"aux_ac.vlouver_bottom", AirConVLouverBottomAction, VLOUVER_ACTION_SCHEMA
)
@@ -491,7 +518,6 @@ async def vlouver_bottom_to_code(config, action_id, template_arg, args):
return cg.new_Pvariable(action_id, template_arg, paren)
VLOUVER_SET_ACTION_SCHEMA = cv.Schema(
{
cv.Required(CONF_ID): cv.use_id(AirCon),
@@ -499,6 +525,7 @@ VLOUVER_SET_ACTION_SCHEMA = cv.Schema(
}
)
@automation.register_action(
"aux_ac.vlouver_set", AirConVLouverSetAction, VLOUVER_SET_ACTION_SCHEMA
)
@@ -510,13 +537,13 @@ async def vlouver_set_to_code(config, action_id, template_arg, args):
return var
POWER_LIMITATION_OFF_ACTION_SCHEMA = maybe_simple_id(
{
cv.Required(CONF_ID): cv.use_id(AirCon),
}
)
@automation.register_action(
"aux_ac.power_limit_off", AirConPowerLimitationOffAction, POWER_LIMITATION_OFF_ACTION_SCHEMA
)
@@ -525,7 +552,6 @@ async def power_limit_off_to_code(config, action_id, template_arg, args):
return cg.new_Pvariable(action_id, template_arg, paren)
POWER_LIMITATION_ON_ACTION_SCHEMA = cv.Schema(
{
cv.Required(CONF_ID): cv.use_id(AirCon),
@@ -533,6 +559,7 @@ POWER_LIMITATION_ON_ACTION_SCHEMA = cv.Schema(
}
)
@automation.register_action(
"aux_ac.power_limit_on", AirConPowerLimitationOnAction, POWER_LIMITATION_ON_ACTION_SCHEMA
)
@@ -544,7 +571,6 @@ async def power_limit_on_to_code(config, action_id, template_arg, args):
return var
# *********************************************************************************************************
# ВАЖНО! Только для инженеров!
# Вызывайте метод aux_ac.send_packet только если понимаете, что делаете! Он не проверяет данные, а передаёт

View File

@@ -2,24 +2,32 @@
`Aux_ac` has been tested and works successfully with the air conditioners from the list below.<br/>
Кондиционеры из списка ниже протестированы и точно совместимы с `aux_ac`.
+ AUX (models: ASW-H09A4/LK-700R1, ASW-H09B4/LK-700R1, ASW-H09A4/LK-700R1DI, AMWM-xxx multisplit, AL-H48/5DR2(U)/ALMD-H48/5DR2, ASW-H07A4/FP-R1DI, ASW-H09A4/FP-R1DI, ASW-H07A4/DE-R1DI, KFR-26GW/BpHRB+3)
+ Ballu (models: BSUI-12HN8, BLC_CF/in-60HN1)
+ Centek (models: CT-65Q09, CT-65Q12, CT-65Z10, CT-65Z18, CT-65A12)
+ Argo (models: Greenstyle 9000, Greenstyle 12000, Greenstyle 18000)
+ AUX (models: ALMD-H48/5DR2 / AL-H48/5DR2(U), AMWM-H07/4R1 multisplit, AMWM-H12/4R3 multisplit, ASM-H12LL, ASM-H24LD, ASW-H07A4/DE-R1DI, ASW-H07A4/FP-R1DI, ASW-H09A4/FP-R1DI, ASW-H12A4/HA-R2DI, ASW-H09A4/LK-700R1, ASW-H09A4/LK-700R1DI, ASW-H12B4/JD-R2DI, ASW-H12A4/FAR1, ASW-H09B4/LK-700R1, ASW-H12C5C4/JOR3DI-B8, ASW-H12U3/JIR1DI-US, AUX-18QC/I / AUX-18QC/O, AWM-09G1V4-X, KFR-26GW/BpHRB+3, KFR-26GW/BpQYA2+2R3, KFR-26GW/BpQYD2+2R3, KFR-26GW/BpR3QYA1+1, KFR-26GW/BpR3QYD1+1, KFR-26GW/BpR3QYQ1+1, KFR-26GW/BpR3QYQ2+2, KFR-35GW/BpQYA1+1R3, KFR-35GW/BpQYA2+2R3, KFR-35GW/BpQYD1+1R3, KFR-35GW/BpQYD2+2R3, KFR-35GW/BpR3QYQ1+1, KFR-35GW/BpR3QYQ2+2 (see [issue #71](https://github.com/GrKoR/esphome_aux_ac_component/issues/71) for detais of `Aegean Sea`[爱琴海] AUX family AC connection)
+ Ballu (models: BLC_CF-60HN1, BSUI-09HN8, BSUI-12HN8, BSUI-18HN8, BSW-09HN1, BSW-12HN1)
+ Centek (models: CT-65A12, CT-65EDC07, CT-65F09, CT-65F12, CT-65FDC09, CT-65J09, CT-65J12, CT-65Q09, CT-65Q12, CT-65U13, CT-65V24, CT-65Z10, CT-65Z18)
+ Dimstal (model: SMND-QC-12-J-Smart ECO)
+ Elgin (models: HWFI09B2IA/ HWFE09B2NA)
+ Energolux (models: SAS07L4-A, SAS07M2-AI, SAS09Z4-AI, SASxxBN1-AI)
+ Energolux (models: SAS07L2-A, SAS07L4-A, SAS07M2-AI, SAS09B3-A, SAS09L4-A, SAS09Z4-AI, SAS12BN1-AI, SAS12CH1-AI, SAS12Z3-AI)
+ Hyundai (models: H-AR16-07H, H-AR21-07H, H-AR21-09H)
+ iClima (models: ICI-09A/IUI-09A)
+ Idea (models: ISR-12HR-SA7-DN1 ION)
+ IGC (models: RAK-07NH multysplit)
+ IGC (models: RAK-07NH multysplit, RAS-07AX/RAC-07AX, RAS-V09N2X/RAC-V09N2X)
+ Ishimatsu (models: AVK-09I)
+ Loriot (models: LAC-09AS)
+ Mirage (models: EWC121E - CWC121E)
+ RCool (models: GRA12B0-KSZKLM641)
+ Roda (models: RS-AL09F)
+ Roda (models: RS-AL09F, RS-AL24F)
+ Rovex (models: RS-07ALS1, RS-09ALS1, RS-12ALS1)
+ Royal Clima (models: CO-D 18HNI/CO-E 18HNI, RCI-SA30HN)
+ Royal Clima (models: CO-D 18HNI/CO-E 18HNI, RC-VNR29HN, RCI-SA30HN)
+ Samurai (models: SMA-07HRN1 ION, SMA-09HRN1 ION)
+ Subtropic (models: SUB-07HN1, SUB-12HN1)
+ Subtropic (models: SUB-07HN1, SUB-09HN1, SUB-12HN1)
+ Tesla (models: TA35FFML-12410M)
+ TOYOTOMI (models: SONZAI THN/THG-A35SZ)
+ VOX (models: IVA5-12JR1, IJO09-SC4D)
+ Xigma (models: XG-SJ56RHA-IDU)
+ Zephir (models: ZEL 12000BTU)
+ Бирюса (models: B-09FIR/B-09FIQ)
+ Бирюса (models: B-07DPR/B-07DPQ, B-09FIR/B-09FIQ)
## Tested and INCOMPATIBLE air conditioners ##
ACs from the list below are **INCOMPATIBLE** with `aux_ac`.<br/>

View File

@@ -8,15 +8,42 @@ I leave GPIO0 in air cause I don't see any reason to solder additional component
ESP-12E before DC-DC and air conditioner connected:
![esp-12e minimal photo](https://github.com/GrKoR/esphome_aux_ac_component/blob/master/images/esp-12e.jpg?raw=true)
Air conditioner internal block has a 5-wire connection to the wifi-module. Connector is [JST SM](https://www.jst-mfg.com/product/pdf/eng/eSM.pdf).
Air conditioner internal block has a 5-wire or a 4-wire (pseudo-USB) connection to the wifi-module. There are another types of connection too. For example AUX Aegean Sea ( 爱琴海 ), check [issue #71](https://github.com/GrKoR/esphome_aux_ac_component/issues/71) for details.
## Wires ##
1. Yellow: +14V DC. Measured +14.70V max and +13.70V min. Service manual declares up to +16V.
## 5-wire connection
It use [JST SM](https://www.jst-mfg.com/product/pdf/eng/eSM.pdf) connector for 5-wire connection.
### Pinout ###
1. Yellow: +12V..+14V DC. Measured +14.70V max and +13.70V min. Service manual declares up to +16V.
2. Black: ground.
3. White: +5V DC (max: +5.63V; min: +4.43V) I have no idea what this is for. It goes directly to the air conditioner microcontroller through resistor 1kOhm and it does not affect the operation of the module.
3. White: +5V DC (max: +5.63V; min: +4.43V) Enable signal for the 3V3 buck regulator on the OEM module. It goes directly to the air conditioner microcontroller through resistor 1kOhm. It's non used with the EPS module.
4. Blue: TX of air conditioner. High is +5V.
5. Red: RX of air conditioner. High is +5V.
You should feed your ESP **from +12V..+14V line only**! It is prohibited to use +5V line for this purpose.
+5V line is digital signal line and directly goes to conditioner's controller. It can't provide enough power. In worst scenario you probably can burn down your air conditioner controller.
## 4-wire connection (pseudo-USB)
For 4-wire connection it is used USB-like connector. It is only physical USB but its pinout is UART with +12V..+14V power line.
**ATTENTION!** It is incompatible with normal USB devices! Ordinary USB device like USB flash drive will be damaged if it will be plugged in air conditioner USB connector.
**ATTENTION #2!** Manufacturer was changed power circuit and connector pinout in 2022-2023: power rail has +8.5V DC and TX/RX pins are swapped.
### Pinout ###
<img src="https://github.com/GrKoR/esphome_aux_ac_component/blob/master/images/USB-pinout.png?raw=true" width="400">
1. +12V..+14V DC before 2022-2023, possible +8.5V DC after 2022-2023. Service manual declares up to +16V.
2. RX of the air conditioner for models manufactured before about Jul.2022, TX of the air conditioner for later modifications. High level is +5V.
3. TX of the air conditioner for models manufactured before about Jul.2022, RX of the air conditioner for later modifications. High level is +5V.
4. GND - ground.
Big thanks to [@diabl0](https://github.com/diabl0) for this pinout in [issue #70](https://github.com/GrKoR/esphome_aux_ac_component/issues/70).
If you are not sure, on which USB-pins do you have RX and TX lines, than don't afraid to connect it randomly. Neither air conditioner nor ESP will be damaged in this situation, just `aux_ac` can't receive data from the air conditioner. Swap TX and RX and your device will probably work.
## Power supply
For power supply it is possible to use any kind of suitable modules. I use this:
![power module](https://github.com/GrKoR/esphome_aux_ac_component/blob/master/images/DD4012SA.jpg?raw=true).
@@ -26,7 +53,7 @@ Yellow wire is connected to the Vin pin of the power module.
Blue wire is connected to the RXD pin of esp-12e.
Red wire is connected to the TXD pin of esp-12e.
**ATTENTION!** In case you are using board like NodeMCU instead of clean esp8266/esp32 module, you shouldn't connect RX & TX wires of air conditioneer to TX & RX pins of board. Use any other digital pins for UART connection. It doesn't matter if your board will use hardware or software UART. All UART types are working well.
**ATTENTION!** In case you are using board like NodeMCU instead of clean esp8266/esp32 module, you shouldn't connect RX & TX wires of air conditioner to TX & RX pins of board! *(TXD1/RXD1, TXD2/RXD2 are also most likely not suitable.)* Use any other digital pins for UART connection. It doesn't matter if your board will use hardware or software UART. All UART types are working well.
The usage of alternate pins for NodeMCU-like boards is necessary cause RX & TX lines of this boards are often have additional components like resistors or USB-TTL converters connected. This components are violate esp-to-ac UART connection.
Here is it:
@@ -35,7 +62,7 @@ Here is it:
All connections in custom 3d-printed case looks like this:
![module assembled](https://github.com/GrKoR/esphome_aux_ac_component/blob/master/images/assembled.JPG?raw=true)
Cause I haven't JST SM connector I made own:
Since I didn't have JST SM connectors, I made my own:
![JST SM connector replica](https://github.com/GrKoR/esphome_aux_ac_component/blob/master/images/connector.JPG?raw=true).
It is made of standard 2.54mm pins and 3D-printed case.

View File

@@ -1,23 +1,49 @@
## Электроника, необходимая для управления кондиционером по wifi ##
Я тестировал проект на esp8266 (esp-12e). Минимальная обвязка традиционная и выглядит так:
Я тестировал проект на esp8266 (esp-12e). Минимальная обвязка традиционна и выглядит так:
![scheme](https://github.com/GrKoR/esphome_aux_ac_component/blob/master/images/scheme.png?raw=true)
Для прошивки esp8266 в первый раз нужно в дополнение к обвязке, показанной на схеме выше, притянуть к Земле пин IO0 (GPIO0). После этого ESPHome может быть загружена в esp8266 по UART0. Если при этом вы указали OTA в конфигурации ESPHome, то в дальнейшем пин IO0 можно подтянуть к питанию или оставить висеть в воздухе. Он никак не будет влиять на загрузку новых прошивок, потому что все апдейты можно будет делать "по воздуху" (то есть по wifi). Я никуда IO0 не подтягивал и ничего к нему не паял, потому что не вижу смысла это делать ради одного раза. Первую прошивку делал в самодельном переходнике на макетке.
Для прошивки esp8266 в первый раз нужно, в дополнение к обвязке, показанной на схеме выше, притянуть к земле пин IO0 (GPIO0). После этого ESPHome может быть загружена в esp8266 по UART0. Если при этом вы указали OTA в конфигурации ESPHome, то в дальнейшем пин IO0 можно подтянуть к питанию или оставить висеть в воздухе. Он никак не будет влиять на загрузку новых прошивок, потому что все апдейты можно будет делать "по воздуху" (то есть по Wi-Fi). Я никуда IO0 не подтягивал и ничего к нему не паял, потому что не вижу смысла это делать ради одного раза. Первую прошивку делал в самодельном переходнике на макетке.
Плата esp-12e перед подключением кондиционера и модуля питания:
![esp-12e minimal photo](https://github.com/GrKoR/esphome_aux_ac_component/blob/master/images/esp-12e.jpg?raw=true)
Внутренний блок сплит-системы имеет 5-проводное подключение к модулю wifi. Коннектор [JST SM](https://www.jst-mfg.com/product/pdf/eng/eSM.pdf).
Внутренний блок сплит-системы может иметь 5-проводное или 4-проводное подключение (псевдо-USB) к модулю Wi-Fi. Встречаются и другие виды подключения. Например, AUX Aegean Sea ( 爱琴海 ), за подробностями подключения сюда: [issue #71](https://github.com/GrKoR/esphome_aux_ac_component/issues/71).
## Перечень проводников ##
1. Желтый: +14В постоянного тока. Осциллограф показал от +13.70В до +14.70В. В сервисном мануале встречалось, что питание возможно до +16В.
## 5-проводное подключение
Для 5-проводного подключения используется коннектор [JST SM](https://www.jst-mfg.com/product/pdf/eng/eSM.pdf).
### Распиновка ###
1. Желтый: +12В..+14В постоянного тока. Осциллограф показал от +13.70В до +14.70В. В сервисном мануале встречалось, что питание возможно до +16В.
2. Черный: земля.
3. Белый: +5В постоянного тока (измерено от +4.43В до +5.63В). Для чего нужна эта линия - не понятно. У меня нет версий. Эксперименты с родным wifi-модулем сплит-системы показали, что эта линия в работе wifi не участвует. Линия идет напрямую на ножку контроллера в сплите через резистор 1 кОм.
3. Белый: +5В постоянного тока (измерено от +4.43В до +5.63В). По информации от пользователей, это сигнальная линия, включающая по DC-DC конвертор на wifi-модуле по команде с кондиционера. Линия идет напрямую на ножку контроллера в сплите через резистор 1 кОм. Эксперименты с родным Wi-Fi модулем сплит-системы показали, что эта линия в работе Wi-Fi не участвует и имеет всегда высокий уровень. В работе компонента и самодельного wifi-модуля эта линия не используется.
4. Синий: TX кондиционера. Высокий уровень +5В.
5. Red: RX кондиционера. Высокий уровень +5В.
Питание ESP подключать **ТОЛЬКО** к линии +12В..+14В! Имеющийся в 5-проводном подключении контакт с +5В для питания ESP использоваться не должен. Он является сигнальным, подключен через резистор непосредственно на ногу контроллера на материнской плате кондиционера и способен выдавать лишь мизерный ток. При неудачном стечении обстоятельств, повесив питание ESP на эту линию, можно сжечь мозги кондиционеру.
## 4-проводное подключение (псевдо-USB)
Для 4-проводного подключения используется USB-коннектор. От настоящего USB здесь только коннектор. По пинам в этом разъеме UART и +12В..+14В питание.
**ВНИМАНИЕ!** С устройствами c настоящим USB этот интерфейс не совместим! Если вставить в разъём обычную USB-флешку или другое устройство, скорее всего оно просто сгорит.
**ВНИМАНИЕ №2!** В 2022-2023 производитель поменял распиновку и схему питания. Теперь кондиционеры на USB-коннектор выдают +8.5В. А пины RX и TX поменялись местами.
### Распиновка ###
<img src="https://github.com/GrKoR/esphome_aux_ac_component/blob/master/images/USB-pinout.png?raw=true" width="400">
1. +12В..+14В постоянного тока для кондиционеров до 2023 года, возможно +8.5В для кондиционеров 2022-2023 годов и моложе. В сервисном мануале на кондиционеры до 2022 года встречалось, что питание возможно до +16В.
2. RX кондиционера для моделей, произведенных примерно до 07.2022, TX кондиционера для более поздних модификаций. Высокий уровень +5В.
3. TX кондиционера для моделей, произведенных примерно до 07.2022, RX кондиционера для более поздних модификаций. Высокий уровень +5В.
4. земля.
Большое спасибо [@diabl0](https://github.com/diabl0) за эту распиновку ([issue #70](https://github.com/GrKoR/esphome_aux_ac_component/issues/70)).
Если вы не знаете, на каких именно пинах USB-разъема в вашем случае расположены TX и RX, то не бойтесь подключить наугад. Ни кондиционер, ни ESP не пострадают, если вы перепутаете линии TX и RX. Просто компонент не увидит кондиционер, о чем будут сообщения в логе. В таком случае просто попробуйте поменять TX и RX местами.
## Питание
Для питания ESP8266 можно использовать любой подходящий DC-DC преобразователь. Я использовал такой:
![power module](https://github.com/GrKoR/esphome_aux_ac_component/blob/master/images/DD4012SA.jpg?raw=true).
![power module](https://github.com/GrKoR/esphome_aux_ac_component/blob/master/images/DD4012SA.jpg?raw=true | width=200).
## Подключение ##
Черный провод (земля) подключается к земле DC-DC преобразователя и к пину GND модуля ESP8266.
@@ -25,7 +51,7 @@
Синий провод подключается к пину RXD модуля esp-12e.
Красный провод подключается к пину TXD модуля esp-12e.
**ВНИМАНИЕ!** Если вы используете не голый модуль esp32/esp8266, а плату типа NodeMCU, то не подключайте провода TX и RX кондиционера к пинам TX и RX платы! Используйте любые другие свободные пины для UART. При этом для ESP8266 UART будет программный, но это не страшно. Ресурсов ESP8266 хватит для работы.
**ВНИМАНИЕ!** Если вы используете не голый модуль esp32/esp8266, а плату типа NodeMCU, то не подключайте провода TX и RX кондиционера к пинам TX и RX платы! *(TXD1/RXD1, TXD2/RXD2 также скорее всего не подойдут.)* Используйте любые другие свободные пины для UART. При этом для ESP8266 UART будет программный, но это не страшно. Ресурсов ESP8266 хватит для работы.
Использовать альтернативные пины для плат типа NodeMCU необходимо потому, что часто на линиях RX и TX этих плат установлены резисторы, а также на этих пинах висит USB-TTL конвертер (если он есть на плате). Эти компоненты мешают ESP наладить соединение с кондиционером.

View File

@@ -0,0 +1,18 @@
# How to request a feature for a component #
With any functions, the alignment is such that they simply cannot be written down by name.
We need a log from someone who has air conditioner with such functions. If you are such a person, then you can help yourself and the community.
To capture the log you need to do the following steps:
1. Run a specially written [tool](https://github.com/GrKoR/ac_python_logger) to collect logs.
2. Turn on the AC.
3. Wait 10+ seconds. (During this time, the ESP will receive all packets from AC).
4. Turn on the desired function using AC's IR remote.
5. Wait 10+ seconds ones more. While you are waiting, you can write down what you have done.
6. Turn off the desired function.
7. Wait 10+ seconds again and write down what you've done.
8. Repeat steps 4..7 for all other functions you interested in.
9. Stop the log recording with a script.
10. Send collected log and your notes (explanations to the log) to [issues](https://github.com/GrKoR/esphome_aux_ac_component/issues) or to [telegram chat](https://t.me/aux_ac).
Instead of a Python script from the step #1, you can simply save the logs from the esphome web-interface with copy-paste or from the command line, but there is a lot of extra stuff there. And it's easy to miss something. But in principle, it is also quite a working option.

View File

@@ -0,0 +1,17 @@
# Как запросить расширение функционала компонента #
С любыми новыми функциями кондиционера ситуация такая, что просто по названию из инструкции или с пульта их не сделать. Нужен лог от владельца кондиционера, у кого такие функции есть. Если вы такой владелей, то можете помочь себе и сообществу.
Последовательность действий такая:
1. Запускате специально написанную [тулзу](https://github.com/GrKoR/ac_python_logger) для сбора логов.
2. Включете кондиционер.
3. Ждёте 10+ секунд, чтобы все возможные типы пакетов прошли по UART на ESP.
4. Включаете нужную функцию с помощью ИК-пульта.
5. Опять ждёте 10+ секунд. Во время ожидания можно записать в отдельный текстовый файл или на бумажку, что именно сделано.
6. Выключаете нужную функцию.
7. Опять ждёте 10+ секунд, не забывая записывать комментарии по сделанному.
8. Повторяете шаги 4..7 для всех других функций, которые хочется иметь в компоненте `aux_ac`.
9. Останавливаете запись лога.
10. Отправляете собранный лог и свои заметки (пояснения к логу) в [issues](https://github.com/GrKoR/esphome_aux_ac_component/issues) или в [телеграм](https://t.me/aux_ac).
Вместо использования Python-скрипта можно логи из веб-интерфейса esphome сохранять копипастом или из командной строки. Но там много лишнего шлётся и легко что-то пропустить. Но в принципе это тоже вполне рабочий вариант.

View File

@@ -65,6 +65,7 @@ climate:
period: 7s
show_action: true
display_inverted: true
optimistic: true
indoor_temperature:
name: ${upper_devicename} Indoor Temperature
id: ${devicename}_indoor_temp
@@ -78,11 +79,11 @@ climate:
id: ${devicename}_outdoor_temp
internal: false
outbound_temperature:
name: ${upper_devicename} Colant Outbound Temperature
name: ${upper_devicename} Coolant Outbound Temperature
id: ${devicename}_outbound_temp
internal: false
inbound_temperature:
name: ${upper_devicename} Colant Inbound Temperature
name: ${upper_devicename} Coolant Inbound Temperature
id: ${devicename}_inbound_temp
internal: false
compressor_temperature:
@@ -93,9 +94,9 @@ climate:
name: ${upper_devicename} Defrost State
id: ${devicename}_defrost_state
internal: false
invertor_power:
inverter_power:
name: ${upper_devicename} Invertor Power
id: ${devicename}_invertor_power
id: ${devicename}_inverter_power
internal: false
preset_reporter:
name: ${upper_devicename} Preset Reporter
@@ -138,6 +139,8 @@ sensor:
unit_of_measurement: "dBa"
accuracy_decimals: 0
- platform: uptime
name: ${upper_devicename} Uptime Sensor
switch:
- platform: template
@@ -214,3 +217,15 @@ number:
- aux_ac.vlouver_set:
id: aux_id
position: !lambda "return x;"
- platform: template
name: ${upper_devicename} Power Limit
id: ${devicename}_power_limit
icon: "mdi:battery-unknown"
mode: "slider"
min_value: 30
max_value: 100
step: 1
set_action:
then:
- lambda: !lambda "id(aux_id).powerLimitationOnSequence( x );"

BIN
images/USB-pinout.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

View File

@@ -73,11 +73,11 @@ climate:
id: ${devicename}_outdoor_temp
internal: false
outbound_temperature:
name: $upper_devicename Colant Outbound Temperature
name: $upper_devicename Coolant Outbound Temperature
id: ${devicename}_outbound_temp
internal: false
inbound_temperature:
name: $upper_devicename Colant Inbound Temperature
name: $upper_devicename Coolant Inbound Temperature
id: ${devicename}_inbound_temp
internal: false
compressor_temperature:
@@ -88,7 +88,7 @@ climate:
name: $upper_devicename Defrost State
id: ${devicename}_defrost_state
internal: false
invertor_power:
inverter_power:
name: $upper_devicename Invertor Power
id: ${devicename}_invertor_power
internal: false

View File

@@ -79,6 +79,7 @@ climate:
period: 7s
show_action: true
display_inverted: true
optimistic: true
indoor_temperature:
name: $upper_devicename Indoor Temperature
id: ${devicename}_indoor_temp
@@ -92,11 +93,11 @@ climate:
id: ${devicename}_outdoor_temp
internal: false
outbound_temperature:
name: $upper_devicename Colant Outbound Temperature
name: $upper_devicename Coolant Outbound Temperature
id: ${devicename}_outbound_temp
internal: false
inbound_temperature:
name: $upper_devicename Colant Inbound Temperature
name: $upper_devicename Coolant Inbound Temperature
id: ${devicename}_inbound_temp
internal: false
compressor_temperature:
@@ -107,7 +108,7 @@ climate:
name: $upper_devicename Defrost State
id: ${devicename}_defrost_state
internal: false
invertor_power:
inverter_power:
name: $upper_devicename Invertor Power
id: ${devicename}_invertor_power
internal: false

View File

@@ -75,11 +75,11 @@ climate:
id: ${devicename}_outdoor_temp
internal: false
outbound_temperature:
name: $upper_devicename Colant Outbound Temperature
name: $upper_devicename Coolant Outbound Temperature
id: ${devicename}_outbound_temp
internal: false
inbound_temperature:
name: $upper_devicename Colant Inbound Temperature
name: $upper_devicename Coolant Inbound Temperature
id: ${devicename}_inbound_temp
internal: false
compressor_temperature:

View File

@@ -1,7 +1,7 @@
external_components:
- source:
type: local
path: ..\components
path: ../components
substitutions:
devicename: test_local_airflow_dir

View File

@@ -75,11 +75,11 @@ climate:
id: ${devicename}_outdoor_temp
internal: false
outbound_temperature:
name: $upper_devicename Colant Outbound Temperature
name: $upper_devicename Coolant Outbound Temperature
id: ${devicename}_outbound_temp
internal: false
inbound_temperature:
name: $upper_devicename Colant Inbound Temperature
name: $upper_devicename Coolant Inbound Temperature
id: ${devicename}_inbound_temp
internal: false
compressor_temperature:

View File

@@ -1,7 +1,7 @@
external_components:
- source:
type: local
path: ..\components
path: ../components
substitutions:
devicename: test_local_airflow_dir
@@ -61,6 +61,7 @@ climate:
period: 7s
show_action: true
display_inverted: true
optimistic: true
indoor_temperature:
name: $upper_devicename Indoor Temperature
id: ${devicename}_indoor_temp
@@ -74,11 +75,11 @@ climate:
id: ${devicename}_outdoor_temp
internal: false
outbound_temperature:
name: $upper_devicename Colant Outbound Temperature
name: $upper_devicename Coolant Outbound Temperature
id: ${devicename}_outbound_temp
internal: false
inbound_temperature:
name: $upper_devicename Colant Inbound Temperature
name: $upper_devicename Coolant Inbound Temperature
id: ${devicename}_inbound_temp
internal: false
compressor_temperature:
@@ -89,7 +90,7 @@ climate:
name: $upper_devicename Defrost State
id: ${devicename}_defrost_state
internal: false
invertor_power:
inverter_power:
name: $upper_devicename Invertor Power
id: ${devicename}_invertor_power
internal: false

View File

@@ -1,7 +1,7 @@
external_components:
- source:
type: local
path: ..\components
path: ../components
#- source: github://GrKoR/esphome_aux_ac_component@dev
#components: [ aux_ac ]
#refresh: 0s
@@ -20,7 +20,7 @@ wifi:
password: !secret wifi_pass
reboot_timeout: 0s
ap:
ssid: Test AUX Fallback Hotspot
ssid: $upper_devicename Fallback Hotspot
password: !secret wifi_ap_pass
logger: