gpt4 book ai didi

python - 如何使用 owfs 读取 iButton 温度记录器?

转载 作者:太空狗 更新时间:2023-10-29 20:24:52 24 4
gpt4 key购买 nike

我已经安装了 owfs并试图从 iButton temperature logger 中读取数据.

owfs 让我将 iButton 挂载为 fuse 文件系统,我可以看到所有数据。不过,我无法弄清楚什么是访问数据的最佳方式。我可以通过 cat 文件获取单独的读数,例如cat onewire/{deviceid}/log/temperature.1,但 onewire/{deviceid}/log/temperature.ALL 文件已“损坏”(可能太大,因为 histogram/temperature.ALL 工作正常)。

读取所有文件的 python 脚本似乎可以工作,但需要很长时间。有更好的方法吗?有没有人有任何例子?

我使用的是 Ubuntu 8.04,无法运行 java“one wire viewer”应用程序。

更新:使用owpython (与owfs一起安装),我可以获得当前温度但无法弄清楚如何访问记录的日志:

>>> import ow
>>> ow.init("u") # initialize USB
>>> ow.Sensor("/").sensorList()
[Sensor("/81.7FD921000000"), Sensor("/21.C4B912000000")]
>>> x = ow.Sensor("/21.C4B912000000")
>>> print x.type, x.temperature
DS1921 22

x.log 给出了一个 AttributeError

最佳答案

我也遇到过 owfs 的问题。我发现它是一个简单问题的过度设计解决方案。现在我正在使用 DigiTemp代码没有问题。我发现它既灵活又可靠。例如,我通过运行每分钟将房间的温度存储在日志文件中

/usr/local/bin/digitemp_DS9097U -c /usr/local/etc/digitemp.conf \
-q -t0 -n0 -d60 -l/var/log/temperature

为了达到这一点,我下载了源文件,将其解压缩,然后执行了以下操作。

# Compile the hardware-specific command
make ds9097u
# Initialize the configuration file
./digitemp_DS9097U -s/dev/ttyS0 -i
# Run command to obtain temperature, and verify your setup
./digitemp_DS9097U -a
# Copy the configuration file to an accessible place
cp .digitemprc /usr/local/etc/digitemp.conf

我还手动编辑了我的配置文件以根据我的设置进行调整。这就是它的结局。

TTY /dev/ttyS0
READ_TIME 1000
LOG_TYPE 1
LOG_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F"
CNT_FORMAT "%b %d %H:%M:%S Sensor %s #%n %C"
HUM_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F H: %h%%"
SENSORS 1
ROM 0 0x10 0xD3 0x5B 0x07 0x00 0x00 0x00 0x05

在我的例子中,我还创建了一个/etc/init.d/digitemp 文件并使其在启动时运行。

#! /bin/sh
#
# System startup script for the temperature monitoring daemon
#
### BEGIN INIT INFO
# Provides: digitemp
# Required-Start:
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start: 2 3 5
# Default-Stop: 0 1 6
# Description: Start the temperature monitoring daemon
### END INIT INFO

DIGITEMP=/usr/local/bin/digitemp_DS9097U
test -x $DIGITEMP || exit 5

DIGITEMP_CONFIG=/root/digitemp.conf
test -f $DIGITEMP_CONFIG || exit 6

DIGITEMP_LOGFILE=/var/log/temperature

# Source SuSE config
. /etc/rc.status

rc_reset
case "$1" in
start)
echo -n "Starting temperature monitoring daemon"
startproc $DIGITEMP -c $DIGITEMP_CONFIG -q -t0 -n0 -d60 -l$DIGITEMP_LOGFILE
rc_status -v
;;
stop)
echo -n "Shutting down temperature monitoring daemon"
killproc -TERM $DIGITEMP
rc_status -v
;;
try-restart)
$0 status >/dev/null && $0 restart
rc_status
;;
restart)
$0 stop
$0 start
rc_status
;;
force-reload)
$0 try-restart
rc_status
;;
reload)
$0 try-restart
rc_status
;;
status)
echo -n "Checking for temperature monitoring service"
checkproc $DIGITEMP
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}"
exit 1
;;
esac
rc_exit

关于python - 如何使用 owfs 读取 iButton 温度记录器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/113185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com