从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盘的电缆上。

<表><广告>产品 < < 固件温度 <哼< /th>注释< /广告><正文>回火0C45:7401温度1.4<金属回火413d:2107蛋彩金v3.1< <我>金属温度413d:2107温度v3.1<<白色塑料温度2413d:2107温度v3.3 我,E<TD/>白色塑料温度1413d:2107温度v3.3 e 白色塑料温度2321a86:5523温度232 v2.0 我,E<TD/><白色塑料

根据按键的不同,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输出。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java试图使用GUI解决问题,但如果语句让我困惑   将JavaSOAP请求转换为Javascript?   java请求的资源在使用Struts 2时不可用   Java FutureTask不工作?   java JPA计算布尔值   Java8到OpenJDK11Com。太阳组织。阿帕奇。xml。内部。*无法访问的类型   java我想从给定的字符串中打印数字1和数字0我怎么能?   在If statemet中调用方法的java   多线程线程能够看到java中主线程设置的更新的静态变量   java JPA/Hibernate@OrderBy random