Bojler Midea D80-15ED6

Cześć,

podłączyłem do HA elektryczny podgrzewacz wody Bojler Midea D80-15ED6 poprzez Midea AC Lan (v0.6.11). Urządzenie mogę włączyć i wyłączyć, ale nie reaguje na zmianę docelowej temperatury. Standardowa encja z podkową do zmiany temperatury nie działa, mimo że wygląda na aktywną. Także skrypt:

action: water_heater.set_temperature
metadata: {}
target:
entity_id: water_heater.153931459355555_water_heater
data:
temperature: 60

nie ustawia temperatury ani nie generuje żadnego błędu. Jakiś pomysł jak go wystartować?

Dodam, że ustawianie temperatury działa poprawnie przez aplikację SmartHome.

A więc nie wykorzystasz żadnej automatyzacji na niej bazującej (motoryzacyjne porównanie: silnik nie działa, to samochód nie jeździ).

No niezupełnie. Mogę włączyć grzanie wody i wyłączyć. Nie wyreguluję tylko temperatury docelowej. Jest osobna, działająca encja Power. Tego power nie widać niestety przy podkowie jak to zazwyczaj bywało.

A jakie atrybuty posiada twoja encja?

{ “temperature_step”: 0.5 } jak masz ustawiony ten parametr?

Zmiany temperatury testuj w Narzędzia Developerskie - > Stany - Ustaw stan, wpisz swoją encje I zmień stan o 0.5 i zobacz czy się zmieni.


Możliwe że nie można zmienić od razu temperatury o 20.30.70

To niżej to nie jest bojler tylko PC, chyba dwuobwodowa (dwustrefowa) Midea - edit - być może to jest wersja 3-obwodowa (2 strefy grzania + CWU) i wygląda mniej więcej tak, przy czym atrybuty dhw* dotyczą CWU

min_temp: 20
max_temp: 60
current_temperature: 50
temperature: 50
target_temp_high: null
target_temp_low: null
zone1_power: false
zone2_power: false
dhw_power: true
zone1_curve: false
zone2_curve: false
disinfect: false
fast_dhw: false
zone_temp_type:
  - true
  - false
zone1_room_temp_mode: false
zone2_room_temp_mode: false
zone1_water_temp_mode: false
zone2_water_temp_mode: false
silent_mode: false
silent_level: "OFF"
eco_mode: false
tbh: false
mode: 3
mode_auto: 3
zone_target_temp:
  - 25
  - 30
dhw_target_temp: 50
room_target_temp: 24
zone_heating_temp_max:
  - 55
  - 55
zone_heating_temp_min:
  - 25
  - 25
zone_cooling_temp_max:
  - 25
  - 25
zone_cooling_temp_min:
  - 5
  - 5
room_temp_max: 30
room_temp_min: 17
dhw_temp_max: 60
dhw_temp_min: 20
tank_actual_temperature: 50
target_temperature:
  - 25
  - 24
temperature_max:
  - 55
  - 30
temperature_min:
  - 25
  - 17
total_energy_consumption: 7325
status_heating: false
status_dhw: false
status_tbh: false
status_ibh: false
total_produced_energy: 26809
outdoor_temperature: 13
temp_tw_in: null
temp_tw_out: null
instant_power0: null
error_code: 0
target_temperature_step: 0.5
icon: mdi:heat-pump
friendly_name: Podgrzewacz wody centralnego ogrzewania Domestic hot water
supported_features: 1

(to ten sam komponent niestandardowy, nie wiem czy to działa w aktualnej wersji, bo to nie moja instalacja i grzebać nie będę, ale moim zdaniem coś za dużo tych false), jakkolwiek właśnie z atrybutów widać, że w tym wypadku się raczej nie da ustawić więcej niż 55 °C… (chociaż termostat “podkowa” ma skalę do 60 °C, więc tu może jednak się da aż do 60 °C, ale jak wspomniałem nie będę zmieniał nastaw).

Generalnie do szczęścia potrzeba by

  • encja termostatu działała poprawnie (czyli by manualnie dało się regulować nastawy z “podkowy”), tj. by poprawnie działała ta niestandardowa integracja, która jest “silnikiem” tej encji (i to może być trudne do spełnienia, skoro @RoWaKi piszesz, że nie działa… - jeśli masz pewność co do problemu zgłoś issue)
  • jeśli encja termostatu dysponuje wyłącznikiem (czyli można na niej wykonać akcje switch_on i switch_off) to regulacji temperatury można dokonać raczej jedynie w stanie włączonym (więc w warunku automatyzacji należy sprawdzać ten stan przed wysłaniem polecenia i ewentualnie najpierw włączyć, a potem regulować)
  • docelowa temperatura nie może wykraczać poza dopuszczalną dla danego urządzenia (i ten dopuszczalny zakres powinien być w atrybutach).

