Esempio n. 1
0
def support_test(device_ip, device_id: int, device_port: int):
    _device = midea_device(device_ip, device_id, device_port)
    device = _device.setup()
    device.refresh()
    if device.support:
        return 'supported'
    else:
        return 'unsupported'
Esempio n. 2
0
    def onStart(self):
        device_ip = Parameters["Address"]
        device_id = Parameters["Mode3"]
        device_port = Parameters["Mode4"]
        client = midea_device(device_ip, int(device_id), int(device_port))
        device = client.setup()

# get AC info
        device.refresh() 
        
        
        if Parameters["Mode2"] == "Debug":
            Domoticz.Debugging(1)
            DumpConfigToLog()

        if len(Devices) == 0:
            Domoticz.Device(Name="Power", Unit=1, Image=9, TypeName="Switch", Used=1).Create()
            Domoticz.Device(Name="Temp Inside", Unit=2, TypeName="Temperature", Used=1).Create()
            Domoticz.Device(Name="Temp Outside", Unit=3, TypeName="Temperature", Used=1).Create()
            Domoticz.Device(Name="Setpoint", Unit=4, Type=242, Subtype=1, Image=16, Used=1).Create()

            Options = {"LevelActions": "||||||",
                       "LevelNames": "|Auto|Heat|Cool|Dry|Fan",
                       "LevelOffHidden": "true",
                       "SelectorStyle": "1"}

            Domoticz.Device(Name="Mode", Unit=5, TypeName="Selector Switch", Image=16, Options=Options, Used=1).Create()

            Options = {"LevelActions": "|||||",
                       "LevelNames": "|High|Medium|Low|Auto",
                       "LevelOffHidden": "true",
                       "SelectorStyle": "1"}

            Domoticz.Device(Name="Fan Rate", Unit=6, TypeName="Selector Switch", Image=7, Options=Options,
                            Used=1).Create()

            Options = {"LevelActions": "|||",
                       "LevelNames": "Off|Vertical|Horizontal|Both",
                       "LevelOffHidden": "false",
                       "SelectorStyle": "1"}

            Domoticz.Device(Name="Swing", Unit=7, TypeName="Selector Switch", Image=7, Options=Options, Used=1).Create()

            
            Domoticz.Device(Name="Turbo", Unit=8, Image=9, TypeName="Switch", Used=1).Create()

            Domoticz.Device(Name="Eco", Unit=9, Image=9, TypeName="Switch", Used=1).Create()

            Domoticz.Debug("Qlima Wifi Airco device created.")

        DumpConfigToLog()

        Domoticz.Heartbeat(10)

        self.DataUpdate()
Esempio n. 3
0
async def async_setup_platform(hass, config, async_add_entities,
                               discovery_info=None):
    """Set up the Midea cloud service and query appliances."""

    from msmart.device import device as midea_device

    device_ip = config.get(CONF_HOST)
    device_id = config.get(CONF_ID)
    temp_step = config.get(CONF_TEMP_STEP)
    include_off_as_state = config.get(CONF_INCLUDE_OFF_AS_STATE)
    use_fan_only_workaround = config.get(CONF_USE_FAN_ONLY_WORKAROUND)

    client = midea_device(device_ip, int(device_id))
    device = client.setup()
    entities = []
    entities.append(MideaClimateACDevice(
            hass, device, temp_step, include_off_as_state,
            use_fan_only_workaround))

    async_add_entities(entities)
Esempio n. 4
0
def connect(ip, id, retries=3):
    if not ip or not id:
        logging.error("IP address and ID required")
        sys.exit(1)

    logging.debug("Connect ip: %s id: %d", ip, id)

    for attempt in range(retries):
        try:
            client = midea_device(ip, id)
            device = client.setup()
            if not device:
                logging.error("Connect failed")
                continue

            device.refresh()
            return device

        except ValueError as error:
            if (attempt == retries - 1):
                raise error
            print(error)

    return device
