Python脚本可监控特定GPIO的高/低

时间:2018-09-04 13:44:42

标签: python raspberry-pi monitor

这就是我想要做的:

我们有要监视的机器正在工作。我们想监视和记录机器启动和停止的时间。

我们已将机器“启动”连接到引脚17,并将机器“停止”连接到引脚22,因此,在循环完成/正确时,每个引脚应变为“低”,并将日志记录在CSV文件中。

它们永远不应同时低。而且一旦机器启动变低,它需要等到机器停止变低,然后再记录机器启动。它基本上只是永远在启动/停止之间循环,每次发生时都记录日志。 我还增加了轻微的睡眠延迟,因为它会记录每纳秒的时间。

它记录日期/时间,1或0,以及对网络共享上CSV文件的注释。

我有一个脚本可以自动创建网络地图。顶部附近的sudo部分是这样,因此我可以打开该文件夹并对其进行写入。

这是我下面的脚本,这可以满足我的需求吗?

try:
    import RPi.GPIO as GPIO
except RuntimeError:
    print("Error importing RPi.GPIO! Try using 'sudo' to run your script, or run shell as admin")

import datetime
import time
import os
import sys
import subprocess
if os.geteuid() != 0:
    os.execvp('sudo', ['sudo', 'python3'] + sys.argv)
# do root things


cyclestart = 17
cyclestop = 22
low = False
GPIO.setmode(GPIO.BCM)
GPIO.setup(cyclestop, GPIO.IN)
GPIO.setup(cyclestart, GPIO.IN)


while True: #outer loop runs (checks) indefintely
    if GPIO.input(cyclestop) is GPIO.HIGH and not low: 
        low = True
        now = datetime.datetime.now()
        csvresult = open("/home/pi/shares/dc4share/results.csv","a")
        csvresult.write(str(now) + "," + "Cycle Stop" + "\n")
        csvresult.close
        time.sleep (3)


    if GPIO.input(cyclestart) is GPIO.HIGH and low: 
        low = False
        now = datetime.datetime.now()
        csvresult = open("/home/pi/shares/dc4share/results.csv","a")
        csvresult.write(str(now) + "," + "Cycle Start" + "\n")
        csvresult.close
        time.sleep(3)

0 个答案:

没有答案