Module WIFI climatisation AIRTON

c’est juste le keepalive du moins je le présume car c’était émit par l’acw02 a interval régulier, par contre tu as changer que ca ?
car il y a le get status

  // globals Statics base trame (ask status AC)
  static const std::vector<uint8_t> get_status_frame_ = {
    0x7A, 0x7A, 0x21, 0xD5, 0x0C, 0x00, 0x00, 0xA2,
    0x0A, 0x0A, 0xFE, 0x29
  };

et surtout les fonctions build_frame (envoi tx) et decode_state (reception RX)

j’avais d’autre trame periodique mais impossible de trouver a quoi ca sert et a quoi ca corresponds

TX :

[17:15:56][D][uart_debug:114]: <<< 7A:7A:21:D5:0C:00:00:AB:0A:0A:FC:F9
[17:15:56][D][uart_debug:114]: <<< 7A:7A:21:D1:1B:00:00:A5:0A:0A:01:03:00:00:00:00:01:00:02:D8:1F:12:92:5D:95:A3:B1
[17:15:56][D][uart_debug:114]: <<< 7A:7A:21:D1:1B:00:00:A5:0A:0A:01:03:00:00:00:00:01:00:02:D8:1F:12:92:5D:95:A3:B1
[17:16:06][D][uart_debug:114]: <<< 7A:7A:21:D1:1B:00:00:A5:0A:0A:01:03:00:00:00:00:01:00:02:D8:1F:12:92:5D:95:A3:B1
[17:16:16][D][uart_debug:114]: <<< 7A:7A:21:D1:1B:00:00:A5:0A:0A:01:03:00:00:00:00:01:00:02:D8:1F:12:92:5D:95:A3:B1

[17:36:17][D][uart_debug:114]: <<< 7A:7A:21:D5:0C:00:00:AB:0A:0A:FC:F9
[17:36:31][D][uart_debug:114]: <<< 7A:7A:21:D1:1B:00:00:A5:0A:0A:01:03:00:00:00:00:00:00:02:D8:1F:12:92:5D:95:33:BC
[17:36:41][D][uart_debug:114]: <<< 7A:7A:21:D1:1B:00:00:A5:0A:0A:01:03:00:00:00:00:00:00:02:D8:1F:12:92:5D:95:33:BC
[17:36:51][D][uart_debug:114]: <<< 7A:7A:21:D1:1B:00:00:A5:0A:0A:01:03:00:00:00:00:00:00:02:D8:1F:12:92:5D:95:33:BC
[17:37:01][D][uart_debug:114]: <<< 7A:7A:21:D1:1B:00:00:A5:0A:0A:01:03:00:00:00:00:00:00:02:D8:1F:12:92:5D:95:33:BC

RX:

[14:47:59][D][uart_debug:114]: <<< 7A:7A:D1:21:0D:00:00:A4:0A:0A:00:25:25
[14:48:06][D][uart_debug:114]: <<< 7A:7A:D5:21:12:00:00:AC:0A:0A:06:52:00:12:BF:00:BB:98
[14:48:16][D][uart_debug:114]: <<< 7A:7A:D1:21:0D:00:00:A4:0A:0A:00:25:25
[14:48:27][D][uart_debug:114]: <<< 7A:7A:D1:21:0D:00:00:A4:0A:0A:00:25:25
[14:48:37][D][uart_debug:114]: <<< 7A:7A:D1:21:0D:00:00:A4:0A:0A:00:25:25
[14:48:47][D][uart_debug:114]: <<< 7A:7A:D1:21:0D:00:00:A4:0A:0A:00:25:25
[14:48:49][D][uart_debug:114]: <<< 7A:7A:D5:21:22:00:00:A3:0A:0A:1A:00:00:29:0A:02:00:00:00:00:00:01:64:12:BF:44:42:31:31:33:37:30:8F:7A:7A:7A:D5:21:1C:00:00:A6:0A:0A:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:52:0B
[14:48:59][D][uart_debug:114]: <<< 7A:7A:D1:21:0D:00:00:A4:0A:0A:00:25:25
[14:49:07][D][uart_debug:114]: <<< 7A:7A:D5:21:12:00:00:AC:0A:0A:06:52:00:12:BF:00:BB:98
[14:49:17][D][uart_debug:114]: <<< 7A:7A:D1:21:0D:00:00:A4:0A:0A:00:25:25
[14:49:27][D][uart_debug:114]: <<< 7A:7A:D1:21:0D:00:00:A4:0A:0A:00:25:25
[14:49:37][D][uart_debug:114]: <<< 7A:7A:D1:21:0D:00:00:A4:0A:0A:00:25:25
[14:49:47][D][uart_debug:114]: <<< 7A:7A:D1:21:0D:00:00:A4:0A:0A:00:25:25
[14:49:49][D][uart_debug:114]: <<< 7A:7A:D5:21:22:00:00:A3:0A:0A:1A:00:00:29:0A:02:00:00:00:00:00:01:64:12:BF:44:42:31:31:33:37:30:8F:7A:7A:7A:D5:21:1C:00:00:A6:0A:0A:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:52:0B

