From 94a90c4124b959351abf5ec6c0be290552b9b011 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AC=A3=E5=8D=97=E7=A7=91=E6=8A=80?= Date: Mon, 24 Feb 2025 22:04:48 +0800 Subject: [PATCH] Iot (#129) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2025-2-17-iot配置消息处理, 以及控制iot命令发送 (#40) * update:优化 * update:增加视频教程 * update:iot兼容性又问题,撤回 * fixed:iot boolean 参数接收bug --------- Co-authored-by: Jiao Haoyang <108573524+XuSenfeng@users.noreply.github.com> Co-authored-by: hrz <1710360675@qq.com> --- config.yaml | 4 +++- core/connection.py | 4 +++- core/handle/iotHandle.py | 14 +++++--------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/config.yaml b/config.yaml index 9fbb78d5..5dd2793e 100644 --- a/config.yaml +++ b/config.yaml @@ -41,7 +41,9 @@ manager: enabled: false ip: 0.0.0.0 port: 8002 - +iot: + Speaker: + volume: 100 xiaozhi: type: hello version: 1 diff --git a/core/connection.py b/core/connection.py index cbf183b9..ead53080 100644 --- a/core/connection.py +++ b/core/connection.py @@ -4,6 +4,7 @@ import uuid import time import queue import asyncio +import traceback from config.logger import setup_logging import threading import websockets @@ -149,7 +150,8 @@ class ConnectionHandler: await ws.close() return except Exception as e: - self.logger.bind(tag=TAG).error(f"Connection error: {str(e)}") + stack_trace = traceback.format_exc() + self.logger.bind(tag=TAG).error(f"Connection error: {str(e)}-{stack_trace}") await ws.close() return diff --git a/core/handle/iotHandle.py b/core/handle/iotHandle.py index 99f059e2..7fba6991 100644 --- a/core/handle/iotHandle.py +++ b/core/handle/iotHandle.py @@ -44,12 +44,10 @@ class IotDescriptor: property_item["description"] = value["description"] if value["type"] == "number": property_item["value"] = 0 - elif value["type"] == "bool": + elif value["type"] == "boolean": property_item["value"] = False - elif value["type"] == "string": - property_item["value"] = "" else: - raise ValueError("Invalid type") + property_item["value"] = "" self.properties.append(property_item) # 根据描述创建方法 @@ -75,12 +73,10 @@ class IotDescriptor: method[k]["description"] = v["description"] if v["type"] == "number": method[k]["value"] = 0 - elif v["type"] == "bool": + elif v["type"] == "boolean": method[k]["value"] = False - elif v["type"] == "string": - method[k]["value"] = "" else: - raise ValueError("Invalid type") + method[k]["value"] = "" self.methods.append(method) @@ -92,7 +88,7 @@ async def handleIotDescriptors(conn, descriptors): "name":"Speaker", "description":"当前 AI 机器人的扬声器", "properties":{ - "volume":{"description":"当前音量 值","type":"number"} 可以有bool, int, string三种类型 + "volume":{"description":"当前音量 值","type":"number"} 可以有boolean, number, string三种类型 }, "methods":{ "SetVolume":{