Domotiser PAC inverter de piscine IrriJardin/WarmPool : aide connection RS485

Merci de ton retour,

Je vois dans ton code de nombreux commentaires '//La PAC lis depuis le module WiFi "
tu as laissé le module wifi de branché en // ?

En disant module ou passerelle WiFi, je veux parler de l’adresse 02, donc celle à laquelle l’ESP répond, équivalent du module WiFi d’origine, je ne l’ai pas laissé branché (Il vaut mieux éviter car lorsque le contrôleur va interroger l’adresse 2, l’ESP et le module WiFi vont répondre en même temps sur le même bus ce qui va causer beaucoup d’erreurs CRC, les trames ne seront pas reconnues ce qui va causer des erreurs de trame trop longue).

J’ai augmenter la taille du RingBuf et c’est bcp mieux…

J’avais baissé la taille du buffer msg, sûrement trop, mais cela veut dire que les trames sont formées légèrement différemment car par exemple, lorsque le contrôleur envoi la requête de lecture de la trame d’heure de l’IHM :

(D p:^0415ms) (recv_msg) Entete: Lecture depuis IHM
(I p:^0005ms) (recv_msg) Message complet recu de taille 8 : 01 03 0B B9 00 1E 16 03 
(D p:^0015ms) (recv_msg) Entete: Lecture depuis IHM
(E p:^0007ms) (recv_msg) Trame trop longue, reinitialisation !

Il lui demande 001E mots de data, donc 60 octets.
On ajoute l’entête de la réponse de 3 octets (01 03 3C) et les 2 octets de CRC, on devrait avoir en réponse une trame de 65 octets, on devrait pas atteindre la limite du buffer msg de 266 octets.

Pareil pour le broadcast 07D1 :

(D p:^0205ms) (recv_msg) Entete: Diffusion broadcast
(E p:^0007ms) (recv_msg) Trame trop longue, reinitialisation !
(D p:^0196ms) (recv_msg) Entete: Diffusion broadcast
(I p:^0007ms) (recv_msg) Message complet recu de taille 8 : 00 10 07 D1 00 5A 10 AE

Via la réponse de l’IHM au broadcast, on voit que la taille est de 005A mots: 180 octets de data, + 9 octets entête et CRC c’est normalement OK.

Je serais intéressé de voir les trames que tu as après avoir augmenté la taille du buffer ?

Ci-joint les trames avec un buffer à 500…
j’ai encore quelques messages qui dépassent.

Je me demande si c’est tout simplement pas mon ESP ( wemos mini D1 ) qui boucle pas assez vite…

du coup le buffer doit parfois contenir plusieur messages à la suite. Il faudrait le décomposer. possible ?

tramebufferbig.txt (69,9 Ko)

Intéressant, en effet on a les mêmes trames: tu as raison on empile dans le buffer plusieurs trames car il doit y avoir des erreurs de CRC, donc on ne trouve pas la fin de trame.

J’ai eu plus ou moins les mêmes soucis au début (et aussi des soucis de « Mauvais entête », visible en passant remotedebug en Verbose mais en Verbose c’est très bavard, remotedebug est ensuite long a réagir pour repasser dans un autre mode comme Debug par exemple).

Dans Arduino Outils/CPU Frequency je suis passé de 80 MHz à 160 MHz, ce qui a réduis les temps de traitement, je pense que sinon on rate de temps en temps un/des octets …

Actuellement la fonction recv_msg n’est pas très optimisée car a chaque tour du while on exécute la fonction valid_msg (vérification du CRC), afin de voir si on a atteint la fin d’une trame, le temps de traitement est grand.

Je suis actuellement en train de modifier cela afin de faire le contrôle CRC qu’une seule fois par trame reçue, en déterminant au début dans l’entête la taille de la trame en cours de réception.

a yes je vais tester :slight_smile:

encore merci pour de boulot ! je vais tester des commandes comme le set target maintenant

bon bein tout semble marcher niquel j’ai pu test les différentes commandes :slight_smile:

au top !

