Skip to content

updates2mqtt

updates2mqtt

Rhizomatics Open Source

PyPI - Version Ruff Coverage Tests pre-commit.ci status Publish Python 🐍 distribution 📦 to PyPI and TestPyPI Github Deploy CodeQL Dependabot Updates



Resumo

Deixe o Home Assistant informá-lo sobre novas atualizações de imagens Docker para os seus containers.

Exemplo de página de atualização do Home AssistantExemplo de notas de versão do Home Assistant

Leia as notas de versão e, opcionalmente, clique em Atualizar para acionar um Docker pull (ou opcionalmente build) e atualização.

Exemplo de diálogo de atualização do Home Assistant

Descrição

O Updates2MQTT verifica periodicamente a disponibilidade de novas versões dos componentes e publica as informações sobre novas versões via MQTT. O descobrimento automático do HomeAssistant é suportado, de modo que todas as atualizações podem ser vistas no mesmo lugar que os próprios componentes e add-ins do Home Assistant.

Atualmente, apenas containers Docker são suportados, seja por meio de uma verificação de registro de imagens (usando as APIs Docker v1 ou a API OCI v2) ou um repositório git para o código-fonte (consulte Builds Locais), com tratamento específico para Docker, Github Container Registry, Gitlab, Codeberg, Microsoft Container Registry, Quay e LinuxServer Registry, com comportamento adaptativo para a maioria dos outros. O design é modular, portanto outras fontes de atualização podem ser adicionadas, pelo menos para notificação. A próxima prevista é o apt para sistemas baseados em Debian.

Os componentes também podem ser atualizados, automaticamente ou acionados via MQTT, por exemplo, clicando no botão Instalar no diálogo de atualização do HomeAssistant. Ícones e notas de versão podem ser especificados para uma melhor experiência no HA. Consulte Integração com o Home Assistant para detalhes.

Para começar, leia as páginas Instalação e Configuração.

Para um teste rápido, experimente:

docker run -v /var/run/docker.sock:/var/run/docker.sock -e MQTT_USER=user1 -e MQTT_PASS=user1 -e MQTT_HOST=192.168.1.5 ghcr.io/rhizomatics/updates2mqtt:latest

ou sem Docker, usando uv

export MQTT_HOST=192.168.1.1;export MQTT_USER=user1;export MQTT_PASS=user1;uv run --with updates2mqtt python -m updates2mqtt

Também inclui uma ferramenta básica de linha de comando que realizará a análise de um único container em execução, ou buscará manifestos, blobs JSON e listas de tags de registros remotos (comprovadamente funciona com GitHub, GitLab, Codeberg, Quay, LSCR e Microsoft MCR).

Suporte a Versões

Atualmente, apenas containers Docker são suportados, embora outros estejam planejados, provavelmente com prioridade para apt.

Ecossistema Suporte Comentários
Docker Scan, Fetch Fetch é apenas docker pull. Suporte a reinicialização apenas para containers baseados em imagem docker-compose.

Heartbeat

Um payload JSON de heartbeat é opcionalmente publicado periodicamente em um tópico MQTT configurável, com padrão healthcheck/{node_name}/updates2mqtt. Contém a versão atual do Updates2MQTT, o nome do nó, um timestamp e algumas estatísticas básicas.

Verificação de Saúde (Healthcheck)

Um script healthcheck.sh está incluído na imagem Docker e pode ser usado como healthcheck do Docker se as variáveis de ambiente do container MQTT_HOST, MQTT_PORT, MQTT_USER e MQTT_PASS estiverem definidas. Utiliza o pacote Linux mosquitto-clients que fornece o comando mosquitto_sub para subscrever tópicos.

Tip

Verifique se o healthcheck está funcionando usando docker inspect --format "{{json .State.Health }}" updates2mqtt | jq (pode omitir | jq se não tiver o jsonquery instalado, mas é muito mais fácil de ler com ele)

Outra abordagem é usar um serviço restarter diretamente no Docker Compose para forçar uma reinicialização, neste caso uma vez por dia:

Exemplo de Serviço Compose
restarter:
    image: docker:cli
    volumes: ["/var/run/docker.sock:/var/run/docker.sock"]
    command: ["/bin/sh", "-c", "while true; do sleep 86400; docker restart updates2mqtt; done"]
    restart: unless-stopped
    environment:
      - UPD2MQTT_UPDATE=AUTO

Containers Alvo

Embora o updates2mqtt descubra e monitore todos os containers em execução no daemon Docker, existem algumas opções para ajustar seu funcionamento nesses containers.

Isso é feito adicionando variáveis de ambiente ou labels Docker aos containers, normalmente dentro de um arquivo .env ou como opções environment dentro do docker-compose.yaml.

Atualizações Automatizadas

Se os containers Docker devem ser atualizados imediatamente, sem qualquer confirmação ou acionamento, por exemplo, a partir do diálogo de atualização do HomeAssistant, defina a variável de ambiente UPD2MQTT_UPDATE no container alvo como Auto (o padrão é Passive). Se quiser que ele atualize sem publicar no MQTT e sem ser visível para o Home Assistant, use Silent.

Exemplo de Trecho Compose
restarter:
    image: docker:cli
    command: ["/bin/sh", "-c", "while true; do sleep 86400; docker restart mailserver; done"]
    environment:
      - UPD2MQTT_UPDATE=AUTO

As atualizações automatizadas também podem se aplicar a builds locais, onde um git_repo_path foi definido - se houver commits remotos disponíveis para pull, então git pull, docker compose build e docker compose up serão executados.

Projetos Relacionados

Outros aplicativos úteis para self-hosting com a ajuda do MQTT:

  • psmqtt - Reportar saúde do sistema e métricas via MQTT

Encontre mais em awesome-mqtt

Para um gerenciador de atualizações mais poderoso focado em Docker, experimente What’s Up Docker

Desenvolvimento

Este componente depende de vários pacotes de código aberto:

  • docker-py SDK Python para acesso às APIs Docker
  • Eclipse Paho cliente MQTT
  • OmegaConf para configuração e validação
  • structlog para logging estruturado e rich para melhor relatório de exceções
  • hishel para cache de metadados
  • httpx para recuperar metadados
  • As ferramentas Astral uv e ruff para desenvolvimento e build
  • pytest e add-ins de suporte para testes automatizados
  • usingversion para registrar informações da versão atual

Rhizomatics Open Source para Home Assistant

HACS

  • AutoArm - Armar e desarmar automaticamente painéis de controle de alarme do Home Assistant usando botões físicos, presença, calendários, sol e muito mais
  • Remote Logger - Captura de eventos OpenTelemetry (OTLP) e Syslog para Home Assistant
  • Supernotify - Notificação unificada para mensagens multicanais fáceis, incluindo poderosa integração de campainha e câmera de segurança.

Python / Docker

  • Anpr2MQTT - Integração com câmeras ANPR/ALPR de placas de veículos via sistema de arquivos (NAS/FTP) para MQTT com análise de imagens opcional e integração com a DVLA do Reino Unido.