
Afgelopen zomer ben ik verhuisd naar een andere woning waarin al airco’s geplaatst zijn. Het zijn airco’s van Mitsubishi Heavy Industries en hebben besturing door middel van een infrarood afstandsbediening. Natuurlijk wil ik deze airco’s kunnen bedienen met Home Assistant via WiFi. Ik stuitte in mijn zoektocht op het MHI-AC-Ctrl project. Nodo-Shop bleek complete kitjes te verkopen en er is een ESPhome versie van het MHI-AC-Ctrl project. Top, ik heb voor beide airco’s een kitje besteld en ben aan de slag gegaan.
Stappenplan voor het toevoegen van je airco aan Home Assistant
Benodigde tijd: 1 uur
Om je Mitsubishi airco te voorzien van WiFi besturing met Home Assistant doorloop je de volgende stappen. Onder het stappenplan lees je een uitgebreide toelichting.
- Controleer compatibiliteit van het MHI-AC-CTRL project met jouw Airco.
Bekijk de lijst van ondersteunde apparaten van MHI-AC-CTRL en zoek het typenummer van je airco op. Het typenummer van je airco staat op de binnenkant van de klep. In mijn geval een SRK50ZS-W.
- Soldeer de componenten op de printplaat
Bestel de ESPAC Wifi interface MHI-AC-Ctrl via Nodo-Shop. Vergeet niet een Wemos D1 mini mee te bestellen als je er geen meer hebt liggen.
- Demonteer de behuizing van de airco
Klik de behuizing van de airco af en zoek de printplaat.
- Plug de MHI-AC-CTRL in de airco
Via het meegeleverde stekkertje kun je de MHI-AC-CTRL verbinden met de Mitsubishi airco.
- Sluit de behuizing van de airco en test
Monteer de behuizing terug op het apparaat en test de werking.
Boodschappenlijstje

MHI-AC-Ctrl

Wemos D1 mini
Controleer compatibiliteit van de MHI-AC-CTRL met jouw Airco

Bekijk de lijst van ondersteunde apparaten van MHI-AC-CTRL en zoek het typenummer van je airco op. De meeste airco’s met een aparte binnen- en buitenunit van Mitsubishi Heavy Industries zijn ondersteund. Het typenummer van je airco staat op de binnenkant van de klep. In mijn geval een SRK50ZS-W. De airco’s bevatten een CNS aansluitheader waarop je met een kabel de officiële WiFi module kunt aansluiten. Wij maken daar mooi gebruik van om op een nette manier onze MHI-AC-CTRL aan te sluiten.
Soldeer de componenten op de printplaat
Bestel de ESPAC Wifi interface MHI-AC-Ctrl via Nodo-Shop. Vergeet niet een Wemos D1 mini mee te bestellen als je er geen meer hebt liggen. Op de Wemos flashen we de ESPHome versie van de MHI-AC-CTRL firmware.
Het kitje bevat 2 componenten, een kabeltje en een printplaat. De twee componenten dienen te worden gesoldeerd op het printje. Het is even goed opletten op de polariteit, maar er staan duidelijke vormen op het printje afgedrukt. De vormen komen overeen met hoe de componenten geplaatst dienen te worden. De headers welke meegeleverd worden met de Wemos dien je ook te solderen op het bordje. Let goed op aan welke kant van de print je het allemaal soldeert.

De Wemos kun je dan voorzien van headers. Als dat gereed is, kunnen we gaan flashen. Steek hiervoor de USB kabel in de Wemos (zonder dat hij aangesloten is op de MHI-AC-CTRL print).



Flashen van ESPHome versie van MHI-AC-CTRL
Maak in ESPHome Device Compiler een nieuw device aan van het type d1_mini. Plak onderstaande code in het scherm waarbij je wel je eigen secrets en encryption keys gebruikt natuurlijk. Het originele voorbeeld bestand staat hier, en komt overeen met de onderstaande code. Voor het gemak hoef je alleen maar twee keer de waarden van <<< AIRCO NAAM >>> aan te passen.
esphome: name: "<<< AIRCO NAAM >>>" friendly_name: "<<< AIRCO NAAM >>>" min_version: 2024.6.0 platformio_options: # Run CPU at 160Mhz to fix mhi_ac_ctrl_core.loop error: -2 board_build.f_cpu: 160000000L esp8266: board: d1_mini logger: level: INFO baud_rate: 0 ota: - platform: esphome password: !secret ota_password wifi: ssid: !secret wifi_ssid password: !secret wifi_password # use_address: 192.168.2.51 # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: <<< AIRCO NAAM >>> captive_portal: web_server: external_components: - source: github://ginkage/MHI-AC-Ctrl-ESPHome@master components: [MhiAcCtrl] api: encryption: key: <<< Secret >>> reboot_timeout: 0s services: - service: set_vertical_vanes variables: position_value: int # 1-4: static positions, 5: swing, 0: unknown then: - climate.mhi.set_vertical_vanes: position: !lambda "return position_value;" - service: set_horizontal_vanes variables: position_value: int # 1-7: static positions, 8: swing, 0: unknown then: - climate.mhi.set_horizontal_vanes: position: !lambda "return position_value;" - service: set_external_room_temperature variables: temperature_value: float # temperature to set in Celsius then: - climate.mhi.set_external_room_temperature: temperature: !lambda "return temperature_value;" # Version 4.0 MhiAcCtrl: # Only 20 (legacy) or 33 (includes 3D auto and vertical vanes) possible. # If you encounter mhi_ac_ctrl_core.loop error: -2 errors, change the frame_size to 20 frame_size: 33 initial_vertical_vanes_position: 5 initial_horizontal_vanes_position: 8 # Update the following to change the default room temp timeout room_temp_timeout: 60 button: - platform: restart name: Restart entity_category: diagnostic climate: - platform: MhiAcCtrl id: <<< AIRCO NAAM >>> name: "<<< AIRCO NAAM >>>" visual: temperature_step: target_temperature: 0.5 current_temperature: 0.1 time: - platform: homeassistant id: homeassistant_time binary_sensor: - platform: MhiAcCtrl defrost: name: "Defrost" vanes_3d_auto_enabled: name: "3D Auto" sensor: - platform: uptime name: Uptime - platform: wifi_signal name: WiFi Signal update_interval: 60s - platform: MhiAcCtrl outdoor_temperature: name: "Outdoor temperature" return_air_temperature: name: "Return air temperature" outdoor_unit_fan_speed: name: "Outdoor unit fan speed" indoor_unit_fan_speed: name: "Indoor unit fan speed" compressor_frequency: name: "Compressor frequency" indoor_unit_total_run_time: name: "Indoor unit total run time" compressor_total_run_time: name: "Compressor total run time" current_power: name: "Current power" energy_used: name: "Energy used" indoor_unit_thi_r1: name: "Indoor (U-bend) HE temp 1" indoor_unit_thi_r2: name: "Indoor (capillary) HE temp 2" indoor_unit_thi_r3: name: "Indoor (suction header) HE temp 3" outdoor_unit_tho_r1: name: "Outdoor HE temp" outdoor_unit_expansion_valve: name: "Outdoor unit exp. valve" outdoor_unit_discharge_pipe: name: "Outdoor unit discharge pipe" outdoor_unit_discharge_pipe_super_heat: name: "Outdoor unit discharge pipe super heat" protection_state_number: name: "Compressor protection code" error_code: name: "Error code" vanes_pos: name: "Vanes" vanesLR_pos: name: "Vanes Left/Right" text_sensor: - platform: version name: ESPHome Version - platform: wifi_info ip_address: name: IP ssid: name: SSID bssid: name: BSSID - platform: MhiAcCtrl protection_state: name: "Compressor protection status" select: - platform: MhiAcCtrl vertical_vanes: name: Fan Control Up Down horizontal_vanes: name: Fan Control Left Right switch: - platform: MhiAcCtrl vanes_3d_auto: name: "3D Auto"
Flash nu de code naar de aangesloten Wemos D1 mini via de knop install in ESPHome Device Compiler.
Demonteer de behuizing van de airco
Voordat je begint sluit je natuurlijk de stroom af. Klik de behuizing van de airco af. Dit gaat door een aantal schroeven los te maken aan de voorkant. Deze zitten verstopt onder de klep, welke je er ook uit moet klikken, en tussen de onderste kleppen. Aan de achterzijde aan de bovenkant kun je een aantal lippen indrukken om zo de kap los te halen. Je houdt dan de volgende situatie over:


