init repo

This commit is contained in:
zecktos 2021-06-17 18:41:41 +02:00
commit e80cd6a3dd
5 changed files with 113 additions and 0 deletions

2
README.md Normal file
View File

@ -0,0 +1,2 @@
# piPlayer
video player and motion detector for pi zero

14
piplayer.service Normal file
View File

@ -0,0 +1,14 @@
[Unit]
Description=run osc video player
After=multi-user.target
[Service]
Type=simple
Restart=always
User=root
ExecStart=/usr/bin/bash /home/pi/piPlayer/runPiPlayer.sh
[Install]
WantedBy=multi-user.target

4
runPiPlayer.sh Executable file
View File

@ -0,0 +1,4 @@
#! /usr/bin/bash
cd /home/pi/piPlayer
python3 src/piPlayer.py

46
src/piPlayer.py Normal file
View File

@ -0,0 +1,46 @@
from pythonosc import dispatcher
from pythonosc import osc_server
from pythonosc import udp_client
from playerClass import videoPlayer
from time import sleep
import RPi.GPIO as GPIO
import threading
IP = "0.0.0.0"
PORT = 6060
OSC_ADDR = ""
REMOTE_IP = "192.168.21.232"
REMOTE_PORT = 3030
SENSOR_PIN = 4
OSC_SENSOR_ADDR = "/blumen/movement"
def readSensor():
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN,GPIO.IN)
client = udp_client.SimpleUDPClient(REMOTE_IP, REMOTE_PORT)
pinState = GPIO.input(SENSOR_PIN)
while True:
pinStateNew = GPIO.input(SENSOR_PIN)
if pinStateNew != pinState :
client.send_message(OSC_SENSOR_ADDR,pinStateNew)
pinState = pinStateNew
sleep(0.2)
if __name__ == "__main__":
thread = threading.Thread(target=readSensor)
thread.daemon = True
thread.start()
player = videoPlayer()
dispatcher = dispatcher.Dispatcher()
dispatcher.map(OSC_ADDR + "/play", player.play)
dispatcher.map(OSC_ADDR + "/togglePause", player.togglePause)
dispatcher.map(OSC_ADDR + "/pause", player.setPause)
dispatcher.map(OSC_ADDR + "/stop", player.stop)
dispatcher.map(OSC_ADDR + "/loop", player.setLoop)
dispatcher.map(OSC_ADDR + "/setVolume", player.setVolume)
server = osc_server.ThreadingOSCUDPServer((IP, PORT), dispatcher)
print("Serving on {}".format(server.server_address))
server.serve_forever()

47
src/playerClass.py Normal file
View File

@ -0,0 +1,47 @@
import os
import mplayer
import subprocess
import time
class videoPlayer:
p = mplayer.Player()
loop = False
def __init__(self):
os.environ["SDL_VIDEODRIVER"] = "fbcon"
os.environ["SDL_FBDEV"] = "/dev/fb1"
self.p = mplayer.Player(args=("-vo sdl"))
self.p.framedropping = 1
def play(self, oscAddr, filePath):
source = "".join(filePath)
print("play", source)
try:
self.p.loadfile(source)
except Exception as e:
print("could not load video")
print(e)
def togglePause(self, oscAddr=None, args=None):
self.p.pause()
print("togglePause")
def setPause(self, oscAddr, args):
print("pause", args)
if bool(args) != self.p.paused :
self.p.pause()
def stop(self, oscAddr=None, args=None):
self.p.pause()
time.sleep(0.5)
subprocess.run(["dd", "if=/dev/zero", "of=/dev/fb1"])
def setLoop(self, oscAddr, args):
print("loop", args)
self.p.loop = int(args)
def setVolume(self, oscAddr, args):
print("setVolume", args)
self.p.volume = float(args)