66 lines
2.5 KiB
Python
66 lines
2.5 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
"""
|
||
Скрипт для генерации JSON-экспорта Open WebUI из home_assistant_tools.py.
|
||
|
||
Использование:
|
||
1. Скачайте home_assistant_tools.py в текущую папку
|
||
2. Запустите: python3 make_export.py
|
||
3. Получите файл home_assistant_tool_export.json
|
||
4. В Open WebUI: Workspace -> Tools -> Импорт -> выберите этот JSON
|
||
|
||
Формат JSON соответствует тому, что Open WebUI ожидает при импорте Tool.
|
||
"""
|
||
|
||
import json
|
||
import sys
|
||
from pathlib import Path
|
||
|
||
SRC = Path(__file__).parent / "home_assistant_tools.py"
|
||
OUT = Path(__file__).parent / "home_assistant_tool_export.json"
|
||
|
||
|
||
def main():
|
||
if not SRC.exists():
|
||
print(f"ОШИБКА: не найден {SRC}", file=sys.stderr)
|
||
print("Скачайте home_assistant_tools.py из Gitea рядом со скриптом", file=sys.stderr)
|
||
sys.exit(1)
|
||
|
||
content = SRC.read_text(encoding="utf-8")
|
||
|
||
payload = {
|
||
"type": "tool",
|
||
"name": "Home Assistant Smart Control",
|
||
"version": "2.2.1",
|
||
"description": (
|
||
"Управление умным домом через Home Assistant REST API с интерпретацией "
|
||
"естественного языка. Управление светом/климатом/шторами/медиа и мониторинг "
|
||
"(окна, свет, температура, батарейки, присутствие)."
|
||
),
|
||
"author": "ChatGPT (refactored by MiniMax-M3)",
|
||
"license": "MIT",
|
||
"content": content,
|
||
"metadata": {
|
||
"ha_default_url": "https://ha.nasweb.ru",
|
||
"ha_default_verify_ssl": False,
|
||
"source_repo": "https://gitea.nasweb.ru/host/home-assistant-tools",
|
||
},
|
||
}
|
||
|
||
OUT.write_text(
|
||
json.dumps(payload, ensure_ascii=False, indent=2),
|
||
encoding="utf-8",
|
||
)
|
||
|
||
print(f"OK: создан {OUT}")
|
||
print(f" размер: {OUT.stat().st_size:,} байт")
|
||
print()
|
||
print("Дальше:")
|
||
print(" 1. Откройте Open WebUI -> Workspace -> Tools -> Импорт")
|
||
print(" 2. В поле URL вставьте путь к этому JSON-файлу")
|
||
print(f" или загрузите его через кнопку выбора файла")
|
||
print(" 3. После импорта укажите HA Token в Valves")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main() |