我有一个价值 12 美元的 USB 记忆棒,可以记录温度(在设备本身上)。
有关详细信息,请参阅http://www.pcsensor.com/usb-thermometers/gold-temper.html
我下载了它的软件,它在 Windows 上运行良好- 目前是 Win-10 Insider Preview 17945 或最新的“FAST”Win-10...(现在,我使用的是 Linux)
当我启动 Ubuntu 17.10 并编译所提供的软件(makefile、C 程序等)时,我得到了
$ temper232
/dev/ttyUSB0: No such file or directory
一场lsusb
演出
Bus 002 Device 004: ID 0c45:7401 Microdia TEMPer Temperature Sensor
该 C 程序有一行:
#define MODEMDEVICE "/dev/ttyUSB0"
$ dmesg | grep -i temper shows
[ 2.490091] usb 2-5.4: Product: TEMPerV1.4
[ 2.493187] input: RDing TEMPerV1.4 as /devices/pci0000:00/0000:00:13.2/usb2/2-5/2-5.4/2-5.4:1.0/0003:0C45:7401.0003/input/input5
[ 2.553603] hid-generic 0003:0C45:7401.0003: input,hidraw2: USB HID v1.10 Keyboard [RDing TEMPerV1.4] on usb-0000:00:13.2-5.4/input0
[ 2.555527] hid-generic 0003:0C45:7401.0004: hiddev1,hidraw3: USB HID v1.10 Device [RDing TEMPerV1.4] on usb-0000:00:13.2-5.4/input1
那么我该怎么做呢?这似乎是一些 USB/串行端口问题。自从 Win 3.1 上的软盘以来,我再也没有使用过串行端口!
互联网上有很多关于此设备的信息,但大多数涉及 Python、Github、Raspberry-PI LAMP(我也有)、PERL(天哪!)以及一种我以前从未听说过的叫做“mock”的东西!一定要读一读!
我只希望基本设备能够响应温度,至少在终端上!
可以提供更多信息!只需询问!
答案1
这在 CentOS 上对我来说是有效的,但在 Ubuntu 上应该也是一样的。
首先安装pip install temperusb
(如果失败,请尝试pip2 install temperusb
明确请求使用 python2 pip)
然后你只需运行temper-poll
它就会打印当前读数。
答案2
答案3
有一个支持某些设备的 Python 库:
https://github.com/urwen/temper
我有一个 USB 温度计,但该库不支持它。
我试图对基于 HID 的协议进行逆向工程,但是自从我上次尝试(2012 年?)以来,计算机现在拥有如此多的 USB 设备,我甚至无法隔离它以进行可靠的数据包捕获。
相反,我所拥有的型号上有一个“TXT”按钮,可以将设备切换为键盘并定期输入温度。
它在“TXT”模式下注册自己/dev/input/by-id/usb-413d_2107-event-kbd
,所以我可以使用它sudo evtest --grab /dev/input/by-id/usb-413d_2107-event-kbd
来捕获它的输入,然后通过一些按摩将击键转换为一系列摄氏温度值。
这是我的脚本,它抓取 USB 设备(当它处于“TXT”模式时)并将击键转换为温度值:
#!/bin/sh
device_path='/dev/input/by-id/usb-413d_2107-event-kbd'
sed_script='s/^Event:.*(EV_KEY), code \([0-9]\+\)\s.*\(KEY_\w\+\).*, value 1$/\2/p'
sudo evtest --grab "$device_path" | \
sed --unbuffered --silent "$sed_script" | \
while read key; do
case "$key" in
KEY_[0-9]) printf '%s' "${key#KEY_}" ;;
KEY_DOT) printf '.' ;;
KEY_ENTER) printf '\n' ;;
*) printf 'X'
esac
done | \
sed --unbuffered 's/X.*//; /^$/d' | \
while read temp; do echo "$temp"; echo "$(date +%s) $temp" >>celsius.log; done
你的旅费可能会改变。