mirror of
https://github.com/Lapikud/Viido.git
synced 2026-03-23 21:24:21 +00:00
Added projector remotecontroll server
This commit is contained in:
130
projektor/projektor.py
Executable file
130
projektor/projektor.py
Executable file
@@ -0,0 +1,130 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import serial
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
def on_hdmi():
|
||||||
|
p = Projektor("/dev/ttyS0")
|
||||||
|
print("HDMI ON")
|
||||||
|
while True:
|
||||||
|
if p.get_power() != "ON":
|
||||||
|
print("PROJECTOR ON")
|
||||||
|
p.on()
|
||||||
|
|
||||||
|
elif p.get_source() != "HDMI":
|
||||||
|
print("SWITCHING HDMI")
|
||||||
|
p.hdmi()
|
||||||
|
break
|
||||||
|
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
sleep(1)
|
||||||
|
print("DONE")
|
||||||
|
p.close()
|
||||||
|
|
||||||
|
def on_vga():
|
||||||
|
p = Projektor("/dev/ttyS0")
|
||||||
|
print("VGA ON")
|
||||||
|
while True:
|
||||||
|
if p.get_power() != "ON":
|
||||||
|
print("PROJECTOR ON")
|
||||||
|
p.on()
|
||||||
|
|
||||||
|
elif p.get_source() != "VGA":
|
||||||
|
print("SWITCHING VGA")
|
||||||
|
p.vga()
|
||||||
|
break
|
||||||
|
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
sleep(1)
|
||||||
|
print("DONE")
|
||||||
|
p.close()
|
||||||
|
|
||||||
|
|
||||||
|
def get_status():
|
||||||
|
p = Projektor("/dev/ttyS0")
|
||||||
|
if p.get_power() == "OFF":
|
||||||
|
status = "off"
|
||||||
|
|
||||||
|
else:
|
||||||
|
status = p.get_source()
|
||||||
|
print("DONE")
|
||||||
|
p.close()
|
||||||
|
return status
|
||||||
|
|
||||||
|
def off():
|
||||||
|
p = Projektor("/dev/ttyS0")
|
||||||
|
p.off()
|
||||||
|
|
||||||
|
class Projektor:
|
||||||
|
def __init__(self, device):
|
||||||
|
self.ser = serial.Serial(device, 115200, timeout=1)
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
self.ser.close()
|
||||||
|
|
||||||
|
def ___delete__(self, instance):
|
||||||
|
self.close()
|
||||||
|
|
||||||
|
def on(self):
|
||||||
|
self.ser.write(b"\r*pow=on#\r")
|
||||||
|
|
||||||
|
def off(self):
|
||||||
|
self.ser.write(b"\r*pow=off#\r")
|
||||||
|
|
||||||
|
def hdmi(self):
|
||||||
|
self.ser.write(b"\r*sour=hdmi#\r")
|
||||||
|
|
||||||
|
def vga(self):
|
||||||
|
self.ser.write(b"\r*sour=RGB2#\r")
|
||||||
|
|
||||||
|
def get_source(self):
|
||||||
|
self.ser.read()
|
||||||
|
self.ser.write(b"\r*sour=?#\r")
|
||||||
|
|
||||||
|
while True:
|
||||||
|
c = self.ser.read(1)
|
||||||
|
if c == b">":
|
||||||
|
self.ser.read(17)
|
||||||
|
source = self.ser.read(4)
|
||||||
|
if source == b"HDMI":
|
||||||
|
return "hdmi"
|
||||||
|
elif source == b"RGB2":
|
||||||
|
return "vga"
|
||||||
|
elif not c:
|
||||||
|
break
|
||||||
|
|
||||||
|
def get_power(self):
|
||||||
|
self.ser.read()
|
||||||
|
self.ser.write(b"\r*pow=?#\r")
|
||||||
|
|
||||||
|
while True:
|
||||||
|
c = self.ser.read(1)
|
||||||
|
if c == b">":
|
||||||
|
self.ser.read(15)
|
||||||
|
status = self.ser.read(3)
|
||||||
|
|
||||||
|
if status == b"k i":
|
||||||
|
return None
|
||||||
|
elif status == b"ON#":
|
||||||
|
return "ON"
|
||||||
|
elif status == b"OFF":
|
||||||
|
return "OFF"
|
||||||
|
|
||||||
|
elif not c:
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
|
||||||
|
p = Projektor("/dev/ttyS0")
|
||||||
|
while True:
|
||||||
|
if p.get_power() != "ON":
|
||||||
|
print("POWER ON")
|
||||||
|
p.on()
|
||||||
|
|
||||||
|
elif p.get_source() != "HDMI":
|
||||||
|
print("switching HDMI")
|
||||||
|
p.hdmi()
|
||||||
|
else:
|
||||||
|
break
|
||||||
27
projektor/server.py
Executable file
27
projektor/server.py
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
from bottle import get, post, request, run
|
||||||
|
import projektor
|
||||||
|
|
||||||
|
@get("/status")
|
||||||
|
def status():
|
||||||
|
print("asking status")
|
||||||
|
return projektor.get_status()
|
||||||
|
|
||||||
|
@post("/status")
|
||||||
|
def set_status():
|
||||||
|
mode = request.forms.get("mode")
|
||||||
|
print("SETTING STATUS TO", mode)
|
||||||
|
if mode == "off":
|
||||||
|
projektor.off()
|
||||||
|
elif mode == "hdmi":
|
||||||
|
projektor.on_hdmi()
|
||||||
|
elif mode == "vga":
|
||||||
|
projektor.on_vga()
|
||||||
|
|
||||||
|
|
||||||
|
return "OK"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
run(host="127.0.0.1", port=6999, debug=True)
|
||||||
Reference in New Issue
Block a user