Oto lista encji:

min_temp: 30
max_temp: 75
current_temperature: 60
temperature: 61
target_temp_high: null
target_temp_low: null
power: true
heating: true
keep_warm: false
protection: false
target_temperature: 61
whole_tank_heating: true
variable_heating: false
heating_time_remaining: 83
water_consumption: 0
heating_power: 1500
fast_hot_power: false
water_flow: false
sterilization: false
heat_water_level: 100
eplus: false
fast_wash: false
half_heat: false
summer: false
winter: false
efficient: false
night: false
screen_off: false
sleep: false
cloud: false
appoint_wash: false
now_wash: false
smart_sterilize: false
sterilize_high_temp: false
uv_sterilize: false
discharge_status: 0
top_temp: 24
bottom_heat: true
top_heat: false
water_cyclic: false
water_system: 0
in_temperature: 15
day_water_consumption: 0
volume: 60
rate: 0
target_temperature_step: 1
icon: mdi:meter-electric-outline
friendly_name: "Bojler Midea Bojler Midea "
supported_features: 9

Kiedy zmieniam wartości temperature i target_temperature te pojawiają się na chwilę na podkowie, ale potem wracają do stanu sprzed zmiany. Nie zmienia się natomiast wartość na wyświetlaczu bojlera. Kiedy natomiast próbuję zmienić temperaturę na podkowie ta skacze na chwilę na 75 stopni (czyli max dla urządzenia) po czym wraca do poprzedniej. Operację tą widać na wyświetlaczu bojlera.

Nie udaje się natomiast zmienić wartości target_temperature_step na 0.5 w edycji stanów encji.

Nie wiem czym się różnią temperature i target_temperature, ale zawsze wskazują to samo czyli temperaturę docelową.

  1. to nie są encje, tylko atrybuty jednej encji (tego termostatu)
  2. temperature to normalnie jest sensor pokazujący aktualną zmierzoną temperaturę wody, a target_temperature to jest nastawa temperatury docelowej, ale te atrubuty są czytane przez integrację z urządzenia więc niby mogą mieć realnie inne znaczenie (ale raczej autorzy robili integrację zgodnie z dokumentacją deweloperską HA)
  3. tu masz dodatkową dokumentację dla podgrzewaczy wody (sądząc po czasie jaki czekałem na załadowanie tego pliku był on w cold storage, bo nikt go nie czytał od lat)
    midea_ac_lan/doc/E2.md at master · wuwentao/midea_ac_lan · GitHub

Widziałem ten opis wczoraj, ale jakoś mi nie pomógł :slight_smile: Odkopałem w logach jednak jakieś błędy:

Rejestrator: homeassistant.helpers.frame
Źródło: helpers/frame.py:307
Pierwsze zdarzenie: 17 maja 2026 11:08:43 (6 wystąpień)
Ostatnio zalogowany: 17 maja 2026 16:24:12
Detected that custom integration ‘midea_ac_lan’ sets an entity ID with wrong domain: ‘midea_ac_lan.153931459355555_heating’. Expected domain is ‘binary_sensor’. This will stop working in Home Assistant 2027.5.0, please create a bug report at Issues · wuwentao/midea_ac_lan · GitHub

