偶然间获得一个USB LED灯. 正好家里有OpenWrt的路由器. 插上去可以亮. 于是想看看能不能通过shell来控制它的亮灭.
居然还真行.
以我的TP-Link WR720N为例:
echo 1 > /sys/class/gpio/gpio8/value #亮
echo 0 > /sys/class/gpio/gpio8/value #灭
以后说不定可以在make或其它什么比较耗时的命令结束之后, blink一下灯. 或者把消息用Morse Code闪出来. 感觉会很好玩的样子.
#!/bin/sh
echo "Content-type: text/html"
echo ""
if [ $(cat /sys/class/gpio/gpio8/value) -eq 0 ]
then
echo 1 > /sys/class/gpio/gpio8/value
echo " "> ">">Light is
ON
"
else
echo 0 > /sys/class/gpio/gpio8/value
echo " "> ">">Light is
OFF
"
fi
这样, 你就可以通过http://example.com/cgi-bin/led来控制灯了.
还可以很方便的用bash来控:
alias blink='for i in 1 2 3 4;do curl -s -o /dev/null http://192.168.11.1/cgi-bin/led;sleep 0.3;done'
alias led='curl -s -o /dev/null http://192.168.11.1/cgi-bin/led'
这样, 就可以优雅地:
wget http://example.com/somemovie.mp4 && blink
make -j12 && blink
最棒的是, 你可以装一个我厂的阿里钱盾, 使用钱盾快启功能, 加一个自定义URL到iOS的全局下拉框中. 非常方便.
(以前用京东的WIFI插座, 拖了一个充电头, 再拖了一个USB LED小灯, 作为夜灯. 要打开手机, 解锁, 打开APP, 等广告, 找到开关, 点. 特别费劲, 而且还费电. )
sudo npm install -g homebridge
sudo npm install -g homebridge-http
在~/.homebridge/config.json
里加入
{
"bridge": {
"name": "HomebridgePI",
"username": "CD:22:3D:E3:CE:30",
"port": 51826,
"pin": "031-45-156"
},
"description": "The Onion!",
"platforms": [],
"accessories": [
{
"accessory": "Http",
"name": "康神的灯的灯灯等等灯",
"switchHandling": "realtime",
"http_method": "GET",
"on_url": "http://192.168.1.117/cgi-bin/led-on",
"off_url": "http://192.168.1.117/cgi-bin/led-off",
"service": "Light",
"brightnessHandling": "no",
"brightness_url": "http://localhost/controller/1707/%b",
"brightnesslvl_url": "http://localhost/status/100054",
"sendimmediately": "",
"username" : "",
"password" : ""
}
]
}
就可以大喊一声”Hey Siri, 开灯”
#turn on
xset led named "Scroll Lock"
#turn off
xset -led named "Scroll Lock"
# cd /sys/devices/platform/thinkpad_acpi/leds
# ls
tpacpi::power tpacpi::standby tpacpi::thinklight tpacpi::thinkvantage
# cd "tpacpi::power"
# while true;do echo 0 > brightness;sleep 0.1;echo 1 >brightness;sleep 0.1;done
可以与IFTTT相联的开源USB LED灯: http://blink1.thingm.com/
支持的设备
Manufacturer | Product | Ports | USB | VID:PID | Release | EOL |
---|---|---|---|---|---|---|
AmazonBasics | HU3641V1 (RPi issue) | 4 | 3.0 | 2109:2811 |
2013 | |
AmazonBasics | HU3770V1 (RPi issue) | 7 | 3.0 | 2109:2811 |
2013 | |
AmazonBasics | HU9003V1EBL | 7 | 3.1 | 2109:2817 |
2018 | |
AmazonBasics | HU9002V1SBL, HU9002V1ESL, HUC9002V1SBL, HUC9002V1EBL | 10 | 3.1 | 2109:2817 |
2018 | |
Apple | Thunderbolt Display 27" (internal USB hub) | 6 | 2.0 | 2011 | 2016 | |
Apple | USB Keyboard With Numeric Pad (internal USB hub) | 3 | 2.0 | 2011 | ||
Asus | Z87-PLUS Motherboard (onboard USB hub) | 4 | 3.0 | 2013 | 2016 | |
B+B SmartWorx | UHR204 | 4 | 2.0 | 0856:DB00 |
2013 | |
B+B SmartWorx | USH304 | 4 | 3.0 | 04B4:6506 |
2017 | |
Basler | 2000036234 | 4 | 3.0 | 0451:8046 |
2016 | |
Belkin | F5U101 | 4 | 2.0 | 0451:2046 |
2005 | 2010 |
Buffalo | BSH4A05U3BK | 4 | 3.0 | 05E3:0610 |
2015 | |
Bytecc | BT-UH340 | 4 | 3.0 | 2109:8110 |
2010 | |
Circuitco | Beagleboard-xM (internal USB hub) | 4 | 2.0 | 0424:9514 |
2010 | |
Club3D | CSV-3242HD Dual Display Docking Station | 4 | 3.0 | 2109:2811 |
2015 | |
CyberPower | CP-H420P | 4 | 2.0 | 0409:0059 |
2004 | |
Cypress | CY4608 HX2VL development kit | 4 | 2.0 | 04B4:6570 |
2012 | |
D-Link | DUB-H4 rev B (silver) | 4 | 2.0 | 05E3:0605 |
2005 | 2010 |
D-Link | DUB-H4 rev D,E (black). Note: rev A,C,F not supported | 4 | 2.0 | 05E3:0608 |
2012 | |
D-Link | DUB-H7 rev A (silver) | 7 | 2.0 | 2001:F103 |
2005 | 2010 |
D-Link | DUB-H7 rev D,E (black). Note: rev B,C not supported | 7 | 2.0 | 05E3:0608 |
2012 | |
Dell | P2416D 24" QHD Monitor | 4 | 2.0 | 2017 | ||
Dell | UltraSharp 1704FPT 17" LCD Monitor | 4 | 2.0 | 0424:A700 |
2005 | 2015 |
Dell | UltraSharp U2415 24" LCD Monitor | 5 | 3.0 | 2014 | ||
Elecom | U2H-G4S | 4 | 2.0 | 2006 | 2011 | |
GlobalScale | ESPRESSObin SBUD102 V5 | 1 | 3.0 | 1D6B:0003 |
2017 | |
Hawking Technology | UH214 | 4 | 2.0 | 2003 | 2008 | |
IOI | U3H415E1 | 4 | 3.0 | 2012 | ||
j5create | JUH470 (works only in USB2 mode) | 3 | 3.0 | 05E3:0610 |
2014 | |
Juiced Systems | 6HUB-01 | 7 | 3.0 | 0BDA:0411 |
2014 | 2018 |
LG Electronics | 38WK95C-W monitor | 4 | 3.0 | 0451:8142 |
2018 | |
Lenovo | ThinkPad Ultra Docking Station (40A20090EU) | 6 | 2.0 | 17EF:100F |
2015 | |
Lenovo | ThinkPad Ultra Docking Station (40AJ0135EU) | 7 | 3.1 | 17EF:3070 |
2018 | |
Lenovo | ThinkPad X200 Ultrabase 42X4963 | 3 | 2.0 | 17EF:1005 |
2008 | 2011 |
Lenovo | ThinkPad X6 Ultrabase 42W3107 | 4 | 2.0 | 17EF:1000 |
2006 | 2009 |
Lindy | USB serial converter 4 port | 4 | 1.1 | 058F:9254 |
2008 | |
Linksys | USB2HUB4 | 4 | 2.0 | 2004 | 2010 | |
Maplin | A08CQ | 7 | 2.0 | 0409:0059 |
2008 | 2011 |
Microchip | EVB-USB2517 | 7 | 2.0 | 2008 | ||
Moxa | Uport-407 | 7 | 2.0 | 110A:0407 |
2009 | |
NVidia | Jetson Nano B01 (details) | 4 | 3.0 | 2019 | ||
Phidgets | HUB0003_0 | 7 | 2.0 | 1A40:0201 |
2017 | |
Plugable | USB3-HUB7BC | 7 | 3.0 | 2109:0813 |
2015 | |
Plugable | USB3-HUB7C | 7 | 3.0 | 2109:0813 |
2015 | |
Plugable | USB3-HUB7-81X | 7 | 3.0 | 2109:0813 |
2012 | |
Raspberry Pi | B+, 2B, 3B (see below) | 4 | 2.0 | 2011 | ||
Raspberry Pi | 3B+ (see below) | 4 | 2.0 | 0424:2514 |
2018 | |
Raspberry Pi | 4B (see below) | 4 | 3.0 | 2109:3431 |
2019 | |
Renesas | uPD720202 PCIe USB 3.0 host controller | 2 | 3.0 | 2013 | ||
Rosewill | RHUB-210 | 4 | 2.0 | 0409:005A |
2011 | 2014 |
Sanwa Supply | USB-HUB14GPH | 4 | 1.1 | 2001 | 2003 | |
Seagate | Backup Plus Hub STEL8000100 | 2 | 3.0 | 0BC2:AB44 |
2016 | |
Sunix | SHB4200MA | 4 | 2.0 | 0409:0058 |
2006 | 2009 |
Targus | PAUH212U | 7 | 2.0 | 2004 | 2009 | |
Texas Instruments | TUSB4041PAPEVM | 4 | 2.1 | 0451:8142 |
2015 |
#先安装libusb
sudo apt-get install libusb-1.0-0-dev
#再安装uhubctl
sudo apt-get install unhubctl
你可以像这样控制USB端口上的电源:
uhubctl -a off -p 235
这意味着在默认的智能集线器上操作,并关闭端口 2,3,5 ( -p 235 ) 上的( -a off,或者 -a 0 ) 电源。 支持的操作是 off/on/cycle ( 或者 0/1/2 )。 cycle 表示关闭电源,等待一些延迟( 使用 -d 配置),然后将它的打开。
在Linux上,你可能需要使用 sudo 运行它,或者配置 udev USB权限。
如果连接了多个智能USB集线器,则应选择特定的集线器以使用 -l ( 位置) 参数进行控制。
要查找集线器位置,只需运行不带任何参数的uhubctl
即可。