从MISC读取温度数据。“以最小的依赖性调整“设备
temper-p的Python项目详细描述
回火.py
我的pcsensor销售的usb温度和温度/湿度传感器是 从父站点广泛可用 (http://pcsensor.com/usb-temperature-humidity.html" rel="nofollow">http://pcsensor.com/usb temperature-humidity.html)、亚马逊和 易趣网.
设计
有几个开源软件项目支持这些传感器, 有时包括复杂的监控和绘图软件。不像, 这些项目的目标是从 在满足以下约束条件的情况下,不进行任何其他操作:
- 必须在Linux下工作,
- 必须使用python 3,
- 尽可能避免使用第三方软件,
- 所有第三方软件必须作为标准的Debian软件包提供。
未使用libusb
我试着使用libusb(apt get install python3 usb;"import usb.core")然后 提供了一个非常好的USB设备的复杂接口。 不幸的是,我有一个温度计不能用原始的USB接口 需要通过hidraw设备访问;我有另一个温度计 一种未记录的hid协议,但可以通过串行tty访问。
不使用HID和HIDAPI
我尝试使用hid(apt get install python3hid)和hidapi(apt get install python3 hidapi)和这些工作正常的两个温度计,我有,但 不适用于需要通过串行tty访问的系统。
使用pyserial
尽管hid设备是直接访问的,但是pyserial用于ttys。这个 模块可用作Debian软件包: sudo apt get install python3 serial
支持的设备
我有五种来自pcsensors的设备。这些都是由 回火。py.
下表中的"I"表示传感器位于U盘内部,并且 "E"表示传感器位于插入U盘的电缆上。
<表><广告>根据按键的不同,1A86:5523设备可以识别为413D:2107, 但在该模式下无法成功使用。
如果您尝试使用libusb的其他软件,hidraw设备可能是 断开的。在这种情况下,请取出并重新插入U盘。
Temper1F只有一个外部传感器,但无法检测到 它是外部的,因此报告为内部温度。
回火
这是一个标有"脾气"的金属U盘,一面有温度计标志, 另一边是"脾气"。USB接口对面的一端有一个螺钉 洞。有一个湿度探测器,但看起来防水,我有 将矿井暂时浸入冰水和沸水中。
温度
这是一个白色塑料U盘,标有"temperhum"、"-40C-+85C"和 "0-100%相对湿度";蓝色按钮标记为"TXT"。在倒车档,"PCSensor"。这个 模型的末端没有千斤顶。
按下按钮时,红色LED将闪烁,显示以下信息 发送样式(温度线每秒重复一次)。
www.pcsensor.com
temperx v3.1
caps lock:on/off/++
num lock:off/on/--
type:inner-h2
inner-temperinner-humidityinterval
32.73 [c]36.82 [%rh]1s
再次按下按钮时,LED将熄灭或呈红色。 这是一种使用state.py。
温度2
物理描述:白色塑料U盘,标有"temper2", "-40C-+125C";红色按钮标记为"TXT"。在倒车档,"PCSensor"。 此型号的末端有一个用于外部传感器的插孔。
注意:按下按钮时,红色LED将作为信息闪烁 发送以下表格中的 第二)
不带外部传感器:
www.pcsensor.com
temperx v3.3
caps lock:on/off/++
num lock:off/on/--
type:inner-tx
inner-tempinterval
27.93 [c]1s
带外部传感器:
www.pcsensor.com
temperx v3.3
caps lock:on/off/++
num lock:off/on/--
type:inner-tx;outer-tx
inner-tempintervalinterval
27.18 [c]29.62 [c]1s
此程序使用LED熄灭或呈红色的模式。
温度1f
白色塑料U盘,标有"Temper1F"、"-40C-+125C";带粉色按钮 标记为"TXT"。在倒车档,"PCSensor"。这个模型有一个千斤顶 外部传感器,没有内部传感器。
当按下按钮时,红色LED将作为信息闪烁 发送以下表格中的一个(温度线每1个重复一次 第二)
不插入探针:
www.pcsensor.com
temperx v3.3
caps lock:on/off/++
num lock:off/on/--
type:unknown
1s
插入探针时:
www.pcsensor.com
temperx v3.3
caps lock:on/off/++
num lock:off/on/--
type:outer-tx
outer-tempinterval
24.93 [c]1s
此程序使用LED熄灭或呈红色的模式。
温度232
白色塑料U盘,标有"Temperx232","0-100%RH", 以及"-40-+85C";带有标有"按下"的绿色按钮。在反面, "PC感应器"。在USB接口对面的一端,有一个用于 外部温度传感器(我没有也没有尝试过)。
当按下并按住按钮,直到红色LED稳定时,蓝色 LED将每秒闪烁一次。在此模式下,USB供应商:产品更改为 413d:2107,但只有一个HID设备可用,协议发送到 hidraw设备被拒绝,但出现错误。
当LED闪烁蓝色,按钮被按下时, 发送以下内容(温度线每秒重复一次)。
www.PCsensor.com
TEMPerX232-V2.0
type:inner-H2
inner-temperinner-humidityinterval
30.48 [C]40.19 [%RH]1
当按下并按住按钮,直到红色发光二极管稳定时,绿色 LED将每秒闪烁一次。这是state.py使用的模式。在此模式下,如果 "帮助"被发送到串行设备,以下内容将被发送回来:
>>PCsensor<<
Welcome to use TEMPerX232!
Firmware Version:TEMPerX232_V2.0
The command is:
ReadTemp -->read temperature,temp_value = sensor_value + calibration
ReadCalib -->read calibration
SetCalib-type:xx.x,xx.x> -->set calibration, xx.x(-10.0~+10.0)
EraseFlash -->erase calibration
Version -->read firmware version
ReadType -->read the sensor type
ReadAlert-Temp -->read temp alert value
SetTempUpperAlert-type:xx.xx>-->set temp upper alert value,xx.xx(-40.00~+85.00)
SetTempLowerAlert-type:xx.xx>-->set temp lower alert value,xx.xx(-40.00~+85.00)
ReadAlert-Hum -->read hum alert value
SetHumUpperAlert-type:xx.xx> -->set hum upper alert value,xx.xx(00.00~99.99)
SetHumLowerAlert-type:xx.xx> -->set hum lower alert value,xx.xx(00.00~99.99)
SetMode-Temp:x> -->set tempmode, x(0~1)
ReadMode-Temp -->read tempmode
Help -->command help
? -->command help
The COM configuration is:
Mode: ASCII
Baud Rate: 9600bps
Data Bit: 8
Parity Bit: None
Stop Bit: 1
SHENZHEN RDing Tech CO.,LTD
www.PCsensor.com
这是state.py使用的模式。我没有成功拿到这个设备 以响应通过HID设备发送的任何命令。
在使用终端时,我最初很难得到readtemp的回复 程序(例如,cu),但是state.py中的示例没有任何 问题,可能是因为评论后没有发送换行符。
命令输出示例
帮助
$ ./temper.py --help
usage: temper.py [-h] [-l] [--json] [--force VENDOR_ID:PRODUCT_ID]
temper
optional arguments:
-h, --help show this help message and exit
-l, --list List all USB devices
--json Provide output as JSON
--force VENDOR_ID:PRODUCT_ID
Force the use of the hex id; ignore other ids
列出设备
在本例中,其中一个设备没有连接hid驱动程序 因为我使用的是基于libusb的程序来访问它。
$ ./temper.py -l
Bus 001 Dev 023 413d:2107 * ??? ['hidraw0', 'hidraw1']
Bus 001 Dev 086 0c45:7401 * TEMPerV1.4 []
Bus 002 Dev 002 04d8:f5fe TrueRNG ['ttyACM0']
温度
在本例中,其中一个设备没有连接hid驱动程序 因为我使用的是基于libusb的程序来访问它。
www.pcsensor.com
temperx v3.1
caps lock:on/off/++
num lock:off/on/--
type:inner-h2
inner-temperinner-humidityinterval
32.73 [c]36.82 [%rh]1s
0
www.pcsensor.com
temperx v3.1
caps lock:on/off/++
num lock:off/on/--
type:inner-h2
inner-temperinner-humidityinterval
32.73 [c]36.82 [%rh]1s
1
可以使用--list选项生成类似的json输出。