# PyMitsubishi
[](https://badge.fury.io/py/pymitsubishi)
[](https://pypi.org/project/pymitsubishi/)
[](https://pepy.tech/project/pymitsubishi)
[](https://opensource.org/licenses/MIT)
A Python library for controlling and monitoring Mitsubishi MAC-577IF-2E air conditioners.
## Home Assistant Integration
For Home Assistant users, check out our official integration: [homeassistant-mitsubishi](https://github.com/pymitsubishi/homeassistant-mitsubishi)
## Features
- **Device Control**: Power, temperature, mode, fan speed, and vane direction control
- **Status Monitoring**: Real-time device status, temperatures, and error states
- **Capability Detection**: Dynamic detection of device capabilities using ProfileCode analysis
- **Group Code Analysis**: Advanced protocol analysis for enhanced device understanding
- **Encryption Support**: Full support for Mitsubishi's encryption protocol
## Installation
```bash
pip install pymitsubishi
```
## Quick Start
```python
from pymitsubishi import MitsubishiAPI, MitsubishiController
# Initialize the API and controller
api = MitsubishiAPI(device_ip="192.168.1.100")
controller = MitsubishiController(api=api)
# Fetch device status
if controller.fetch_status():
summary = controller.get_status_summary()
print(f"Power: {summary['power']}")
print(f"Temperature: {summary['target_temp']}°C")
print(f"Mode: {summary['mode']}")
# Control the device
controller.set_power(True)
controller.set_temperature(24.0)
controller.set_mode(DriveMode.COOLER)
# Clean up
api.close()
```
## Advanced Usage
### Capability Detection
```python
from pymitsubishi import CapabilityDetector
detector = CapabilityDetector(api=api)
capabilities = detector.detect_all_capabilities(debug=True)
# Check specific capabilities
if capabilities.has_capability(CapabilityType.OUTDOOR_TEMPERATURE_SENSOR):
print("Device has outdoor temperature sensor")
# Save capabilities for later use
detector.save_capabilities("device_capabilities.json")
```
### ProfileCode Analysis
The library automatically analyzes ProfileCode data from device responses to detect capabilities and device characteristics:
```python
# Fetch status with capability detection
controller.fetch_status(detect_capabilities=True)
# Access detected capabilities
summary = controller.get_status_summary()
if 'capabilities' in summary:
for cap_name, cap_info in summary['capabilities'].items():
print(f"{cap_name}: {cap_info['supported']}")
```
## API Reference
### MitsubishiAPI
Core communication class handling encryption and HTTP requests.
### MitsubishiController
High-level control interface for device operations.
### CapabilityDetector
Advanced capability detection using ProfileCode and group code analysis.
### Data Classes
- `PowerOnOff`: Power state enumeration
- `DriveMode`: Operating mode enumeration
- `WindSpeed`: Fan speed enumeration
- `VerticalWindDirection`, `HorizontalWindDirection`: Vane direction enumerations
## Requirements
- Python 3.12+
- requests
- pycryptodome
## License
MIT License - see LICENSE file for details.
## Contributing
Contributions are welcome! Please see our [Contributing Guidelines](CONTRIBUTING.md) for detailed information on development setup, code standards, and the contribution process.
Raw data
{
"_id": null,
"home_page": null,
"name": "pymitsubishi",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": "Ashleigh Hopkins <ashleigh@example.com>",
"keywords": "mitsubishi, aircon, air conditioner, home automation, MAC-577IF-E",
"author": null,
"author_email": "Ashleigh Hopkins <ashleigh@example.com>",
"download_url": "https://files.pythonhosted.org/packages/59/9f/45a45acbf7276a7d720ae45a8382374748052e43671c45ac79dba1857623/pymitsubishi-0.2.0.tar.gz",
"platform": null,
"description": "# PyMitsubishi\n\n[](https://badge.fury.io/py/pymitsubishi)\n[](https://pypi.org/project/pymitsubishi/)\n[](https://pepy.tech/project/pymitsubishi)\n[](https://opensource.org/licenses/MIT)\n\nA Python library for controlling and monitoring Mitsubishi MAC-577IF-2E air conditioners.\n\n## Home Assistant Integration\n\nFor Home Assistant users, check out our official integration: [homeassistant-mitsubishi](https://github.com/pymitsubishi/homeassistant-mitsubishi)\n\n## Features\n\n- **Device Control**: Power, temperature, mode, fan speed, and vane direction control\n- **Status Monitoring**: Real-time device status, temperatures, and error states\n- **Capability Detection**: Dynamic detection of device capabilities using ProfileCode analysis\n- **Group Code Analysis**: Advanced protocol analysis for enhanced device understanding\n- **Encryption Support**: Full support for Mitsubishi's encryption protocol\n\n## Installation\n\n```bash\npip install pymitsubishi\n```\n\n## Quick Start\n\n```python\nfrom pymitsubishi import MitsubishiAPI, MitsubishiController\n\n# Initialize the API and controller\napi = MitsubishiAPI(device_ip=\"192.168.1.100\")\ncontroller = MitsubishiController(api=api)\n\n# Fetch device status\nif controller.fetch_status():\n summary = controller.get_status_summary()\n print(f\"Power: {summary['power']}\")\n print(f\"Temperature: {summary['target_temp']}\u00b0C\")\n print(f\"Mode: {summary['mode']}\")\n\n# Control the device\ncontroller.set_power(True)\ncontroller.set_temperature(24.0)\ncontroller.set_mode(DriveMode.COOLER)\n\n# Clean up\napi.close()\n```\n\n## Advanced Usage\n\n### Capability Detection\n\n```python\nfrom pymitsubishi import CapabilityDetector\n\ndetector = CapabilityDetector(api=api)\ncapabilities = detector.detect_all_capabilities(debug=True)\n\n# Check specific capabilities\nif capabilities.has_capability(CapabilityType.OUTDOOR_TEMPERATURE_SENSOR):\n print(\"Device has outdoor temperature sensor\")\n\n# Save capabilities for later use\ndetector.save_capabilities(\"device_capabilities.json\")\n```\n\n### ProfileCode Analysis\n\nThe library automatically analyzes ProfileCode data from device responses to detect capabilities and device characteristics:\n\n```python\n# Fetch status with capability detection\ncontroller.fetch_status(detect_capabilities=True)\n\n# Access detected capabilities\nsummary = controller.get_status_summary()\nif 'capabilities' in summary:\n for cap_name, cap_info in summary['capabilities'].items():\n print(f\"{cap_name}: {cap_info['supported']}\")\n```\n\n## API Reference\n\n### MitsubishiAPI\n\nCore communication class handling encryption and HTTP requests.\n\n### MitsubishiController\n\nHigh-level control interface for device operations.\n\n### CapabilityDetector\n\nAdvanced capability detection using ProfileCode and group code analysis.\n\n### Data Classes\n\n- `PowerOnOff`: Power state enumeration\n- `DriveMode`: Operating mode enumeration\n- `WindSpeed`: Fan speed enumeration\n- `VerticalWindDirection`, `HorizontalWindDirection`: Vane direction enumerations\n\n## Requirements\n\n- Python 3.12+\n- requests\n- pycryptodome\n\n## License\n\nMIT License - see LICENSE file for details.\n\n## Contributing\n\nContributions are welcome! Please see our [Contributing Guidelines](CONTRIBUTING.md) for detailed information on development setup, code standards, and the contribution process.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Control and monitor Mitsubishi Air Conditioners",
"version": "0.2.0",
"project_urls": {
"Documentation": "https://github.com/pymitsubishi/pymitsubishi#readme",
"Homepage": "https://github.com/pymitsubishi/pymitsubishi",
"Issues": "https://github.com/pymitsubishi/pymitsubishi/issues",
"Repository": "https://github.com/pymitsubishi/pymitsubishi.git"
},
"split_keywords": [
"mitsubishi",
" aircon",
" air conditioner",
" home automation",
" mac-577if-e"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "c11f2530b4ca7775e94e739d326188c625f6e70501aced3a9ade3f270fd69e2c",
"md5": "7ec7c611ab21cf2e370fbf0bc8b27be7",
"sha256": "318f319767e3067c7d0105d5b2f9f06f4fd8a99155241db4842034a623b5dcd6"
},
"downloads": -1,
"filename": "pymitsubishi-0.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "7ec7c611ab21cf2e370fbf0bc8b27be7",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 24871,
"upload_time": "2025-08-09T19:21:40",
"upload_time_iso_8601": "2025-08-09T19:21:40.658738Z",
"url": "https://files.pythonhosted.org/packages/c1/1f/2530b4ca7775e94e739d326188c625f6e70501aced3a9ade3f270fd69e2c/pymitsubishi-0.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "599f45a45acbf7276a7d720ae45a8382374748052e43671c45ac79dba1857623",
"md5": "cefd8f5c73dce89863108d0596ed1f66",
"sha256": "22cd5b9131b7fd59647d5f56daf3b987ae4716259a6334136edf56272d19df7b"
},
"downloads": -1,
"filename": "pymitsubishi-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "cefd8f5c73dce89863108d0596ed1f66",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 33652,
"upload_time": "2025-08-09T19:21:41",
"upload_time_iso_8601": "2025-08-09T19:21:41.856533Z",
"url": "https://files.pythonhosted.org/packages/59/9f/45a45acbf7276a7d720ae45a8382374748052e43671c45ac79dba1857623/pymitsubishi-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-09 19:21:41",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pymitsubishi",
"github_project": "pymitsubishi#readme",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "requests",
"specs": []
},
{
"name": "pycryptodome",
"specs": []
}
],
"lcname": "pymitsubishi"
}