Esempio n. 5
0
    def DataUpdate(self):
        device_ip = Parameters["Address"]
        device_id = Parameters["Mode3"]
        device_port = Parameters["Mode4"]
        client = midea_device(device_ip, int(device_id), int(device_port))
        device = client.setup()
        
        try:
            device.refresh()
            if device.indoor_temperature == 0.0 and device.indoor_temperature == 0.0 and device.target_temperature == 17.0:
               raise ConnectionError('Could not connect with device',)
            Devices[1].Update(nValue=device.power_state, sValue=str(device.power_state))
            Devices[2].Update(nValue=0, sValue=str(device.indoor_temperature))
            Devices[3].Update(nValue=0, sValue=str(device.outdoor_temperature))
            Devices[4].Update(nValue=device.power_state, sValue=str(device.target_temperature))
            
            
            Devices[5].Update(nValue=device.power_state, sValue=str(device.operational_mode))
            if str(device.operational_mode) == 'operational_mode_enum.auto':
                Level = '10'
            elif str(device.operational_mode) == 'operational_mode_enum.heat':
                Level = '20'
            elif str(device.operational_mode) == 'operational_mode_enum.cool':
                Level = '30'
            elif str(device.operational_mode) == 'operational_mode_enum.dry':
                Level = '40'
            else:
                Level = '50'
            Devices[5].Update(nValue=device.power_state, sValue=str(Level))
            
            
            
            Devices[6].Update(nValue=device.power_state, sValue=str(device.fan_speed))
            if str(device.fan_speed) == 'fan_speed_enum.High':
                Level = '10'
            elif str(device.fan_speed) == 'fan_speed_enum.Medium':
                Level = '20'
            elif str(device.fan_speed) == 'fan_speed_enum.Low':
                Level = '30'
            else:
                Level = '40'
            Devices[6].Update(nValue=device.power_state, sValue=str(Level))
            
                        
            Devices[7].Update(nValue=device.power_state, sValue=str(device.swing_mode))
            if str(device.swing_mode) == 'swing_mode_enum.Vertical':
                Level = '10'
            elif str(device.swing_mode) == 'swing_mode_enum.Horizontal':
                Level = '20'
            elif str(device.swing_mode) == 'swing_mode_enum.Both':
                Level = '30'
            else:
                Level = '0'
            Devices[7].Update(nValue=device.power_state, sValue=str(Level))
                     
            
            Devices[8].Update(nValue=device.turbo_mode, sValue=str(device.turbo_mode))
            Devices[9].Update(nValue=device.eco_mode, sValue=str(device.eco_mode))

        except ConnectionError as error:
            Domoticz.Error(repr(error))
            return
            
        except:
            Domoticz.Error("Qlima (" + Parameters["Address"] + ") unavailable")
            return        
Esempio n. 6
0
    def onCommand(self, Unit, Command, Level, Hue):
        device_ip = Parameters["Address"]
        device_id = Parameters["Mode3"]
        device_port = Parameters["Mode4"]
        client = midea_device(device_ip, int(device_id), int(device_port))
        device = client.setup()
      
        Domoticz.Debug(
            "Command received U=" + str(Unit) + " C=" + str(Command) + " L= " + str(Level) + " H= " + str(Hue))

        try:
            device.refresh()
        except:
            Domoticz.Error("AC (" + Parameters["Address"] + ") unavailable OnCommand")
            return

        if (Unit == 1):
            if (Command == "On"):
                device.power_state = True
                device.apply()
                Devices[1].Update(nValue=1, sValue="On")

            else:
                device.power_state = False
                device.apply()
                Devices[1].Update(nValue=0, sValue="Off")



        if (Unit == 4):
            if Level > 30:
                Level = 30
            elif Level < 17:
                Level = 17

            device.target_temperature = int(Level)
            device.apply()
            Devices[4].Update(nValue=device.power_state, sValue=str(Level))



        if (Unit == 5):
#            Domoticz.Error("Level is: " + str(Level))
            if (str(Level) == '10'):
                device.operational_mode = ac.operational_mode_enum.auto
                device.apply()
            elif (str(Level) == '20'):
                device.operational_mode = ac.operational_mode_enum.heat
                device.apply()
            elif (str(Level) == '30'):
                device.operational_mode = ac.operational_mode_enum.cool
                device.apply()
            elif (str(Level) == '40'):
                device.operational_mode = ac.operational_mode_enum.dry
                device.apply()
            else:
                device.operational_mode = ac.operational_mode_enum.fan_only
                device.apply()
            
            Devices[5].Update(nValue=device.power_state, sValue=str(Level))



        if (Unit == 6):
