Reverse Engineering - Aldes B200-FAN_T.Flow® Hygro+

En fait, en y re-réfléchissant cette nuit, on pourrait faire un truc du type :

Aldes connect <--- USB ---> ordinateur <--- Reseau ----> raspberry pi <--- USB OTG ---> PAC

Ou meme si le raspberry le permet, ca peut rester sur le Rpi en mode :

Aldes connect <--- USB --->  raspberry pi <--- USB OTG ---> PAC

Une resource où la personne explique comment configurer une liaison USB-OTG / ACM avec le setup des idVendor, manufacturer string etc… L’idée ici serait de se faire passer exactement comme le aldes connect, et publier un device /dev/ttyACM avec la PAC, sur lequel on lirait les envois de la PAC, et, un deuxieme device /dev/ttyACM avec cette fois le aldesConnect où on transmettrait les demandes de la PAC et où on renverrai a la PAC les envois du aldes connect (en ayant pris soin de tout logguer en interne :smiley: )

Il faudra rentrer surement dans les détails de lsusb et autre joyeuseté pour identifier toutes les fonctions USB exposées par le aldesConnect

Hello,

J’ai fait ça:

Aldes connect <--- USB ---> raspberry pi <--- USB OTG ---> PAC

… avec ça: GitHub - AristoChen/usb-proxy: A USB proxy based on raw-gadget and libusb

… et j’obtiens ça :

Device is: fe980000.usb
Driver is: fe980000.usb
vendor_id is: 1155
product_id is: 22336
5 Devices in list
Target device not found
Device opened successfully
Setup USB config successfully
Start hotplug_monitor thread, thread id(1556)
Start for EP0, thread id(1554)
ep #0:
  name: ep1in
  addr: 1
  type: iso blk int
  dir : in  ___
  maxpacket_limit: 1024
  max_streams: 0
ep #1:
  name: ep1out
  addr: 1
  type: iso blk int
  dir : ___ out
  maxpacket_limit: 1024
  max_streams: 0
ep #2:
  name: ep2in
  addr: 2
  type: iso blk int
  dir : in  ___
  maxpacket_limit: 1024
  max_streams: 0
ep #3:
  name: ep2out
  addr: 2
  type: iso blk int
  dir : ___ out
  maxpacket_limit: 1024
  max_streams: 0
ep #4:
  name: ep3in
  addr: 3
  type: iso blk int
  dir : in  ___
  maxpacket_limit: 1024
  max_streams: 0
ep #5:
  name: ep3out
  addr: 3
  type: iso blk int
  dir : ___ out
  maxpacket_limit: 1024
  max_streams: 0
ep #6:
  name: ep4in
  addr: 4
  type: iso blk int
  dir : in  ___
  maxpacket_limit: 1024
  max_streams: 0
ep #7:
  name: ep4out
  addr: 4
  type: iso blk int
  dir : ___ out
  maxpacket_limit: 1024
  max_streams: 0
ep #8:
  name: ep5in
  addr: 5
  type: iso blk int
  dir : in  ___
  maxpacket_limit: 1024
  max_streams: 0
ep #9:
  name: ep5out
  addr: 5
  type: iso blk int
  dir : ___ out
  maxpacket_limit: 1024
  max_streams: 0
ep #10:
  name: ep6in
  addr: 6
  type: iso blk int
  dir : in  ___
  maxpacket_limit: 1024
  max_streams: 0
ep #11:
  name: ep6out
  addr: 6
  type: iso blk int
  dir : ___ out
  maxpacket_limit: 1024
  max_streams: 0
ep #12:
  name: ep7in
  addr: 7
  type: iso blk int
  dir : in  ___
  maxpacket_limit: 1024
  max_streams: 0
ep #13:
  name: ep7out
  addr: 7
  type: iso blk int
  dir : ___ out
  maxpacket_limit: 1024
  max_streams: 0
event: connect, length: 0

C’est mon meilleur résultat, obtenu 1 fois. La plupart du temps j’obtiens :

Device is: fe980000.usb
Driver is: fe980000.usb
vendor_id is: 1155
product_id is: 22336
Device unresponsive: Pipe error
Device unresponsive: Pipe error
Device unresponsive: Pipe error

… avec l’erreur qui se répète sans cesse. J’obtiens beaucoup aussi :

Device is: fe980000.usb
Driver is: fe980000.usb
vendor_id is: 1155
product_id is: 22336
Device opened successfully
Setup USB config successfully
Start hotplug_monitor thread, thread id(1484)
Start for EP0, thread id(1471)
event: connect, length: 0

