Skip to main content

Very simple library to manipulate the basic parameters of the Haier heat pump.

Project description

PyHaier

Very simple (for now) library to manipulate the basic parameters of the Haier heat pump.

Donation

If you like My work and want to support me, you can:

Or if you from Poland:

Support

For support, join our Discord channel https://discord.gg/7aF38puD

Version

0.1.7

  • fix turning on pump in SetState function

0.1.6

  • Just for pip upload

0.1.5

  • More error handling

0.1.4

  • Update in error handling

0.1.3

New function

  • Add function to read Compressor frequency

0.1.2

New function:

  • Get value of Twi and Two parameters (not 100% sure if this is OK.)

0.1.1

New function:

  • Get current DHW tank temperature

0.1.0

Basic function:

  • Get current state
  • Get current mode
  • Get current Heating temperature
  • Get current DHW temperature
  • Set state
  • Set mode
  • Set Heating temperature
  • Set DHW temperature

Tested with

  1. AU082FYCRA(HW)
  2. AU162FYCRA(HW)

However, it should work with all pumps that feature the YR-e27 remote control

Instalation

Install from pip

$ pip install PyHaier

Install from source

$ git clone https://github.com/ktostam/PyHaier.git
$ cd PyHaier
$ python setup.py install

Usage

PyHaier.GetState(payload)

Display current state (Cool/Heat/Tank/Cool+Tank/Heat+Tank/Off).

You need provide payload for GetState function. payload is the contents of holding registers 101-106


PyHaier.GetMode(payload)

Display current Mode (ECO/Silent/Turbo).

You need provide payload for GetMode function. payload is the contents of holding register 201


PyHaier.GetCHTemp(payload)

Display current water temperature with precision 0.5°C

You need provide payload for GetMode function. payload is the contents of holding registers 101-106


PyHaier.GetDHWTemp(payload)

Display current DHW temperature with precision 1°C

You need provide payload for GetMode function. payload is the contents of holding registers 101-106


PyHaier.GetDHWCurTemp(payload)

Display current DHW temperature in Tank with precision 0.1°C

You need provide payload for GetDHWCurTemp function. payload is the contents of holding registers 141-156


PyHaier.GetTwiTwo(payload)

Display Twi and Two parameters with precision 0.1°C, output is an array

You need provide payload for GetTwiTwo function. payload is the contents of holding registers 141-156


PyHaier.SetState(current,new)

Create Modbus frame to set new pump state

You need provide payload for SetState function. payload is the contents of holding registers 101-106

new can be:

  • off
  • on
  • C for Cool
  • H for Heat
  • T for Tank
  • CT for Cool+Tank
  • HT for Heat+Tank

PyHaier.SetMode(new)

Set mode (eco/silent/turbo).

You need provide new for SetMode function. new can be:

  • eco
  • silent
  • turbo

PyHaier.SetCHTemp(current, new)

Set water temperature with precision 0.5°C

You need provide current for SetCHTemp function. current is the contents of holding registers 101-106

new is new temperature with precision 0.5°C


PyHaier.SetDHWTemp(current, new)

Set DHW temperature with precision 1°C

You need provide current for SetDHWTemp function. current is the contents of holding registers 101-106

new is new temperature with precision 1°C

Example script 1

from pymodbus.client.sync import ModbusSerialClient
import PyHaier

# Serial setting
client = ModbusSerialClient(method = "rtu", port="/dev/ttyAMA0", stopbits=1, bytesize=8, parity='E', baudrate=9600)

# connect to serial
client.connect()

#read holding registers from 101 to 106
payload=client.read_holding_registers(101, 6, unit=17)
state=PyHaier.GetState(payload.registers)
htemp=PyHaier.GetCHTemp(payload.registers)
dhwtemp=PyHaier.GetDHWTemp(payload.registers)
payload=client.read_holding_registers(201, 1, unit=17)
mode=PyHaier.GetMode(payload.registers)
client.close()
print("Pump status:\t"+state+"\nPump mode:\t"+mode+"\nWater temp:\t"+str(htemp)+"\nDHW temp:\t"+str(dhwtemp))

Output

$ python script.py
Pump status:	Heat+Tank ON
Pump mode:	silent
Water temp:	25.0
DHW temp:	43.0

Example script 2

from pymodbus.client.sync import ModbusSerialClient
import PyHaier

# Serial setting
client = ModbusSerialClient(method = "rtu", port="/dev/ttyAMA0", stopbits=1, bytesize=8, parity='E', baudrate=9600)

# connect to serial
client.connect()

#read holding registers from 101 to 106
payload=client.read_holding_registers(101, 6, unit=17)
state=PyHaier.GetState(payload.registers)
print("Current state:\t"+state)
new=PyHaier.SetState(payload.registers,"CT")
client.write_registers(101, new , unit=17)
payload=client.read_holding_registers(101, 6, unit=17)
state=PyHaier.GetState(payload.registers)
print("New state:\t"+state)
client.close()

Output

$ python script.py
Current stete:	Heat+Tank ON
New state:	Cool+Tank ON

License

GNU GPL ©Jacek Brzozowski

Project details


Download files

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

Source Distribution

PyHaier-0.1.7.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

PyHaier-0.1.7-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file PyHaier-0.1.7.tar.gz.

File metadata

  • Download URL: PyHaier-0.1.7.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for PyHaier-0.1.7.tar.gz
Algorithm Hash digest
SHA256 0eb73c5c8e9425a59567d15daacd8dfad94a6ea9f09cd0acb7773b0cca1a46aa
MD5 1b8e41c2c95fb41d116103d885dc11d6
BLAKE2b-256 efe8369ef54cf2fbf7424331dbb63f78aa8c6b10497d830b54886f85fd598cb5

See more details on using hashes here.

File details

Details for the file PyHaier-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: PyHaier-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for PyHaier-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 a0cda6b37cb99c252682c85d5fe62fe251a83a7b8ea2f5b7ac9b0d457513022d
MD5 42c9112d0540e522f514e6feea3cd917
BLAKE2b-256 8782342564f8dd5594b2d9e1b2b4ce49608a7cbfdfeb7cd5c9e6cee367d0ef5a

See more details on using hashes here.

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