init
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
.venv
|
||||||
|
.vscode
|
||||||
4
config.yaml
Normal file
4
config.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
base_url: 192.168.178.155
|
||||||
|
https: false
|
||||||
|
bedtime: "00:30:00"
|
||||||
103
main.py
Normal file
103
main.py
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import yaml
|
||||||
|
import json
|
||||||
|
import requests
|
||||||
|
import time
|
||||||
|
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
|
||||||
|
config_path = "./config.yaml"
|
||||||
|
|
||||||
|
headers = {"Content-Type":"application/json"}
|
||||||
|
def init():
|
||||||
|
global conf # Configuration as dict, comfortable and easy.
|
||||||
|
conf = load_config(config_path)
|
||||||
|
if conf["https"] == True:
|
||||||
|
conf["post_url"] = f"https://{conf['base_url']}/json"
|
||||||
|
else:
|
||||||
|
conf["post_url"] = f"http://{conf['base_url']}/json"
|
||||||
|
|
||||||
|
def load_config(config_name) -> dict:
|
||||||
|
# Loads config file as yaml and returns a dict.
|
||||||
|
with open(config_name) as f:
|
||||||
|
data = yaml.load(f, Loader=yaml.BaseLoader)
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def parse_bedtime():
|
||||||
|
bedtime = conf["bedtime"]
|
||||||
|
hh,mm,ss = bedtime.split(":")
|
||||||
|
print(hh,mm,ss)
|
||||||
|
bedtime = datetime.now()
|
||||||
|
|
||||||
|
|
||||||
|
def get_status():
|
||||||
|
response = requests.get(conf["post_url"])
|
||||||
|
response_json = json.loads(response.text)
|
||||||
|
return response_json
|
||||||
|
|
||||||
|
def set_powerstate(target_state):
|
||||||
|
if target_state:
|
||||||
|
send_state = "false"
|
||||||
|
else:
|
||||||
|
send_state = "true"
|
||||||
|
response = requests.post(conf["post_url"], json={"on": send_state}, headers=headers)
|
||||||
|
|
||||||
|
def set_preset_id(preset_id=0):
|
||||||
|
send_data = {"ps": preset_id}
|
||||||
|
response = requests.post(conf["post_url"], json=send_data, headers=headers)
|
||||||
|
response_json = json.loads(response.text)
|
||||||
|
return response_json
|
||||||
|
|
||||||
|
|
||||||
|
class night_light:
|
||||||
|
def __init__(self):
|
||||||
|
get_status()
|
||||||
|
|
||||||
|
def get_status(self):
|
||||||
|
response = requests.get(f"{conf['post_url']}/state", headers=headers)
|
||||||
|
response_json = json.loads(response.text)
|
||||||
|
self.duration = response_json["nl"]["dur"]
|
||||||
|
self.mode = response_json["nl"]["mode"]
|
||||||
|
self.enabled = response_json["nl"]["on"]
|
||||||
|
self.target_brightness = response_json["nl"]["tbri"]
|
||||||
|
self.remaining_runtime = response_json["nl"]["rem"]
|
||||||
|
pprint(f"Remaining duration: {int(response_json['nl']['rem'])/60} min")
|
||||||
|
return response_json["nl"]
|
||||||
|
|
||||||
|
|
||||||
|
def set_status(self, force=False):
|
||||||
|
get_status()
|
||||||
|
send_data = {"nl":{
|
||||||
|
"on": self.enabled,
|
||||||
|
"dur": self.duration,
|
||||||
|
"mode": self.mode,
|
||||||
|
"tbri": self.target_brightness,
|
||||||
|
"rem": self.remaining_runtime
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if self.remaining_runtime == -1 or force:
|
||||||
|
response = requests.post(conf["post_url"], json=send_data, headers=headers)
|
||||||
|
response_json = json.loads(response.text)
|
||||||
|
return response_json
|
||||||
|
else:
|
||||||
|
return {'success': False}
|
||||||
|
|
||||||
|
|
||||||
|
init()
|
||||||
|
|
||||||
|
parse_bedtime()
|
||||||
|
|
||||||
|
# set_powerstate(1)
|
||||||
|
# set_preset_id(1)
|
||||||
|
# nl = night_light()
|
||||||
|
# pprint(nl.get_status())
|
||||||
|
# nl.enabled = True
|
||||||
|
# nl.mode = 1
|
||||||
|
# nl.duration = 90
|
||||||
|
# nl.target_brightness = 0
|
||||||
|
# pprint(nl.set_status())
|
||||||
|
# pprint(nl.get_status())
|
||||||
2
requirements.txt
Normal file
2
requirements.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
pyyaml
|
||||||
|
requests
|
||||||
Reference in New Issue
Block a user