et dans ce dernier cas ça n’affiche rien d’autre.

En parallèle les logs système du Raspberry Pi 4 montrent qu’il est en undervoltage. Normal, il est alimenté par l’USB de la PAC qui ne doit fournir que 0.5A. Du coup l’instabilité que j’observe pourrait venir de là, ce qui condamnerait cette voie. Une autre piste serait à ce moment GitHub - matlo/serialusb: A cheap USB proxy for input devices.

Merci pour le job !

Je peux dépanner un ou deux pi3 si jamais il y a besoin le temps du Dev.

Un simple hub ou rallonge usb alimentée ne peux pas résoudre ça ?

Interressant !

Il prend du 2.5A, l’USB de la PAC sera probablement encore beaucoup trop faible… D’autant que le Pi alimente ensuite la box AldesConnect…

La PAC alimente son port USB donc il vaut mieux ne pas y brancher quelque chose de déjà alimenté…

Je viens aux nouvelles, avez-vous réussi à avancer de votre côté ?

Wouah ! Je suis en admiratif !!!
J’espère que vous allez y arriver !!!

1 « J'aime »

De mon côté j’étais en attente d’une commande pour tenter GitHub - matlo/serialusb: A cheap USB proxy for input devices.

Je l’ai reçue, je n’ai pas trop le temps en ce moment mais je ne lâche pas l’affaire.

3 « J'aime »

Bonjour,
Je possède une VMC Aldes DeeFly Cube 300 équipée du module AldesConnect connecté sur l’iBUS.
En cherchant comment l’interfacer avec HA, j’ai sniffé le port USB.
Ma conclusion qui devrait peut-être vous aider, c’est qu’il s’agit d’un protocole MODBUS RTU.
Avec QModBus on voit bien passer les trames caractéristiques.
Je pense qu’en utilisant la doc Aldes vous pourrez facilement envoyer directement des commandes grâce à l’intégration MODBUS disponible dans HA. Il y a de forte chance que les registres soient identiques.

Pour info, le module AldesConnect interroge régulièrement un slave connecté sur l’USB. Dans mon cas il cherche à l’adresse 4.
Pour ceux qui veulent se connecter en iBUS je continue mes recherches.
Si ces infos peuvent aider…

Désolé je n’arrive pas à intégrer un lien directement vers la doc aldes des registres modbus… :frowning:
On la trouve facilement en cherchant: « easyvec-notice-d-installation-modbus.pdf »

Salut,

Tu n’as pas peur d’être bloqué vu que l’interface du gars est unidirectionnelle alors que la box Aldes Connect est bidirectionnelle ?

Salut @PaC,

C’est cool, un de plus sur le sujet !
On va forcément y arriver en ce regroupant.

Cool cette info, reste plus qu’à essayer, personnellement en ce moment c’est chaud avec le début des beaux jours c’est travaux extérieur à fond pour ma part !

Cela amène de l’eau au moulin, merci à toi !

Bien vu, ça risque en effet.

Tu as fait comment ?

Merci pour les infos, c’est cool. Du coup avec un esp8266 et un module USB <=> serial avec l’USB branché sur la PAC et le serial sur l’esp on devrait pouvoir y arriver. Il y a un composant ModBus pour ESPhome: Modbus Controller — ESPHome

C’est peut-être même possible d’avoir juste l’ESP, après tout on passe bien par l’USB en mode série pour installer un build dessus. Faudrait chercher pour voir si on peut exploiter l’USB quand l’ESP fonctionne, pour autre chose que juste l’alimentation. Pas sûr.

Salut, je confirme que c’est possible, c’est exactement ce qui a été fait pour les clim midea.
À l’origine il y a une sorte de clé usb passerelle wifi propriétaire et ils l’ont remplacé par un esp8266 sous esphome sur un dongle usb
Voir ici
D’ailleurs maintenant c’est un composant officiel esphome.
Tu peux voir comment ils ont fait le reverse engineering en suivant les liens.

1 « J'aime »

Bonjour à la communauté,

Désolé pour cette réponse tardive.
J’avais fait une longue explication sur ma démarche et mes essais, mais je suis bloqué car je n’ai pas le droit d’intégrer des liens dans mes messages.
Du coups, c’est moins intéressant et lisible comme réponse… :roll_eyes:
Après avoir fouillé un peu partout sur hacf, je ne comprends pas pourquoi???
Bref, question de stagiaire boulet débutant, il y a-t-il une manipulation à faire pour pouvoir intégrer un lien svp? :face_with_peeking_eye:
Désolé pour le HS…:grimacing:
[EDIT] problème d’intégration des liens résolu [/EDIT]

