Skip to main content

A library for interfacing via the ECHONETlite protocol.

Project description

Pychonet

GitHub Release License Project Maintenance BuyMeCoffee

A library for interfacing with the ECHONETlite protocol as commonly used in Japan. Useful for interfacing to many interesting devices such as HVACs, electric car chargers and solar systems that support ECHONETLite.

It is specifically designed for use with Home Assistant, and its functionality is currently limited to HVAC systems, but it can easily be extended to other ECHONETlite applications and be used as a general purpose library.

The basic boilerplate EchoNetInstance can be used to provide raw connectivity to any compatible device but it is up to the developer to create useful classes. Any additions to the library are welcome.

It is designed to work with Python 3.9.5+

Instructions

Simplest way to install is to use pip:

pip install pychonet

Basic usage

Discover a list of ECHONETlite instances using:

import pychonet as echonet
echonet_instances = echonet.discover()
print(echonet_instances)
[{'netaddr': '192.168.1.6', 'eojgc': 1, 'eojcc': 48, 'eojci': 1, 'group': 'Air conditioner-related device group', 'code': 'Home air conditioner'}]

Create a HVAC ECHONETlite instance

aircon = echonet.HomeAirConditioner("192.168.1.6")

### Turn HVAC on or off:
```python
aircon.on()
aircon.off()
aircon.getOperationalStatus()
{'status': 'off'}

Set or Get a HVACs target temperature

aircon.setOperationalTemperature(25)
aircon.getOperationalTemperature()
{'set_temperature': 25}

Set or Get a HVACs mode of operation:

supported modes =  'auto', 'cool', 'heat', 'dry', 'fan_only', 'other'

aircon.setMode('cool')
aircon.getMode()
{'mode': 'cool'}

Set or Get a HVACs fan speed:

Note - your HVAC may not support all fan speeds.

supported modes = 'auto', 'minimum', 'low', 'medium-Low', 'medium', 'medium-high', 'high', 'very high', 'max'

aircon.setFanSpeed('medium-high')
aircon.getFanSpeed()
{'fan_speed': 'medium-high'}

Get HVAC attributes at once:

aircon.update()
{'status': 'On', 'set_temperature': 25, 'fan_speed': 'medium-high', 'room_temperature': 25, 'mode': 'cooling'}

Using this library with Home Assistant

NOTE: For Home Assistant users there is now a dedicated repo for the related Home Assistant 'Mitsubishi' custom component that makes use of this Python library: (https://github.com/scottyphillips/mitsubishi_hass)

'example_hvac.py' gives you an idea how to drive a HVAC directly from Python using this library.

Thanks

Thanks to Jeffro Carr who inspired me to write my own native Python ECHONET library for Home Assistant. I could not get his Node JS Docker container to work properly on Hass.io :-) Some ideas in his own repo got implemented in my own code. (https://github.com/jethrocarr/echonetlite-hvac-mqtt-service.git)

Also big thanks to Futomi Hatano for open sourcing a high quality and extremely well documented ECHONET Lite library in Node JS that formed the basis of my reverse engineering efforts. (https://github.com/futomi/node-echonet-lite)

License

This application is licensed under an MIT license, refer to LICENSE for details.


Project details


Release history Release notifications | RSS feed

This version

1.0.3

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pychonet-1.0.3.tar.gz (25.5 kB view hashes)

Uploaded Source

Built Distribution

pychonet-1.0.3-py3-none-any.whl (25.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page