Permalänk
Medlem

Magic mirror, python/bash

Hej.

Jag har byggt en Magic mirror med en Raspberry Pi 3B, med Raspbian Buster.
Skärmen ska tändas med ett tryck på en fysisk knapp.

Använder följande skript, ursprungligen för en rörelsesensor:

#!/usr/bin/env python

import sys
import time
import RPi.GPIO as io
import subprocess

io.setmode(io.BCM)
SHUTOFF_DELAY = 2 # seconds
PIR_PIN = 12

def main():
io.setup(PIR_PIN, io.IN)
turned_off = False
last_motion_time = time.time()

while True:
if io.input(PIR_PIN):
last_motion_time = time.time()
sys.stdout.flush()
if turned_off:
turned_off = False
turn_on()
else:
if not turned_off and time.time() > (last_motion_time + SHUTOFF_DELAY):
turned_off = True
turn_off()
time.sleep(.1)

def turn_on():
subprocess.call("monitor_on.sh", shell=True)

def turn_off():
subprocess.call("monitor_off.sh", shell=True)

if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
io.cleanup()

Dold text

Vilket ger felmeddelandet /bin/sh: 1: monitor_off.sh: not found
monitor_off.sh ligger i samma mapp som skriptet och fungerar om jag kör den direkt.
Även testat med fullständig sökväg.

Efterforskning pekar mot att problemet är att jag blandar python och bash i samma skript.
Förslag på lösning?

Permalänk
Medlem

Execute bit?
från https://www.raspberrypi.org/forums/viewtopic.php?t=184485
"subprocess.Popen(['home/pi/Documents/Project/Subprocess/Beep2.py'], shell = True)
and make sure Beep2.py has execute bit set (chmod u+x Beep2.py)"

Permalänk
Medlem

Lägg monitor_off.sh i /usr/bin

Skickades från m.sweclockers.com

Permalänk
99:e percentilen

Prova "./monitor_on.sh" istället för "monitor_on.sh".

Om det inte fungerar, prova så här istället:

subprocess.run(["bash", "monitor_on.sh"])

Och tänk på att slå in kod i [code]-taggar, annars blir den oläslig – i synnerhet Python!

[code]
print("hello")
[/code]

Visa signatur

Skrivet med hjälp av Better SweClockers