Adresacja USB w configuration.yaml

,

Mam mały zgrzyt dotyczący portów USB w moim HA postawionym na RPi3B. Mam w tej chwili podłączony konwerter USB - RS485 do licznika energii. Jednak w momencie kiedy podpinam inne urządzenia na USB często zmienia mi się adresacja USB i licznik przestaje działać. Czy istnieje możliwość zaadresowania w taki sposób urządzeń USB żeby nie było takich problemów?
W tej chwili w integracji z licznikiem mam wpis: port: /dev/ttyUSB0. Gdzieś kiedyś czytałem że można wprowadzać adresację ID ale nie bardzo wiem jak to zrobić.

- name: ttyUSB0
    sysfs: >-
      /sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/ttyUSB0/tty/ttyUSB0
    dev_path: /dev/ttyUSB0
    subsystem: tty
    by_id: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
    attributes:
      DEVLINKS: >-
        /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
        /dev/serial/by-path/platform-3f980000.usb-usb-0:1.3:1.0-port0
      DEVNAME: /dev/ttyUSB0
      DEVPATH: >-
        /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/ttyUSB0/tty/ttyUSB0
      ID_BUS: usb
      ID_MODEL: USB_Serial
      ID_MODEL_ENC: USB\x20Serial
      ID_MODEL_ID: '7523'
      ID_PATH: 'platform-3f980000.usb-usb-0:1.3:1.0'
      ID_PATH_TAG: platform-3f980000_usb-usb-0_1_3_1_0
  ID_REVISION: '0264'
  ID_SERIAL: 1a86_USB_Serial
  ID_TYPE: generic
  ID_USB_DRIVER: ch341
  ID_USB_INTERFACES: ':ff0102:'
  ID_USB_INTERFACE_NUM: '00'
  ID_VENDOR: 1a86
  ID_VENDOR_ENC: 1a86
  ID_VENDOR_ID: 1a86
  MAJOR: '188'
  MINOR: '0'
  SUBSYSTEM: tty
  TAGS: ':systemd:'
  USEC_INITIALIZED: '4946700'

jeśli to powyżej pochodzi z
supervisor->system->host->sprzęt
z twojego systemu
to ścieżka “by ID” do tego portu to:

/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0

Początkowo też tak myślałem ale po podpięciu drugiego urządzenia drugie USB ma taką samą ścieżkę jak podałeś a chyba powinny się jednak różnić?

Dziwne, powinno mieć inną. Spróbuj z udev.
Ja mam to zrobione tak:
/etc/udev/rules.d/99-custom.rules

SUBSYSTEM==“tty”, ATTRS{idVendor}==“04d8”, ATTRS{idProduct}==“fd52”, SYMLINK+=“fancon”
SUBSYSTEM==“tty”, ATTRS{idVendor}==“1cf1”, ATTRS{idProduct}==“0030”, SYMLINK+=“conbee”

Tu masz przykład z dokumentacji Z2M:

A masz dwa identyczne urządzenia?
(wtedy nie da się ich rozpoznać po identyfikatorze, bo mają identyczny)

Swoją drogą to jest najzwyklejszy mostek UART (+ serial + parralel) do USB, a konkretniej CH341 w/g tego co widać w tym kawałku, który załączyłeś (nawet wspomniałeś, że to mostek USB-RS485), więc owszem może być problem z rozróżnieniem nawet rożnych urządzeń, bo ten mostek jest dość powszechnie stosowany we wszystkim co tanie… a przede wszystkim w tanich modułach developerskich, na których często bazuje sprzęt produkowany małoseryjnie.

Jeśli używasz samoróbek na ESP, to po prostu pozostałe oprzyj na modułach zawierających np. mostek CP2102 (np. niektóre TTGO), chociaż w sumie to takie zgadywanie :stuck_out_tongue: .

Drugie urządzenie to arduino mega i ono z tego co pamiętam faktycznie jest na CH341 więc chyba mamy powód.

