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'
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()
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)
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
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
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")
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":
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,
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