Paramétrage pompe à chaleur Caliente

Sous forum dédié au plugin MQTTMAPPER de FlyingDomotic
Merci de poster vous questions concernant ce plugin ici et non pas dans le forum MQTT directement
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Paramétrage pompe à chaleur Caliente

Message par knasson »

Bonjour,
je m'interesse a ce plugin car je voudrai integrer une pompe a chaleur de marque Caliente qui est en fait est une pompe chinoise, gerée par l'appli wifi AlsavoPro.
l'appli et la pompe me donne entiere satisfaction , j'en suis même un peu etonné...
Sur Le github on trouve l'appli AlsavoCtrl qui recupere toutes les données de la pompe (travail de reverse engineering de Mikko Standborg)https://github.com/strandborg/AlsavoCtrl.git .
voila ce que me fournit la sortie de ce programme python apres compilation comme indiqué dans le github.
/home/alsavo/status/16={"type":"status", "index":16, "value":23.4}
/home/alsavo/status/17={"type":"status", "index":17, "value":23.5}
/home/alsavo/status/18={"type":"status", "index":18, "value":19.0}
/home/alsavo/status/19={"type":"status", "index":19, "value":0.0}
/home/alsavo/status/20={"type":"status", "index":20, "value":18.5}
/home/alsavo/status/21={"type":"status", "index":21, "value":28.0}
/home/alsavo/status/22={"type":"status", "index":22, "value":0}
/home/alsavo/status/23={"type":"status", "index":23, "value":18.8}
/home/alsavo/status/24={"type":"status", "index":24, "value":0.0}
/home/alsavo/status/25={"type":"status", "index":25, "value":350}
/home/alsavo/status/26={"type":"status", "index":26, "value":0}
/home/alsavo/status/27={"type":"status", "index":27, "value":0}
/home/alsavo/status/33={"type":"status", "index":33, "value":0}
/home/alsavo/status/34={"type":"status", "index":34, "value":0}
/home/alsavo/status/48={"type":"status", "index":48, "value":0}
/home/alsavo/status/49={"type":"status", "index":49, "value":0}
/home/alsavo/status/50={"type":"status", "index":50, "value":0}
/home/alsavo/status/51={"type":"status", "index":51, "value":0}
/home/alsavo/status/53={"type":"status", "index":53, "value":0}
/home/alsavo/status/54={"type":"status", "index":54, "value":0}
/home/alsavo/status/55={"type":"status", "index":55, "value":41.0}
/home/alsavo/status/56={"type":"status", "index":56, "value":6.0}
/home/alsavo/status/64={"type":"status", "index":64, "value":0}
/home/alsavo/status/65={"type":"status", "index":65, "value":5905}
/home/alsavo/status/66={"type":"status", "index":66, "value":4391}
/home/alsavo/status/67={"type":"status", "index":67, "value":5905}
/home/alsavo/status/68={"type":"status", "index":68, "value":4391}
/home/alsavo/config/1={"type":"config", "index":1, "value":280}
/home/alsavo/config/2={"type":"config", "index":2, "value":189}
/home/alsavo/config/3={"type":"config", "index":3, "value":250}
/home/alsavo/config/4={"type":"config", "index":4, "value":26}
/home/alsavo/config/5={"type":"config", "index":5, "value":0}
/home/alsavo/config/6={"type":"config", "index":6, "value":50}
/home/alsavo/config/7={"type":"config", "index":7, "value":350}
/home/alsavo/config/8={"type":"config", "index":8, "value":500}
/home/alsavo/config/9={"type":"config", "index":9, "value":-70}
/home/alsavo/config/10={"type":"config", "index":10, "value":200}
/home/alsavo/config/11={"type":"config", "index":11, "value":0}
/home/alsavo/config/12={"type":"config", "index":12, "value":40}
/home/alsavo/config/13={"type":"config", "index":13, "value":12}
/home/alsavo/config/14={"type":"config", "index":14, "value":30}
/home/alsavo/config/15={"type":"config", "index":15, "value":-20}
/home/alsavo/config/16={"type":"config", "index":16, "value":1}
/home/alsavo/config/17={"type":"config", "index":17, "value":6}
/home/alsavo/config/32={"type":"config", "index":32, "value":2844}
/home/alsavo/config/33={"type":"config", "index":33, "value":0}
le mapping est le suivant..

16 = Water in temp
17 = Water out temp