Rejestrator: py.warnings
Źródło: custom_components/midea_ac_lan/config_flow.py:50
Integration: Midea AC LAN (dokumentacja, Problemy)
Pierwsze zdarzenie: 17 maja 2026 10:59:22 (9 wystąpień)
Ostatnio zalogowany: 17 maja 2026 10:59:22
/usr/local/lib/python3.14/site-packages/commonregex.py:9: SyntaxWarning: “/” is an invalid escape sequence. Such sequences will not work in the future. Did you mean “\/”? A raw string is also an option. email = re.compile(u"([a-z0-9!#$%&‘+/=?^_`{|.}~-]+@(?:a-z0-9?.)+a-z0-9?)", re.IGNORECASE)
/usr/local/lib/python3.14/site-packages/commonregex.py:10: SyntaxWarning: “.” is an invalid escape sequence. Such sequences will not work in the future. Did you mean “\.”? A raw string is also an option. ip = re.compile(u’(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)‘, re.IGNORECASE)
/usr/local/lib/python3.14/site-packages/commonregex.py:11: SyntaxWarning: “\s” is an invalid escape sequence. Such sequences will not work in the future. Did you mean “\s”? A raw string is also an option. ipv6 = re.compile(u’\s
(?!.::.::)(?:(?!:)|:(?=:))(?:[0-9a-f]{0,4}(?:(?<=::)|(?<!::):)){6}(?:[0-9a-f]{0,4}(?:(?<=::)|(?<!::):)[0-9a-f]{0,4}(?:(?<=::)|(?<!:)|(?<=:)(?<!::):)|(?:25[0-4]|2[0-4]\d|1\d\d|[1-9]?\d)(?:.(?:25[0-4]|2[0-4]\d|1\d\d|[1-9]?\d)){3})\s*’, re.VERBOSE|re.IGNORECASE|re.DOTALL)
/usr/local/lib/python3.14/site-packages/commonregex.py:12: SyntaxWarning: “\s” is an invalid escape sequence. Such sequences will not work in the future. Did you mean “\s”? A raw string is also an option. price = re.compile(u’[$]\s?[±]?[0-9]{1,3}(?:(?:,?[0-9]{3}))*(?:.[0-9]{1,2})?‘)
/usr/local/lib/python3.14/site-packages/commonregex.py:16: SyntaxWarning: “\d” is an invalid escape sequence. Such sequences will not work in the future. Did you mean “\d”? A raw string is also an option. street_address = re.compile(u’\d{1,4} [\w\s]{1,20}(?:street|st|avenue|ave|road|rd|highway|hwy|square|sq|trail|trl|drive|dr|court|ct|parkway|pkwy|circle|cir)\W?(?=\s|$)', re.IGNORECASE)

Skorzystałeś z tej dokumentacji?
Bo nie rozumiem co masz na myśli pisząc, że opis nie pomógł…
(mam na myśli to { "old_protocol": true })
nie zmieniłeś ustawień w/g sugestii? czy zmieniłeś, ale to nic nie dało?

Jeśli to ostatnie, to generalnie pisanie na forum nic nie da, bo masz problem z integracją, a dodatkowo z loga widać, że komponent niestandardowy wymaga zgłoszenia issue nawet niezależnie od twoich problemów (bo za rok będzie breaking change).
Issue zgłaszasz po angielsku (taka jest kluczowa zasada githuba), maintainer tego komponentu jest Chińczykiem, więc pisanie po polsku jest raczej bezcelowe.

Przeczytałem, ale nie zrozumiałem jak użyć. Więc pewnie prostackie pytanie gdzie te opcje wypróbować? Gdzie i jak to wpisać?

W integracji w pozycji (wpisie) tego urządzenia masz trybik (Configure)
w dokumentacji masz przycisk kopiowania, wklejasz to “jak jest” w okienko Customize
przeładowujesz integrację (lub lepiej restartujesz HA).

BTW w tym samym miejscu można włączyć dodatkowe encje jeśli potencjalnie są dostępne (mogą się przydać)

i jeszcze jedno mi zaświtało

a gdzie to zmieniasz? bo jeśli w narzędziach deweloperskich, to nie ma wpływu na sprzęt - narzędzia deweloperskie to jest narzędzie do testowania oprogramowania (można tam symulować zachowanie, ale przy najbliższym odczycie wartości z urządzenia wszystko zostaje nadpisane realnymi wartościami z urządzenia).

A no zmieniam te temperatury w narzędziach deweloperskich czyli bez sensu.

W tym castomize jak wstawia się kilka opcji? { “old_protocol”: false}{ “precision_halves”: true }{ “temperature_step”: 0.5 } czy z jakimiś średnikami?

Nie wiem, nigdy nie musiałem wstawiać nic w Customize.
Na razie tyle przeczytałem w dokumentacji za Ciebie, przeczytaj samodzielnie więcej.
Na dobry początek włącz tylko starą wersje protokołu, póki nie ma poprawnej komunikacji to i tak wiele (nic?) nie będzie działać. A przecież nie wiem czy to usunie problem…

Swoją drogą masz też złe wskazania temperatury i ustawia się temperatura inna niż chcesz? (że chcesz wrzucić poprawki temperatury i nastaw do customize?)

ale na logikę skoro to json to pewnie coś w tym guście

{
  "old_protocol": true,
  "precision_halves": true,
  "temperature_step": 0.5
}

tylko pytanie czy musisz wstawiać te dodatkowe opcje czy działasz totalnie na pałę…

Ruszyło przy ustawieniu

{
  "old_protocol": false,
  "precision_halves": true,
  "temperature_step": 0.5
}

Samo

{
  "old_protocol": false
}

Ustawiało temperaturę maksymalną 75 stopni.

Wielki dzięki za pomoc!

1 Like

Skoro działa taka konfiguracja, to moim zdaniem możesz finalnie użyć tego (bo nowy protokół jest domyślnie włączony = stary domyślnie wyłączony)

{
  "precision_halves": true,
  "temperature_step": 0.5
}