uniwire
Desenhe e verifique diagramas elétricos unifilares e multifilares a partir de uma descrição simples: verificações NF C 15-100 / IEC 60364, um desenho editável e o PDF. Hospedado em https://mcp.uniwire.sh/mcp (sem autenticação).
Servidor MCP hospedado
npx add-mcp 'https://mcp.uniwire.sh/mcp'Instala no Claude Code, Codex, Cursor e outros
Documentação
uniwire
Diagramas elétricos, como código.
Um padrão aberto para descrever instalações elétricas e a biblioteca Python de referência que as valida, verifica-as contra regras e desenha seus diagramas unifilares e multifilares.
Você descreve a instalação (fontes, dispositivos de proteção, cabos, cargas, CLPs) em um arquivo *.uniwire.json
ou em Python, e o uniwire calcula os desenhos. Sem coordenadas, sem arquivo CAD: um arquivo de texto que você pode
revisar e comparar.
- Formato:
*.uniwire.json, formato 1.0, definido pela especificação e validado por um JSON Schema publicado: https://uniwire.sh/schema/v1/uniwire.schema.json. - Biblioteca:
pip install uniwire: API Python, construtor code-first e a linha de comandouniwire. - Documentação: https://uniwire.sh/docs/
- Visualizador web: https://uniwire.sh/viewer/, cole um documento para validar, verificar e desenhar no navegador.
Recursos
- Diagramas unifilares e multifilares a partir do mesmo documento: a visão multifilar deriva cada condutor (L1, L2, L3, N, PE, PEN) dos dados unifilares, sem entrada adicional.
- 53 tipos de nós: rede de concessionária, transformadores, geradores, nobreaks, fotovoltaico, baterias, inversores; disjuntores, DRs, DRs com disjuntor, fusíveis, seccionadores, contatores, partidas de motores, chaves de transferência, DPSs, relés de proteção, transformadores de instrumentos, monitores de isolamento; barramentos, quadros, bornes; iluminação, tomadas, aquecimento, motores, carregadores de veículos elétricos, CLPs modulares e mais.
- Árvore + vínculos: a árvore de potência é a espinha dorsal; transferências, interligações de barramento, alimentações, aterramento, controle, intertravamentos, disparos, medições e barramentos de dados são vínculos. Um grafo de terminais/nós de conectividade é derivado automaticamente, com mapeamentos CIM, IFC e IEC 61850 SCL.
- Tipagem fechada e campos com sufixo de unidade:
in_A,idn_mA,section_mm2,p_kW; campos desconhecidos são erros (calibreem vez dein_Aé detectado), extensões ficam emext. Modelos declaram um dispositivo uma vez. - Perfis de regras:
core(sempre),nfc15100(residências francesas),iec60364(capacidade de condução de corrente de cabos), além de verificações de consistência de CLP. - Lista de materiais: referências estruturadas
product(fabricante, número da peça, faixa, acessórios) em qualquer nó ou módulo de CLP, agregadas para CSV (uniwire bom). - Marcação de fios e cabos: regras de marcação por visão (manual, sequencial, por potencial, padrão), marcas
desenhadas no diagrama multifilar e exportações CSV: lista de fios (
uniwire wires), lista de marcadores de fios (uniwire markers), cronograma de cabos (uniwire cables);uniwire marks --writecongela as marcas. - Modos de cor: condutores nas cores IEC 60445 ou norte-americanas, ou coloração por fase, fonte, status ou nível de tensão.
- Folhas: tamanho do papel, visões de subárvore, divisão automática de folhas com referências cruzadas, cronograma de circuitos, molduras de invólucros, bloco de título, revisões e notas. A saída SVG é determinística e amigável para comparação; o PDF multifolhas tem links clicáveis entre folhas.
- Renderização em inglês e francês, selecionada por documento com
meta.lang. - Ferramentas para LLM: um cartão de referência gerado a partir do modelo (
uniwire card), um esboço de texto com ids estáveis (uniwire describe), edições baseadas em id (uniwire patch), um servidor MCP (uniwire-mcp, stdio) e um endpoint MCP hospedado em https://mcp.uniwire.sh/mcp, além de llms.txt para assistentes (cartão de referência completo incluído). Configuração para ChatGPT, Claude, Cursor e VS Code: uniwire no seu assistente; detalhes em Ferramentas LLM.
Galeria
Todos os 52 exemplos estão em examples/ e listados na documentação; abra qualquer um deles no visualizador web.
Instalação
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 ou posterior. A única dependência necessária é o pydantic.
Início rápido
Um documento em 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 } ] }
] }
] }
] }
]
}
A árvore é o fluxo de potência (fonte, dispositivos de proteção, cargas); o que estiver fora da árvore
(chaves de transferência, interligações de barramento, controle e conexões de dados) vai em 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
A mesma instalação em 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 torna um elemento o pai de tudo criado dentro dele, >> encadeia elementos, classificações e
cabos são escritos da forma como aparecem nos desenhos ("C16", "3G2,5 18 m"). Consulte a
API code-first e a API Python e CLI.
Roteiro
- Terminais, réguas de bornes e fios: UEP-0001, um rascunho para o formato 2.0 (portas nomeadas, réguas de bornes, fios e cabos como objetos, potenciais).
- Esquemas de controle: bobinas, contatos auxiliares com referências cruzadas, planos de bornes e numeração de fios, construídos sobre portas nomeadas.
- Exportações: desenhos DXF, redes pandapower para estudos de fluxo de carga e curto-circuito.
Ideias e propostas de formato são bem-vindas: consulte CONTRIBUTING.md.
Contribuição
Relatórios de bugs, exemplos, regras, símbolos e traduções são bem-vindos. Leia CONTRIBUTING.md (configuração de desenvolvimento, testes, Propostas de Melhoria do uniwire) e o Código de Conduta. Relate problemas de segurança de forma privada, consulte SECURITY.md.
Licenças
- Código, CLI e JSON Schema: Licença Apache 2.0.
- Texto da especificação: CC BY 4.0: implemente livremente, em qualquer software.
- Pacote de dados opcional
uniwire-data-iec81346(tabela de classes IEC 81346-2): CC BY-SA 4.0, distribuído separadamente (pip install "uniwire[iec81346]").
Consulte NOTICE para avisos de terceiros.





