コード例 #1
0
ファイル: device.py プロジェクト: wpappdev/midea-msmart
    def refresh(self):
        cmd = request_status_command(self.type)
        pkt_builder = packet_builder()
        pkt_builder.set_command(cmd)

        data = pkt_builder.finalize()
        data = self._lan_service.appliance_transparent_send(self.id, data)
        if len(data) > 0:
            self._online = True
            response = appliance_response(data)
            _LOGGER.debug("Decoded Data: {}".format({
                'prompt_tone':
                response.prompt_tone,
                'target_temperature':
                response.target_temperature,
                'indoor_temperature':
                response.indoor_temperature,
                'outdoor_temperature':
                response.outdoor_temperature,
                'operational_mode':
                response.operational_mode,
                'fan_speed':
                response.fan_speed,
                'swing_mode':
                response.swing_mode,
                'eco_mode':
                response.eco_mode,
                'turbo_mode':
                response.turbo_mode
            }))
        else:
            self._online = False
コード例 #2
0
ファイル: device.py プロジェクト: phillcz/midea-msmart
    def apply(self):
        self._updating = True
        try:
            cmd = set_command(self.type)
            cmd.prompt_tone = self._prompt_tone
            cmd.power_state = self._power_state
            cmd.target_temperature = self._target_temperature
            cmd.operational_mode = self._operational_mode.value
            cmd.fan_speed = self._fan_speed
            cmd.swing_mode = self._swing_mode.value
            cmd.eco_mode = self._eco_mode
            cmd.turbo_mode = self._turbo_mode
            pkt_builder = packet_builder(self.id)
            #            cmd.night_light = False
            cmd.fahrenheit = self.farenheit_unit
            pkt_builder.set_command(cmd)

            data = pkt_builder.finalize()
            data = self._lan_service.appliance_transparent_send(data)
            _LOGGER.debug("apply - Recieved from {}, {}: {}".format(
                self.ip, self.id, data.hex()))
            if len(data) > 0:
                response = appliance_response(data)
                self._support = True
                if not self._defer_update:
                    self.update(response)
        finally:
            self._updating = False
            self._defer_update = False
コード例 #3
0
ファイル: device.py プロジェクト: wpappdev/midea-msmart
    def refresh(self):
        cmd = request_status_command(self.type)
        pkt_builder = packet_builder(self.id)
        pkt_builder.set_command(cmd)

        data = pkt_builder.finalize()
        data = self._lan_service.appliance_transparent_send(data)
        _LOGGER.debug("refresh - Recieved from {}, {}: {}".format(
            self.ip, self.id, data.hex()))
        if len(data) > 0:
            self._online = True
            response = appliance_response(data)
            self._defer_update = False
            self._support = True
            if not self._defer_update:
                if data[0xa] == 0xc0:
                    self.update(response)
                if data[0xa] == 0xa1 or data[0xa] == 0xa0:
                    '''only update indoor_temperature and outdoor_temperature'''
                    _LOGGER.debug(
                        "refresh - Special Respone. {}, {}: {}".format(
                            self.ip, self.id, data[0xa:].hex()))
                    pass
                    # self.update_special(response)
                self._defer_update = False
        else:
            self._online = False
コード例 #4
0
    def apply(self):
        self._updating = True
        try:
            cmd = set_command(self.type)
            cmd.prompt_tone = self._prompt_tone
            cmd.power_state = self._power_state
            cmd.target_temperature = self._target_temperature
            cmd.operational_mode = self._operational_mode.value
            cmd.fan_speed = self._fan_speed.value
            cmd.swing_mode = self._swing_mode.value
            cmd.eco_mode = self._eco_mode
            cmd.turbo_mode = self._turbo_mode
            #            cmd.temp_unit_f()
            print(f"0x09 byte was {cmd.data[0x09]}")

            pkt_builder = packet_builder(self.id)
            pkt_builder.set_command(cmd)

            data = pkt_builder.finalize()
            data = self._lan_service.appliance_transparent_send(data)
            _LOGGER.debug("apply - Recieved from {}, {}: {}".format(
                self.ip, self.id, data.hex()))
            if len(data) > 0:
                response = appliance_response(data)
                if not self._defer_update:
                    self.update(response)
                    print(f"updated device to:{self}")
        finally:
            self._updating = False
            self._defer_update = False
コード例 #5
0
ファイル: device.py プロジェクト: rokam/midea-msmart
 def _process_response(self, data):
     _LOGGER.debug("Update from {}:{} {}".format(self.ip, self.port,
                                                 data.hex()))
     if len(data) > 0:
         self._online = True
         self._active = True
         if data == b'ERROR':
             self._support = False
             _LOGGER.warn("Got ERROR from {}, {}".format(self.ip, self.id))
             return
         response = appliance_response(data)
         self._defer_update = False
         self._support = True
         if not self._defer_update:
             if data[0xa] == 0xc0:
                 self.update(response)
             if data[0xa] == 0xa1 or data[0xa] == 0xa0:
                 '''only update indoor_temperature and outdoor_temperature'''
                 _LOGGER.debug("Update - Special Respone. {}:{} {}".format(
                     self.ip, self.port, data[0xa:].hex()))
                 pass
                 # self.update_special(response)
             self._defer_update = False
     elif not self._keep_last_known_online_state:
         self._online = False