Let op dat er water kan lekken door het gerommel aan de behuizing. Bij de onderste kleppen zat in een opvangbakje bij mijn airco nog wat water.
Aan de zijkant bevind zich een zwarte afdekkap die je er makkelijk af kunt schroeven. Je komt dan bij de besturingsprint terecht die we zoeken.

Plug de MHI-AC-CTRL in de airco
Lokaliseer de CNS header op het moederbord en steek met het meegeleverde stekkertje je MHI-AC-CTRL op de printplaat van de airco. De stekker past maar op 1 manier. Isoleer de Wemos D1 mini door middel van de behuizing die Nodoshop kan leveren of zoals ik met een goed stuk tape (alles op eigen risico!). Verstop de Wemos in de zwarte behuizing van de printplaat en schroef de kap terug op de airco. Plaats de andere behuizingen terug op de airco en schroef alles weer vast. Schakel de stroom in en check of de airco werkt zoals normaal met de afstandsbediening.
Mitsubishi Heavy Industries airco toevoegen aan Home Assistant
Home Assistant zal het nieuwe ESPHome apparaat nu zelf ontdekken en de entiteiten toevoegen.


Besparen op je energierekening
Onderstaand twee screenshots van het verschil tussen verwarmen met de CV vs verwarmen met de airco. Het eerste screenshot laat goed zien dat er hoge kosten voor gas betaald moeten worden om het huis te verwarmen (tussen 04:00-08:00), het tweede laat zien dat dat met een airco veel goedkoper kan (tussen 05:00-08:00). Het scheelt in dit voorbeeld gauw een euro, maar er zijn ook ochtenden geweest dat het verwarmen met gas al €3,50 kostte terwijl de elektriciteitsprijs toen laag was en verwarmen met een airco me dan € 0,60 zou kosten.
Via een dynamisch energiecontract kun je veel kosten besparen op je energie rekening door dit slimme en makkelijke maatregelen. Benieuwd hoe je dit allemaal binnen Home Assistant werkend krijgt? Lees dan mijn artikel over een dynamisch energiecontract in Home Assistant. Ben je wel toe aan een goedkoper energiecontract? Kijk dan eens op gaslicht.com of kies voor Frank Energie en krijg €50 korting.


