Rozpoznawanie urządzeń USB - ulepszenia w wersji Hugo

Rozpoznawanie urządzeń USB - ulepszenia w wersji Hugo

W związku z dodaniem obsługi zWave, pracujemy nad kilkoma usprawnieniami w temacie USB.

Dotychczas było tak, że Jolka obsługiwała automatycznie tylko adapter Zigbee.
To było proste bo zakładaliśmy, że adapter pojawi się zawsze na porcie /dev/ttyACM0 i ten port obsługiwaliśmy “na sztywno”.

Teraz (od wersji Hugo), jest to bardziej skomplikowane, bo jak ktoś włoży równocześnie adapter Zigbee i Zwave to musimy obsłużyć 2 porty i musimy wiedzieć co jest na którym porcie.

To wcale nie jest proste, bo raz urządzenie może być podłączone do portu /dev/ttyACM0 a innym razem do /dev/ttyACM1 itd… w zależności od tego jak sobie to system Linux ponumeruje.
Rozwiązaliśmy ten problem i poniżej wyjaśniamy jak to działa.

Możliwość wyłączenia automatycznego wykrywania oraz głosowych powiadomień o USB

W nowej wersji dodajemy możliwość wyłączenia rozpoznawania adapterów USB i uruchamiania automatycznie domyślnych usług zigbee i zwave.

Opcje te będą dostępne z poziomu konfiguracji bramki AIS dom:

Opcje te mogą się przydać dla osób które z jakiś względów nie chcą żeby usługi się same uruchamiały po włożeniu adaptera do bramki AIS dom.
Bo np. chcą w inny sposób obsługiwać adaptery, nie przez nasze standardowe usługi zgibee2mqtt i zwavejs2mqtt ale np. przez jakąś integracje z Home Assistant, których mamy od koloru do wyboru :wink:

Wykrycie urządzenia powiązanego z portem

Żeby to wykryć jakie urządzenie jest przypisane do jakiego portu, robimy taką komendę w kodzie:

find /sys/devices -name 'ttyACM*'

następnie sprawdzamy kod dostawcy urządzenia usb i kod produktu taką komendą

cat /sys/devices/c9000000.dwc3/xhci-hcd.0.auto/usb1/*/*/*/idVendor
cat /sys/devices/c9000000.dwc3/xhci-hcd.0.auto/usb1/*/*/*/idProduct

wynik łączymy i mamy odpowiedz na jakim porcie jest urządzenie.

To łączenie komend (find, cat, echo) robimy za pomocą komendy exec i wygląda to mniej więcej tak:

find /sys/devices -name 'ttyACM*' -exec echo {} \; -exec  cat {}/../../../idProduct {}/../../../idVendor \;

Kto jest producentem urządzenia i jaki to produkt można sprawdzić w Internecie po identyfikatorach

Można też sprawdzić w pliku. To w ten sposób Jolka wie co podłączono do bramki:

Podsumowując

Jeżeli ktoś korzysta z naszych standardowych integracji zigbee2mqtt i zwavejs2mqtt to nie zmieni się nic. Wystarczy, że włożysz obsługiwany adapter usb, system go rozpozna, zmieni konfigurację usługi na odpowiedni port i uruchomi stosowną usługę :tada:

Jeżeli ktoś nie chce żeby działo się to z automatu i woli sam uruchamiać usługi, sam zarządzać konfigurację, lub korzystać z innych metod na komunikację z adapterem Zwave i Zigbee, to wystarczy zrobić tak:

Jeżeli dodatkowo nie chcemy żeby Jolka mówiła o dodaniu i usunięciu urządzenia USB, to wystarczy zrobić tak:

image

To wszystko jest oczywiście skomplikowane… ale to naprawdę nic w porównaniu z protokołem USB :wink:
Ta strona do USB będzie jeszcze rozwijana - mamy w tym temacie kilka pomysłów i planów.

Oczywiście dodamy stosowne wyjaśnienie w dokumentacji.

4 polubienia

Szacun, coraz lepiej to wygląda - dojrzewa.

2 polubienia