mirror of https://github.com/Lapikud/Viido.git
parent
9753503d53
commit
9ab94084cb
2 changed files with 157 additions and 0 deletions
@ -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 |
@ -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) |
Loading…
Reference in new issue