Witam forumowiczów.
Mam bardzo podobny problem. Posiadam wpiętych 12 urządzeń USB, do mojego Raspberry. Są to klony arduino, które moją takie samo ID wiec ta metoda identyfikacji odpada. Inny sposób na porty USB to identyfikacja przez fizyczne miejsce i one nigdy się nie zmieniają jest to ścieżka /dev/serial/by-path/platform-3f980000.usb-usb-0:1.3:1.0-port0.3:1 oznacza pierwsze urządzenie w trzecim porcie. Problem polega na tym, że po restarcie HA nie uruchomi się z niewiadomego mi powodu. Jeżeli wyjmiemy urządzenie i ponownie włożymy do tego portu to będzie bez problemów widoczne.

W zależności od metody instalacji HA, muszą byc logi, z ktorych piwinno wynikać w czym problem bez logów nic nie zrobimy.

2023-02-10 18:30:24.306 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.3.5:1.0-port0

2023-02-10 18:30:24.341 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.3.7:1.0-port0

2023-02-10 18:30:24.364 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.1:1.0-port0

2023-02-10 18:30:24.380 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.2:1.0-port0

2023-02-10 18:30:24.389 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.3:1.0-port0

2023-02-10 18:30:24.396 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.4:1.0-port0

2023-02-10 18:30:24.412 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.5:1.0-port0

2023-02-10 18:30:34.263 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.3.4:1.0-port0

2023-02-10 18:30:34.276 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.6:1.0-port0

2023-02-10 18:30:34.316 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.3.5:1.0-port0

2023-02-10 18:30:34.350 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.3.7:1.0-port0

2023-02-10 18:30:34.373 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.1:1.0-port0

2023-02-10 18:30:34.389 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.2:1.0-port0

2023-02-10 18:30:34.396 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.3:1.0-port0

2023-02-10 18:30:34.404 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.4:1.0-port0

2023-02-10 18:30:34.419 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.5:1.0-port0

2023-02-10 18:30:44.272 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.3.4:1.0-port0

2023-02-10 18:30:44.287 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.6:1.0-port0

2023-02-10 18:30:44.323 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.3.5:1.0-port0

2023-02-10 18:30:44.359 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.3.7:1.0-port0

2023-02-10 18:30:44.382 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.1:1.0-port0

2023-02-10 18:30:44.397 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.2:1.0-port0

2023-02-10 18:30:44.405 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.3:1.0-port0

2023-02-10 18:30:44.412 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.4:1.0-port0

2023-02-10 18:30:44.426 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.5:1.0-port0

2023-02-10 18:30:54.282 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.3.4:1.0-port0

2023-02-10 18:30:54.296 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.6:1.0-port0

2023-02-10 18:30:54.332 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.3.5:1.0-port0

2023-02-10 18:30:54.368 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.3.7:1.0-port0

2023-02-10 18:30:54.391 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.1:1.0-port0

2023-02-10 18:30:54.405 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.2:1.0-port0

2023-02-10 18:30:54.412 ERROR (MainThread) [mysensors.gateway_serial] Unable to connect to /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.3:1.0-port0

i tak bez końca …

Edit:

Wydaje mi się, że problem jest gdzie indziej. Zapomniałem, że podobną sytuację miałem przy Domoticzu. Dongel Sonoff tworzy jakiś problem. Jaki dokładnie nie wiem … ilość urządzeń USB … ilość danych ? Nie mam pojęcia. Natomiast natknąłem się kiedyś na taki problem na zagranicznych forach i pomagało dodanie do pliku cmdline.txt

fsck.repair=yes rootwait coherent_pool=4M

Na chwilę obecną testuję to rozwiązanie i wydaje się działać więc dla osób, które mają dużo klonów płytek Arduino ten sposób wydaje się być OK.

pozdrawiam

1 polubienie

Witam

