This commit is contained in:
Mateusz Gruszczyński
2026-09-17 11:32:06 +02:00
parent df10ead47e
commit 4bdcf1b8dd
8 changed files with 190 additions and 15 deletions
+7 -7
View File
@@ -3,8 +3,8 @@ a4ec3874a2e3ab1bad28fb40bb620f7b01f64d01ad9b699306bf70ada31227db ./.gitignore
c3c16d0c76fbb80ce5752b28a1736177940670b10f44235eac5997c4e195c634 ./Cargo.lock
ad513e247ab5dbed3c91a6463cf410cf1a4ac73c0b30422bad40afb93cee0159 ./Cargo.toml
19b2943504acb8f8de280f873a8dbec4bb6ebbe3870b158f5655d4fb8c298f5f ./LICENSE
65a1319962dc7a1e7ac0db1a00219b86fae87492a30d38f4df2c896e213b7c83 ./README.md
8505dda3503e63f0958898ccb2ea9321f9e5d0ac64b2d25782d952dc2105b3e4 ./SOURCE_MANIFEST.sha256
db052d6c978b067a31d752f293fc8c02702d50137ba7b84bce87371089972f11 ./README.md
84bae184c72909d968eeece0a092dbb4fe7a8a071927b29cc188ac6fb6a450f0 ./SOURCE_MANIFEST.sha256
29e9821e5ed216ea3565dd6d8bc0b174ed3cf9fa72c4ccebbfa99e98db3ad8f9 ./build.rs
8a96630c36cfac5c392837c8872b20d39d72fe3ec99c7c9e09ec78f2228fd262 ./docs/API.md
58b79297607303151c1de2da74344cd4f6277bc53d80ebe04ed4567d906c963b ./docs/FLOW.md
@@ -13,10 +13,10 @@ c65aa543d2e99f8f7d52736307b07ebd182597d80124661d53a16bb23f6f1118 ./ha-addon/.en
0993076ca45b6d31859680835204cdc111b3f9bdbf460d50b4efec56cd5e685b ./ha-addon/Dockerfile
adf7ff248d782a3b1cba82b8789c57b6849ddaaaf5fbc108af75e18b1534a885 ./ha-addon/README.md
dd9291b12afade6fc20d66e80a5513251270e18e4c265260b2bbbe393a5a94c4 ./ha-addon/build.sh
10b6140e75f2641e6d196db16e2612c691666db64e3ca1cd89bce8eabc991296 ./ha-addon/home-assistant/README.md
4061846cec4d829e4101b4021df7f07dc2e0293ccfd11e91589f49733ec7c5b4 ./ha-addon/home-assistant/README.md
f8e8559fe10fe523ac5bc9aac25c6e26e862f679d502e8f3c39f38a0a8e40911 ./ha-addon/home-assistant/custom_components/gree_controller/__init__.py
3f6ef15ef58456376ac53fde7cace1ef359d6a6f7a64c5b575ad77ea6e55ccc4 ./ha-addon/home-assistant/custom_components/gree_controller/api.py
3072d7caea53f46bf68314a59e2a99779675869d2ffcd472b2bc2e188140ec0f ./ha-addon/home-assistant/custom_components/gree_controller/climate.py
da2a0a9390ab75cef150cd281bc329fa409d0d28f51382b36bd8de3a73325c16 ./ha-addon/home-assistant/custom_components/gree_controller/climate.py
5e4aef2143e81bedb5a15dd4be5c71b64a3ab448ec6d33a20851edd098e5f529 ./ha-addon/home-assistant/custom_components/gree_controller/config_flow.py
b7f0873109c52be9d7f09bea3dffc416103c50085e1f0680d11661a969479898 ./ha-addon/home-assistant/custom_components/gree_controller/const.py
6509286c7b7de638dcc5d40ce53181e65d1eddc5dc36a13306dc6d87220fedbb ./ha-addon/home-assistant/custom_components/gree_controller/coordinator.py
@@ -27,10 +27,10 @@ c52a484b671ce738ecc00228a1db19a5d703f69ab27530c2896a5c2ae3b4a96f ./ha-addon/hom
39c4309001b75abb56234f05662bc06e077054986876f1927937edbce528ec95 ./ha-addon/home-assistant/custom_components/gree_controller/select.py
cca65482e36d48035aca178121a378fe7d578d600acff267ae81a6399c0da653 ./ha-addon/home-assistant/custom_components/gree_controller/sensor.py
338a42662e77f91215150851e55bbd39a5c77f5612cc77f3e037c06a6e6bdadb ./ha-addon/home-assistant/custom_components/gree_controller/switch.py
6bddb7b4620021ecd2099a86a77ef5c7f2c2dcd3d07d5db4e7b4c4ce6d3e8c03 ./ha-addon/home-assistant/custom_components/gree_controller/translations/en.json
13f30e2dcdcedbd1b6c3f99c2335e0487108fd72c8e86922368b84f2fa2038ae ./ha-addon/home-assistant/custom_components/gree_controller/translations/pl.json
a745cc458c235158d5d70b6a33d8000fd8b40ff93bfe2f2796af0f4b3a9eef9b ./ha-addon/home-assistant/custom_components/gree_controller/translations/en.json
50b7d6fe6329ad4ea6bee9612ab141c2f73f8382fcc2af0bb076a8e8d4dd4465 ./ha-addon/home-assistant/custom_components/gree_controller/translations/pl.json
c5fc5c87273d82d2834a0a5a365c821a416413ed509613441e24e4dc3507c4d2 ./ha-addon/home-assistant/generated/gree_controller_entities.example.json
4d0b518f7219de51cc71bfa2079d82b26d662d81e75a9596d2a0cc92e92a29e7 ./ha-addon/repository/gree-controller/CHANGELOG.md
b3ee553cc7dbc68c3bb7cdd6dbb9b5ca8646df113cb499ca5bd9d3d0e380db73 ./ha-addon/repository/gree-controller/CHANGELOG.md
1b5599195329cc3e643c23aa1caadcec80f133e8e515eec7d92b9f3cbda5b80b ./ha-addon/repository/gree-controller/DOCS.md
c3db302f38d26dc9f8caf37a1a8a07a1334cc07ae301d452f2940a5ec5915719 ./ha-addon/repository/gree-controller/README.md
f7e5325e34b2785d0d0bea657c882202d7557d313cbdc464dcdb91f702d36391 ./ha-addon/repository/gree-controller/config.yaml
+1 -1
View File
@@ -4,7 +4,7 @@ Self-hosted controller for GREE-compatible air conditioners with a local Web UI,
**Version: 0.15.0**
Version 0.15.0 adds full vertical/horizontal louver positioning across direct control, thermostat views, automations, Visual Flow and Home Assistant, while keeping legacy boolean swing payloads compatible. Direct add-on access also shows an invalid-token error only after an explicit token submission.
Version 0.15.0 adds full vertical/horizontal louver positioning across direct control, thermostat views, automations, Visual Flow and Home Assistant, while keeping legacy boolean swing payloads compatible. Direct add-on access also shows an invalid-token error only after an explicit token submission. The bundled Home Assistant climate cards also localize louver/fan/profile labels without changing their stable technical service values.
> [Full API reference](docs/API.md) — authentication, every endpoint, request bodies, response models, WebSocket events and examples.
+6 -6
View File
@@ -3,7 +3,7 @@ a4ec3874a2e3ab1bad28fb40bb620f7b01f64d01ad9b699306bf70ada31227db ./.gitignore
c3c16d0c76fbb80ce5752b28a1736177940670b10f44235eac5997c4e195c634 ./Cargo.lock
ad513e247ab5dbed3c91a6463cf410cf1a4ac73c0b30422bad40afb93cee0159 ./Cargo.toml
19b2943504acb8f8de280f873a8dbec4bb6ebbe3870b158f5655d4fb8c298f5f ./LICENSE
65a1319962dc7a1e7ac0db1a00219b86fae87492a30d38f4df2c896e213b7c83 ./README.md
db052d6c978b067a31d752f293fc8c02702d50137ba7b84bce87371089972f11 ./README.md
29e9821e5ed216ea3565dd6d8bc0b174ed3cf9fa72c4ccebbfa99e98db3ad8f9 ./build.rs
8a96630c36cfac5c392837c8872b20d39d72fe3ec99c7c9e09ec78f2228fd262 ./docs/API.md
58b79297607303151c1de2da74344cd4f6277bc53d80ebe04ed4567d906c963b ./docs/FLOW.md
@@ -12,10 +12,10 @@ c65aa543d2e99f8f7d52736307b07ebd182597d80124661d53a16bb23f6f1118 ./ha-addon/.en
0993076ca45b6d31859680835204cdc111b3f9bdbf460d50b4efec56cd5e685b ./ha-addon/Dockerfile
adf7ff248d782a3b1cba82b8789c57b6849ddaaaf5fbc108af75e18b1534a885 ./ha-addon/README.md
dd9291b12afade6fc20d66e80a5513251270e18e4c265260b2bbbe393a5a94c4 ./ha-addon/build.sh
10b6140e75f2641e6d196db16e2612c691666db64e3ca1cd89bce8eabc991296 ./ha-addon/home-assistant/README.md
4061846cec4d829e4101b4021df7f07dc2e0293ccfd11e91589f49733ec7c5b4 ./ha-addon/home-assistant/README.md
f8e8559fe10fe523ac5bc9aac25c6e26e862f679d502e8f3c39f38a0a8e40911 ./ha-addon/home-assistant/custom_components/gree_controller/__init__.py
3f6ef15ef58456376ac53fde7cace1ef359d6a6f7a64c5b575ad77ea6e55ccc4 ./ha-addon/home-assistant/custom_components/gree_controller/api.py
3072d7caea53f46bf68314a59e2a99779675869d2ffcd472b2bc2e188140ec0f ./ha-addon/home-assistant/custom_components/gree_controller/climate.py
da2a0a9390ab75cef150cd281bc329fa409d0d28f51382b36bd8de3a73325c16 ./ha-addon/home-assistant/custom_components/gree_controller/climate.py
5e4aef2143e81bedb5a15dd4be5c71b64a3ab448ec6d33a20851edd098e5f529 ./ha-addon/home-assistant/custom_components/gree_controller/config_flow.py
b7f0873109c52be9d7f09bea3dffc416103c50085e1f0680d11661a969479898 ./ha-addon/home-assistant/custom_components/gree_controller/const.py
6509286c7b7de638dcc5d40ce53181e65d1eddc5dc36a13306dc6d87220fedbb ./ha-addon/home-assistant/custom_components/gree_controller/coordinator.py
@@ -26,10 +26,10 @@ c52a484b671ce738ecc00228a1db19a5d703f69ab27530c2896a5c2ae3b4a96f ./ha-addon/hom
39c4309001b75abb56234f05662bc06e077054986876f1927937edbce528ec95 ./ha-addon/home-assistant/custom_components/gree_controller/select.py
cca65482e36d48035aca178121a378fe7d578d600acff267ae81a6399c0da653 ./ha-addon/home-assistant/custom_components/gree_controller/sensor.py
338a42662e77f91215150851e55bbd39a5c77f5612cc77f3e037c06a6e6bdadb ./ha-addon/home-assistant/custom_components/gree_controller/switch.py
6bddb7b4620021ecd2099a86a77ef5c7f2c2dcd3d07d5db4e7b4c4ce6d3e8c03 ./ha-addon/home-assistant/custom_components/gree_controller/translations/en.json
13f30e2dcdcedbd1b6c3f99c2335e0487108fd72c8e86922368b84f2fa2038ae ./ha-addon/home-assistant/custom_components/gree_controller/translations/pl.json
a745cc458c235158d5d70b6a33d8000fd8b40ff93bfe2f2796af0f4b3a9eef9b ./ha-addon/home-assistant/custom_components/gree_controller/translations/en.json
50b7d6fe6329ad4ea6bee9612ab141c2f73f8382fcc2af0bb076a8e8d4dd4465 ./ha-addon/home-assistant/custom_components/gree_controller/translations/pl.json
c5fc5c87273d82d2834a0a5a365c821a416413ed509613441e24e4dc3507c4d2 ./ha-addon/home-assistant/generated/gree_controller_entities.example.json
4d0b518f7219de51cc71bfa2079d82b26d662d81e75a9596d2a0cc92e92a29e7 ./ha-addon/repository/gree-controller/CHANGELOG.md
b3ee553cc7dbc68c3bb7cdd6dbb9b5ca8646df113cb499ca5bd9d3d0e380db73 ./ha-addon/repository/gree-controller/CHANGELOG.md
1b5599195329cc3e643c23aa1caadcec80f133e8e515eec7d92b9f3cbda5b80b ./ha-addon/repository/gree-controller/DOCS.md
c3db302f38d26dc9f8caf37a1a8a07a1334cc07ae301d452f2940a5ec5915719 ./ha-addon/repository/gree-controller/README.md
f7e5325e34b2785d0d0bea657c882202d7557d313cbdc464dcdb91f702d36391 ./ha-addon/repository/gree-controller/config.yaml
+1 -1
View File
@@ -8,7 +8,7 @@ ha-addon/home-assistant/custom_components/gree_controller/
It creates HA entities for physical units, thermostat zones, whole-house controls and climate groups, while sending every command to the standalone Rust controller. Home Assistant therefore remains a client and UDP/AES GREE communication stays outside HA.
The climate proxy supports power/turn on/off, HVAC modes, target temperature, fan mode, granular vertical louver positions and granular horizontal louver positions. `off`/`on` remain the first two swing modes for compatibility, followed by fixed positions and the supported vertical partial-swing ranges.
The climate proxy supports power/turn on/off, HVAC modes, target temperature, fan mode, granular vertical louver positions and granular horizontal louver positions. `off`/`on` remain the first two swing modes for compatibility, followed by fixed positions and the supported vertical partial-swing ranges. The card UI translates those modes using the Home Assistant language while the underlying mode IDs (for example `fixed_upper`) remain unchanged for services, scripts and automations.
Automation plan:
@@ -160,6 +160,7 @@ class GreeControllerClimate(CoordinatorEntity[GreeControllerCoordinator], Climat
"""Home Assistant climate entity controlled through the Rust service."""
_attr_has_entity_name = True
_attr_translation_key = "direct_control"
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_attr_min_temp = 8.0
_attr_max_temp = 30.0
@@ -299,6 +300,7 @@ class GreeControllerZoneClimate(CoordinatorEntity[GreeControllerCoordinator], Cl
"""Full climate entity for a controller thermostat zone."""
_attr_has_entity_name = True
_attr_translation_key = "zone_thermostat"
_attr_name = "Thermostat"
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_attr_min_temp = 8.0
@@ -18,5 +18,91 @@
"abort": {
"already_configured": "GREE Controller is already configured"
}
},
"entity": {
"climate": {
"direct_control": {
"name": "Direct control",
"state_attributes": {
"fan_mode": {
"state": {
"auto": "Auto",
"low": "Low",
"medium_low": "Medium-low",
"medium": "Medium",
"medium_high": "Medium-high",
"high": "High"
}
},
"swing_mode": {
"state": {
"off": "Off",
"on": "Full range (Auto)",
"fixed_upper": "Fixed: Top",
"fixed_upper_middle": "Fixed: Upper-middle",
"fixed_middle": "Fixed: Middle",
"fixed_lower_middle": "Fixed: Lower-middle",
"fixed_lower": "Fixed: Bottom",
"swing_upper": "Swing: Top",
"swing_upper_middle": "Swing: Upper-middle",
"swing_middle": "Swing: Middle",
"swing_lower_middle": "Swing: Lower-middle",
"swing_lower": "Swing: Bottom"
}
},
"swing_horizontal_mode": {
"state": {
"off": "Off",
"on": "Full range (Auto)",
"fixed_left": "Fixed: Left",
"fixed_left_middle": "Fixed: Left-middle",
"fixed_middle": "Fixed: Middle",
"fixed_right_middle": "Fixed: Middle-right",
"fixed_right": "Fixed: Right"
}
}
}
},
"zone_thermostat": {
"name": "Thermostat",
"state_attributes": {
"preset_mode": {
"state": {
"auto": "Auto schedule",
"comfort": "Comfort",
"sleep": "Sleep",
"away": "Away"
}
},
"swing_mode": {
"state": {
"off": "Off",
"on": "Full range (Auto)",
"fixed_upper": "Fixed: Top",
"fixed_upper_middle": "Fixed: Upper-middle",
"fixed_middle": "Fixed: Middle",
"fixed_lower_middle": "Fixed: Lower-middle",
"fixed_lower": "Fixed: Bottom",
"swing_upper": "Swing: Top",
"swing_upper_middle": "Swing: Upper-middle",
"swing_middle": "Swing: Middle",
"swing_lower_middle": "Swing: Lower-middle",
"swing_lower": "Swing: Bottom"
}
},
"swing_horizontal_mode": {
"state": {
"off": "Off",
"on": "Full range (Auto)",
"fixed_left": "Fixed: Left",
"fixed_left_middle": "Fixed: Left-middle",
"fixed_middle": "Fixed: Middle",
"fixed_right_middle": "Fixed: Middle-right",
"fixed_right": "Fixed: Right"
}
}
}
}
}
}
}
@@ -18,5 +18,91 @@
"abort": {
"already_configured": "GREE Controller jest już skonfigurowany"
}
},
"entity": {
"climate": {
"direct_control": {
"name": "Sterowanie bezpośrednie",
"state_attributes": {
"fan_mode": {
"state": {
"auto": "Automatyczny",
"low": "Niski",
"medium_low": "Średnio-niski",
"medium": "Średni",
"medium_high": "Średnio-wysoki",
"high": "Wysoki"
}
},
"swing_mode": {
"state": {
"off": "Wyłączony",
"on": "Pełny zakres (Auto)",
"fixed_upper": "Stała: Góra",
"fixed_upper_middle": "Stała: Środek-góra",
"fixed_middle": "Stała: Środek",
"fixed_lower_middle": "Stała: Środek-dół",
"fixed_lower": "Stała: Dół",
"swing_upper": "Ruch: Góra",
"swing_upper_middle": "Ruch: Środek-góra",
"swing_middle": "Ruch: Środek",
"swing_lower_middle": "Ruch: Środek-dół",
"swing_lower": "Ruch: Dół"
}
},
"swing_horizontal_mode": {
"state": {
"off": "Wyłączony",
"on": "Pełny zakres (Auto)",
"fixed_left": "Stała: Lewo",
"fixed_left_middle": "Stała: Lewo-środek",
"fixed_middle": "Stała: Środek",
"fixed_right_middle": "Stała: Środek-prawo",
"fixed_right": "Stała: Prawo"
}
}
}
},
"zone_thermostat": {
"name": "Termostat",
"state_attributes": {
"preset_mode": {
"state": {
"auto": "Harmonogram (Auto)",
"comfort": "Komfort",
"sleep": "Sen",
"away": "Poza domem"
}
},
"swing_mode": {
"state": {
"off": "Wyłączony",
"on": "Pełny zakres (Auto)",
"fixed_upper": "Stała: Góra",
"fixed_upper_middle": "Stała: Środek-góra",
"fixed_middle": "Stała: Środek",
"fixed_lower_middle": "Stała: Środek-dół",
"fixed_lower": "Stała: Dół",
"swing_upper": "Ruch: Góra",
"swing_upper_middle": "Ruch: Środek-góra",
"swing_middle": "Ruch: Środek",
"swing_lower_middle": "Ruch: Środek-dół",
"swing_lower": "Ruch: Dół"
}
},
"swing_horizontal_mode": {
"state": {
"off": "Wyłączony",
"on": "Pełny zakres (Auto)",
"fixed_left": "Stała: Lewo",
"fixed_left_middle": "Stała: Lewo-środek",
"fixed_middle": "Stała: Środek",
"fixed_right_middle": "Stała: Środek-prawo",
"fixed_right": "Stała: Prawo"
}
}
}
}
}
}
}
@@ -5,6 +5,7 @@
- Adds full vertical and horizontal louver positions to manual unit control and thermostat cards, with compact dropdowns that preserve the existing view layout.
- Extends legacy automations, Visual Flow and the bundled Home Assistant climate entities with granular louver positions; legacy boolean swing API payloads remain accepted.
- Direct add-on access no longer shows `Invalid access token` on initial page load; that validation message appears only after a token is submitted.
- Home Assistant climate cards localize direct-control names, fan modes, thermostat presets and all vertical/horizontal louver positions while keeping stable technical mode IDs for services and automations.
## 0.14.24