Oui j’ai pas tout modifier,

J’ai des tram qui revienne souvent
7A7AD521220000A30A0A1900001007065000000000016401D244423131333730D06B
mais c’est juste l’état de la clim, je ne reçois pas les mêmes trames périodiques que toi

bon ca va être chiant a gérer en un seul repos, mais ont doit avoir des parties fix identique, et l’envoi des commande devrait être sur les même byte et si c’est sur les même byte, alors ont doit pouvoir faire quelque chose de commun et soit ajouter un select pour switch la logique de l’un a l’autre soit passer une variable a la compilation…

bref j’attends ton retour pour voir se que ca donne ^^

en attendant j’ai vu que sur ma télécommande j’avais les options d’oscillation horizontal donc j’ai ajuster le code pour correctement decoder, et surtout conserver l’info quand j’envoi les trames, ca marche bien avec un nouvelle enum, bref j’ai mise a jour…
demain je vais essayer de faire un select pour ajouter ces options, et l’ajouter dans le climate dans la section preset (car on peux avoir qu’un seul select oscillation dans le climate, et pas envi de gerer 64 combinaison différente ^^)

et bien sur je mettrais des switch pour pouvoir désactiver l’un ou l’autre ^^

Pour le moment ça fonctionne bien, je vais la laisser en essai

Hello,

bon j’ai fait se que j’ai dit hier, on peut maintenant sélectionner le mode swing horizontal, on peut choisir les swing a afficher dans le climate, si les 2 sont activé le swing horizontal est placé dans preset, j’ai corrigé des bug aussi sur le mode clean, j’ai également ajouter le serveur web esphome, pour avoir les log, j’ai mi dans un sensor l’ip et l’adresse local, et j’ai aussi ajouter la détection de l’origine de la commande, on peut maintenant savoir si elle vient de la télécommande ou de l’esp.

nice en tout cas si ca marche a terme j’aimerais bien voir les change que tu a faire pour voir si je peux tout intégré dans un seul repo

Yes ^^, les seuls changements que j’ai faits c’est

` // 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
// };

// globals Statics base trame (ask status AC)
static const std::vector<uint8_t> get_status_frame_ = {
0x7A, 0x7A, 0x21, 0xD5, 0x18, 0x00, 0x00, 0xA1,
0x00, 0x00, 0x00, 0x00
};

// globals Statics base trame (ask status AC)

// static const std::vector<uint8_t> get_status_frame_ = {
// 0x7A, 0x7A, 0x21, 0xD5, 0x0C, 0x00, 0x00, 0xA2,
// 0x0A, 0x0A, 0xFE, 0x29
// };

`

Sur la airton je ne suis pas sûr qu’il y ait besoin d’une trame keep alive car elle envoie par elle-même toutes les 10 sec ses infos

et dans le yaml

`
substitutions:
dev_name: « airton-chambre »
dev_friendly: airtonchambre
lang: « fr »
api_encrypted_key: «  »
ota_password: «  »
ap_password: «  »
board: esp32-c3-devkitm-1

uart:
id: uart_acw02
tx_pin: GPIO2
rx_pin: GPIO3
baud_rate: 9600
stop_bits: 1`

J’ai fait rapidement pour essayer, si tu veux affiner :grin:

en gros ta juste modif keepalive_frame_ et get_status_frame_ ?
toutes les commandes fonctionne ?

pour le keepalive, enfaite je suis même pas sur de sont intérêt ^^ car moi aussi la clim ping toutes les 10s, mais dans le doute je l’ai mi ca ne coute pas grand chose, car le ping se fait toutes les 60s