Hum il semblerait que cela fonctionne maintenant pour les liens… :sweat_smile:
Encore désolé pour le hors sujet précédent…

Donc pour répondre à @guix77 pour le « sniffage » de l’USB c’était assez simple car ma VMC Dee Fly Cube est connectée sur l’Ibus du module wifi Connect. Le port USB est donc libre. Je l’ai donc simplement connecté à mon pc. Un lsusb m’a indiqué qu’il était reconnu comme un port usb slave type STM32, ça partait bien!

D’un autre côté, cela fait un moment que j’analyse les trames qui passent sur la télécommande sans fil qui utilise un module Texas Instrument CC110L car c’était ma première idée pour connecter ma VMC à HA.
Pour cela j’utilise un analyseur logique pas cher qui marche bien avec le soft de Saleae.
Pour les personnes ayant les moyens il existe aussi un sniffeur usb de compétition, le LUNA.

J’ai laissé tombé pour l’instant car il me paraissait plus simple de passer finalement par l’Ibus. Mais lors de cette étape j’ai remarqué que le protocole ressemblait au MODBUS largement utilisé dans le milieu des climatisations et VMCs. A propos si quelqu’un veut fouiller de ce côté je peux partager mes résultats, en particulier la configuration exacte du module RF CC110L ou les registres que j’ai pu identifier comme la vitesse de ventilation par exemple.

Sachant que le modbus est aussi très utilisé sur les STM32 (un exemple ici), j’ai alors fait l’hypothèse que les ingénieurs d’Aldes n’allait pas réinventer la poudre et réutiliser du modbus pour la gestion de leurs produits. J’ai donc utilisé QModBus pour sniffer l’USB et effectivement on retrouve des trames caractéristiques, CQFD… :grin:

Bref, ma prochaine étape c’est d’analyser les trames sur l’Ibus avec mon analyseur logique pour vérifier mon hypothèse et trouver les bons registres. On a déjà un début de réponse avec la doc ici ou ou encore et surtout … Mais voilà c’est l’été, ma terrasse n’est pas finie et bientôt je pars quelques jours en vacances… Du coups je procrastine :grimacing: mais l’idée c’est effectivement d’utiliser un ESP32 ou ESP8266 pour envoyer les commandes modbus soit en USB, soit sur l’Ibus en ajoutant 2 transistors, une poignée de diodes et une pincée de résistances. J’ai déjà fait le reverse engineering de cette partie hardware c’est très simple.

A propos, pour l’électronique je maîtrise mais la programmation je suis une chèvre… :scream:
Bref, je ne serais pas contre un coups de main pour coder une intégration ou un blueprint si dès fois ca marche un jour… :pray:
A voir s’il ne faudrait pas s’inspirer ou se rapprocher de JCLB avec son intégration modbus pour sa vmc Unelvent Domeo, ici sur → HACF.

2 « J'aime »

Un grand merci @PaC pour cet excellent retour !

T’excuse pas pour la dispo, on a tous nos contraintes perso t’inquiète. Pour ma part pas trop de dispo non plus depuis ce début d’année et pourtant ma terrasse est terminée :wink:. Mais j’ai eu l’idée faire un truc un minimum correct pour la petite piscine Intex des gamines et cette année (le week-end prochain) c’est mise en place de panneaux solaire alors j’ai passé pas mal de temps à fouiner les bon plans sur LBC.

Fin du HS

Du coup je m’y remettrai plus tard mais cela semble prometteur !

Merci et bon courage @Neuvidor pour tes travaux! :wink:

En complément j’ai retrouvé cette capture d’écran quand l’aldes connect box est connectée à un pc:
Aldes_Connect_lsusb

Merci @PaC , très intéressant !

Pour la programmation HA ça ne sera pas un souçi. Si tu arrives à faire un montage à base d’ESP qui passe par l’USB et fonctionne avec un firmware basique, je devrais être capable de faire un composant ESPhome un peu comme Midea Air Conditioner — ESPHome qui implémente Climate Component — ESPHome et qui s’intègre tout seul entièrement à HA.

2 « J'aime »

J’ai l’impression que les planètes commence à s’aligner dans ce projet, les compétences de chacun se complète et ça c’est cool !

En tous cas merci à vous les gars car sans passerelle je suis bloqué de mon côté…

1 « J'aime »