Ovládání USB relé v Ubuntu
PhDr. Mgr. Jeroným Klimeš, Ph.D. 2014-04-11
Na www.ebay.com jsem si za 200 Kč koupil USB relé, tedy vypínač, kterým lze běžné spotřebiče zapnout a vypnout přes počítač. Vypadá asi takto:
Pokud to má více relay než jedno, poznáte podle toho, že je u toho více těch modrých relátek. Já jsem bohatý, tak jsem si koupil verzi hned se dvěma:
https://www.ebay.com/itm/152464651505
Plánuji, že ho připojím na server a budu s ním přes půl republiky na dálku zapínat a vypínat plynový kotel, popřípadě v pokročilé verzi by to ještě mohlo mazat máslo na rohlíky.
K tomu potřebuji mít program, který ho bude ovládat. K tomuto relay dodávají nějaký program pro Windows, ale pod Wine nefunguje, a navíc server běží na Linuxu.
Po dlouhém hledání jsem našel toto jednoduché řešení:
Z stránky
https://github.com/davidbuechi/UsbRelay/
si stáhnete zip soubor, který rozbalíte do nějakého adresáře a v tom adresáři spustíte příkaz
make
ten vygeneruje spustitelný soubor
usbrelay
Ten spustíte příkazem
sudo ./usbrelay get
vypíše stav relay
1: ON
2: OFF
sudo ./usbrelay on 1
zapne první relé. To poznáte, podle svítící led-diody vedle usb konektoru.
sudo ./usbrelay off 2
vypne druhé relé
sudo ./usbrelay off
vypne všechny relé
Každopádně můžete ho přesunout to nějakého adresáře, který je v proměnné PATH, tedy např. do adresáře /bin či /sbin.
Nepovinné:
Pokud se chcete vyhnout zadání hesla u sudo, pak je třeba ho dát mezi sudoers:
sudo visudo
jerom ALL=NOPASSWD: /usr/sbin/usbrelay
Uložte pomocí Save (ctrl-o) a Exit (ctrl-x) a restartujte počítač
Problémy
Při příkazu make to hlásí chybu, že mu chybí knihovna usb.h, pak musíte nainstalovat tuto knihovnu:
sudo apt-get install libusb-dev
Jak zjistit, že je zařízení řádně připojeno?
Kromě toho, že svítí zelená LED dioda u konektoru, tak jsou dva způsoby:
a) příkaz sudo dmesg
[214827.481682] usb 3-1: new low-speed USB device number 20 using ohci-pci
[214827.651569] usb 3-1: New USB device found, idVendor=16c0, idProduct=05df
[214827.651586] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[214827.651595] usb 3-1: Product: USBRelay2
[214827.651603] usb 3-1: Manufacturer: www.dcttech.com
[214827.660291] hid-generic 0003:16C0:05DF.0003: hiddev0,hidraw0: USB HID v1.01 Device [www.dcttech.com USBRelay2] on usb-0000:00:12.0-1/input0
b) zkontrolovat, zda existuje virtuální soubor
/dev/usb/hiddev0
Poznámky
- Celé relé řídí tento mikroprocesor:
ATMEL ATTINY45-20SU - AVR microcontroller;
Flash:4kx8bit; EEPROM:256B; SRAM:256B; SO8 ,
který se v Linuxu ovládá těmito knihovnami:
http://www.obdev.at/products/vusb/download.html
Ale tu, jak vidíte, nemusíte stahovat.
- Prý by mělo fungovat i něco jako následující příkaz, ale to se mi nepodařilo rozchodit:
echo $'\xff\x01\x01' > ttyUSB0
echo -e '\xff\x01\x01' > /dev/usb/hiddev0
Vypínání kotle se nakonec nekonalo, protože se jednak kotel vyměnil a dnes je tam úplně jiný, kromě toho jsme se mezi tím přestěhovali. Místo toho jsem relé využil na zavařovací hrnec.