Module WIFI climatisation AIRTON

Hello, oui je publierais sur github, faut juste que je fasse une grosse session nettoyage commentaire, et traduction si j’ai le courage…. C’est la partie la moins fun a faire…
Et j’ai encore quelque truc a faire avant et ca fait 2 semaine a bosser tout les soir et week end dessus (un peu usé ^^)

Par contre faudra surement adapter le code au specification de airton, car bien que se soit le meme module acw02 utilisé ma clim est une teknopoint.

J’attends encore les pcb aussi, mais si ca marche bien je mettrais egalement le gerber sur le git, entre le pcb, l’esp 32 d1 mini (bien esp32 wroom) le convertisseur 12v vers 5v, et le convertisseur logic 5v 3v + cable avec connecteur (si j’ai vraiment trouver le bon
Ca devrait couter 30 35€ piece (mais c’est plus cher car dur d’acheter juste un composant parfois)

C’est dommage Guillaume avait l’aire d’avoir bien avancer aussi

Par contre j’ai du utiliser mqtt pour les climate select, switch…. De la partie controle, car les possibilité fournis par esphome sont trop limité, trop rigide et un peu hasardeuse parfois

Pour le prix
Pcb 5€ avec livraison pour 5 pcb
Esp32 d1 mini (esp32-wroom) 12€ sur amazon
Convertisseur 12v/5v 10€ piece sans les fdp mais jai voulu prendre de la qualité pour pas avoir besoin de condensateur partout
Converter Bi-Directional 8€ le lot de 10
Et on va dire 5€ de header low profile

Et j’ai aussi le boitier 3d a design aussi…

Salut devildant Je cherche le code HEXA pour passer la clim en mode nuit (silencieux). Je sèche un peu pour le coup, sais-tu quelle valeur il faut lui envoyer ?

@Eucliwood090 si tu cherche l’option nuit et pas le mode fan silencieux, c’est sur le byte 15 pour l’envoi de la commande a la clim

uint8_t b15 = 0;
  if (eco_)      b15 |= 0x01;
  if (night_)    b15 |= 0x02;
  if (clean_)    b15 |= 0x10 | 0x04; 
  if (purifier_) b15 |= 0x40;
  if (display_)  b15 |= 0x80;

pour la reception c’est le byte 16 :

const uint8_t flags = f[16];
  eco_      = flags & 0x01;
  night_    = flags & 0x02;
  clean_    = flags & 0x10;
  purifier_ = flags & 0x40;
  display_  = flags & 0x80;

apres je compte publier mon code d’ici quelque jours je pense

Je cherche justement le mode fan silencieux ça serait donc (night_) b15 |= 0x02; ?

Oh j’attends ton code alors ^^

comme je le disais faudra adapter le code pour airton, car je n’ais pas de swing horizontal par exemple…
mais dans la pratique ca devrait etre proche, je ne supporterais pas airton sur mon repo, mais il sera forkable

voila mon repo, je le redis au cas ou mais il a été dev avec un acw02 et un climatiseur teknopoint, donc verifiez les trames voir si elles correspondent, et il faudra surement faire quelques modif pour avoir toutes les options pour airton:

Quel boulot !!! Chapeau bas :grinning:

J’espere que ca sera pas trop compliquer a adapter pour les airtons, je pourrais pas le faire comme je n’en ai pas…
Mais les rx/tx devrait etre tres proche donc c’est faisable…
En attendant voila la gueule de ma clim depuis 3 semaines

pour le mode silencieux present dans la vitesse de ventilation, il est sur 2 byte


enum class Fan  : uint8_t { AUTO = 0x0, P20 = 0x1, P40 = 0x2, P60 = 0x3,
                              P80 = 0x4, P100 = 0x5, SILENT = 0x6, TURBO = 0xD };
 uint8_t fan_n = (static_cast<uint8_t>(fan_) & 0x0F) << 4;
      uint8_t pwr   = (power_on_ ? 1 : 0) << 3;
      uint8_t mode  = static_cast<uint8_t>(mode_) & 0x07;
      frame[12] = fan_n | pwr | mode;
      if (clean_ == false) {
        uint8_t base = encode_temperature_byte();
        if (fan_ == Fan::SILENT) {
          frame[13] = base  + 0x40;
        }
        else {
          frame[13] = base;
        }
      } else {
        frame[13] = 0x0B;
      }

le 12 comme les autre mode (slient = 0x6) et sur le byte 13 en + 0x40

attention le byte 12 combine plusieurs etat (fan_n | pwr | mode)

PS soyez indulgent sur le code ca fait des années que j’ai pas fait de CPP, j’étais encore a l’ecole la dernière fois que j’en ai fait haha

Voici à quoi ça ressemble chez moi, un esp32-c3, c’est très petit ^^! je regarde ton code quand je peux. Je vais voir pour adapter

Ca me rassure on est plusieurs en mode bricolage haha

Pour le montage final jai opté pour un esp32-wroom d1 mini, le pcb est arrivé en france j’espere le recevoir semaine pro

A mon avis pour l’adaptation il doit y avoir un byte dans la trame de rx pour indiquer la version a l’acw02
Donc en comparent les parties statique entre mes trame rx et les tienne ont devrait le trouver.

Apres de ce que j’ai cru voir a part pour le swing horizontal que je n’ai pas, les autre commande semble les même

Si c’est exactement pareil sur les commandes en vrai ont pourrait prevoir une options dans le code pour passer de l’un a l’autre, j’ai deja des configuration de coder pour desactiver des modes.
Dans ce que j’ai fait, j’utilise les entity esphome native pour la configuration et mqtt pour les entity de controle.

Je vais recevoir mes esp32-c3 demain, je viens de renvoyer mes esp32-wroom d1 mini, impossible de les flasher… j’ai regardé ton code et franchement c’est propre :grin:

Ba j’espere ne pas avoir de probleme car ca me ferait chier maintenant que j’ai fais le pcb xd

cool pour le code :slight_smile:

J’ai fait en sorte de limiter la necessité des maj ota, pour ca que je me suis embeter a exposer les identifiant mqtt via des input texte car devoir reflash pour juste un changement de conf mqtt…
Ya plus qu’a esperer que esphome ne fasse pas de breaking change tout les 4 matins

bon j’ai tester de flash mon code sur l’un de mes esp32 wroom d1 mini pas de souci pour flash et ca se co bien au réseau (pas tester plus) ^^

ps: j’ai galéré mais j’ai enfi trouvé le connecteur de la clim pour le module, j’ai bien galère, j’en ai renvoyer des connecteurs xd

la ref c’est JST XA 2.5, j’ai ce lien ali, ou le cablage est fait (faut le prendre en reverse car sinon les couleur sont inversé ^^ (je me suis fait avoir j’ai du sortir tout les cable et les remettre dans le bonne ordre)

J’ai pris les mêmes :joy: y a plus qu’à attendre demain je reçois mes modules et je te redis si tout marche sur ma Airton, j’ai adapté le code à ma clim le bin et fais prêt à flasher

pas trop de galère pour l’adaptation ? je serais curieux de voir les changes et les diff sur les trames ^^

J’ai adapté comme ceci


  // globals Statics base trame (keep alive?)
  static const std::vector<uint8_t> keepalive_frame_ = {
    0x7A, 0x7A, 0x21, 0xD5, 0x18, 0x00, 0x00, 0xA1,
    0x00, 0x00, 0x00, 0x00
  };
  
  
    // globals Statics base trame (keep alive?)
  // static const std::vector<uint8_t> keepalive_frame_ = {
    // 0x7A, 0x7A, 0x21, 0xD5, 0x0C, 0x00, 0x00, 0xAB,
    // 0x0A, 0x0A, 0xFC, 0xF9
  // };