Próbuję się przekonać do Home Assistanta po Domoticzu, ale mam problem z mysensors podłączone przea usb.
HA ma zainstalowanego na RPi3B+ i podpięte 3 arduino nano (klony), działa to przez godzinę może dwie, po tym czasie jakby się usypiały i nie nie reagują i nie pokazują zmiany sensorów.
W moim HA niema pliku cmdline.txt aby wstawić “fsck.repair=yes rootwait coherent_pool=4M”.
Jest może jakieś rozwiązanie podobne jak w domoticzu.

pzdw

To, że z poziomu HA nie da się grzebać w ustawieniach OSa (w prosty sposób) to jeszcze nie znaczy, że to całkowicie niewykonalne.

Próbuję zrozumieć która opcja miałaby pomóc i w czym - jeśli to napiszesz może uda.

Dziękuje za zainteresowanie.
Po jakimś czasie mysensors zamiera (nie pokazuje stanu sensoru np. otwarcie okien, nie reaguje na sterowanie przekażnika), ponowne wczytanie integracji przywraca je do życia.
Coś podobnego było w Domoticzu, tam znalazłem takie rozwiązanie:
PersistentUSBDevices - Domoticz

Devpath to hierarchia portów. Tak więc w tym konkretnym przykładzie, używając dwóch tanich chińskich klonów Arduino bez odpowiednich numerów seryjnych na Raspberry Pi 3, możemy dodać to do pliku USB Serial Rules:

PODSYSTEM == “tty” , ATTRS { idVendor } == “1a86” , ATTRS { idProduct } == “7523” , ATTRS { devpath } == “1.2” , LINK SYMALNY += “ttyUSB-arduino1”
PODSYSTEM == "tty " , ATTRS { idVendor } == “1a86” , ATTRS { idProduct } == “7523” , ATTRS { ścieżka programisty } ==“1.5” , SYMLINK += “ttyUSB-arduino2”

być może jest to ten sam problem, tyle tylko, że przy tej instalacji HA nie wiadomo jak to zaimplementować.
Myślałem o zastępczym rozwiązaniu, że może tak by np. co godzinę odpytywać o stan wybranych sensorów z mysensors aby podtrzymywać je przy życiu.

Jak zgaduję twój system to HAOS (nie za bardzo można w nim grzebać) jeśli potrzebujesz skutecznego adresowania to jest dostępne adresowanie po portach

Natomiast to co wygrzebałem odnośnie podpinania masowej ilości sprzętu USB do RPi to opcja “coherent_pool=4M” (właściwie to wykopałem, że “coherent_pool=2M” ma wystarczyć dla 48 urządzeń USB) - możesz to wypróbować dopisując do commandline.txt
Za dużo roboty by opisywać jak się dostać z wewnątrz HA do plików na partycji boot wymaga to m.in. trybu debugowania OSa, ale możesz zrobić to dużo prościej - zamknij “po bożemu” system HAOS na RPi i przełóż kartę (czy podepnij ssd) do peceta z w zasadzie dowolnym systemem, ale jeśli to Windows to jedyna widzialna partycja to właśnie boot, tam znajdziesz commandline.txt.

Witam ponownie
Trochę poeksperymentowałem, dopisałem linie w cmdline.txt

dwc_otg.lpm_enable=0 console=tty1 usb-storage.quirks=174c:55aa:u,2109:0715:u,152d:0578:u,152d:0579:u,152d:1561:u,174c:0829:u,14b0:0206:u,174c:225c:u
fsck.repair=yes rootwait coherent_pool=4M

no i nie wiem czy poprawnie, czy problem jest gdzie indziej bo arduino-klon po pewnym czasie jakby usypiał się. Po różnych próbach wyszło na to, że problem jest w połączeniu arduino-klon z RPi3B+.
Po zamianie na RPi4 tego zjawiska niema lub po zamianie na aduino uno orginał też.
Szkoda bo mam dwie inne instalacje domoticza właśnie na RPi3B+, które chciałem też przenieś na HA.
pzdr