我正在用树莓皮3 b型做https://github.com/JsBergbau/MiTemperature2。它在自己的无限循环中正常工作,但我无法捕获终端的输出。如何使用python实现输出
以下是打印部分:
measurement_time = datetime.datetime.fromtimestamp(measurement.timestamp)
print(measurement_time)
humidity=int.from_bytes(data[2:3],byteorder='little')
print("Temperature: " + str(temp))
print("Humidity: " + str(humidity))
voltage=int.from_bytes(data[3:5],byteorder='little') / 1000.
print("Battery voltage:",voltage,"V")
measurement.temperature = temp
measurement.humidity = humidity
measurement.voltage = voltage
measurement.sensorname = args.name
batteryLevel = min(int(round((voltage - 2.1),2) * 100), 100) #3.1 or above --> 100% 2.1 --> 0 %
measurement.battery = batteryLevel
print("Battery level:",batteryLevel)
measurement_time = datetime.datetime.fromtimestamp(measurement.timestamp)
以下是我在终端上运行的脚本:
python3 LYWSD03MMC.py -d AA:BB:CC:DD:EE:FF
以下是输出:
2021-08-05 11:21:24
Temperature: 24.79
Humidity: 47
Battery voltage: 3.092 V
Battery level: 99
这是run命令和示例输出,感谢您的帮助,致以最良好的问候
你仔细看过代码了吗?有一个回调选项。这是从该脚本获取值的最简单方法。或者,这个问题更像是关于如何捕获python输出的学术问题
如果没有,这将有助于您:
描述回调的文档: https://github.com/JsBergbau/MiTemperature2#callback-for-processing-the-data
访问单个值: 在sendToInflux.shhttps://github.com/JsBergbau/MiTemperature2/blob/master/sendToInflux.sh中有一个例子,其中参数是温度等值
或者在使用sendToFile.sh时,它会逐行给出
sensorname,temperature,humidity,voltage,humidityCalibrated,timestamp MySensor 20.61 54 2.944 49 1582120122
这些数据应该很容易用python或awk处理
更改代码,使其
return
成为信息,而不仅仅是print
它。如果您有如下代码可能重构为
现在,您可以创建额外的代码来检索这些值,而无需打印它们,并对它们执行任何操作。把它们放在网站上?把它们上传到数据库?Rot13加密它们并发送电子邮件给比尔·盖茨?你的想象力是极限
如何准确地设计代码是一个广泛的话题,已经有很多书写过,将来还会有更多。一个常见的安排是确保有用的部分在模块化函数中,模块化函数只做一件事(理想情况下没有任何副作用),因此您可以
import
此代码并从其他程序中使用它。(这就是if __name__
部分很有用的原因。它确保在import
创建此文件时块内的代码不会运行。)添加命令行
它可以保存命令行输出
相关问题 更多 >
编程相关推荐