Skip to content

Commit

Permalink
WIP: was: support SR model update in post_config
Browse files Browse the repository at this point in the history
  • Loading branch information
stintel committed Dec 20, 2023
1 parent 1163324 commit 082e5c1
Showing 1 changed file with 32 additions and 1 deletion.
33 changes: 32 additions & 1 deletion app/internal/was.py
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,26 @@ def get_nvs():
return get_json_from_file(STORAGE_USER_NVS)


def get_asset_url(asset_type, asset):
was_url = get_was_url()
parsed = urllib.parse.urlparse(was_url)

if parsed.scheme == "ws":
parsed = parsed._replace(scheme="http")
elif parsed.scheme == "wss":
parsed = parsed._replace(scheme="https")

parsed = parsed._replace(path="/api/asset")

query = f"asset={asset}&type={asset_type}"
parsed = parsed._replace(query=query)

url = urllib.parse.urlunparse(parsed)

log.debug("get_asset_url: url='{url}'")
return url


# TODO: Support HTTPs
def get_release_url(was_url, version, platform):
url_parts = re.match(r"^(?:\w+:\/\/)?([^\/:]+)(?::(\d+))?", was_url)
Expand Down Expand Up @@ -376,10 +396,17 @@ def merge_dict(dict_1, dict_2):

async def post_config(request, apply=False):
data = await request.json()

if 'hostname' in data:
hostname = data["hostname"]
data = get_config_db()
msg = build_msg(data, "config")
# TODO only flash srmodel when needed
if "wake_model" in data and "wake_word_friendly" in data:
ota_url = get_asset_url("other", "srmodels.bin")
msg = json.dumps({'cmd': 'srmodels_ota_start', 'ota_url': ota_url})
else:
msg = build_msg(data, "config")

try:
ws = request.app.connmgr.get_client_by_hostname(hostname)
await ws.send_text(msg)
Expand All @@ -388,12 +415,16 @@ async def post_config(request, apply=False):
log.error(f"Failed to apply config to {hostname} ({e})")
return "Error"
else:
if "wake_model" in data and "wake_word_friendly" in data:
build_srmodels_bin([data["wake_model"]])

if "wis_tts_url" in data:
data["wis_tts_url_v2"] = construct_wis_tts_url(data["wis_tts_url"])
del data["wis_tts_url"]
log.debug(f"wis_tts_url_v2: {data['wis_tts_url_v2']}")

save_config_to_db(data)
# TODO support flash srmodel broadcast
msg = build_msg(data, "config")
log.debug(str(msg))
if apply:
Expand Down

0 comments on commit 082e5c1

Please sign in to comment.