uniwire
Dibuja y verifica diagramas eléctricos unifilares y multifilares a partir de una descripción en texto plano: comprobaciones NF C 15-100 / IEC 60364, un dibujo editable y el PDF. Alojado en https://mcp.uniwire.sh/mcp (sin autenticación).
Servidor MCP alojado
npx add-mcp 'https://mcp.uniwire.sh/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
uniwire
Diagramas eléctricos, como código.
Un estándar abierto para describir instalaciones eléctricas, y la biblioteca de referencia en Python que las valida, las verifica contra reglas y dibuja sus diagramas unifilares y multifilares.
Usted describe la instalación (fuentes, dispositivos de protección, cables, cargas, PLCs) en un archivo *.uniwire.json
o en Python, y uniwire calcula los dibujos. Sin coordenadas, sin archivo CAD: un archivo de texto que puede
revisar y comparar.
- Formato:
*.uniwire.json, formato 1.0, definido por la especificación y validado por un JSON Schema publicado: https://uniwire.sh/schema/v1/uniwire.schema.json. - Biblioteca:
pip install uniwire: API de Python, constructor code-first y la línea de comandosuniwire. - Documentación: https://uniwire.sh/docs/
- Visor web: https://uniwire.sh/viewer/, pegue un documento para validarlo, verificarlo y dibujarlo en el navegador.
Características
- Diagramas unifilares y multifilares desde el mismo documento: la vista multifilar deriva cada conductor (L1, L2, L3, N, PE, PEN) de los datos unifilares, sin entrada adicional.
- 53 tipos de nodos: red de suministro, transformadores, generadores, UPS, fotovoltaica, baterías, inversores; interruptores, diferenciales, interruptores automáticos diferenciales, fusibles, seccionadores, contactores, arrancadores de motores, conmutadores de transferencia, protectores de sobretensión, relés de protección, transformadores de instrumentos, monitores de aislamiento; barras, cuadros, bornes; iluminación, tomas de corriente, calefacción, motores, cargadores de vehículos eléctricos, PLCs modulares y más.
- Árbol + enlaces: el árbol de potencia es la columna vertebral; transferencias, acoplamientos de barras, alimentaciones, puestas a tierra, control, enclavamientos, disparos, mediciones y buses de datos son enlaces. Se deriva automáticamente un grafo de terminales/nodos de conectividad, con mapeos CIM, IFC e IEC 61850 SCL.
- Tipado cerrado y campos con sufijo de unidad:
in_A,idn_mA,section_mm2,p_kW; los campos desconocidos son errores (se detectacalibreen lugar dein_A), las extensiones viven enext. Las plantillas declaran un dispositivo una sola vez. - Perfiles de reglas:
core(siempre),nfc15100(viviendas francesas),iec60364(capacidad de transporte de corriente de cables), además de verificaciones de consistencia de PLC. - Lista de materiales: referencias estructuradas
product(fabricante, número de pieza, gama, accesorios) en cualquier nodo o módulo de PLC, agregadas a CSV (uniwire bom). - Marcado de cables y conductores: reglas de marcado por vista (manual, secuencial, por potencial, patrón), marcas
dibujadas en el diagrama multifilar, y exportaciones CSV: lista de conductores (
uniwire wires), lista de marcadores de conductores (uniwire markers), plan de cables (uniwire cables);uniwire marks --writecongela las marcas. - Modos de color: conductores en sus colores IEC 60445 o norteamericanos, o coloreado por fase, fuente, estado o nivel de tensión.
- Hojas: tamaño de papel, vistas de subárbol, división automática de hojas con referencias cruzadas, plan de circuitos, marcos de envolventes, bloque de título, revisiones y notas. La salida SVG es determinista y fácil de comparar; el PDF de varias hojas tiene enlaces clicables entre hojas.
- Renderizado en inglés y francés, seleccionado por documento con
meta.lang. - Herramientas LLM: una tarjeta de referencia generada desde el modelo (
uniwire card), un esquema de texto con ids estables (uniwire describe), ediciones basadas en ids (uniwire patch), un servidor MCP (uniwire-mcp, stdio) y un endpoint MCP alojado en https://mcp.uniwire.sh/mcp, además de llms.txt para asistentes (tarjeta de referencia completa incluida). Configuración para ChatGPT, Claude, Cursor y VS Code: uniwire en su asistente; detalles en Herramientas LLM.
Galería
Los 52 ejemplos están en examples/ y se enumeran en la documentación; abra cualquiera de ellos en el visor web.
Instalación
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 o posterior. La única dependencia requerida es pydantic.
Inicio rápido
Un documento en 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 } ] }
] }
] }
] }
]
}
El árbol es el flujo de potencia (fuente, dispositivos de protección, cargas); todo lo que queda fuera del árbol
(conmutadores de transferencia, acoplamientos de barras, conexiones de control y datos) va en 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
La misma instalación en 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 convierte un elemento en el padre de todo lo creado dentro de él, >> encadena elementos, las clasificaciones y los
cables se escriben como aparecen en los dibujos ("C16", "3G2,5 18 m"). Consulte la
API code-first y la API de Python y CLI.
Hoja de ruta
- Terminales, regletas de bornes y conductores: UEP-0001, un borrador para el formato 2.0 (puertos nombrados, regletas de bornes, conductores y cables como objetos, potenciales).
- Esquemas de control: bobinas, contactos auxiliares con referencias cruzadas, planos de bornes y numeración de conductores, construidos sobre puertos nombrados.
- Exportaciones: dibujos DXF, redes pandapower para estudios de flujo de carga y cortocircuito.
Las ideas y propuestas de formato son bienvenidas: consulte CONTRIBUTING.md.
Contribuciones
Se aceptan informes de errores, ejemplos, reglas, símbolos y traducciones. Lea CONTRIBUTING.md (configuración de desarrollo, pruebas, Propuestas de Mejora de uniwire) y el Código de Conducta. Reporte los problemas de seguridad de forma privada, consulte SECURITY.md.
Licencias
- Código, CLI y JSON Schema: Licencia Apache 2.0.
- Texto de la especificación: CC BY 4.0: impleméntelo libremente, en cualquier software.
- Paquete de datos opcional
uniwire-data-iec81346(tabla de clases IEC 81346-2): CC BY-SA 4.0, distribuido por separado (pip install "uniwire[iec81346]").
Consulte NOTICE para avisos de terceros.





