EtienneR
(Etienne)
May 28, 2024, 9:01pm
1
Hi there,
If anyone interested, I was able to create climate entity from PC1002 pool heatpump board using Modbus.
Most of the information come from either this pdf https://www.oasisheatpumps.com/pdf/Technical_Manual_Pool_inverter_of_PC1002_2019.pdf or comparing registers after changer a settings on display.
If you think I am missing something, please share.
Modbus is done using a EW11 RS485 to Wifi gateway
modbus:
- name: modbus_pool
type: tcp
host: 172.30.30.21
port: 9999
climates:
- name: "Piscine"
input_type: holding
address: 2046
slave: 1
hvac_mode_register:
address: 1019
values:
state_cool: 0
state_auto: 1
state_heat: 2
fan_mode_register:
address: 1076
values:
state_fan_low: 1
state_fan_auto: 0
hvac_onoff_register: 1011
target_temp_register: 1136
max_temp: 35
min_temp: 15
offset: 0
precision: 1
scale: 0.1
temp_step: 0.5
temperature_unit: C
If you have any question, feel free to ask.
Etienne
Eric_EPA
(eric_epa)
June 4, 2024, 11:48am
2
Hello Etienne,
I’ve been looking for this solution for a long time now, could you show me the configuration for home assistant, and tell me exactly how to set up this configuration. ?
Thank you very much
EtienneR
(Etienne)
June 4, 2024, 4:42pm
3
Hi Eric,
You need a RS485 to Wifi gateway (like Elfin EW11 https://www.aliexpress.com/item/32916950283.html ).
You then connect it to your heatpump RS485 (I used a cat5 cable)
Follow intruction in EW11 manual to configure it (basically connect it to your Wifi)
Then configure Serial settings as this :
And Communications Settings as this :
And finally add this to your configuration.yaml (edit IP address according to yours)
modbus:
- name: modbus_pool
type: tcp
host: 172.30.30.21
port: 9999
climates:
- name: "Pool"
input_type: holding
address: 2046
slave: 1
hvac_mode_register:
address: 1019
values:
state_cool: 0
state_heat_cool: 1
state_heat: 2
fan_mode_register:
address: 1076
values:
state_fan_low: 1
state_fan_auto: 0
hvac_onoff_register: 1011
target_temp_register: 1136
max_temp: 35
min_temp: 15
offset: 0
precision: 1
scale: 0.1
temp_step: 1
temperature_unit: C
sensors:
- name: "Pool Ambiant Temperature"
slave: 1
address: 2049
data_type: int16
input_type: holding
scale: 0.1
offset: 0
precision: 1
device_class: temperature
state_class: measurement
unit_of_measurement: '..C'
- name: "Pool Water Outlet Temperature"
slave: 1
address: 2047
data_type: int16
input_type: holding
scale: 0.1
offset: 0
precision: 1
device_class: temperature
state_class: measurement
unit_of_measurement: '..C'
- name: "Pool Fan Speed"
slave: 1
address: 2061
data_type: int16
input_type: holding
scale: 0.1
offset: 0
precision: 1
state_class: measurement
unit_of_measurement: 'RPM'
- name: "Pool Condenser Current"
slave: 1
address: 2022
data_type: int16
input_type: holding
state_class: measurement
unit_of_measurement: 'A'
This will create a standard entity climate and few other sensors to monitor things around like ambiant temperature, water outlet temperature, fan speed and Condenser Current (which can be use to track heatpump running or not).
Eric_EPA
(eric_epa)
June 4, 2024, 6:34pm
4
Hello,
I have been looking to do this for a long time. I will order the EW11 and I will come back to you to give you news of my installation
really, thank you
Eric
EtienneR
(Etienne)
June 11, 2024, 6:13pm
5
For those interested, I create a MQTT using modbus4mqtt and MQTT HVAC Integration
The advantage is with this integration, you can use HVACAction which tells us current state of HVAC (heating, cooling, off, idle, etc) instead of only preset mode.
modbus4mqtt configuration (pc1002.yaml):
ip: 172.30.30.21
port: 9999
update_rate: 1
scan_batching: 1
registers:
- pub_topic: "pool/hvac"
address: 1019
type: int16
table: 'holding'
pub_only_on_change: false
json_key: mode
value_map:
cool: 0
auto: 1
heat: 2
- pub_topic: "pool/hvac"
address: 1011
type: int16
table: 'holding'
pub_only_on_change: false
json_key: power
value_map:
off: 0
on: 1
- pub_topic: "pool/hvac"
address: 1136
type: int16
table: 'holding'
scale: 0.1
pub_only_on_change: false
json_key: temp_target
- pub_topic: "pool/hvac"
address: 2046
type: int16
table: 'holding'
scale: 0.1
pub_only_on_change: false
json_key: temp_inlet
- pub_topic: "pool/hvac"
address: 2047
type: int16
table: 'holding'
scale: 0.1
pub_only_on_change: false
json_key: temp_outlet
- pub_topic: "pool/hvac"
address: 2049
type: int16
table: 'holding'
scale: 0.1
pub_only_on_change: false
json_key: temp_ambient
- pub_topic: "pool/hvac"
address: 2061
type: int16
table: 'holding'
scale: 0.1
pub_only_on_change: false
json_key: fan_speed
- pub_topic: "pool/hvac"
address: 1076
type: int16
table: 'holding'
pub_only_on_change: false
json_key: fan_mode
value_map:
auto: 0
low: 1
- pub_topic: "pool/hvac"
address: 2022
type: int16
table: 'holding'
pub_only_on_change: false
json_key: condenser_current
- set_topic: "pool/hvac/fan/set"
address: 1076
type: int16
table: 'holding'
value_map:
auto: 0
low: 1
- set_topic: "pool/hvac/mode/set"
address: 1019
type: int16
table: 'holding'
value_map:
cool: 0
auto: 1
heat: 2
- set_topic: "pool/hvac/power/set"
address: 1011
type: int16
table: 'holding'
value_map:
off: 0
on: 1
- set_topic: "pool/hvac/target/set"
address: 1136
type: int16
table: 'holding'
scale: 0.1
Home Assistant (configuration.yaml)
mqtt:
climate:
- name: Pool
unique_id: pool
current_temperature_topic: "modbus4mqtt/pool/hvac"
current_temperature_template: "{{ value_json.temp_inlet }}"
fan_modes:
- "auto"
- "low"
fan_mode_state_topic: "modbus4mqtt/pool/hvac"
fan_mode_state_template: "{{ value_json.fan_mode }}"
fan_mode_command_topic: "modbus4mqtt/pool/hvac/fan/set"
icon: mdi:pool-thermometer
max_temp: 35
min_temp: 15
modes:
- "auto"
- "cool"
- "heat"
- "off"
mode_state_topic: "modbus4mqtt/pool/hvac"
mode_state_template: "{{ 'off' if 'off' in value_json.power else value_json.mode }}"
mode_command_topic: "modbus4mqtt/pool/hvac/mode/set"
power_command_topic: "modbus4mqtt/pool/hvac/power/set"
payload_off: "off"
payload_on: "on"
action_topic: "modbus4mqtt/pool/hvac"
action_template : >-
{% if value_json.condenser_current|int > 0 %}
{% if (value_json.temp_inlet|int < value_json.temp_outlet|int and value_json.mode == 'auto') or value_json.mode == 'heat' %}
heating
{% elif (value_json.temp_inlet|int > value_json.temp_outlet|int and value_json.mode == 'auto') or value_json.mode == 'cool' %}
cooling
{% endif %}
{% elif value_json.power == 'off' %}
off
{% else %}
idle
{% endif %}
temperature_state_topic: "modbus4mqtt/pool/hvac"
temperature_state_template: "{{ value_json.temp_target }}"
temperature_command_topic: "modbus4mqtt/pool/hvac/target/set"
temperature_unit: C
temp_step: 0.1
sensor:
- name: Pool Fan Speed
state_topic: modbus4mqtt/pool/hvac
unit_of_measurement: 'RPM'
state_class: measurement
value_template: "{{ value_json.fan_speed }}"
icon: mdi:fan
- name: Pool Ambient Temperature
state_topic: modbus4mqtt/pool/hvac
unit_of_measurement: '..C'
state_class: measurement
value_template: "{{ value_json.temp_ambient }}"
icon: mdi:pool-thermometer
- name: Pool Outlet Temperature
state_topic: modbus4mqtt/pool/hvac
unit_of_measurement: '..C'
state_class: measurement
value_template: "{{ value_json.temp_outlet }}"
icon: mdi:thermometer
Then for turning off automatically when choosing mode off or tuning on if other mode I create this automation :
alias: Pool - ON/OFF
description: Pool - ON/OFF
trigger:
- platform: mqtt
topic: modbus4mqtt/pool/hvac/mode/set
payload: "off"
id: "off"
- platform: mqtt
topic: modbus4mqtt/pool/hvac/mode/set
payload: heat
- platform: mqtt
topic: modbus4mqtt/pool/hvac/mode/set
payload: cool
- platform: mqtt
topic: modbus4mqtt/pool/hvac/mode/set
payload: auto
condition: []
action:
- if:
- condition: trigger
id:
- "off"
then:
- service: climate.turn_off
metadata: {}
data: {}
target:
entity_id: climate.pool
else:
- service: climate.turn_on
metadata: {}
data: {}
target:
entity_id: climate.pool
mode: single
Eric_EPA
(eric_epa)
June 14, 2024, 2:23pm
6
Hello Etienne,
Hello,
I haven’t received my EW11 yet, I hope it arrives quickly
to test all of this.
thank you and I will come back to you
Eric
Eric_EPA
(eric_epa)
June 17, 2024, 1:28pm
7
Hello Etienne,
I received my EW11, I plugged it in following your instructions.
I also added the information in the home assistant configuration file, but home assistant cannot retrieve the information, I see the home assistant IP in the communicate state tab on EW11
“here is the error” Enregistreur: homeassistant.components.modbus.modbus
Source: components/modbus/modbus.py:331
intégration: Modbus (documentation , problèmes )
S’est produit pour la première fois: 13:53:12 (1 occurrences)
Dernier enregistrement: 13:53:12
Pymodbus: modbus_pool: Error: device: 1 address: 1136 → Modbus Error: [Input/Output] ERROR: No response received after 3 retries"
do you have any idea about my problem?
quick question do you speak French?:
EtienneR
(Etienne)
June 27, 2024, 1:05pm
9
Salut Eric, désolé je reçois pas de courriel quand quelqu’un m’écrit ici…
Ça veut dire qu’il est pas capable de recevoir la réponse de l’équipement. Le mieux serait de faire des tests avec un logiciel de polling modubus être certains que le coté modbus fonctionne bien (j’utilise personnellement ModbusMaster). Je soupconne soit que le TX/RX est inversé ou un problème de config coté EW11
Eric_EPA
(eric_epa)
July 1, 2024, 9:50am
10
J’ai essayé d’inverser TX/RX ca ne va pas mieux, et avec modbusmaster, j’ai dans les logs IO erreur, …
Je viens de commander un adaptateur USB/RS485 pour faire un test et eliminer un problème avec EW11.
Je te tien au courant, pourrait on échanger par mail ou autre ? car pareil je n’ai pas de notification…
MErci
Eric
dbaldwin
(David Baldwin )
July 19, 2024, 7:01am
11
Bonjour,
Je cherche le pdf ci-dessus, impossible de le telecharger. Merci!
David
EtienneR
(Etienne)
July 25, 2024, 5:58pm
12
Quel PDF??? Celui de Oasis? Ça fonctionne moi je suis capable de l’ouvrir et le sauvegarder.
dbaldwin
(David Baldwin )
August 8, 2024, 4:59pm
13
Bonjour Etienne,
Je n’ai pas reçu de notification de message, rhaaa
Le PDF sur le site d’Oasis ci-dessus, toujours timeout depuis lors.
David
EtienneR
(Etienne)
August 8, 2024, 5:14pm
14
Ya un soucis de ton coté, je viens encore d’ouvrir le PDF sans problème. Malheureusement je ne peux pas attacher de PDF dans le forum.
Essaie avec un autre serverur DNS ou un VPN peut-ĂŞtre?
dbaldwin
(David Baldwin )
August 11, 2024, 3:57pm
15
Salut,
Je suis en france et la ca passe. J’avoue que je n’ai pas essayé depuis la belgique avec un vpn. J’essaierai en rentrant. Merci pour les conseils.
Une petite question: je ne trouve aucune integration modbus4mqtt. Modbus2mqtt bien. Sur gitlab je trouve bien modbus4mqtt cependant. Comment ajouter ceci?
Merci d’avance! Et encore désolé pour les questions bêtes. Pourquoi ne pas faire un esphome qui poll la PAC en modbus plutot?
David
EtienneR
(Etienne)
August 15, 2024, 12:53pm
16
Blockquote
Une petite question: je ne trouve aucune integration modbus4mqtt. Modbus2mqtt bien. Sur gitlab je trouve bien modbus4mqtt cependant. Comment ajouter ceci?
Je ne crois pas qu’il existe d’intégration HACS, il faut utiliser docker ou podman. Je te conseil fortement de te familiariser avec docker, tu seras beaucoup moins limité qu’en te fiant uniquement aux intégrations déjà toutes faites.
Blockquote
Merci d’avance! Et encore désolé pour les questions bêtes. Pourquoi ne pas faire un esphome qui poll la PAC en modbus plutot?
Ce serait tout à fait possible, j’ai tout simplement utilisé ce que je considérais comme le plus simple/basic possible et que j’avais disponible sous la main. J’ai trouvé le pdf assez tard dans mes démarches aussi, donc au début je n’était vraiment pas certains que ça fonctionnerait donc je ne voulais pas trop investir de temps et de $$$. Aussi, le but était de mettre le tout dans la thermpompe et “l’oublier” là , tout en considérant qu’ici il faut 30° en été et -30° en hiver.
dbaldwin
(David Baldwin )
August 15, 2024, 2:23pm
17
Etienne,
Merci pour ta reponse.
Je me demandais juste si la solution mqtt te permettait d’avoir les modes, mais je vois que le climate standard le permet aussi, je vais essayer.
Ensuite je suis sur raspberry pi 5 et haos, marre de gerer des linux de tous types, docker pas de souci. Les backups,… et restore et autre sont très bien foutus avec haos, tu prends un autre raspi et hop c’est fini. J’ai assez de serveurs et malgré portainer et autre ca me fatigue
Ou es-tu que tu aies -30 en hiver? En belgique on va de -20 à +35 mais la piscine ce n’est que de mai à octobre… Le reste, en hivernage, la PAC vidée.
Quelle marque as-tu? Il y en a beaucoup avec le PC1002 chinois apparemment. Chez moi elle est en bas d’un talus, cachée je pensais deporter l’ecran (modbus aussi donc) mais j’ai la flemme… pas envie de faire l’integration mecanique.
Pour info je fais une electronique custom pour gerer TOUTE la piscine, de mon variateur de frequence aux mesures (ph, orp, temperature, tds, pression filtration, debit,…), en passant par les lumieres, volet,… plus envie de telecommandes inutiles et impossible (à part rfxcom) à controler avec un vrai retour d’etat.
Si tu veux un hardware j’en produis un de plus…
David
EtienneR
(Etienne)
August 15, 2024, 6:04pm
18
Oui oui j’ai l’état pas juste le preset avec le thermostat générique.
La piscine est fermée de Octobre à Avril, mais pour hiverner je fais juste vider les tuyau, retirer la cellule du chlorinateur et la cartouche du filtre. La marque c’est Hayward, un gros fabricant ici, mais je crois que c’est juste en Amérique. Mais tser ils réinvente pas la roue, ils sourcent les pièces à gauche et à droite.
Pierre85
(Pierre)
February 14, 2025, 5:07pm
19
Bonjour,
J’ai bien suivi ce sujet et j’ai utilisé un EW11
J’ai bien les remontées, mais en version simple avec Climates, je ne peux à priori rien modifier sur la configuration de la PAC ?
Est ce normal ou non ?
Impossible d’avoir le pdf “oasis” également …
Donc je suis preneur de toutes infos
(PAC Hayward)
Pierre
EtienneR
(Etienne)
February 26, 2025, 8:08pm
20
Bonjour Pierre,
De mon coté je suis capable de lire et écrire. Pour ce qui est du pdf, OASIS semble effectivement l’avoir retiré de leur site web.
Tu peux tenter de leur envoyer un courriel peut-ĂŞtre?