关于 uniwire
uniwire 是一种开放格式及 Python 库,用于以数据描述电气装置,再验证规则并生成单线图和多线图。它面向需要可审阅、便于比较设计变更的电气设计人员,并提供命令行、Python、Web 查看器和面向助手的工具。
主要功能
- 01用 JSON 或 Python 描述装置
- 02验证结构和电气规则
- 03生成单线图与多线图
- 04导出 SVG、PDF、物料清单和线缆表
- 05支持 NF C 15-100、IEC 60364 等规则配置
- 06通过稳定 ID 编辑模型
适用场景
- 01按选定规则检查电气装置
- 02从文本设计生成电气图
- 03整理物料清单和线缆明细
- 04通过文本差异审阅设计变更
MCP 相关
uniwire 提供 stdio MCP 服务 `uniwire-mcp` 和托管 MCP 端点。其助手工具还可生成模型参考卡、结构提纲并按 ID 编辑。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.uniwire.sh/mcpclaude mcp add --transport http uniwire-dev-uniwire https://mcp.uniwire.sh/mcp{"mcpServers":{"uniwire-dev-uniwire":{"type":"http","url":"https://mcp.uniwire.sh/mcp"}}}在 Cursor 中打开{"servers":{"uniwire-dev-uniwire":{"type":"http","url":"https://mcp.uniwire.sh/mcp"}}}在 VS Code 中打开{"mcpServers":{"uniwire-dev-uniwire":{"type":"http","url":"https://mcp.uniwire.sh/mcp"}}}{"mcpServers":{"uniwire-dev-uniwire":{"serverUrl":"https://mcp.uniwire.sh/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
14| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| lang | string | 否 | |
| level | string | 否 |
详细介绍
uniwire
电气图,以代码描述。
用于描述电气装置的开放标准,以及配套的 Python 参考库,可对其进行验证、按规则检查,并绘制单线图和多线图。
你可以在 *.uniwire.json 文件或 Python 代码中描述装置(电源、保护器件、电缆、负载、PLC),uniwire 随后会生成图纸。无需坐标,也无需 CAD 文件:只需一个便于审阅和比较差异的文本文件。
- 格式:
*.uniwire.json,格式版本为 1.0,由规范定义,并通过已发布的 JSON Schema 验证:https://uniwire.sh/schema/v1/uniwire.schema.json。 - 库:
pip install uniwire:提供 Python API、代码优先构建器和uniwire命令行工具。 - 文档:https://uniwire.sh/docs/
- Web 查看器:https://uniwire.sh/viewer/,粘贴文档即可在浏览器中验证、检查并绘制图纸。
功能
- 单线图和多线图来自同一份文档:多线图视图会根据单线图数据推导出每根导线(L1、L2、L3、N、PE、PEN),无需额外输入。
- 53 种节点类型:公用电网、变压器、发电机、UPS、光伏、电池、逆变器;断路器、RCD、RCBO、熔断器、隔离开关、接触器、电机启动器、转换开关、SPD、保护继电器、仪用互感器、绝缘监测仪;母线、配电板、端子排;照明、插座、供暖设备、电机、电动汽车充电器、模块化 PLC 等。
- 树结构 + 链接:电力树是主干;转换、母线联络、进线、接地、控制、联锁、跳闸、测量和数据总线均为链接。系统会自动推导端子/连接节点图,并支持 CIM、IFC 和 IEC 61850 SCL 映射。
- 封闭类型与带单位后缀的字段:
in_A、idn_mA、section_mm2、p_kW;未知字段会报错(例如会捕获用calibre代替in_A的情况),扩展内容放在ext中。模板只需声明一次设备。 - 规则配置:
core(始终启用)、nfc15100(法国住宅)、iec60364(电缆载流量),enedis(接入法国公共电网),以及 PLC 一致性检查。 - 物料清单:任何节点或 PLC 模块均可添加结构化的
product引用(制造商、部件编号、系列、配件),并汇总导出为 CSV(uniwire bom)。 - 导线和电缆标记:可按视图设置标记规则(手动、顺序、按电位、按模式);标记会绘制在多线图上,并可导出 CSV:导线清单(
uniwire wires)、导线标记清单(uniwire markers)、电缆明细表(uniwire cables);uniwire marks --write可固定标记。 - 颜色模式:导线可使用 IEC 60445 或北美颜色,也可按相位、电源、状态或电压等级着色。
- 图纸:纸张尺寸、子树视图、自动拆分图纸并添加交叉引用、电路明细表、外壳框架、标题栏、修订记录和备注。SVG 输出具有确定性,便于比较差异;多页 PDF 提供图纸间的可点击链接。
- 英语和法语渲染,通过每份文档的
meta.lang选择。 - 大模型工具:根据模型生成的参考卡片(
uniwire card)、包含稳定 ID 的文本大纲(uniwire describe)、基于 ID 的编辑(uniwire patch)、MCP 服务(uniwire-mcp,stdio),以及托管的 MCP 端点 https://mcp.uniwire.sh/mcp;另提供供助手使用的 llms.txt(包含完整参考卡片)。ChatGPT、Claude、Cursor 和 VS Code 的设置方法: 在助手中使用 uniwire;详情请参阅 大模型工具。
图库
![]() 法国住宅,TT(NF C 15-100),单线图 | ![]() 德国住宅,TN-C-S,采用导线颜色的多线图 |
![]() 办公楼,主低压开关柜 | ![]() 中压/低压变电站,1000 kVA |
![]() 备用发电机,ATS,负载切除 | ![]() 电动机控制中心,带导线标记的多线图 |
全部 52 个示例都在 examples/ 中,并列于 文档;可在网页查看器中打开任意示例。
安装
pip install uniwire # validation, rules, SVG rendering, bill of materials, exports
pip install "uniwire[pdf]" # + PDF output (reportlab)
pip install "uniwire[mcp]" # + MCP server (uniwire-mcp)
pip install "uniwire[iec81346]" # + optional IEC 81346-2 class table (separate CC BY-SA 4.0 data package)
需要 Python 3.10 或更高版本。唯一必需的依赖项是 pydantic。
快速入门
JSON 文档:
{
"$schema": "https://uniwire.sh/schema/v1/uniwire.schema.json",
"uniwire": "1.0.0",
"profiles": ["nfc15100"],
"meta": { "title": "Small house", "lang": "en" },
"installation": { "earthing": "TT", "system": "1P+N", "un_V": 230 },
"templates": { "C16": { "type": "breaker", "in_A": 16, "curve": "C" } },
"sources": [
{ "type": "grid", "label": "Utility", "children": [
{ "type": "main_breaker", "ref": "-Q0", "range_A": "15-45", "in_A": 45, "idn_mA": 500, "selective": true,
"children": [
{ "type": "rcd", "ref": "-Q1", "in_A": 40, "idn_mA": 30, "rcd_type": "A", "children": [
{ "type": "breaker", "ref": "-Q11", "use": "C16", "cable": { "cores": "3G", "section_mm2": 1.5 },
"children": [ { "type": "lighting", "label": "Lighting", "points": 6 } ] },
{ "type": "breaker", "ref": "-Q12", "in_A": 20, "curve": "C", "cable": { "cores": "3G", "section_mm2": 2.5 },
"children": [ { "type": "socket", "label": "Sockets", "points": 8 } ] }
] }
] }
] }
]
}
树表示电力流(电源、保护设备、负载);树之外的内容(转换开关、母线联络、控制和数据连接)都放在 links 中。
uniwire validate house.uniwire.json # schema + integrity
uniwire check house.uniwire.json # rule profiles (exit code 1 on errors)
uniwire render house.uniwire.json # SVG sheets in out/house/
uniwire render house.uniwire.json -f pdf -o house.pdf
uniwire render house.uniwire.json --kind multi-line # multi-line power diagram
uniwire bom house.uniwire.json -o house.bom.csv # bill of materials
uniwire wires house.uniwire.json # wire list (also: markers, cables, marks)
uniwire card # reference card for assistants
同一安装的 Python 写法:
from uniwire.build import *
with Installation("Small house", earthing="TT", system="1P+N", un="230 V", profiles=["nfc15100"]) as inst:
with Grid("Utility"), MainBreaker("-Q0", "15-45 A", idn="500 mA", selective=True):
with RCD("-Q1", "40 A", "30 mA", type="A"):
Breaker("-Q11", "C16", cable="3G1,5") >> Lighting("Lighting", points=6)
Breaker("-Q12", "C20", cable="3G2,5 18 m") >> Socket("Sockets", points=8)
for finding in inst.check():
print(finding)
inst.save("house.uniwire.json")
inst.render("house.pdf")
with 会将一个元素设为其中创建的所有内容的父级,>> 用于串联元素;额定值和电缆按图纸上的写法表示("C16"、"3G2,5 18 m")。请参阅
代码优先 API和 Python API 与 CLI。
路线图
- 端子、端子排和导线:UEP-0001, 面向 2.0 格式的草案(命名端口、作为对象的端子排、导线和电缆、电势)。
- 控制原理图:基于命名端口构建的线圈、带交叉引用的辅助触点、端子图和导线编号。
- 导出:DXF 图纸、用于潮流和短路研究的 pandapower 网络。
欢迎提出想法和格式提案:请参阅 CONTRIBUTING.md。
贡献
欢迎提交错误报告、示例、规则、符号和翻译。请阅读 CONTRIBUTING.md(开发环境设置、测试、 uniwire 改进提案)以及 行为准则。请私下报告安全问题, 详见 SECURITY.md。
许可证
- 代码、CLI 和 JSON Schema:Apache License 2.0。
- 规范文本:CC BY 4.0: 可在任何软件中自由实现。
- 可选数据包
uniwire-data-iec81346(IEC 81346-2 类别表):CC BY-SA 4.0,单独分发 (pip install "uniwire[iec81346]")。
第三方声明请参阅 NOTICE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。