#            Domoticz.Error("Level is: " + str(Level))
            if (str(Level) == '10'):
                device.fan_speed = ac.fan_speed_enum.High
                device.apply()
            elif (str(Level) == '20'):
                device.fan_speed = ac.fan_speed_enum.Medium
                device.apply()
            elif (str(Level) == '30'):
                device.fan_speed = ac.fan_speed_enum.Low
                device.apply()
            
            else:
                device.fan_speed = ac.fan_speed_enum.Auto
                device.apply()
            
            Devices[6].Update(nValue=device.power_state, sValue=str(Level))



        if (Unit == 7):
 #           Domoticz.Error("Level is: " + str(Level))
            if (str(Level) == '0'):
                device.swing_mode = ac.swing_mode_enum.Off
                device.apply()
            elif (str(Level) == '10'):
                device.swing_mode = ac.swing_mode_enum.Vertical
                device.apply()
            elif (str(Level) == '20'):
                device.swing_mode = ac.swing_mode_enum.Horizontal
                device.apply()
            
            else:
                device.swing_mode = ac.swing_mode_enum.Both
                device.apply()
            
            Devices[7].Update(nValue=device.power_state, sValue=str(Level))



        if (Unit == 8):
            if (Command == "On"):
                device.eco_mode = False
                device.turbo_mode = True
                device.apply()
                Devices[8].Update(nValue=1, sValue="On")

            else:
                device.turbo_mode = False
                device.apply()
                Devices[8].Update(nValue=0, sValue="Off")



        if (Unit == 9):
            if (Command == "On"):
                device.turbo_mode = False
                device.eco_mode = True
                device.apply()
                Devices[9].Update(nValue=1, sValue="On")

            else:
                device.eco_mode = False
                device.apply()
                Devices[9].Update(nValue=0, sValue="Off")
Esempio n. 7
0
	parser.add_argument("--port", type=int, dest='port', help="Port de la clim", required=True)
	parser.add_argument("--power_state", type=int, dest='power_state', help="changement d'état 0/1")
	parser.add_argument("--prompt_tone", type=int, dest='prompt_tone', help="Etat du bip 0/1")
	parser.add_argument("--target_temperature", type=float, dest='target_temperature', help="température désirée (float)")
	parser.add_argument("--operational_mode", dest='operational_mode', help="changement de mode (enum)")
	parser.add_argument("--fan_speed", dest='fan_speed', help="changement de vitesse (enum)")
	parser.add_argument("--swing_mode", dest='swing_mode', help="changement d'inclinaison (enum)")
	parser.add_argument("--mode_eco", type=int, dest='mode_eco', help="mode eco 0/1")
	parser.add_argument("--mode_turbo", type=int, dest='mode_turbo', help="mode turbo 0/1")
	parser.add_argument("--mode_normal", type=int, dest='mode_normal', help="mode normal 1")
	options = parser.parse_args(args)
	return options

options = getOptions(sys.argv[1:])

c = midea_device(options.ip, options.id, options.port)
device = c.setup()
device.refresh()

if options.power_state is not None:
	boolPState = intToBool(options.power_state)
	device.power_state = boolPState

if options.prompt_tone is not None:
	device.prompt_tone = intToBool(options.prompt_tone)

if options.target_temperature is not None:
	device.target_temperature = float(options.target_temperature)

if options.operational_mode is not None:
	if options.operational_mode == "auto":
Esempio n. 8
0
from msmart.device import device as midea_device
from msmart.device import air_conditioning_device as ac
import logging
import sys

logging.basicConfig(level=logging.WARN)

if len(sys.argv) != 4:
	sys.exit("3 args required")

ip = sys.argv[1]
id = int(sys.argv[2])
port = int(sys.argv[3])


c = midea_device(ip, id, port)
device = c.setup()
# Refresh the object with the actual state by querying it
device.refresh()
print({
        'id': device.id,
        'name': device.ip,
        'power_state': device.power_state,
        'prompt_tone': device.prompt_tone,
        'target_temperature': device.target_temperature,
        'operational_mode': device.operational_mode,
        'fan_speed': device.fan_speed,
        'swing_mode': device.swing_mode,
        'eco_mode': device.eco_mode,
        'turbo_mode': device.turbo_mode,
        'indoor_temperature': device.indoor_temperature,
Esempio n. 9
0
from msmart.device import device as midea_device
from msmart.device import air_conditioning_device as ac
import logging
logging.basicConfig(level=logging.DEBUG)

# first take device's ip and id
# pip3 install msmart; midea-discover
c = midea_device('YOUR_AC_IP', YOUR_AC_ID)
device = c.setup()
# Refresh the object with the actual state by querying it
device.refresh()
print({
    'id': device.id,
    'name': device.ip,
    'power_state': device.power_state,
    'prompt_tone': device.prompt_tone,
    'target_temperature': device.target_temperature,
    'operational_mode': device.operational_mode,
    'fan_speed': device.fan_speed,
    'swing_mode': device.swing_mode,
    'eco_mode': device.eco_mode,
    'turbo_mode': device.turbo_mode,
    'indoor_temperature': device.indoor_temperature,
    'outdoor_temperature': device.outdoor_temperature
})

# Set the state of the device and
device.power_state = True
device.prompt_tone = False
device.target_temperature = 25
device.operational_mode = ac.operational_mode_enum.cool