Сценарий Python для мониторинга высокого / низкого уровня на конкретном GPIO - PullRequest
0 голосов
/ 04 сентября 2018

Вот что я пытаюсь сделать:

У нас есть машины, которые мы хотим контролировать. Мы хотим отслеживать и регистрировать, когда машина запускается и машина останавливается.

Мы подключили машину «старт» к контакту 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)
...