Control MHI Aircon by MQTT

Hey there,

i want to share how i saved some money on my new Mitsubishi Heavy Industries Aircondition by not buying an overexpensed WIFI adapter but building one with Wemos D1 Mini.

So there is the following github repository providing the needed Hardware and sketch:
https://github.com/absalom-muc/MHI-AC-Ctrl

So i give you an example on the configuration i used to control one device.

aircondition.things:

Bridge mqtt:broker:mosquitto [ host="localhost", secure=false, port=1883, clientID="openHAB25" ] {

    Thing topic Aircondition "Aircondition" @ "Livingroom" {
        Channels:
        Type string : status "Status" [ stateTopic="Aircon/Mode", commandTopic="Aircon/set/Mode" ]
        Type string : power "Power" [ stateTopic="Aircon/Power" ]
        Type string : fanspeed "Fanspeed" [ stateTopic="Aircon/Fan", commandTopic="Aircon/set/Fan" ]
        Type string : vanes "Vanes" [ stateTopic="Aircon/Vanes", commandTopic="Aircon/set/Vanes" ]
        Type number : setpoint "Setpoint" [ stateTopic="Aircon/Tsetpoint", commandTopic="Aircon/set/Tsetpoint" ]
        Type number : temperature "Temperature" [ stateTopic="Aircon/Troom" ]
        Type number : signal "RSSI" [ stateTopic="Aircon/RSSI" ]
        Type number : sck "SCK" [ stateTopic="Aircon/fSCK" ]
        Type number : mosi "MOSI" [ stateTopic="Aircon/fMOSI" ]
        Type number : miso "MISO" [ stateTopic="Aircon/fMISO" ]
        Type number : hours "IU Run hours" [ stateTopic="Aircon/TOTAL-IU-RUN" ]
        Type number : outdoor "Outdoor Temperature" [ stateTopic="Aircon/OpData/OUTDOOR" ]
        Type number : fanspeed_outdoor "Outdoor Fanspeed" [ stateTopic="Aircon/OpData/OU-FANSPEED" ]
        Type number : ampere "Power" [ stateTopic="Aircon/OpData/CT" ]
    }
    
}

aircondition.items:

Group  Aircondition "Indoor" { alexa="Endpoint.Thermostat" }
Switch Aircondition_Power "Power [%s]" (Aircondition) { channel="mqtt:topic:mosquitto:Aircondition:power", alexa="PowerController.powerState" [nonControllable=true] }
String Aircondition_Status "Status [%s]" (Aircondition) { channel="mqtt:topic:mosquitto:Aircondition:status", alexa="ThermostatController.thermostatMode" [OFF="Off",HEAT="Heat",COOL="Cool"] }
String Aircondition_Fanspeed "Fanspeed [%s]" { channel="mqtt:topic:mosquitto:Aircondition:fanspeed" }
String Aircondition_Vanes "Vanes [%s]" { channel="mqtt:topic:mosquitto:Aircondition:vanes" }
Number Aircondition_Setpoint "Temperature [%s °C]" (Aircondition) { channel="mqtt:topic:mosquitto:Aircondition:setpoint", alexa="ThermostatController.targetSetpoint" }
Number Aircondition_Temperature "Act. Temperature [%s °C]" (Aircondition) { channel="mqtt:topic:mosquitto:Aircondition:temperature", alexa="TemperatureSensor.temperature" }
Number Aircondition_Signal "RSSI [%s]" { channel="mqtt:topic:mosquitto:Aircondition:signal" }
Number Aircondition_Hours "Total run hours [%d]" { channel="mqtt:topic:mosquitto:Aircondition:hours" }

Number Aircondition_Outdoor_Temperature "Temperature [%s °C]" { channel="mqtt:topic:mosquitto:Aircondition:outdoor" }
Number Aircondition_Outdoor_Fanspeed "Fanspeed [%d]" { channel="mqtt:topic:mosquitto:Aircondition:fanspeed_outdoor" }
String Aircondition_Outdoor_Ampere "Ampere [%d A]" { channel="mqtt:topic:mosquitto:Aircondition:ampere" }

aircondition.sitemap:

sitemap aircondition label="Aircondition"
{
    Frame label="Indoor" icon=climate {
        Selection item=Aircondition_Status      icon=climate    mappings=["Off"="Aus", "Dry"="Trocknen", "Cool"="Kühlen", "Heat"="Heizen", "Fan"="Lüfter", "On"="An"]
        Setpoint item=Aircondition_Fanspeed     icon=fan        minValue=1      maxValue=4  step=1
        Selection item=Aircondition_Vanes       icon=smoke      mappings=[1="Pos 1 (hoch)", 2="Pos 2", 3="Pos 3", 4="Pos 4 (runter)", "Swing"="Swing"]
        Setpoint item=Aircondition_Setpoint     icon=heating    minValue=18     maxValue=30 step=1
        Default item=Aircondition_Temperature   icon=temperature
        Default item=Aircondition_Hours
    }
    Frame label="Outdoor" {
        Default item=Aircondition_Outdoor_Temperature
        Default item=Aircondition_Outdoor_Fanspeed
        Default item=Aircondition_Outdoor_Ampere
    }
}

aircondition.rules:

# This rule will map "Alexa, turn on Aircondition" into a concrete Action based on roomtemperature
rule "Turn on Aircondition"
when
    Item Aircondition_Power received command OFF
then
    Aircondition_Status.sendCommand('Off')
end

# This rule will power off the AC on "Alexa, turn off Aircondition"
rule "Turn off Aircondition"
when
    Item Aircondition_Power received command ON
then
    if (Aircondition_Temperature.state >= Aircondition_Setpoint.state) {
        Aircondition_Status.sendCommand('Cool')
        return;
    }

    Aircondition_Status.sendCommand('Heat')
end
5 Likes

Hi, i live in italy and i would try to do that also on my Mitsubishi Heavy Industries air conditioner.
Can you help me? You alreade had pcb?

Hi, do you still have some pcbs?

I’am Sorry. I have them sold all a few Weeks ago.

Can you share your pcb project?

The Link is in the Main post

Did you ordered complete assembled pcb? Or need to solder some parts yourself?

You have to order the raw PCB and order and solder all parts yourself.