18 = Ambient temperature
19 = "Cold pipe temperature"
20 = "Heating pipe temperature"
21 = IPM module temperature
22 = Fan speed (RPM)
23 = Exhaust temperature
24 = Compressor input temperature? Always zero for me.
25 = Electronic exhaust valve opening setting, Range: 0-450'ish
26 = Compressor current in amps
27 = Compressor running frequency
33 = Compressor speed setting (0 = off, 1 = P1 40Hz, 5 = P5 82Hz)
34 = Frequency limit code
48 = Alarm code 1
49 = Alarm code 2
50 = Alarm code 3
51 = Alarm code 4
52 = System status code (0 in heating operation)(non transmis)
53 = System running code (3 = heating operation, 0 = defrost)
54 = Device status code (43 = heating operation, 175 = defrost)
55 = Heating max temperature
56 = Cooling min temperature
64 = Device type
65 = Main board HW revision
66 = Main board SW revision
67 = Manual HW code
68 = Manual SW code


Config params:

1 = Heating mode target temp
2 = Cooling mode target temp
3 = Auto mode target temp
4 = System config bitmask 1 (See below)
5 = System config bitmask 2 (See below)
6 = Manual frequency setting
7 = Manual EEV setting
8 = Manual fan speed setting
9 = Defrost in temp
10 = Defrost out temp (Heating pipe temperature required to end defrost)
11 = Water temperature calibration (offset for all temperature measurements)
12 = Defrost in time (minimum time between defrost sequences, in minutes)
13 = Defrost out time (max defrost time?)
14 = "Hot over", looks like temperature, but without x10? Default value 30
15 = "Cold over" default -20
16 = Power mode (0 = silent, 1 = smart 2 = powerful)
17 = Unknown, default value 6
32 = Current time, hibyte=hours, lobyte=minutes
33 = Timer on time
34 = Timer off time

Stranborg (l'auteur) offre la possibilité d'envoyer cette sortie sous forme mqtt sur mosquitto avec un script python mqpublish.py.
Apres publication sur mosquitto j'obtiens ca sur mosquitto explorer:
home
alsavo
status
16 = {"type":"status", "index":16, "value":23.2}
17 = {"type":"status", "index":17, "value":23.3}
18 = {"type":"status", "index":18, "value":17.4}
19 = {"type":"status", "index":19, "value":0.0}
20 = {"type":"status", "index":20, "value":17.0}
21 = {"type":"status", "index":21, "value":25.0}
22 = {"type":"status", "index":22, "value":0}
23 = {"type":"status", "index":23, "value":17.1}
24 = {"type":"status", "index":24, "value":0.0}
25 = {"type":"status", "index":25, "value":350}
26 = {"type":"status", "index":26, "value":0}
27 = {"type":"status", "index":27, "value":0}
33 = {"type":"status", "index":33, "value":0}
34 = {"type":"status", "index":34, "value":0}
48 = {"type":"status", "index":48, "value":0}
49 = {"type":"status", "index":49, "value":0}
50 = {"type":"status", "index":50, "value":0}
51 = {"type":"status", "index":51, "value":0}
53 = {"type":"status", "index":53, "value":0}
54 = {"type":"status", "index":54, "value":0}
55 = {"type":"status", "index":55, "value":41.0}
56 = {"type":"status", "index":56, "value":6.0}
64 = {"type":"status", "index":64, "value":0}
65 = {"type":"status", "index":65, "value":5905}
66 = {"type":"status", "index":66, "value":4391}
67 = {"type":"status", "index":67, "value":5905}
68 = {"type":"status", "index":68, "value":4391}
config
1 = {"type":"config", "index":1, "value":280}
2 = {"type":"config", "index":2, "value":189}
3 = {"type":"config", "index":3, "value":250}
4 = {"type":"config", "index":4, "value":26}
5 = {"type":"config", "index":5, "value":0}
6 = {"type":"config", "index":6, "value":50}
7 = {"type":"config", "index":7, "value":350}
8 = {"type":"config", "index":8, "value":500}
9 = {"type":"config", "index":9, "value":-70}
10 = {"type":"config", "index":10, "value":200}
11 = {"type":"config", "index":11, "value":0}
12 = {"type":"config", "index":12, "value":40}
13 = {"type":"config", "index":13, "value":12}
14 = {"type":"config", "index":14, "value":30}
15 = {"type":"config", "index":15, "value":-20}
16 = {"type":"config", "index":16, "value":1}
17 = {"type":"config", "index":17, "value":6}
32 = {"type":"config", "index":32, "value":2578}
33 = {"type":"config", "index":33, "value":0}
34 = {"type":"config",
1)a quoi ressemblerait le fichier MqttMapper.json pour recuperer les temperatures (et autres data)?
2) comment creer les devices ? est ce automatique ? faut il redemarrer domoticz?