Het werkt!
Het werkt! Je kunt nu je Mitsubishi Heavy Industries airco bedienen via wifi met Home Assistant terwijl je ook nog de normale afstandsbediening kan blijven gebruiken. Is het jou ook gelukt of heb je een vraag? Laat een reactie achter!
Je kunt je airco nu ook gebruiken in combinatie met automatische verwarming automations. Verwarm je ruimte met de airco op basis van je aanwezigheid, de ruimte temperatuur, een schema… Het is allemaal mogelijk met de Advanced Heating Control blueprint of de Versatile Thermostat.
Heb hem ook weer even gedeeld op mijn Discord groep over home assistant en veel meer.
“De Wemos kun je dan voorzien van headers. Als dat gereed is, kunnen we gaan flashen. Steek hiervoor de USB kabel in de Wemos (zonder dat hij aangesloten is op de MHI-AC-CTRL print).”
Wat gebeurd er als de Wemos al wel is aangesloten op de MHI-AC-CTRL? (ik zag het niet zitten om te solderen, aangezien ik dit nog nooit gedaan had, en heb dit dus voorgesoldeert besteld).
Hoi Jaco,
In dit geval zal er waarschijnlijk niets gebeuren dat problemen oplevert. Over het algemeen is het vaak het best om de flash acties uit te voeren zonder dat er andere componenten aan hangen. Waarom? Omdat er soms gpio pinnen hoog of laag moeten zijn bij het starten van het flashen. Dit gebeurt allemaal automatisch maar als er iets hangt aan zo’n speciale pin kan dat gekke dingen opleveren. D4 op de wemos bijvoorbeeld omdat op D4 ook de onboard led zit.
Laatst had ik een smart stekkerblok wat op een van de flash pinnen een relais had zitten. Die reageerde dus steeds op de schrijf acties. Maar ten alle tijde geldt dat als je gaat flashen dat het apparaat altijd losgekoppeld moet zijn van 230v of een andere spanningsbron dan die van je laptop.
Succes
Groet Wouter
Met die theorie kan ik na de initiële flash hem nooit meer wireless updaten (inc. config)? Of is de initiële flash toch wat anders dan een latere update?
Hoi Edwin,
Ja en OTA update werkt niet met de flash pins en gebeurd volgens mij gewoon intern in de esp.
Groet Wouter
Hallo Wouter,
Bedankt voor de snelle reactie!
Ik was benieuwd of mijn problemen daar door kwamen. Ik krijg de Wemos + de MHI ctrl online (ook aan de airco vast), maar ik krijg een hele rits aan foutmeldingen, en kan eigenlijk niets meer dan alleen op afstand benaderen (geen van de sensoren wordt uitgelezen, en ook besturen lukt niet).
Component MhiAcCtrl took a long time for an operation
mhi_ac_ctrl_core.loop error: -2 (en -4 heb ik ook al langs zien komen, hoewel ik die nu niet meer zie) (ondanks dat ik de fix heb toegevoegd aan de yaml)
esphome:
name: mitsubishiairco
friendly_name: mitsubishiairco
min_version: 2024.6.0
platformio_options:
# Run CPU at 160Mhz to fix mhi_ac_ctrl_core.loop error: -2
board_build.f_cpu: 160000000L
Gevonden! De problemen zaten in de ‘frame_size’ die ik moest aanpassen van 33 naar 20. Nu werkt het! ????
Bedankt voor de feedback!
Hoi,
vraagje, wat is het verschil tussen jou script en het orgineel?
Bij mij werkt het niet altijd hij gaat met regelmaat offline en kan hem dan niet meer bedienen vanaf home assistant
Hoi jos,
Er is geen verschil buiten dat ik op de plekken dat je iets kunt personaliseren dat heb aangegeven.
Het niet beschikbaar zijn lijkt mij met een netwerk issue. Heeft de wemos genoeg bereik op 2.4 Ghz op de locatie van de airco? Misschien een ip adres issue? Probeer eens use_adress met een ip adres wat niet binnen je dhcp range valt.
Groet Wouter
Hoi Wouter,
Ik heb ze opnieuw geflashed, nu worden ze ook gevonden door de home assistant zelf dit was eerst ook niet.
Ik wacht rustig even af.
De orginele wifi van Mitsubishi kost 100 euro per stuk, dus dit is een prachtige oplossing.
Bedankt
Ik heb diverse esp 8266 draaien op tasmota dit werkt prima en ook geen problemen met wifi, nu draai ik er 2 met esphome en deze verliezen de verbinding met de wifi, ik zie ze ook niet meer in de router.
Kan het script ook draaien op tasmota?
Het even voor de test, kijk waar dit probleem weg komt.
Hoi jos, het is een custom component voor esphome dus dat werkt niet op tasmota.
Hier geen last van verbindingsproblemen.
Succes met de test!
Groet Wouter
Hoi.
Mocht iemand de code in het nederlands willen hebben, ik heb de huidige versie (3.0) wat aangepast:
https://github.com/fonske/MHI-AC-Ctrl-ESPHome/tree/master
Te gek man, thnx!!!
Kun je met dit project ook foutcodes beter uitlezen? Nu krijg ik een foutcode op mijn airco waar dit nog niet op zit via de lampjes waar ik niets mee kan.
Hoi johnatan,
Ik zie een entiteit met de naam error code. De waarde is 0 bij mij. Ik weet niet hoe of wat als er werkelijk een error zich voordoet.
Groet Wouter
zou het ook mogelijk zijn om maximale temperatuur aan te passen?
Deze staat nu op 30 graden.
Die zou ik graag op 22 graden willen hebben.
Iemand een idee?
mvg jos
Dag jos,
Dat kan denk ik wel. max_temperature moet je dan in de climate toevoegen in de esphome code.
https://esphome.io/components/climate/
Groet Wouter
daar kan ik wel wat mee bedankt.
toch blijf ik problemen houden met de modules, als ik een browser open dan kan ik via de opgegeven naar de webpagina openen(het is wel traag maar dat werkt).
in esphome builder zijn ze dan weer online en weer offline.
zoals eerder met tasmota heb ik geen problemen met wifi en daar gerbuik ik ook de esp 8266.
Kan het zijn dat er iets in de basis instellingen zit?
Ik heb geen idee wat er mis loopt.
Iemand een idee?
hmm, ik zie dat mijn esp modules krijgen: airco_job.local maar in mijn router staat alles met: .home
dus mijn modules zouden eigenlijk airco_job.home moeten krijgen.
Dan zou dus in mijn HAS het domain niet goed staan, maar kan ik dat zo aanpassen en waar?
ik zou verwachten bij netwerk(waar ik ook altijd mijn ip adres dns en gateway in stel wat ik nu ok niet meer zie).
Ja zo als ik al dacht een ip issue. I’m HA hoef Je Dat denk ik niet te wijzigen, anders wellicht in yaml.
In de esphome code van de airco het domein wijzigen.
https://community.home-assistant.io/t/change-local-domain/281135
Hoi, het is gelukt
Dit was de truc:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
domain: .home
Nu werkt het prima.
gr jos
Hallo,
Ik krijg het niet voor elkaar om de bestanden op de Wemos te krijgen.. heeft iemand een actuele handleiding of stappenplan voor mij? ik heb inmiddels wel ESPHome erop gekregen, ESPeasy kan ik nergens vinden online?
Alvast bedankt
Groeten Niek
Goedemorgen Niek,
Heb je de stappen gevolgd in het artikel? Dit artikel is een paar maanden oud, dus actueel.
Als ESPHome erop staat, wat is er dan dat niet werkt?
ESPeasy is totaal andere firmware en werkt niet met dit esphome custom component.
Groet Wouter
[…] mijn eerdere artikel Mitsubishi Airco’s toevoegen aan Home Assistant was ik ook al bezig geweest met het verminderen van het gebruik van de losse afstandsbedieningen in […]
[…] serieus gas te besparen heb ik mijn airco’s uitgerust met WiFi en esphome zodat ik met (goedkope) electriciteit kan […]
Ik heb het hier zonder problemen werken met een MHI SRK35-ZS-W, alles werkt prima vanuit Home Assistant.
Nu heb ik ook een DS18x20 externe temperatuursensor aangesloten op het printje van NODO shop.
Maar ik krijg dit niet aan de praat. mijn kennis van YAML is niet voldoende en blijft foutmeldingen krijgen.
Heeft iemand dit wel aan de praat met de ESPHome versie van MHI-AC-CTRL ?
Ik heb het al gevonden, aan de YAML onderstaande toevoegen:
one_wire:
– platform: gpio
pin: GPIO4
# en onder de sensor sectie toevoegen
sensor:
– platform: dallas_temp
name: “${devicename} Room Temperature”
id: troom_dallas
state_class: measurement
on_value:
then:
– lambda: |-
float value = id(troom_dallas).state;
ESP_LOGD(“mhi_ac_ctrl”, “Room temperature sensor value: %f °C”, value);
return ((MhiAcCtrl*)id(${deviceid}))->set_room_temperature(value);
Ja goed gevonden! Begrijp ik de code goed dat je de interne sensorwaarde overschrijft met die van de externe sensor? Dus dat je die externe sensor waarde dan ziet in je climate in Home Assistant?
Groet Wouter
Dat klopt inderdaad, de unit wordt nu gestuurd op basis van de temperatuur van de externe sensor. Het nadeel van de interne sensor vond ik dat deze heel snel opliep als de unit verwarmt (de sensor zit immers in de behuizing van de unit) met als gevolg dat deze ging pendelen. Nu is de sensor een eindje verderop geplaatst en de hoop is dat het pendelen hiermee verdwijnt / minder wordt. We gaan het zien.
Aha ik loop daar dus ook tegenaan. Ik los dat nu op door niet naar de gemeten temperatuur te kijken van de airco voor mijn automatiseringen maar naar een losse Aqara Temperatuur sensor. Maar die waarde zie je dan natuurlijk niet in de climate entity. Maar misschien is daar wel wat voor…
Groet Wouter
In plaats van dit in de YAML vast te leggen, heb ik een automatisering in HA die elke minuut de temperatuur van een externe sensor aan de airco doorgeeft, en daarmee de interne “retour temperatuur” overschrijft. In de log (via de browser) zag ik namelijk meldingen van de wifi-module dat deze geen externe temperatuur had ontvangen, daarmee begon mijn speurtocht…
Yaml:
alias: AC Woonkamer sturen op externe sensor
description: “”
triggers:
– trigger: time_pattern
seconds: “59”
conditions: []
actions:
– action: esphome.ac_woonkamer_set_api_room_temperature
data:
value: “{{ states(‘sensibo.indoor_outdoor_meter’) }}”
mode: single
Ik ben al even aan het kijken naar dit project, maar er nog niet toe gekomen …
Zelf heb ik 4 binnenunits die helaas niet exact vermeld in het ondersteunde lijstje voorkomen.
Ik pols graag eens of deze ondersteund worden:
1 unit tpe SRK50ZS-WT
3 units SKM20ZSP-W
Vooral over de kleinere units twijfel ik zelf, maar indien mogelijk, gaat het zeker gebeuren !
Bedankt voor reactie alvast !
Robin
Hoi Robin,
Het makkelijkste is denk ik om de units open te schroeven en te kijken of de header op de print aanwezig is. Dan zal het vermoedelijk werken met de Srk50zs-wt. Types met SKM komen helemaal niet in de lijst voor dus ik ben er bang voor. Als jouw types wel blijken te werken kun je dat doorgeven op github dan kan de originele ontwikkelaar ze toevoegen aan de lijst.
Succes, laat maar weten hoe het af loopt.
Groet Wouter
Ik ben er intussen achter dat de T achteraan enkel staat voor de kleur van de behuizing … titanium ipv wit.
Zal dus vermoedelijk geen verschil maken met de standaard witte.
De andere zal ik idd eens moeten openschroeven … online ook nergens info over te vinden helaas.
Bedankt voor je reactie toch !
Hoi,
Vraagje, ik heb alles werkend, nu heb ik de esphome geupdate en krijg de volgende melding:
INFO ESPHome 2025.2.0
INFO Reading configuration /config/esphome/airco-job.yaml…
INFO Updating https://github.com/fonske/MHI-AC-Ctrl-ESPHome/@master
Failed config
sensor.custom: [source /config/esphome/airco-job.yaml:168]
The “custom” component has been removed. Consider conversion to an external component.
https://esphome.io/guides…e-about-custom-components.
platform: custom
lambda: return ((MhiAcCtrl*)id(airco_job))->get_sensors();
sensors:
– name: Error code
web_server:
sorting_group_id: Status
sorting_weight: 8
– name: Outdoor temperature
web_server:
sorting_group_id: Operation
sorting_weight: 5
En ik heb eigenlijk geen idee
Hoi Jos,
Sinds versie 2025.2 van esphome is het gebruik van custom components niet meer mogelijk. Je zult moeten overstappen op een external component. Gelukkig hebben de makers van de code dit al gedaan afgelopen zomer.
Mijn blogpost hierboven heeft de juiste code met het external component. Ik zie dat je een fork van de code van fonske gebruikt. Dus overstappen naar de originele code zal het probleem oplossen.
Groet Wouter
Hoi Wouter.
Je code bovenin de blogpost bevat ook gewoon nog steeds de custom components.
Dus dat lost weinig op denk ik.
Een andere tijdelijke oplossing is 2024.12 versie van esphome terug te installeren (naast de huidige)
Zie:
https://github.com/ginkage/MHI-AC-Ctrl-ESPHome/issues/123#issuecomment-2669511186
Hier nog een beknoptere omschrijving om 2024.12 er bij te installeren via addons.
Ga naar instellingen – add-ons.
Ga naar de add-on winkel.
klik op drie puntjes – repositories
voeg deze link toe: https://github.com/khenderick/esphome-legacy-addons
en druk op toevoegen.
Daarna sluiten.
Even HA opnieuw starten via ontwikkelhulpmiddelen (herladen is genoeg).
Dan weer naar de add-on store en winkel.
Daar zie je alle oudere versies van esphome staan en kan je de laatst werkende met custom components installeren (2024.12) naast je huidige esphome.
Wat ik ervan begrijp is dat het opzich wel een external component is maar dat er alsnog gebruik gemaakt wordt van custom components. Jammer dat we niet kunnen updaten maar het werkt nu gewoon dus er is niet direct reden om nu direct te moeten updaten.
Kun je iets meer vertellen hoe ik bovenstaand issue mbt het custom component? Ik krijg de yaml van deze pagina niet werken.
Er is nu een (tijdelijke) fix dmv extra code toe te voegen aan de yaml(onderste 2 regels):
external_components:
– source: github://ginkage/MHI-AC-Ctrl-ESPHome@master
components: [ MhiAcCtrl ]
– source: github://robertklep/esphome-custom-component
components: [ custom, custom_component ]
Top dank je wel voor het melden!
Bedankt!
Door dit toe te voegen werkt het inderdaad:
– source: github://robertklep/esphome-custom-component
components: [ custom, custom_component ]
heb je de module achter die metalen plaat gelaten? of ergens nog tussendoor ofzo aan meer aan de voorkant gekregen?
Ik ben een beetje bang dat achter de plaat het wifi bereik wat minder zal zijn.
Hoi puckstar,
Ja mijn wemos zit achter de metalen plaat. Ik zelf merk geen probleem met het wifi bereik.
Groet Wouter
Ik heb het kabeltje langer gemaakt, omdat ik er dan makkelijker bij kan.
Maar nu het een maal werkt hoef ik er eigenlijk niet meer bij.
Hallo Wouter,
Bedankt voor dit geweldige artikel.
Ik heb het bordje werkende en zichtbaar in HA. Als ik hem aansluit op m’n unit zie ik kort een blauw ledje oplichten net als bij het connecten aan m’n laptop voor de eerste flash…
Nu komt het gekke… wat ik al zeg, het bordje wordt correct gevoed door de airco, maar aansturen van de airco werkt niet.
Dat de unit uitstaat wordt juist herkend, maar als ik bijv. aangeef dat hij moet gaan koelen in HA dan gebeurt er niks… HA is dan wel in de veronderstelling dat de airco aan is maar in werkelijkheid is dat dus niet zo.
Ik heb een MHI SKR20zm-s. Op de print staat type RLA505A101.
Heb jij of iemand anders hier toevallig een idee ?
Alvast bedankt.
Mvg,
Ruud
Beste Ruud,
Ja dat is vreemd, je zou zeggen dat dan alles moet werken. Misschien dat één van de andere lezers een idee heeft!
Groet Wouter
Dit had ik in het begin ook, bij mij lag het aan het domain waarin mij esp module gezet word via de esphome config.
Nadat is dit stukje had toegevoegd: (domain: .home) werkte het wel.
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
domain: .home
Beste Wouter en Jos,
Ik heb het inmiddels gevonden. Door het aanpassen van de frame_size naar 20, en flashen via USB werkt het nu wel. Echter heb ik even later nog de loging moeten aanpassen m.b.t. heel veer mhi_ac_ctrl_core.loop error: -2 meldingen.
Deze komen nog wel, maar niet iedere zoveel ms…
Heeft een van jullie toevallig een idee wat er gebeurt als er gestoeid wordt met de frame_size… door deze te verhogen bijv. naar 22 of 24 o.i.d.
Mvg,
Ruud
Heb je dit nog uitgevonden? Ik heb hetzelfde probleem namelijk :(.
Aanpassen naar 20 heeft niet geholpen.
oh wacht. die loop melding is weg, maar ik krijg nu hele tijd deze melding “Component MhiAcCtrl took a long time for an operation”
en geen enkele sensor komt tevoorschijn in Home Assistant.
Ok, die “Component MhiAcCtrl took a long time for an operation” is blijkbaar gebruikelijk en kun je negeren.
Waarom ik de sensors niet in Hass kreeg te zien is omdat blijkbaar ergens niet Auto Discover/Auto Add in Esphome staat ingesteld bij mij.
Nadat ik handmatig via de Esphome integration Add device koos en het device toevoegde kreeg ik het device en alle sensors te zien in Hass!
Dus alles is in orde gekomen (na enkel het wijzigen van de frame size naar 20).
Hallo, Is er eigenlijk al iets bekend over het script?
Hiermee bedoel ik dat deze niet meer werkt op de laatste update(het werkt nog wel maar die externe componenten geven een probleem met updaten).
Natuurlijk kan ik een oude versie installeren dan is dit weer opgelost, maar word het opgelost?
mvg jos
werkt dit niet voor je?
– source: github://robertklep/esphome-custom-component
components: [ custom, custom_component ]
***** TIP *****
Om het stroomverbruik te kunnen zien en meten kun je het volgende toevoegen aan je sensors in Home Assistant.
Dit is als je een splitunit hebt met 2 aircos, dan hoef je maar van 1 airco het te zien en te meten namelijk.
Als je maar 1 airco hebt (singleunit) dan kun je dit ook gebruiken door de 2 regels met AIRCO2 weg te halen.
– platform: template
sensors:
stroomverbruik_aircos_boven:
value_template: >
{% if states(‘sensor.AIRCO1_current_power’) not in [‘unknown’, ‘unavailable’, None] %}
{{ (230 * states(‘sensor.AIRCO1_current_power’) | float ) | round(0) }}
{% elif states(‘sensor.AIRCO2_current_power’) not in [‘unknown’, ‘unavailable’, None] %}
{{ (230 * states(‘sensor.AIRCO2_current_power’) | float ) | round(0) }}
{% else %}
0
{% endif %}
availability_template: >
{{ states(‘sensor.aircowoonkamer_current_power’) not in [‘unknown’, ‘unavailable’, None] }}
friendly_name: “Stroomverbruik Aircos Boven”
unit_of_measurement: “W”
device_class: power
En om het bij de houden kun je in je configuration.yaml het volgende toevoegen:
utility_meter:
powerconsumption_daily_aircowoonkamer:
source: sensor.stroomverbruik_airco_woonkamer
cycle: daily
delta_values: false
En dan nog monthly en yearly als je wilt.
Hier de pastebin zodat je ziet hoe de spaties allemaal moeten zijn.
En ik zie dat bij het kopieren -> aanpassen om hier toonbaar te maken -> plakken, in mijn vorige post niet alles overeenkomt (aircos boven vs airco woonkamer).
In de pastebin staat het correct: https://pastebin.com/d0aXV8Z7
Onlangs toen ik mijn unit heb aangesloten op HA kreeg ik diverse info te zien van mijn unit. Wat mij opviel is dat: “Compressor total run time” en “Indoor unit total run time” resp. 3.300h en 6.000h hebben…
Nu heb ik onlangs mijn unit een aantal uren aangehad. Echter zie ik de waarden van “…run time” niet oplopen. Weet iemand toevallig waar dat aan kan liggen…?
Hoi Ruud,
Ik heb er eigenlijk nog nooit opgelet en ik zie dat mijn waarde ook al een hele tijd niet geüpdatet is. Misschien dat het per 100 uur gaat of zo? Bij mij staan ze op 1800 en 2000 uur.
Groet Wouter
allen, I’m getting a bit nut here…
Ik wil nog een paar bordjes maken, en krijg nu bij de eerste welke ik wil installeren het volgende. Iemand een idee wat ik hier aan zou kunnen doen?;
Compiling .pioenvs/front-bedroom-ac/lib813/ESPAsyncWebServer-esphome/WebResponses.cpp.o
/config/esphome/frontbedroomac.yaml: In lambda function:
/config/esphome/frontbedroomac.yaml:90:16: error: ‘MhiAcCtrl’ was not declared in this scope
90 | return ((MhiAcCtrl*)id(${deviceid}))->get_binary_sensors();
| ^~~~~~~~~
/config/esphome/frontbedroomac.yaml:90:26: error: expected primary-expression before ‘)’ token
90 | return ((MhiAcCtrl*)id(${deviceid}))->get_binary_sensors();
| ^
/config/esphome/frontbedroomac.yaml:90:27: error: expected ‘)’ before ‘FrontBedroomAC’
90 | return ((MhiAcCtrl*)id(${deviceid}))->get_binary_sensors();
| ~ ^~~~~~~~~~~~~~
| )
/config/esphome/frontbedroomac.yaml: In lambda function:
/config/esphome/frontbedroomac.yaml:106:16: error: ‘MhiAcCtrl’ was not declared in this scope
106 | return ((MhiAcCtrl*)id(${deviceid}))->get_sensors();
| ^~~~~~~~~
/config/esphome/frontbedroomac.yaml:106:26: error: expected primary-expression before ‘)’ token
106 | return ((MhiAcCtrl*)id(${deviceid}))->get_sensors();
| ^
/config/esphome/frontbedroomac.yaml:106:27: error: expected ‘)’ before ‘FrontBedroomAC’
106 | return ((MhiAcCtrl*)id(${deviceid}))->get_sensors();
| ~ ^~~~~~~~~~~~~~
| )
/config/esphome/frontbedroomac.yaml: In lambda function:
/config/esphome/frontbedroomac.yaml:200:16: error: ‘MhiAcCtrl’ was not declared in this scope
200 | return ((MhiAcCtrl*)id(${deviceid}))->get_text_sensors();
| ^~~~~~~~~
/config/esphome/frontbedroomac.yaml:200:26: error: expected primary-expression before ‘)’ token
200 | return ((MhiAcCtrl*)id(${deviceid}))->get_text_sensors();
| ^
/config/esphome/frontbedroomac.yaml:200:27: error: expected ‘)’ before ‘FrontBedroomAC’
200 | return ((MhiAcCtrl*)id(${deviceid}))->get_text_sensors();
| ~ ^~~~~~~~~~~~~~
| )
/config/esphome/frontbedroomac.yaml: In lambda function:
/config/esphome/frontbedroomac.yaml:63:16: error: ‘MhiAcCtrl’ was not declared in this scope
63 | return ((MhiAcCtrl*)id(${deviceid}))->set_room_temperature(value);
| ^~~~~~~~~
/config/esphome/frontbedroomac.yaml:63:26: error: expected primary-expression before ‘)’ token
63 | return ((MhiAcCtrl*)id(${deviceid}))->set_room_temperature(value);
| ^
/config/esphome/frontbedroomac.yaml:63:27: error: expected ‘)’ before ‘FrontBedroomAC’
63 | return ((MhiAcCtrl*)id(${deviceid}))->set_room_temperature(value);
| ~ ^~~~~~~~~~~~~~
| )
/config/esphome/frontbedroomac.yaml: In lambda function:
Compiling .pioenvs/front-bedroom-ac/lib813/ESPAsyncWebServer-esphome/WebServer.cpp.o
/config/esphome/frontbedroomac.yaml:72:16: error: ‘MhiAcCtrl’ was not declared in this scope
72 | return ((MhiAcCtrl*)id(${deviceid}))->set_vanes(value);
| ^~~~~~~~~
/config/esphome/frontbedroomac.yaml:72:26: error: expected primary-expression before ‘)’ token
72 | return ((MhiAcCtrl*)id(${deviceid}))->set_vanes(value);
| ^
/config/esphome/frontbedroomac.yaml:72:27: error: expected ‘)’ before ‘FrontBedroomAC’
72 | return ((MhiAcCtrl*)id(${deviceid}))->set_vanes(value);
| ~ ^~~~~~~~~~~~~~
| )
/config/esphome/frontbedroomac.yaml: In lambda function:
/config/esphome/frontbedroomac.yaml:246:20: error: ‘MhiAcCtrl’ was not declared in this scope
246 | return ((MhiAcCtrl*)id(${deviceid}))->set_vanesLR(vanesLR);
| ^~~~~~~~~
/config/esphome/frontbedroomac.yaml:246:30: error: expected primary-expression before ‘)’ token
246 | return ((MhiAcCtrl*)id(${deviceid}))->set_vanesLR(vanesLR);
| ^
/config/esphome/frontbedroomac.yaml:246:31: error: expected ‘)’ before ‘FrontBedroomAC’
246 | return ((MhiAcCtrl*)id(${deviceid}))->set_vanesLR(vanesLR);
| ~ ^~~~~~~~~~~~~~
| )
/config/esphome/frontbedroomac.yaml: In lambda function:
/config/esphome/frontbedroomac.yaml:284:18: error: ‘MhiAcCtrl’ was not declared in this scope
284 | return ((MhiAcCtrl*)id(${deviceid}))->set_vanes(vanesUD);
| ^~~~~~~~~
/config/esphome/frontbedroomac.yaml:284:28: error: expected primary-expression before ‘)’ token
284 | return ((MhiAcCtrl*)id(${deviceid}))->set_vanes(vanesUD);
| ^
/config/esphome/frontbedroomac.yaml:284:29: error: expected ‘)’ before ‘FrontBedroomAC’
284 | return ((MhiAcCtrl*)id(${deviceid}))->set_vanes(vanesUD);
| ~ ^~~~~~~~~~~~~~
| )
/config/esphome/frontbedroomac.yaml: In lambda function:
/config/esphome/frontbedroomac.yaml:310:20: error: ‘MhiAcCtrl’ was not declared in this scope
310 | return ((MhiAcCtrl*)id(${deviceid}))->set_3Dauto(0);
| ^~~~~~~~~
/config/esphome/frontbedroomac.yaml:310:30: error: expected primary-expression before ‘)’ token
310 | return ((MhiAcCtrl*)id(${deviceid}))->set_3Dauto(0);
| ^
/config/esphome/frontbedroomac.yaml:310:31: error: expected ‘)’ before ‘FrontBedroomAC’
310 | return ((MhiAcCtrl*)id(${deviceid}))->set_3Dauto(0);
| ~ ^~~~~~~~~~~~~~
| )
/config/esphome/frontbedroomac.yaml: In lambda function:
/config/esphome/frontbedroomac.yaml:300:20: error: ‘MhiAcCtrl’ was not declared in this scope
300 | return ((MhiAcCtrl*)id(${deviceid}))->set_3Dauto(1);
| ^~~~~~~~~
/config/esphome/frontbedroomac.yaml:300:30: error: expected primary-expression before ‘)’ token
300 | return ((MhiAcCtrl*)id(${deviceid}))->set_3Dauto(1);
| ^
/config/esphome/frontbedroomac.yaml:300:31: error: expected ‘)’ before ‘FrontBedroomAC’
300 | return ((MhiAcCtrl*)id(${deviceid}))->set_3Dauto(1);
| ~ ^~~~~~~~~~~~~~
| )
Compiling .pioenvs/front-bedroom-ac/libecb/DNSServer/DNSServer.cpp.o
Compiling .pioenvs/front-bedroom-ac/lib3ff/ESP8266mDNS/ESP8266mDNS.cpp.o
*** [.pioenvs/front-bedroom-ac/src/main.cpp.o] Error 1
========================== [FAILED] Took 6.31 seconds ==========================
Er is een ge-update versie van het script gemaakt. Deze werkt correct met de nieuwste versie van ESPHome. Ik gebruikte voor twee nieuwe bordjes het script welke ik als eerste (o.a. via hier) had gebruikt. Echter wilde ik vandaag dit script weer gebruiken en werd verrast met meldingen die ik niet eerder had gezien.
Ook is het niet meer nodig in het nieuwe script om gebruik te maken van
– source: github://robertklep/esphome-custom-component
components: [ custom, custom_component ]
Rest nu, om m’n eerste bordje opnieuw te flashen met het nieuwe script… doe jullie voordeel ermee.
Fijne paasdagen.
Hoi Ruud, hopelijk heb je het al opgelost. Dit was mijn fix voor de ongewenste compile error:
external_components:
– source: github://ginkage/MHI-AC-Ctrl-ESPHome@master
external_components:
– source: github://ginkage/MHI-AC-Ctrl-ESPHome@v3.0
Het ‘probleem’ is dat het ‘script’ online de nieuwste versie (master) ging gebruiken. Door ‘v3.0’ te gebruiken kun je terug naar de versie die compatible met je ‘script’.
Groet!
P.S.: Wouter super bedankt voor je log. Veel aan gehad. Hulde.
waar kan ik dit nieuwe script vinden?
mvg jos
Dag Jos,
Ik heb zojuist de code in het artikel aangepast naar de meest recente versie 4.0. Deze is compatibel met recente versie van esphome.
Groet Wouter
Hallo Wouter,
Ik krijg deze melding:
WARNING Using `climate.CLIMATE_SCHEMA` is deprecated and will be removed in ESPHome 2025.11.0. Please use `climate.climate_schema(…)` instead. If you are seeing this, report an issue to the external_component author and ask them to update it. https://developers.esphome.io/blog/2025/05/14/_schema-deprecations/. Component using this schema: mhi
wat mag ik hier aan doen?
en deze melding krijg ik ook:
20:57:00 [W] [api.connection:107]
: Socket operation failed: HANDSHAKESTATE_READ_FAILED errno=11
helaas gaat het blijkbaar bij mij nooit soepel, en daarbij weet ik er net iets te weinig van.
Wat ik mij ook af vroeg je had of hebt in het topic staan dat je het orgineel kunt vinden:
https://github.com/fonske/MHI-AC-Ctrl-ESPHome/tree/master
de code die daar staat is veel groter, je hebt dus dingen weg gelaten die er wel in hebben gezeten(misschien maakt dat voor de werking helemaal niet uit maar ik ben wel nieuwschierig).
Dag Jos,
Ik gebruik het origineel, die van ginkage. De versie van fonske is een fork (een afgeleidde) dus wellicht komt daar het verschil vandaan.
De melding over schema kun je negeren. Esphome meldt alleen dat die functie na esphome versie 2025.11 (in november dus) niet meer werkt. De beheerders van het Mhi-ac-ctrl component zullen dat moeten oplossen.
De API connection melding is iets tussen home assistant en esphome. Misschien gaat er iets mis met het domein? Je kunt intern gebruik maken van bijvoorbeeld het adres http://airco.local of http://airco.home om je airco te bereiken. Geef het eens een vast ip of haal je error eens door chatgpt, het zal je verbazen hoe goed die oplossingen soms zijn.
Laat je het weten?
Groet Wouter
Werkt bij anderen wel dat je de airco kunt aansturen om verticaal te swingen (of ook maar iets verticaals eigenlijk).
Ik heb gemerkt dat enkel de horizontale commandos daarvoor worden uitgevoerd door de airco, maar alles verticaals niet.
Via de gewone afstandsbediening werkt het wel, dus de airco kan het wel.
Ik heb de wifi rac module maar ik overweeg die te vervangen met deze, omdat ik graag een externe sensor als input wil kunnen geven.
Ik vroeg me af of in versie 4.0 het nog steeds mogelijk is om de ‘set_api_room_temperature’ service call toe te voegen in de config. Of is dit precies iets wat niet meer kan met de update naar esphome 2025.2+? Zou dit wel graag willen weten voor ik aan dit hele avontuur begin namelijk. Ik doe liever niet de externe sensor in mijn home assistant hardcoden. Dus een dergelijke service call is ideaal, dan kan ik gewoon een automation schrijven in home assistant.
Hoi Laurens,
Ik snap het niet helemaal maar.. De code maakt een climate entity aan voor de airco waarop je een setpoint kunt instellen. Handmatig of via automations.
Of, als je de airco wilt schakelen op basis van een externe sensor die in home assistant gekoppeld is, kun je die waarde gebruiken als kamertemperatuur gebruiken in je climate enity, middels https://esphome.io/components/sensor/homeassistant.html
Is je vraag zo beantwoord?
Groet Wouter
Ja, dat gebruik ik naar volle tevredenheid. In antwoord op een berichtje hier uit januari ook de code gedeeld:
https://www.twoenter.nl/blog/smarthome/mitsubishi-airco-voorzien-van-wifi-besturing/#comment-1296
(ik gebruik de versie van auijtdehaag)
Wouter: Wat je hiermee doet is elke minuut de waarde van een externe sensor naar de airco sturen die daarmee de eigen temperatuur overschrijft (1 minuut lang). Deze temperatuur wordt daarmee ook weergegeven op de termostaat en de automatische stand van de airo stuurt er zelf ook op.
Voordeel is dat als je de sensor wil vervangen, je niet de module hoeft aan te passen. Of zoals ik met een automation ’s avonds/ ’s nachts de sensor temperatuur doorstuur, van de slaapkamer, en overdag die van de voorzolder (kantoor) enkele meters verderop.
ik krijg onderstaande error in de log:
[mhi_ac_ctrl:164]
mhi_ac_ctrl_core.loop error: -4
Ook staat alles op NA en de airco is niet te besturen. enig idee wat het probleem kan zijn?
Eerder schreef ik dat verticale commando’s niet werken maar ik bedoelde horizontale commando’s.
Dus mijn vraag blijkt:
Werkt bij anderen wel dat je de airco kunt aansturen om horizontaal te swingen (of ook maar iets horizontaals eigenlijk).
Ik heb gemerkt dat enkel de verticale commando’s daarvoor worden uitgevoerd door de airco, maar alles horizontaals niet.
Via de gewone afstandsbediening werkt het wel, dus de airco kan het wel.
Ben ik echt de enige die dit issue heeft?
Hier kwam ik vandaag ook achter. Ik ben er vrijwel zeker van dat het wel gewerkt heeft tot enkele weken geleden, maar was op zoek naar antwoorden. Ik twijfel nu of het aan de correctie ligt van de private instelling, of een recente update van ESPHome.
Ik ben er sinds gisteren achter wat het probleem bij mij was.
In de meer recente code staat duidelijker omschreven (of ik heb het eerder nooit opgemerkt) dat met frame buffer 20 de 3D Auto en bepaalde commando’s niet werken omdat dat door oudere units niet ondersteund wordt.
Ik had destijds de frame buffer aangepast van 33 naar 20 omdat het flashen niet lukte met 33.
Maar ik heb het gisteren met de nieuwe code (4.0) geprobeerd en de frame buffer 33 gelaten, en nu werkt alles wel!!
Dus of je units zijn te oud waardoor het niet werkt (maar dat is het bij jou niet), of je hebt frame buffer 20 ingesteld en moet het weer eens met 33 proberen.
Of anders toch gewoon eens opnieuw flashen met de nieuwste code.
De frame buffer 33/20 is mij bekend, maar heb daar nooit mee hoeven spelen (mijn units zijn nog geen jaar oud en het begin van mijn HA avontuur/verslaving). Ik vermoed een gevalletje “je moet niet updaten als het werkt”. Door de updates van HA en ESPHome een keer “update all” gebruikt. Aangezien er daarbij ook opnieuw gegevens worden binnengehaald van de diverse repos bij het compileren zal daar een manco zijn ontstaan.
Ik gebruik die van fonske (auijtdehaag), v3.2, daarin zit die “set_api_room_temperature”.
Maar omdat ik die vanes left/right belangrijker vindt, ook die 4.0 van ginkage geprobeerd,
https://github.com/ginkage/MHI-AC-Ctrl-ESPHome/blob/master/examples/full.yaml
maar krijg na OTA een aantal foutmeldingen en geen verbinding/bediening met de airco (kan gelukkig nog wel met OTA terug naar fonske). Zelfs een aantal pogingen ondernomen met oude versies (tot 2024.12) maar helaas. Dus hopelijk komt Fonske snel met een bijgewerkte versie.