ps, j’ai volontairement laissé les selects et set de température dispo, même si la clim est off, car ca permet de configurer sans devoir allumer la clim :slight_smile:

Oui c’est bien ça,

Pour le moment ça a l’air de fonctionner ( je ne peux pas tester entièrement j’ai des soucis de wifi… ce qui fait que le module se déconnecte trop souvent) , je te redirai à l’occasion si je vois des bugs ou des améliorations à faire

et de 2, mes 2 splits sont connectés et ça fonctionne bien, j’ai même la synchro avec domoticz.

Nice.
Du coup au final tt est pareil en somme ? Tu a pu tester les different mode ? Le swing horizontal et vertical ?

Oui tout, j’ai essayé en mode clim et ventilateur seulement, mais j’imagine que les autres modes fonctionnent.

Pour le swing, j’ai que le vertical car je n’ai pas de swing horizontal mais ça fonctionne, les températures, le mode silencieux, les différentes vitesses de fan, et le choix de la position du volet vertical fonctionne très bien. Je n’ai pas grand-chose à dire, à dire, je trouve que tu as fait un super taf

Cool, alors, a l’occasion tu pourrais essayer avec les trames d’origine sur le keep alive et le get status voir si elle fonctionne ? Car je trouve ca bizarre que tout marche et que ces trames soit différente, et je trouve leurs structure étrange, elle ne devrait pas finir par 00 normalement il y a toujours un crc de calculer

Surtout le get status, a chaque fois que tu la joue via le bouton refresh data que j’ai mi tu devrais voir passer un log avec la trame decoder.

En tout cas merci pour tes retours :slight_smile:

Voici les trames que je reçois avec mes modifications, je testerai demain soir avec tes trames et je te redis.

