Bonjour Mr. le visiteur, si vous lisez ceci, cela signifie que vous n'êtes pas enregistré. Cliquez ici pour vous inscrire en quelques étapes simples, vous pourrez profiter de toutes les fonctionnalités de notre Forum. Vous pourrez évidemment nous faire partager vos connaissances avec nous ! et voir les images ou vidéos postées


Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Raspberry, déterminer quel port USB est relié à l'onduleur et aux batteries ?
#1
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 cable avec l’ ID 10c4:ea60 est le câble qui est relié à l’onduleur
Le cable 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é.

Alors j’ai eu accès ce matin au Raspberry de Ghislain qui à 2 onduleurs en parallèle et surtout 2 câbles identiques. Du coup j’ai pu faire des tests et aller de l’avant.

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 :)

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

   
ChrisPv et papigaz aiment ce post
Jean-Luc
Répondre
#2
enfin on avance ouf ! merci de tout le monde
jlm aime ce post
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
[-]
Synthèse
Please login or register to use this functionality.

[-]
discussions récentes
bravo mais
merci a jlm et nolak pour votr...spectre10troy — 08:33 PM
bravo mais
Merci pour les testes, en effe...NOLAK — 06:54 PM
bravo mais
avec false avec tty bidon ...spectre10troy — 02:13 PM
bravo mais
Parfait, donc là on est sur qu...NOLAK — 01:55 PM
bravo mais
pas de led sur le port rs232 ...spectre10troy — 01:50 PM
bravo mais
tu as raison ont est assez cur...jlm — 01:12 PM
bravo mais
Alors on va pousser plus loin....NOLAK — 12:58 PM
bravo mais
déjà tester l autre câble usb,...spectre10troy — 12:23 PM
bravo mais
Je comprends tout a fait le ch...NOLAK — 12:14 PM
bravo mais
installation toute neuve, ri...spectre10troy — 11:32 AM
bravo mais
Et les logs ça donne quoi cett...NOLAK — 11:23 AM

[-]
Rechercher








(Advanced Search)

[-]
Who's Online
There are currently no members online.

[-]
goals
94.7% of the way to our goal of 7,000 posts!
Only 368 posts left to go!

[-]
Statistics
» Members: 613
» Latest member: PushPull
» Forum threads: 705
» Forum posts: 6,628

Full Statistics

>