si qqun veut un module wifi quasi neuf… je vais le mettre sur lbc !

1 « J'aime »

Super, avec plaisir c’est cool de savoir que ce sera utile :slight_smile:
Je pense que je vais vendre le miens aussi, enfin du moins si j’arrive à le refaire fonctionner, dommage qu’il soit si chère, dur a trouver et fonctionne si mal :confused:

J’ai fait la modification sur la détection fin de trame, c’est beaucoup moins gourmand en ressources et fonctionne même à 80MHz (Mais a 160MHz ça se sent quand même que c’est plus rapide au niveau de remotedebug).

J’ai aussi corrigé une inversion entre O02 et O04, curieusement ils ne se suivent pas :

[...]
PUB("WARMPOOL/O04", String(AtoBit(data_07D1, 16, 17, 1)).c_str());            //O04: High fan (ON/OFF)
[...]
PUB("WARMPOOL/O02", String(AtoBit(data_07D1, 16, 17, 3)).c_str());            //O02: Circulate pump (ON/OFF)
[...]

Et un doublon MQTT silent/silence.

D’ici quelques jours je vais voir pour publier une version avec WiFiManager.

@titi2097 Vu que tu as la même PAC que moi, si tu as l’occasion de me passer tes trames 03E9 et 0443, échangées lors d’un changement de consigne, ce serait top … J’aimerais retrouver des réglages que je pense avoir écrasé pendant des essais.

Voici la version actuelle :
esp8266_warmpool_andrec7_beta_v2.zip.txt (13,7 Ko)

Top

vu pour le silence/silent je me demandais aussi pkoi :stuck_out_tongue:

sinon toujours bcp de trame trop longue

je suis repassé à 500 le buffer et c’est mieux ^^

pour récupérer les deux trames il faut que j’envoi quelles commandes ?

WARMPOOL/command/refresh ?

ou changer le mode HEAT > AUTO par exemple ?

je chope en meme temps la trace via RemoteDebugApp ( en mode debug ca suffira ) ?

thx
à+

Curieux pour les problèmes de trame trop longue, je vais continuer à y réfléchir demain, et surement passer aussi le buffer à 500…

En effet en lançant la commande WARMPOOL/command/refresh les trames 0443 et 03E9 seront échangées et visible depuis remotedebug au bout de quelques petites secondes.
Ou alors en changeant la consigne, mais pas le mode (Car le changement de mode ne déclenche que l’échange de la trame 03E9 mais pas 0443).

Exact, ça suffira :slight_smile: (Même en mode Info, c’est moins bavard mais les trames sont toujours visibles)
A+

transmis en mp

Merci beaucoup, demain je fais faire des essais je tiens informé.

Hello, mes problèmes de démarrage sont résolus grâce aux trames 03E9 et 0443 de @titi2097 qui a la même PAC que moi, j’ai remplacé les octets inconnus différents, en gros voici le code :

else if (topic[2].equalsIgnoreCase("restore")) {    //ATTENTION ECRASE LES PARAMETRES USINE !!!
        data_03E9[10] = 0x01;
        data_03E9[11] = 0x3B;

        data_03E9[23] = 0x5F;

        data_03E9[25] = 0x3E;

        data_03E9[45] = 0x3E;

        data_03E9[53] = 0x32;
        data_03E9[54] = 0x00;
        data_03E9[55] = 0x32;

        data_03E9[57] = 0x55;

        data_03E9[89] = 0x14;

        data_03E9[93] = 0x64;

        data_03E9[105] = 0x52;

        data_03E9[109] = 0x52;

        data_03E9[112] = 0x03;
        data_03E9[113] = 0x52;        

        data_03E9[120] = 0x02;
        data_03E9[121] = 0x58;

        for (uint8_t i = 104; i <= 130 ; i++) data_0443[i] = 0x00;
        data_0443[131] = 0x0A;
        for (uint8_t i = 132; i <= 159 ; i++) data_0443[i] = 0x00;

        data_0BB9[1] = 0x10;     //Octet de déclenchement de lecture (0x10: On déclenche la lecture des trames 03E9 et 0443)
      }

