Python скрипт как cronjob не делает системный код - PullRequest
0 голосов
/ 21 апреля 2020

Я надеюсь, что вы можете помочь мне с моей проблемой. Я ищу в Интернете с нескольких дней.

Следующая ситуация:

Я получил Raspberry Pi 4 с последним Raspbian Futhermore, у меня есть RF-передатчик 433 МГц и датчик dht22.

Я создаю python скрипт, который запускается cron (очень минутно). Он получает текущую температуру от dht22 и, когда она становится слишком низкой, отправляет команду для включения теплового преобразователя, в противном случае - команду для отключения тепловой карты.

скрипт отлично работает, когда я запускаю его в Thonny IDE или непосредственно из bash. Внутри python скрипта я делаю небольшую запись в лог-файл, чтобы проверить, выполняется ли скрипт cron. Все хорошо, cron запускает скрипт без ошибок, записывается лог-файл, консоль показывает вывод скрипта - , но - он не переключит тепловую карту , команда не будет отправлена.

Это cronjob, созданный пользователем pi, скрипт python тоже является пользователем pi и имеет + x chmod.

Все это прошло до того, как кто-то решил залить мою малину пивом, поэтому я купил новую и взял сценарий из своей резервной копии.

Что я делаю не так?

команда для отправки данных RF:

if (temperature <= 23):
    FNULL = open(os.devnull, 'w')
    retcode = subprocess.call(['send 11111 1 1'], stdout=FNULL, stderr=subprocess.STDOUT, shell=True)

Или (другая версия)

if (temperature <= 25):
    bashCommand = "send 11111 1 1"
    os.system(bashCommand)

Мой crontab:

* * * * * /usr/bin/python3 /home/pi/script.py

Мой syslog:

Apr 19 07:10:01 raspberrypi CRON[30011]: (pi) CMD (/usr/bin/python3 /home/pi/script.py)
Apr 19 07:11:01 raspberrypi CRON[30156]: (pi) CMD (/usr/bin/python3 /home/pi/script.py)

команда send находится в $ PATH:

pi@raspberrypi:~ $ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:**/home/pi/raspberry-remote**

Я не понимаю, что я делаю неправильно. пожалуйста, помогите мне.

...