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.

CI PyPI Python License: Apache-2.0

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.

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 detecta calibre en lugar de in_A), las extensiones viven en ext. 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 --write congela 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

French house, TT, single-line diagram
Casa francesa, TT (NF C 15-100), unifilar
German house, TN-C-S, multi-line diagram in conductor colours
Casa alemana, TN-C-S, multifilar en colores de conductores
Office building main LV switchboard
Edificio de oficinas, cuadro general de baja tensión
MV/LV substation, 1000 kVA
Subestación MT/BT, 1000 kVA
Standby generator, automatic transfer switch, load shedding
Generador de respaldo, conmutador de transferencia automática, desconexión de cargas
Motor control centre, multi-line diagram with wire marks
Centro de control de motores, multifilar con marcas de conductores

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.