Add image services
This commit is contained in:
@@ -5,11 +5,11 @@ from buttonplus_generator.constants import *
|
|||||||
from buttonplus_generator.utils import bar_id, display_id
|
from buttonplus_generator.utils import bar_id, display_id
|
||||||
|
|
||||||
|
|
||||||
def config_services(version: int) -> Dict[str, Any]:
|
def config_services(version: int, token: str) -> Dict[str, Any]:
|
||||||
# Toast needs to be after notification, so that the toast is temporarily shown over a notification if needed
|
# Toast needs to be after notification, so that the toast is temporarily shown over a notification if needed
|
||||||
config = notification_service(version=version)
|
config = notification_service(version=version)
|
||||||
config = deep_merge(config, toast_service())
|
config = deep_merge(config, toast_service())
|
||||||
# config = deep_merge(config, image_service())
|
config = deep_merge(config, image_service(token=token))
|
||||||
|
|
||||||
return config
|
return config
|
||||||
|
|
||||||
@@ -28,7 +28,12 @@ def toast_service() -> Dict[str, Any]:
|
|||||||
"globals": [
|
"globals": [
|
||||||
{"id": "internal_toast", "type": "std::string", "initial_value": ""}
|
{"id": "internal_toast", "type": "std::string", "initial_value": ""}
|
||||||
],
|
],
|
||||||
"script": [{"id": display_id(IdSuffix.SCRIPT_DRAW), "then": [{"lambda": generated_cpp}]}],
|
"script": [
|
||||||
|
{
|
||||||
|
"id": display_id(IdSuffix.SCRIPT_DRAW),
|
||||||
|
"then": [{"lambda": generated_cpp}],
|
||||||
|
}
|
||||||
|
],
|
||||||
"api": {
|
"api": {
|
||||||
"actions": [
|
"actions": [
|
||||||
{
|
{
|
||||||
@@ -84,7 +89,12 @@ def notification_service(version: int) -> Dict[str, Any]:
|
|||||||
"globals": [
|
"globals": [
|
||||||
{"id": "internal_notify", "type": "std::string", "initial_value": ""}
|
{"id": "internal_notify", "type": "std::string", "initial_value": ""}
|
||||||
],
|
],
|
||||||
"script": [{"id": display_id(IdSuffix.SCRIPT_DRAW), "then": [{"lambda": generated_cpp}]}],
|
"script": [
|
||||||
|
{
|
||||||
|
"id": display_id(IdSuffix.SCRIPT_DRAW),
|
||||||
|
"then": [{"lambda": generated_cpp}],
|
||||||
|
}
|
||||||
|
],
|
||||||
"api": {
|
"api": {
|
||||||
"actions": [
|
"actions": [
|
||||||
{
|
{
|
||||||
@@ -191,3 +201,129 @@ def notification_service(version: int) -> Dict[str, Any]:
|
|||||||
)
|
)
|
||||||
|
|
||||||
return service_dict
|
return service_dict
|
||||||
|
|
||||||
|
|
||||||
|
def image_service(token: str) -> Dict[str, Any]:
|
||||||
|
|
||||||
|
image_config = _clear_image_service(len(token) > 0)
|
||||||
|
image_config = deep_merge(image_config, _image_service("web"))
|
||||||
|
|
||||||
|
if(len(token) > 0):
|
||||||
|
image_config = deep_merge(image_config, _image_service("ha", token=token))
|
||||||
|
|
||||||
|
return image_config
|
||||||
|
|
||||||
|
def _clear_image_service(ha_image_service: bool) -> Dict[str, Any]:
|
||||||
|
|
||||||
|
action_list = [
|
||||||
|
{
|
||||||
|
"globals.set": {
|
||||||
|
"id": "show_web_image",
|
||||||
|
"value": YAMLLambda("return false;"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{"online_image.release": "web_image"}
|
||||||
|
]
|
||||||
|
|
||||||
|
ha_list = []
|
||||||
|
if ha_image_service:
|
||||||
|
ha_list = [
|
||||||
|
{
|
||||||
|
"globals.set": {
|
||||||
|
"id": f"show_ha_image",
|
||||||
|
"value": YAMLLambda("return false;"),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{"online_image.release": "ha_image"}
|
||||||
|
]
|
||||||
|
|
||||||
|
action_list.extend(ha_list)
|
||||||
|
action_list.append({"script.execute": display_id(IdSuffix.SCRIPT_UPDATE)})
|
||||||
|
|
||||||
|
image_dict = {
|
||||||
|
"api": {
|
||||||
|
"actions": [
|
||||||
|
{
|
||||||
|
"action": "clear_image",
|
||||||
|
"then": action_list
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
return image_dict
|
||||||
|
|
||||||
|
def _image_service(key: str, token: str = "") -> Dict[str, Any]:
|
||||||
|
generated_cpp = (
|
||||||
|
f"if(id(show_{key}_image)){{\n"
|
||||||
|
f" // Draw {key} Image\n"
|
||||||
|
f" id({display_id(IdSuffix.DISPLAY)}).image(0, 0, id({key}_image));\n"
|
||||||
|
"}\n"
|
||||||
|
)
|
||||||
|
|
||||||
|
headers = {}
|
||||||
|
|
||||||
|
if(len(token) > 0):
|
||||||
|
headers = {"Authorization": f"Bearer {token}"}
|
||||||
|
|
||||||
|
image_dict = {
|
||||||
|
"globals": [
|
||||||
|
{"id": f"show_{key}_image", "type": "bool", "initial_value": "'false'"}
|
||||||
|
],
|
||||||
|
"script": [
|
||||||
|
{
|
||||||
|
"id": display_id(IdSuffix.SCRIPT_DRAW),
|
||||||
|
"then": [{"lambda": generated_cpp}],
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"api": {
|
||||||
|
"actions": [
|
||||||
|
{
|
||||||
|
"action": f"show_{key}_jpeg_image",
|
||||||
|
"variables": {"timeout": "int", "image_url": "string"},
|
||||||
|
"then": [
|
||||||
|
{
|
||||||
|
"online_image.set_url": {
|
||||||
|
"id": f"{key}_image",
|
||||||
|
"url": YAMLLambda("return image_url;"),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"globals.set": {
|
||||||
|
"id": f"show_{key}_image",
|
||||||
|
"value": YAMLLambda("return true;"),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{"delay": YAMLLambda("return timeout * 1000;")},
|
||||||
|
{
|
||||||
|
"globals.set": {
|
||||||
|
"id": f"show_{key}_image",
|
||||||
|
"value": YAMLLambda("return false;"),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{"online_image.release": f"{key}_image"},
|
||||||
|
{"script.execute": display_id(IdSuffix.SCRIPT_UPDATE)},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"http_request": {},
|
||||||
|
"online_image": [
|
||||||
|
{
|
||||||
|
"id": f"{key}_image",
|
||||||
|
"url": "https://invalid.jpg",
|
||||||
|
"type": "RGB565",
|
||||||
|
"format": "JPG",
|
||||||
|
"resize": "320x240",
|
||||||
|
"update_interval": "never",
|
||||||
|
"on_download_finished":{
|
||||||
|
"then": [
|
||||||
|
{"script.execute": display_id(IdSuffix.SCRIPT_UPDATE)},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"request_headers": headers
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
return image_dict
|
||||||
|
|||||||
Reference in New Issue
Block a user