python IF ELSE 秒表

python stopwatch in IF ELSE

我尝试在我的 python 代码中插入秒表。 代码从 API 读取数据,如果值大于“3”,则将继电器切换到 ON(树莓派 3)。每 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

谢谢你的帮助!

我们只看时序逻辑。当你打开继电器时,你就标记了开始时间。 "time on" 测量会一直持续到您关闭继电器为止。然后 "time off" 定时器启动,一直持续到您再次打开它。

我怀疑您有点困惑,因为开始和停止事件位于不同的代码块中。首先,让我们测量 "relay on" 时间。我会做一个标志 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

从这里,您可以做任何您需要的事情来累积或报告中继间隔。此外,如果您需要类似地处理继电器关闭时间,只需在相反的逻辑中添加几行即可。

你能从这里继续吗?