2016-01-10 4 views
0

У меня есть сценарий (RelayControlMainGH.py), который контролирует температурные датчики и управляющие реле. Он использует операцию while с помощью time.sleep() и работает вечно. Я также создал скрипт (GetTableTimes.py), который читает 3 файла таблицы базы данных, и когда они становятся модифицированными, скрипт (CreateRelayControlConfig.py) воссоздает скрипт (RelayControlMainGH.py). Поэтому в любое время, когда я изменяю эти 3 таблицы в своей базе данных, этот новый файл конфигурации должен быть сделан из-за изменений пути или изменений температуры или логики, используемых для реле.start stop скрипт python, который создается динамически

Что было бы хорошим способом остановить запуск сценария (RelayControlMainGH.py) и позволить некоторое время для нового создания и повторного создания нового сценария.

Я попытался использовать cron без цикла while, но сценарий (RelayControlMainGH.py) не будет запущен. Я уверен, что если я поставлю его в cron с циклом while, мне придется найти его в системе, чтобы начать и остановить его.

Что было бы лучшим способом сделать это?

Я использую Raspberry Pi с rasbian

ответ

0

Я это было создание службы demean для моего скрипта (RelayControlMainGH.py) и запуск его при загрузке, или его можно запустить в любое время. Затем в моем скрипте, который создает файл конфигурации, я добавил остановку и начало демона, чтобы он мог получить новый файл конфигурации и продолжать работу. Он отлично работает!

0

Я хотел бы предложить, что вы поставите значения, которые были считаны GetTableTimes.py & CreateRelayControlConfig в файле JSON и всегда читать их в RelayControlMainGH.py

Таким образом, ваши задания cron будут простыми. Я не уверен, что вам нужен какой-то время Истинного цикл в любом случае, так как ваш хрон будет запускать его каждый * минуты/час/день ...

Я надеюсь, что это поможет вам структурировать ваше решение лучше

+0

Когда я вынимаю цикл while, time.slep (60) и запускаю скрипт в терминале, он ничего не делает. Вот часть кода, который я using.'code'while True: TEMP1 = tempRead1() если TEMP1 <66: GPIO.output (17, False) еще: GPIO.output (17, True) если TEMP1> 70 и GPIO.input (17): GPIO.output (27, False) еще: GPIO.output (27, True) time.sleep (60) 'code' Это будет создаваться динамически и на лету, поэтому я буду смотреть на json. Что я должен изменить код выше, чтобы он работал? – joeb