00:34:27
[I]
[acw02:102]
RX: [7A.7A.D1.21.0D.00.00.A4.0A.0A.00.25.25 (13)]
00:34:34
[I]
[acw02:1374]
TX: [7A.7A.21.D5.18.00.00.A1.00.00.00.00 (12)]
00:34:35
[I]
[acw02:1374]
TX: [7A.7A.21.D5.18.00.00.A1.00.00.00.00 (12)]
00:34:36
[I]
[acw02:1374]
TX: [7A.7A.21.D5.18.00.00.A1.00.00.00.00 (12)]
00:34:37
[I]
[acw02:102]
RX: [7A.7A.D1.21.0D.00.00.A4.0A.0A.00.25.25 (13)]
00:34:45
[I]
[acw02:1374]
TX: [7A.7A.21.D5.18.00.00.A1.00.00.00.00 (12)]
00:34:47
[I]
[acw02:102]
RX: [7A.7A.D1.21.0D.00.00.A4.0A.0A.00.25.25 (13)]
00:34:57
[I]
[acw02:102]
RX: [7A.7A.D5.21.22.00.00.A3.0A.0A.19.00.00.6B.46.06.40.00.00.00.00.03.64.01.E8.44.42.31.31.33.37.30.09.56 (34)]
00:34:57
[I]
[acw02:1537]
RX decode: PWR=ON | Mode=Ventilation uniquement | Mode climate=fan_only | Fan=Silencieux | Temp=22.0°C / 71.0°F [°C] | Eco=0 | Night=0 | Clean=0 | Purifier=1 | Display=0 | Swing=Position 5 | SwingH=Désactivé | Silent=YES | Origin=ESP
00:34:57
[I]
[acw02:1546]
RX ambient temp: 25.0°C / 77.0°F (raw=0x19 0x00)
00:34:57
[I]
[acw02:102]
RX: [7A.7A.D5.21.1C.00.00.A6.0A.0A.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.52.0B (28)]
00:35:07
[I]
[acw02:102]
RX: [7A.7A.D1.21.0D.00.00.A4.0A.0A.00.25.25 (13)]
00:35:17
[I]
[acw02:102]
RX: [7A.7A.D1.21.0D.00.00.A4.0A.0A.00.25.25 (13)]
00:35:27
[I]
[acw02:102]
RX: [7A.7A.D1.21.0D.00.00.A4.0A.0A.00.25.25 (13)]
00:35:37
[I]
[acw02:102]
RX: [7A.7A.D1.21.0D.00.00.A4.0A.0A.00.25.25 (13)]
00:35:45
[I]
[acw02:1374]
TX: [7A.7A.21.D5.18.00.00.A1.00.00.00.00 (12)]
00:35:47
[I]
[acw02:102]
RX: [7A.7A.D1.21.0D.00.00.A4.0A.0A.00.25.25 (13)]
00:35:57
[I]
[acw02:102]
RX: [7A.7A.D5.21.22.00.00.A3.0A.0A.19.00.00.6B.46.06.40.00.00.00.00.03.64.01.E8.44.42.31.31.33.37.30.09.56 (34)]
00:35:57
[I]
[acw02:1537]
RX decode: PWR=ON | Mode=Ventilation uniquement | Mode climate=fan_only | Fan=Silencieux | Temp=22.0°C / 71.0°F [°C] | Eco=0 | Night=0 | Clean=0 | Purifier=1 | Display=0 | Swing=Position 5 | SwingH=Désactivé | Silent=YES | Origin=ESP
00:35:57
[I]
[acw02:1546]
RX ambient temp: 25.0°C / 77.0°F (raw=0x19 0x00)
00:35:57
[I]
[acw02:102]
RX: [7A.7A.D5.21.1C.00.00.A6.0A.0A.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.52.0B (28)]
00:36:07
[I]
[acw02:102]
RX: [7A.7A.D1.21.0D.00.00.A4.0A.0A.00.25.25 (13)]
00:36:17
[I]
[acw02:102]
RX: [7A.7A.D1.21.0D.00.00.A4.0A.0A.00.25.25 (13)]
00:36:27
[I]
[acw02:102]
RX: [7A.7A.D1.21.0D.00.00.A4.0A.0A.00.25.25 (13)]
00:36:37
[I]
[acw02:102]
RX: [7A.7A.D1.21.0D.00.00.A4.0A.0A.00.25.25 (13)]
00:36:45
[I]
[acw02:1374]
TX: [7A.7A.21.D5.18.00.00.A1.00.00.00.00 (12)]
00:36:47
[I]
[acw02:102]
RX: [7A.7A.D1.21.0D.00.00.A4.0A.0A.00.25.25 (13)]
00:36:57
[I]
[acw02:102]
RX: [7A.7A.D5.21.22.00.00.A3.0A.0A.19.00.00.6B.46.06.40.00.00.00.00.03.64.01.E8.44.42.31.31.33.37.30.09.56 (34)]
00:36:57
[I]
[acw02:1537]
RX decode: PWR=ON | Mode=Ventilation uniquement | Mode climate=fan_only | Fan=Silencieux | Temp=22.0°C / 71.0°F [°C] | Eco=0 | Night=0 | Clean=0 | Purifier=1 | Display=0 | Swing=Position 5 | SwingH=Désactivé | Silent=YES | Origin=ESP
00:36:57
[I]
[acw02:1546]
RX ambient temp: 25.0°C / 77.0°F (raw=0x19 0x00)
00:36:57
[I]
[acw02:102]
RX: [7A.7A.D5.21.1C.00.00.A6.0A.0A.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.52.0B (28)]
00:37:07
[I]
[acw02:102]
RX: [7A.7A.D1.21.0D.00.00.A4.0A.0A.00.25.25 (13)]

Merci pour le retour, avec la trame tx get status envoyer tu devrais voir un rx direct et ensuite le log
RX decode: PWR=ON | Mode=Ventilation uniquement | Mode climate=fan_only | Fan=Silencieux | Temp=22.0°C / 71.0°F [°C] | Eco=0 | Night=0 | Clean=0 | Purifier=1 | Display=0 | Swing=Position 5 | SwingH=Désactivé | Silent=YES | Origin=ESP
00:35:57

Je prefere etre sur avant de partir sur une adaptation du code ^^
Mais tes trames keepalive et get status semble vmt strange…
Quand j’ai analysé les trames au debut j’ai eu des trame foireuse, j’ai du passer par un optocoupleur pour pouvoir analyser les trames tx envoyer par l’acw02, et le rx par contre pas de souci en direct sur l’esp du moins avec un convertisseur logique 5v 3v car la clim envoi le tx et le rx en 5v se qui peut a la longue cramer l’esp car il est pas fait pour supporter l’uart 5v