我尝试在我的python代码中插入秒表。 代码从API读取数据,如果值更大,则“ 3”将继电器切换为ON(树莓派Pi3)。每XXX分钟读取一次。 我想要打印时间继电器打开或关闭的时间。
while True:
ts = time.time()
st = datetime.datetime.fromtimestamp(ts).strftime('%H:%M:%S')
.
.
.
.
.
.
if highest > 3:
print("RELAY ON")
print st
print # time how long it's on
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
else:
print("RELAY OFF")
print st
print # time how long it's off
GPIO.cleanup()
time.sleep(60)
我尝试使用此代码,但我不知道将其插入哪里。
import time
start = time.time()
time.sleep(10)
end = time.time()
total = end-start
print total
谢谢您的帮助!
答案 0 :(得分:0)
让我们只看一下时序逻辑。打开继电器时,将标记该开始时间。持续进行“打开时间”测量,直到您关闭继电器。然后,“ time off”计时器开始计时,一直持续到您再次打开它为止。
我怀疑您有点困惑,因为开始和停止事件在不同的代码块中。首先,让我们测量“接通”时间。我将创建一个标记relay_is_on
来通知中继状态何时更改。
当状态更改时,我们将采取措施:打印状态更改,重置标志并标记开始或停止时间。
relay_is_on = False
while True:
if highest > 3:
if not relay_is_on:
# Relay is just turning on;
# process changes
print("RELAY ON")
relay_is_on = True
relay_on_start = time.time()
else:
if relay_is_on:
# Relay is just turning off;
# process changes
print("RELAY OFF")
relay_is_on = False
relay_on_end = time.time()
relay_on_interval = relay_on_end - relay_on_start
在这里,您可以执行积累或报告中继间隔所需的任何操作。另外,如果您需要类似地处理延迟时间,只需在反逻辑中添加几行即可。
您可以从这里继续吗?