Merci de votre aide...

cordialement

Knasson
Dernière modification par knasson le 25 mai 2024, 21:12, modifié 2 fois.
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: Plugin MQTT de FlyingDomotic

Message par Flying Domotic »

Bonjour,
A première vue, on devrait y arriver ...

L'idée est de mapper les topics "/home/alsavo/status/xx", en récupérant l'item "value", soit dans des switchs de type sélecteurs, qu'on multipliera par 10, soit dans des capteurs de température pour les "status", ou dans des setpoint pour les "config".

La création des devices Domoticz est automatique, as besoin de tout redémarrer (on peut ne redémarrer que le hardware MqttMapper si on change le fichier de config.

Je vais faire un exemple de fichier de config, dès que je trouve un peu de temps dans ce WE chargé ;-)
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: Plugin MQTT de FlyingDomotic

Message par knasson »

Merci de ta bienveillance...
l'integration de cette pompe à chaleur a eté bien travaillée et apparement réussie dans home assistant.Je me dis que ce serait un plus pour moi et pour domoticz d'y parvenir.

Bingo!
J'ai reussi a avoir la temperature d'entrée avec dans le fichier json
"TempEntrée": {
"topic": "/home/alsavo/status/16",
"type": "80", "subtype": "5", "switchtype": "0",
"mapping": {"item": "value", "multiplier": 1}
ca fonctionne.
Je vais faire pareil pour les autres temperatures qui m'interessent
je cale deja sur l'index 26 (intensite Ampere du compresseur)
j'ai pris modele sur "le boiler power" ca marche mais ca me donne des watts et pas des amperes

pour les modes chauffage /cooling index 53 et 54 je ne sais pas trop quels parametres utiliser
en clair j'ai encore besoin d'aide.

cordialement,

Knasson
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: Plugin MQTT de FlyingDomotic

Message par knasson »

Pour l'index 26 j'ai finalement changé le type et subtype (243, 23) là ca marche, ca m'indique bien des Ampéres.
Pour les selecteurs ca devient plus compliqué un exemple serait le bienvenu.

Merci
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: Plugin MQTT de FlyingDomotic

Message par Flying Domotic »

Bonne nouvelle !

Concernant les sélecteurs, le principe de base est qu'on peut sélectionner les valeurs multiples de 10 (0, 10, 20, .. 100) et leur affecter des labels texte. Au delà de 11 valeurs, on a atteint les limites du sélecteur, il faut trouver un autre type de dispositif (texte est souvent utile).

L'affectation des labels se fait au travers de options du dispositif (LevelNames). L'alignement entre MQTT et le dispositif se fait avec "values"

Pour commencer par un truc simple, on va prendre l'item 54 : Device status code (231 = heating operation, 175 = defrost) :

Code : Tout sélectionner

"Device status": {"topic": "home/alsavo/status/54",
	"type": "244", "subtype": "62", "switchtype": "18",
	"options": {"SelectorStyle":"1", "LevelOffHidden": "false", "LevelNames":"Unknown|Heating|Defrost"},
	"mapping": {"item": "value", "default": "0", "values": {"231": "10", "175": "20"}}
}
A retenir :
  • "LevelOffHidden" indique qu'on cache la valeur 0 (ou pas)
  • "LevelNames" donne les labels des différents labels, dans l'ordre "0|10|20|...|100". Ce sont ces labels qui seront affichés dans le sélecteur
  • "default" indique la valeur à affecter quand aucune des valeurs listées dans "Values" n'a été trouvée. Ici, zéro indique le premier élément de "LevelNames" ("unknown")
  • "Values" indique la correspondance entre la valeur MQTT (à gauche) et celle du dispositif (à droite") Ici, 231 côté MQTT correspond 10 côté Domoticz, qui correspond au 2eme élément de LevelNames
Pour info, on peut supprimer "multiplier: 1", c'est la valeur par défaut. Pour les températures, utiliser 0.1, vu que ce sont des dixièmes de degrés qui sont envoyés/reçus.

Pour avoir une idée précise des types de dispositifs disponibles, aller faire un tour à https://www.domoticz.com/wiki/Developin ... vice_Types

J'espère ne pas m'être trompé, je n'ai pas de Domoticz sous la main pour faire le minimum de contrôle de ce qui est écrit ;-)
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: Plugin MQTT de FlyingDomotic

Message par knasson »

merci , pas d'erreur ca fonctionne..
maintenant je voudrai m'attaquer a la config
avec
le topic /home/alsavo/config/1.
l
Je pense comme suggéré utiliser le setpoint.
j'ai commencé a écrire la commande json pour recevoir la valeur actuelle.

Code : Tout sélectionner

 "temp target heating":{"topic": "/home/alsavo/config/1",
        "type": "242", "subtype":"1","switchtype":0
        "mapping":{"item":"value",  "multiplier":0.1}
ca fonctionne ...je recois bien la valeur actuelle programmée sur la pompe.
maintenant modifier la valeur dans domoticz pas de problème, mais l'envoyer à la pompe?
j'ai la commande prévue dans alsavoctrl

Code : Tout sélectionner

AlsavoCtrl [OPTIONS] [conf_idx] [value]
mais comment la declencher depuis le widget du setpoint?
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: Plugin MQTT de FlyingDomotic

Message par Flying Domotic »

Tout dépend de ce que l'outil qui cause avec la pompe autorise.

Si c'est juste la commande "AlsavoCtrl [OPTIONS] [conf_idx] [value]", alors il faudra que je fasse une modif dans le plug-in MqttMapper, qui n'a pas été prévu au départ pour ça, mais qui pourrait le supporter.

Si on peut aussi envoyer la commande par MQTT, alors il faut juste utiliser la dernière version de MqttMapper (je viens de faire une modif pour que diviser la valeur courante par le multiplicateur avant de faire un "set"), sans oublier de dire au plug-in qu'on est capable de faire des "set".

En me disant ce qui est possible, je pourrais faire ce soir un test "à blanc" pour vérifier que MqttMqpper va bien envoyer ce qui est attendu.
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: Plugin MQTT de FlyingDomotic

Message par knasson »

Bonjour,

L'outil qui cause avec la pompe c'est AlsavoCtrl avec la commande que j'ai indiquée.https://github.com/strandborg/AlsavoCtrl
pour mon cas ca donne ca:
serial de la pompe:824500039214
code d'accès :8608
adresse de la pompe 192.168.1.66
port 1194

En se mettant dans le repertoire qui va bien

Code : Tout sélectionner

./AlsavoCtrl -s 824500039214 -l 8608 -a 192.168.1.66 -p 1194 2 285 | python3 mqpublish.py
ca c'est le cas où je modifie le topic 2 de la config de la pompe a 28,5°C (je dois le faire manuellement)
ensuite je me remet (toujours manuellement en "publish only" )pour que l'on puisse eventullement envoyer d'autres commandes sur d'autres topic "config"

Code : Tout sélectionner

./AlsavoCtrl -s 824500039214 -l 8608 -a 192.168.1.66 -p 1194 | python3 mqpublish.py
et la je reprend la publication reguliere toute les 5s de mes status et config avec la commande

Code : Tout sélectionner

 watch -n 5 "./AlsavoCtrl -s 824500039214 -l 8608 -a 192.168.1.66 -p 1194 | python3 mqpublish.py"
ALsavoCtrl est le programme qui edite les valeurs "status" et "config" de la pompe et mqpublish.py est le script qui les publie sur mosquitto sans en modifier la forme.
toutes les 5 s watch lance la commande en tache de fond.
Actuellement si je veux modifier la valeur d'un topic "config" je dois interrompre la publication
envoyer la commande de modification avec la nouvelle valeur et reprendre la publication.C'est donc un peu lourd.
et de plus je ne sais pas le faire depuis le widget domoticz.
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: Plugin MQTT de FlyingDomotic

Message par Flying Domotic »

Ce que je peux faire, vu que le changement direct par MQTT ne fonctionne pas, c'est d'ajouter une option pour qu'on puisse lancer une commande avec la valeur à mettre à jour. Restera à écrire la commande qui va bien.

Par contre, il va falloir trouver une combine pour suspendre la réception pendant l’émission (est-ce d'ailleurs vraiment nécessaire ?)
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: Plugin MQTT de FlyingDomotic

Message par knasson »

Oui ca me parait une bonne idée, la commande je saurai probablement l'ecrire...
Pas besoin de suspendre la mise a jour MQTT pour lancer une instruction a la pompe (j'ai testé..)

Actuellemnt quand j'appuie sur une touche du selecteur j'ai ce message d'erreur dans domoticz
2024-05-28 13:08:37.027 Error: MQTT_mapper: No SET parameters for Etat PAC caliente
Dernière modification par knasson le 28 mai 2024, 15:38, modifié 1 fois.
Répondre