Juste pour donner l’idée, cela confirme bien que pendant mes précédents essais j’ai écrasé des choses qu’il ne fallait pas … C’est fiabilisé maintenant.

Je vais voir pour ajouter une sauvegarde dans le SPIFFS/LittleFS lors du premier démarrer et proposer la restauration via la commande MQTT restore.

Salut à tous.

J’avais laissé tombé le sujet depuis un moment car tout fonctionne à la perfection chez moi depuis l’année dernière, mais je suis heureux de voir l’engouement qu’a pris le projet.
:grinning:

1 « J'aime »

Salut,

Mon père a une Poolex Silverline pour laquelle il existe un boîtier wifi mais c’est un peu cher.
Est-ce que vous pensez qu’il est possible de venir court circuité le panneau de commande déporté pour voir et contrôler cette PAC ?

J’ai lu en diagonale mais j’ai l’impression que pour l’heure vous n’ayez réussi qu’à lire quelques informations ?

Avec le taf qu a fait Andrec on a une solution qui marche parfaitement :wink:

Faut voir ton model de pac et surtout le module wifi si c est le meme que le notre alors oui ca devrait marcher niquel !

Ah mais il faut donc acheter le module wifi, vous n’avez pas réussi à faire sans donc juste en interfacant entre le boîtier déporté et la PAC (ou directement branché sur la PAC) ?

Il a cette PAC Silverline - L'efficacité à prix choc | Poolex

Et il faudrait ce module wifi : Boîtier Wifi - Contrôlez votre PAC où que vous soyez | Poolex

1 « J'aime »

J’ai suivi votre étude, et j aimerais savoir si vous avez une solution finalisée qui fonctionne et est elle compatible d’une PAC poolex Jetline 100. En effet Poolex a une soltion wifi qui n’est malheureusement pas compatible de ma PAC plus ancienne, d’où l’intérêt que je porte à votre solution.
Merci d’avance pour votre aide.
Mick

Ma PAC est une Poolex Jetline 100 est elle compatible de votre solution?
Et pouvez vous me donner tous les détails techniques du matériel et logiciel utilisés
Merci d’avance

Non il faut pas le boitier wifi

Mais le montage /programme remplace le module wifi de notre pac Hayward easy temp ( ECP ) en question et pas une autre.

Ici le module poolex wifi ressemble pas vraiement au notre donc c est mort. Faudrait voir en detail comment il se branche et communique.
Des fois y a des bonnes suprises avec des produits en marques blanche qui marchent pareil…

Salut à Tous,

Un projet qui semble bien finalisé, depuis son démarrage.
il y a maintenant absolument tout on peut piloter tres finement ce qui se passe. :star_struck:

@andrec Une nouvelle fois merci, je me suis décidé à abandonner mon code pour le tiens plus fiable et lisible, le bonheur.

Comme tu le dis il manque plus qu’une sécurité pour sauvegarder ou bloquer le lancement de commandes tant que les freshness ne sont pas remplis :slight_smile:

De mon coté je ne constate pas d’erreur de trames trop longues le buffer est positionné a 266

Sur la partie restauration des paramètres d’usine des trames 0443 et 03E9
Dans ton message du 10 juin, nous avons 17 champs sur le 03E9 et deux plages sur 0443 (104 à 130 et 132 à 159)

A tu identifié d’autres params devant être mis de coté ?
Christophe

@titi2097 Effectivement l’afficheur semble différent des hayward mais dans la PAC ca mérite d’être regardé physiquement.

En fait le projet initial que @freddye83 nous a partagé https://github.com/freddye83/esp8266_warmpool reposait aussi sur celui-ci https://github.com/cribskip/esp8266_poolstar

@Mick33 Il faut ouvrir le capot de votre PAC et verifier dedans que ca corresponde a ce qu’il y a plus haut Domotiser PAC inverter de piscine IrriJardin/WarmPool : aide connection RS485 - #6 par fwehrle
Tout est indiqué pour les interfaces et les câblages à utiliser si ca colle.