コード例 #6
0
ファイル: device.py プロジェクト: pydog/midea-msmart
    def refresh(self):
        cmd = request_status_command(self.type)
        pkt_builder = packet_builder(self.id)
        pkt_builder.set_command(cmd)

        data = pkt_builder.finalize()
        data = self._lan_service.appliance_transparent_send(data)
        response = appliance_response(data)
        self._defer_update = False
        self.update(response)
コード例 #7
0
    def refresh(self):
        cmd = request_status_command(self.type)
        pkt_builder = packet_builder(self.id)
        pkt_builder.set_command(cmd)

        data = pkt_builder.finalize()
        data = self._lan_service.appliance_transparent_send(data)
        _LOGGER.debug("refresh - Recieved from {}, {}: {}".format(self.ip, self.id, data.hex()))
        response = appliance_response(data)
        self._defer_update = False
        self.update(response)
コード例 #8
0
ファイル: device.py プロジェクト: pydog/midea-msmart
    def refresh(self):
        cmd = request_status_command(self.type)
        pkt_builder = packet_builder()
        pkt_builder.set_command(cmd)

        data = pkt_builder.finalize()
        data = self._lan_service.appliance_transparent_send(self.id, data)
        response = appliance_response(data)
        print("Decoded Data: {}".format({
            'audible_feedback': response.audible_feedback,
            'target_temperature': response.target_temperature,
            'indoor_temperature': response.indoor_temperature,
            'outdoor_temperature': response.outdoor_temperature,
            'operational_mode': response.operational_mode,
            'fan_speed': response.fan_speed,
            'swing_mode': response.swing_mode,
            'eco_mode': response.eco_mode,
            'turbo_mode': response.turbo_mode
        }))
コード例 #9
0
    def refresh(self):
        cmd = request_status_command(self.type)
        pkt_builder = packet_builder(self.id)
        pkt_builder.set_command(cmd)

        data = pkt_builder.finalize()
        data = self._lan_service.appliance_transparent_send(data)
        _LOGGER.debug("refresh - Recieved from {}, {}: {}".format(
            self.ip, self.id, data.hex()))
        if len(data) > 0:
            response = appliance_response(data)
            self._defer_update = False
            self._support = True
            if data[0xa] != 0xc0:
                _LOGGER.debug(
                    "refresh - Not status(0xc0) respone, defer update. {}, {}: {}"
                    .format(self.ip, self.id, data[0xa:].hex()))
                self._defer_update = True
            if not self._defer_update:
                self.update(response)
                self._defer_update = False
コード例 #10
0
ファイル: device.py プロジェクト: pydog/midea-msmart
    def apply(self):
        self._updating = True
        try:
            cmd = set_command(self.type)
            cmd.audible_feedback = self._audible_feedback
            cmd.power_state = self._power_state
            cmd.target_temperature = self._target_temperature
            cmd.operational_mode = self._operational_mode.value
            cmd.fan_speed = self._fan_speed.value
            cmd.swing_mode = self._swing_mode.value
            cmd.eco_mode = self._eco_mode
            cmd.turbo_mode = self._turbo_mode

            pkt_builder = packet_builder(self.id)
            pkt_builder.set_command(cmd)

            data = pkt_builder.finalize()
            data = self._lan_service.appliance_transparent_send(data)
            response = appliance_response(data)
            if not self._defer_update:
                self.update(response)
        finally:
            self._updating = False
            self._defer_update = False
コード例 #11
0
ファイル: pcap-decrypt.py プロジェクト: velaar/midea-ac-py
        if msg_type != args.fiter_type:
            continue

    print("\n### No.{0} {1} {2} => {3}".format(packet.number,
                                               packet.sniff_time,
                                               packet.ip.src, packet.ip.dst))
    if (not ipaddress.ip_address(packet.ip.src).is_private
            or not ipaddress.ip_address(packet.ip.dst).is_private):
        print("NOT LOCAL: packet to/from Midea Cloud")

    print("Message Type:\t %s %s applianceId: -hex: %s -int: %d" %
          (msg_type.upper(), hex(msg_type_hex), device_id,
           convert_device_id_int(device_id)))

    if len(reply) >= 20:
        response = appliance_response(reply)
        print("Decoded Data:\t {}".format({
            'power_state':
            response.power_state,
            'operational_mode':
            get_operational_mode(response.operational_mode),
            'target_temperature':
            response.target_temperature,
            'fan_speed':
            get_fan_speed(response.fan_speed),
            'swing_mode':
            response.swing_mode,
            'eco_mode':
            response.eco_mode,
            'turbo_mode':
            response.turbo_mode,