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.