Very simple (for now) library to manipulate the basic parameters of the Haier heat pump.
If you like My work and want to support me, you can:
Or if you from Poland:
For support, join our Discord channel https://discord.gg/7aF38puD
- Daniel Mentel he found all information from functions added in 0.2.1 and 0.2.2 version
- new function GetThiTho by Daniel Mentel
- fixed functions GetTao, GetTdTs, SetCHTemp
- few fixed for GetTdTs and GetPump functions
- add error handling when frame passed to function has bad length
- one more fix
- few more fix
- one more fix
- fix function name
- add GetPump function to show if buildin pump is on or off
- add Get3way function to show what position the 3-way valve is in
- some fixes
- use divmod
- add GetTdTs function showing Td and Ts parameters as array
- add GetPdPs function showing current and set Pd parameter (for now only Pd) as array
- add GetFanRpm function showing Fan1 and Fan2 rpm, as array
- add GetTao function showwing ambient temperatura
- rename GetCompFreq function to GetCompInfo and add to this function other information like temperature, voltage and current about compressor, display as array
- add GetCompFreq function showing current and set compressor frequency
- add GetArchError function showing three archive errors as array
- add GetEEVLevel function showing current EEV opening level
- rename 'silent' to 'quiet' in GetMode and SetMode function to be consistent with haier nomenclature
- fix for SetState. Now turning on/off emulate "leaf" button on YR-e27
- fix for previous fix :D
- fix turning on pump in SetState function
- Just for pip upload
- More error handling
- Update in error handling
New function
- Add function to read Compressor frequency
New function:
- Get value of Twi and Two parameters (not 100% sure if this is OK.)
New function:
- Get current DHW tank temperature
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
- AU082FYCRA(HW)
- AU162FYCRA(HW)
However, it should work with all pumps that feature the YR-e27 remote control
Install from pip
$ pip install PyHaier
Install from source
$ git clone https://github.com/ktostam/PyHaier.git
$ cd PyHaier
$ python setup.py install
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
Display current Mode (ECO/Silent/Turbo).
You need provide payload for GetMode function. payload is the contents of holding register 201
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
Display current DHW temperature with precision 1°C
You need provide payload for GetMode function. payload is the contents of holding registers 101-106
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
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
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 CoolH
for HeatT
for TankCT
for Cool+TankHT
for Heat+Tank
Set mode (eco/silent/turbo).
You need provide new for SetMode function. new can be:
eco
silent
turbo
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
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
Display set and actual compressor frequency, output is an array
You need provide payload for GetCompFreq function. payload is the contents of holding registers 241-261
Display archve error codes, output is an array
You need provide payload for GetArchError function. payload is the contents of holding registers 241-261
Display actual EEV opening level
You need provide payload for GetEEVLevel function. payload is the contents of holding registers 241-261
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))
$ python script.py
Pump status: Heat+Tank ON
Pump mode: silent
Water temp: 25.0
DHW temp: 43.0
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()
$ python script.py
Current stete: Heat+Tank ON
New state: Cool+Tank ON
GNU GPL ©Jacek Brzozowski