2 câbles série de marque identique ! comment les reconnaître sous Linux ?

Comment déterminer quel câble est relié à quel appareil ?

Oui, lorsque l’on a un onduleur et des batteries style Pylontech, il faut bien les relier au Raspberry pour pouvoir les commander.
Mais que se passe-t-il si on a 2 fois le même câble ?

Eh bien Linux va être incapable de savoir qui est qui si on ne l’aide pas.
Dans la version actuelle de Smartphoton, je contrôle les Vendeur ID et le Product ID. Si ce sont 2 câbles différents, les valeurs seront différentes.
Pour exemple :

chez moi j’ai 2 câbles (pour être précis, 2 chipsets) différents, donc aucun soucis pour moi de déterminer qui est connecté à qui.
Cela se fait dans le menu «System»

Le câble avec l’ ID 10c4:ea60 est le câble qui est relié à l’onduleur
Le câble avec l’ ID 067b:23a3 est le câble qui est relié aux batteries.
Absolument aucunes ambiguïtés ! Facile !

Maintenant prenons l’exemple qui coince. Cas de figure réel !!!
L’utilisateur à 2 câbles série totalement identiques. Voici ce que voit Linux de ces 2 câbles (commande lsusb) :

lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 067b:23a3 Prolific Technology, Inc. ATEN USB to Serial Bridge
Bus 001 Device 003: ID 067b:23a3 Prolific Technology, Inc. ATEN USB to Serial Bridge

Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

On voit que les 2 câbles ont exactement la même identification. Donc impossible de déterminer qui est qui. Voilà le problème posé.

En utilisant la commande suivante ls -l /dev/serial/by-path/
La réponse est la suivante :

4 jun 11:47 platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.2:1.0-port0 -> ../../ttyUSB0
4 jun 12:04 platform-fd500000.pcie-pci-0000:01:00.0-
usb-0:1.3:1.0
-port0 -> ../../ttyUSB1

On voit qu’il y a 2 interfaces, 1 sur le path usb-0:1.2:1.0 qui est donc l’interface ttyUSB0 et l’autre sur le path usb-0:1.3:1.0
Ce qui du coup me donne l’information de qui est où, Ghislain m’avait dit que l’onduleur était sur ttyUSB1, donc les batteries seront sur ttyUSB0.

Maintenant, il faut fixer ceci pour que lors du prochain redémarrage, cela soit toujours le cas !

Donc sur Linux on utilise des fichiers spéciaux qui donnent ce genre d’ordres.
Il s’agit du fichier /etc/udev/rules.d/99-usb-serial.rules
par exemple, dans celui-ci, j’ai introduis les lignes sous cette forme :

SUBSYSTEM=="tty",ENV{ID_PATH}=="platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.2:1.0",SYMLINK+="tty-pylontech"
SUBSYSTEM=="tty",ENV{ID_PATH}=="platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.3:1.0",SYMLINK+="tty-onduleur"

tty-onduleur et tty-pylontech sont utilisés dans mon programme justement pour m’affranchir des ports USB donnés aléatoirement par Linux.

Du coup lorsque Linux démarre je vais avoir ceci avec la commande
suivante ls -l /dev/tty-onduleur et ls -l /dev/tty-pylontech

4 jun 14:36 /dev/tty-pylontech -> ttyUSB0
4 jun 14:36 /dev/tty-onduleur -> ttyUSB1

Et donc Smartphoton va pouvoir gérer à la fois l’onduleur et les batteries sans confusions. Ce qui était le but à atteindre Smile

Pour l’heure, je dois éditer le fichier en mode manuel, mais je regarderai pour que cela soit possible pour l’utilisateur par la suite.

C’était un long exposé, mais je pense qu’il sera utile pour de nombreux «Linuxien» qui comme moi ont lutés pour trouver ce genre d’informations assez obscures tout de même.

Pour information importante, j’ai trouvé la variable {ID_PATH} ci dessus via cette commande :

sudo udevadm info --query=all –name=/dev/ttyUSB0
et
sudo udevadm info --query=all –name=/dev/ttyUSB1

Qui me donne les résultats suivants. Je les mets en comparatifs dans un tableau pour lecture facilitée

5 Replies to “2 câbles série de marque identique ! comment les reconnaître sous Linux ?”

  1. Bonjour et félicitations pour tout ce travail
    j ai depuis un an une installation solaire 8 panneaux onduleur HYD 3000 SOFAR et un jeu pour l instant de 2 batteries pylontec 2000c
    je voudrai gérer au mieux mes batteries pour employer les gros consommateur lorsque elles sont bien chargées.
    avec votre logiciel cela est il gérable ?
    le Raspberry pi est il obligatoire?
    vu ma configuration je suis obligé utiliser liaison a distance
    merci de me conseiller

    • Oui avec mon soft c’est tout à fait possible. Il suffit de ne pas se servir de la partie onduleur.
      Concernant les Sofar Solar il y a même le descriptif de comment récupérer les données du bus rs485.
      Pour tout cela je vous conseille d’aller lire le forum à cette adresse. Il y a tout plein d’infos sur les batteries, onduleurs, solaire et domotique
      J’y suis très actif là bas.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

The maximum upload file size: 15 GB. You can upload: image, audio, video, document, spreadsheet, interactive, text, archive, code, other. Links to YouTube, Facebook, Twitter and other services inserted in the comment text will be automatically embedded. Drop files here