> ## Documentation Index
> Fetch the complete documentation index at: https://docs.unicontrol.me/llms.txt
> Use this file to discover all available pages before exploring further.

# IPP (Internet Printing Protocol)

> Monitore status e nível de tinta de impressoras via Internet Printing Protocol

# IPP (Internet Printing Protocol)

A integração **IPP** consulta impressoras compatíveis com o Internet Printing
Protocol (RFC 8010/8011) e expõe status de operação, uptime e nível dos
consumíveis (tonner/tinta) como sensores no Portal.

Funciona com a grande maioria das impressoras de rede modernas — HP, Brother,
Epson, Canon, Xerox e outras — sem drivers proprietários. Baseia-se na mesma
abordagem do [componente IPP do Home Assistant](https://www.home-assistant.io/integrations/ipp).

<Info>
  Roda apenas em um **edge local (home)**. A impressora precisa estar acessível
  na mesma LAN em que o edge está ligado.
</Info>

## Configurar

<Steps>
  <Step title="Descubra o endpoint IPP">
    A maioria das impressoras aceita `ipp://<ip>:631/ipp/print`. Outros
    caminhos comuns: `/ipp`, `/printers/<nome>`. Se você não sabe o path,
    consulte a interface web da impressora (menu "Serviços" ou similar) ou
    o manual do fabricante.
  </Step>

  <Step title="Adicione a integração">
    Vá em **Configurações → Integrações → Adicionar → IPP (Internet Printing Protocol)**
    e selecione um edge local.
  </Step>

  <Step title="Informe os dados da impressora">
    Preencha **Nome**, **Host**, **Porta** (padrão 631) e **Caminho** (padrão
    `/ipp/print`). Para impressoras que exigem HTTPS/IPPS, habilite **TLS**.
  </Step>

  <Step title="Pronto">
    O Portal detecta modelo, fabricante e consumíveis automaticamente, criando
    um sensor por marker (tonner/tinta) mais um sensor de status geral e um
    sensor de uptime. Polling padrão: 60 segundos.
  </Step>
</Steps>

## Entidades

Cada impressora gera as seguintes entidades:

| Entidade            | Plataforma | Descrição                                                                                                                                            |
| ------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `<nome> Status`     | `sensor`   | Estado da impressora: `idle`, `printing`, `stopped` ou `unavailable`. Atributos: `info`, `make_and_model`, `location`, `state_reasons`, `boot_time`. |
| `<nome> Uptime`     | `sensor`   | Tempo de operação em segundos (`device_class: duration`).                                                                                            |
| `<nome> <cartucho>` | `sensor`   | Um sensor por consumível reportado, com o nível em `%`. Atributos: `marker_color`, `marker_type`, `low_level`, `high_level`.                         |

Exemplo: uma impressora colorida com quatro cartuchos gera 6 entidades no total
(status, uptime e um sensor por cor).

## Dashboard

Use o card **Entity** para exibir o status geral e cards **Gauge** para os
níveis de tinta. O `state_reasons` costuma vir com valores como
`toner-low-warning`, `media-jam`, `door-open` — úteis para alertas em
automações.

## Portas e caminhos comuns

| Fabricante              | Endpoint típico                         |
| ----------------------- | --------------------------------------- |
| HP LaserJet / OfficeJet | `ipp://<ip>:631/ipp/print`              |
| Brother                 | `ipp://<ip>:631/ipp/print`              |
| Epson                   | `ipp://<ip>:631/ipp/print` ou `/ipp/lp` |
| Xerox / CUPS            | `ipp://<ip>:631/printers/<nome>`        |
| Impressoras via CUPS    | `ipp://<host>:631/printers/<nome>`      |

## Limitações atuais

* Somente leitura: comandos (cancelar job, reiniciar) ainda não estão expostos.
* Autenticação HTTP básica não é suportada — a maioria das impressoras deixa o
  endpoint IPP público na LAN.
* Descoberta automática via mDNS/Bonjour ainda não implementada; adicione a
  impressora manualmente informando IP + porta + caminho.
