Beş adet USB kamera var, aynı marka, aynı model (Canyon CNR-FWC120H). Farklı sahneleri 7/24 izlemek için kullanılırlar. Bir şekilde hangi kameranın hangisi olduğunu Linux (Debian) konsolundan veya programlı olarak (herhangi bir dil) belirlemeliyim.
Çıktısına bakmayı denedim lsusb -vvv
, iSerial
her kamera için farklı olması gereken bir alan var ama ne yazık ki bu üretici rahatsız etmemeye karar verdi ve tüm kameralar aynı yerde aynı seriye sahip:200901010001
Hangi kameranın bağlı olduğunu USB bağlantı noktalarından bağımsız olarak tanımlayabileceğim başka bir yol var mı, çünkü ne yazık ki belirli senaryomda aynı kameranın her zaman aynı bağlantı noktasına bağlanacağı gerçeğine güvenemiyorum.
GÜNCELLEME Yorumlardaki bazı tartışmalardan sonra bunun imkansız olduğunu anladım. Bu yüzden, son paragrafı unutun ya da bazı ustaca bir fikriniz varsa, lütfen bunu sunmaya davetlisiniz. Cihazın hangi USB portuna bağlandığını tespit edebilirsem şimdi ilgileniyorum; Kameralara yeteri kadar bant genişliği sağlamak için anakarttaki dahili USB bağlantı noktalarını ve ek PCI USB denetleyici kartlarını kullanıyorum. Bağlantı noktasını benzersiz bir şekilde tanımlamam gerekir ve örneğin makine yeniden başlatılırsa ve USB denetleyicileri farklı sırayla başlatılırsa bağlantı noktası numarası / kimliği değişmemelidir. Mümkün mü?
GÜNCELLEME 2 Kameralarımdan birinin kayıtlarımda aşağıdaki bilgileri görüyorum:
[Wed Apr 30 18:35:02 2014] uvcvideo: Found UVC 1.00 device FULL HD 1080P Webcam (0bda:58b0)
[Wed Apr 30 18:35:02 2014] input: FULL HD 1080P Webcam as /devices/pci0000:00/0000:00:01.0/0000:01:00.0/usb3/3-2/3-2:1.0/input/input4
Bunu kullanarak bu komutu çağırdım:
udevadm info --query=all --path=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/usb3/3-2/3-2:1.0/input/input4
Ve şunu anladım:
P: /devices/pci0000:00/0000:00:01.0/0000:01:00.0/usb3/3-2/3-2:1.0/input/input4
E: DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/usb3/3-2/3-2:1.0/input/input4
E: EV=3
E: ID_BUS=usb
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_MODEL=FULL_HD_1080P_Webcam
E: ID_MODEL_ENC=FULL\x20HD\x201080P\x20Webcam
E: ID_MODEL_ID=58b0
E: ID_PATH=pci-0000:01:00.0-usb-0:2:1.0
E: ID_PATH_TAG=pci-0000_01_00_0-usb-0_2_1_0
E: ID_REVISION=5801
E: ID_SERIAL=Generic_FULL_HD_1080P_Webcam_200901010001
E: ID_SERIAL_SHORT=200901010001
E: ID_TYPE=video
E: ID_USB_DRIVER=uvcvideo
E: ID_USB_INTERFACES=:0e0100:0e0200:010100:010200:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=Generic
E: ID_VENDOR_ENC=Generic
E: ID_VENDOR_ID=0bda
E: KEY=100000 0 0 0
E: MODALIAS=input:b0003v0BDAp58B0e5801-e0,1,kD4,ramlsfw
E: NAME="FULL HD 1080P Webcam"
E: PHYS="usb-0000:01:00.0-2/button"
E: PRODUCT=3/bda/58b0/5801
E: PROP=0
E: SUBSYSTEM=input
E: UDEV_LOG=3
E: USEC_INITIALIZED=41090223
Kameralar arasında farklılık şeylerdir DEVPATH
, ID_PATH
, ID_PATH_TAG
, PHYS
ve (en ilginç) USEC_INITIALIZED
. Şimdi ilk dört element muhtemelen USB portuyla ilişkili, fakat sonuncusu bir USEC_INITIALIZED
seri numaraya benziyor. Gerçekte neyi temsil ettiği hakkında hiçbir bilgi bulamıyorum. Bir şey bilen var mı? Kamera başlatıldığında mikro saniye cinsinden zamanın gelebileceğini düşündüm, ancak bundan sonra ilk başlatılan kameranın USEC_INITIALIZED=17919751
, daha sonra bir tanesinin USEC_INITIALIZED=25609278
daha rasgele göründüğünü düşündüm . Sistemi yeniden başlatıp görmeye çalışacağım, ancak bunun için uygun bir süre beklemem gerekiyor.
Ve eğer birileri neden merak ediyorsa, neden sadece bir kamerayı tekrar bağlamaya çalışmıyorum ve aynı kaldığını kontrol ediyorum. Cevap şu ki, bu bilgisayarı uzaktan çalıştırıyorum ve tüm bunları sistemi gelecekteki potansiyel bir olay için tamamen özerk olmaya hazırlamak için araştırıyorum. Örneğin, kameraların USB bağlantı noktalarından çıkarılmasını içerebilir.