Clima Aberto ← voltar ao mapa

Guia · Meshtastic → mapa

Conectar seu nó

Seu nó Meshtastic mede o tempo; aqui está como as medidas chegam ao mapa do Clima Aberto. O caminho principal é o Wi-Fi direto configurado pelo app Meshtastic do celular: o site mostra um checklist tela por tela, com botão de copiar em cada valor. Alternativas: os mesmos ajustes pelo computador (CLI) ou a ponte num computador ligado ao nó. Este guia é para quem programa pouco.

Recomendado: Wi-Fi direto, configurado pelo app do celular

  1. Cadastre a estação no mapa (+ Estação) escolhendo Wi-Fi direto (MQTT) e o ID do nó que vai ficar no Wi-Fi (!xxxxxxxx). Já tem estação? Editar minha estação → cole a chave → Conferir → Configuração avançada → Forma de conexão → Wi-Fi direto.
  2. Guarde a configuração no passo 1 da tela: baixar .txt ou copiar tudo, e marque “Guardei”. A senha e a PSK aparecem uma única vez (a janela só fecha depois disso).
  3. Responda o cadeado do canal principal de hoje (amarelo = público, verde = privado), a região e a configuração (preset): o site calcula a Faixa de Frequência. Mudou uma resposta depois de guardar? O site pede para baixar de novo.
  4. Siga o checklist no app Meshtastic, tela por tela: LoRa, Canais, MQTT, Telemetria e Redes, com os nomes como aparecem no app em português. Cada valor tem copiar.
  5. Aguarde a ativação do administrador e veja no mapa: uma leitura a cada 30 min, sem PC nem app ligados. Com o canal público como secundário (para continuar na malha da comunidade), o firmware força esses 30 min; 10 min só pelo computador, num nó sem nenhum canal público.

Prefere comandos? Pelo computador (CLI). Não dá para usar Wi-Fi no nó? A ponte (cabo USB, Bluetooth ou Wi-Fi local). Algo não bate? Problemas comuns.

Wi-Fi direto (MQTT): o que é

O firmware Meshtastic tem um cliente MQTT: ligado no Wi-Fi da casa, o nó entrega os próprios pacotes a um servidor MQTT (o “broker”) pela internet, sozinho. O Clima Aberto recebe esses pacotes do broker, abre só a telemetria do seu nó e grava as medidas. Nenhum computador precisa ficar ligado: o app do celular (ou o PC) só é usado uma vez, para configurar.

Nó com sensoresno Wi-Fi de casa (2,4 GHz)
MQTT com TLS · pacotes cifrados
Servidor MQTTsó repassa; não lê
webhook HTTPS
Clima Abertoabre só a telemetria do seu nó → mapa

Passo a passo pelo app do celular (recomendado)

Foi assim que a estação de referência (um Heltec V2) foi configurada: pelo app Meshtastic do iPhone, conectado ao nó pelo Wi-Fi. O site mostra a mesma sequência abaixo, já com os seus valores e um botão copiar em cada um. Os nomes estão como o app mostra em português; entre parênteses, o nome em inglês (para quem usa o app em inglês). Alguns campos o app não traduz: “MQTT Enabled”, “Map Reporting”, “Environment Metrics Interval”, “WiFi Enabled” e “Address Mode” aparecem em inglês mesmo.

  1. Conecte o app ao nó da estação O app precisa estar conectado ao nó que vai ficar no Wi-Fi (não ao nó que anda com você). Nó já no Wi-Fi? Conecte pela rede, pelo IP. Ainda não? Pelo Bluetooth — e deixe a tela Redes por último, porque ao ligar o WiFi o Bluetooth do ESP32 desliga. O ID do nó está em Nodos (Nodes) → o próprio nó → ID do Usuário (User Id), no formato !xxxxxxxx.
  2. Cadastre (ou troque a forma de conexão) Estação nova: + Estação → Wi-Fi direto (MQTT) → ID do nó. Estação que já existe: Editar minha estação → cole a chave da estação → Conferir → Configuração avançada → Forma de conexão → Wi-Fi direto. O botão “Configuração avançada” só libera depois que a chave confere.
  3. Passo 1 da tela: guarde antes de tudo Baixar .txt (no iPhone vai para o app Arquivos) ou copiar tudo (cole nas Notas com bloqueio ou num gerenciador de senhas) e marque “Guardei”. Faça isso antes de ir ao app Meshtastic: ao trocar de app, o iPhone pode recarregar a página, e a senha e a PSK não aparecem de novo. O arquivo leva também a chave da estação. Se a cópia falhar, o site não deixa marcar “Guardei”: use o .txt.
  4. Passo 2: o canal principal de HOJE No app, em Canais, olhe o cadeado do canal da 1ª linha antes de mexer: amarelo aberto = público padrão, verde fechado = privado (veja cadeados). Um canal sem nome aparece como Canal Principal (Primary Channel): aí o nome é vazio. Escolha também a Região e a Configurações (Presets) que estão na tela LoRa (ex.: “Australia / New Zealand” e “Short Range - Fast”). O site calcula a Faixa de Frequência. Para conferir: no topo da tela Canais o app mostra “… MHz · Slot N”; com a Faixa ainda em 0, esse N tem de ser o mesmo número. Mudou uma resposta depois do passo 1? O site pede para baixar o .txt de novo.
  5. Tela LoRa Confira Região e Configurações (não mude). Em Avançado, ponha a Faixa de Frequência (Frequency Slot) calculada. Se ela já mostra um número diferente de 0, já está fixa: não mude.
  6. Tela Canais Canal privado hoje: antes, toque em Adicionar Canal (Add Channel) e crie um canal com o mesmo Nome e a mesma chave dele (MQTT Uplink ativado e MQTT Baixa ativada desligados). Canal público hoje e quer continuar na malha da comunidade: crie o canal público como secundário — Nome do preset (ex.: ShortFast), Tamanho da Chave Padrão (Default), MQTT Uplink e Baixa desligados. Com ele, o firmware força a telemetria a no mínimo 30 min. Depois, no canal da 1ª linha: Nome ClimaAb, Tamanho da Chave (Key Size) 256 bits, campo chave (Key) = a PSK (cadeado verde), MQTT Uplink ativado ligado, MQTT Baixa ativada (Downlink) desligado, Posições Ativas (Positions Enabled) desligado. Atenção: o campo do app se chama “chave”, mas nele vai a PSK do ClimaAb, não a chave da estação do site.
  7. Tela MQTT MQTT Enabled ligado; Endereço (Address), Nome de usuário (Username) e Senha (Password) da configuração; A criptografia está ativada (Encryption Enabled) ligado; JSON desligado, se aparecer; TLS ativado (TLS Enabled) ligado; Tópico Raiz (Root Topic) ca; Proxy de Cliente MQTT (MQTT Client Proxy) e Map Reporting desligados. ESP32 clássico (não S3) sem PSRAM, ex.: Heltec V2: veja o modo sem TLS (Endereço do broker público, TLS desligado, Nome de usuário e Senha vazios).
  8. Tela Telemetria Medidas Ambientais Ativas (Environment Metrics Enabled) ligado e Environment Metrics Interval Trinta minutos (o menor que o app oferece). Com o canal público como secundário, o firmware força 30 min a cada boot mesmo que se ponha menos; uma malha cheia (mais de 40 nós ouvidos) ou congestionada espaça ainda mais. 10 min só pelo computador e só num nó sem nenhum canal público.
  9. Tela Redes (por último) Opções de WiFi: WiFi Enabled ligado, SSID = o nome da rede de 2,4 GHz de casa, Senha = a do Wi-Fi (não é a do MQTT); Address Mode DHCP. Ao salvar, o Bluetooth do nó desliga: reconecte o app pela rede (conexão por IP; o IP do nó aparece na lista de aparelhos do roteador).
  10. Aguarde a ativação Cada “Salvar” reinicia o nó (~30 s). O estado aparece no detalhe da sua estação: aguardando ativação até o administrador liberar, depois ativa e a Última leitura via MQTT. Quer rever uma tela depois? Configuração avançada → Checklist do app (sem a PSK e a senha, que ficam no seu .txt).
Valores colados: confira o começo e o fim Copie pelo botão de cada campo (ele copia sem espaço) e, depois de colar no app, confira que não sobrou espaço ou quebra de linha. No iPhone, o campo de senha protegido às vezes não aceita colar: a tela mostra a senha em blocos de 4 para digitar sem espaços (maiúsculas contam).

Cadeados e Faixa de Frequência

Verde, fechado

  • chave própria (128 ou 256 bit)
  • só quem tem a chave lê
  • o ClimaAb tem de ficar verde (Tamanho da Chave 256 bits + a PSK no campo “chave”)

Amarelo, aberto

  • chave padrão/pública (Tamanho da Chave “Padrão”, Default) ou nenhuma
  • sem nome, aparece como Canal Principal (Primary Channel)
  • qualquer nó lê; é o canal da malha da comunidade
  • vermelho aberto é o mesmo, compartilhando posição

Qual segredo vai onde

Chave da estação
Aparece no cadastro. Serve só no site (Editar, Configuração avançada) e na ponte. Não vai no nó. Fica guardada no navegador onde você cadastrou ou colou.
PSK do ClimaAb
No app: Canais → ClimaAb → campo chave (Key), Tamanho da Chave 256 bits. É ela que cifra as medidas e prova que o pacote é do seu nó. O campo do app se chama “chave”, mas ele recebe a PSK — não a chave da estação.
Senha do MQTT
No app: MQTT → Senha (Password), com o usuário em Nome de usuário (Username). No modo sem TLS os dois ficam vazios.
Token admin
É do administrador do Clima Aberto, para o painel dele. Você nunca precisa dele.
Aba privada do Safari não guarda a chave A chave fica só no navegador. Numa aba privada (barra escura, “Privado”), o Safari apaga tudo ao fechar a aba: o site deixa de reconhecer a estação como sua. Use uma aba normal e cole a chave uma vez em Editar minha estação. Não achou a chave? Ela está na linha “CHAVE DA ESTAÇÃO” do .txt do Wi-Fi direto, se você baixou (o cadastro pela ponte não gera .txt, e arquivos mais antigos podem não ter essa linha).

Problemas comuns

Casos reais da configuração da estação de referência pelo app do iPhone.

“No Editar não tem como trocar a conexão”
Fica em Editar minha estação → cole a chave → Conferir → Configuração avançada → Forma de conexão. O botão fica cinza até a chave conferir. No detalhe da estação também há o botão Configuração avançada. A forma de hoje vem marcada como atual; “Trocar” só libera quando você escolhe outra, e sair do Wi-Fi direto pede confirmação (apaga a PSK e a senha; voltar exige credenciais novas e nova ativação).
O site não mostra “Conectar o nó” / pede a chave de novo
A chave não está neste navegador: aba privada, outro aparelho ou dados do site apagados. Abra numa aba normal e cole a chave em Editar minha estação.
Fechei a tela sem guardar a senha/PSK — ou mandei print delas
Configuração avançada → Credenciais → Gerar novas credenciais: as antigas param de valer na hora. Aplique as novas no checklist (“O nó já está no ClimaAb”: só a chave do ClimaAb e a Senha) e aguarde a reativação. Só queria rever a Faixa ou uma tela? Não precisa gerar nada: Configuração avançada → Checklist do app.
A cópia não funcionou no iPhone
Se “Copiar tudo” não conseguir copiar, o site avisa e não deixa marcar “Guardei”: use Baixar .txt (vai para o app Arquivos). Para um campo só, toque no “copiar” dele; se o campo de senha do app não aceitar colar, digite olhando os blocos de 4.
Cadeados trocados
O ClimaAb amarelo = a PSK não entrou: Tamanho da Chave 256 bits e cole a PSK no campo “chave”. O canal público verde = ganhou chave própria e saiu da malha da comunidade: Tamanho da Chave Padrão (Default).
Faixa de Frequência calculada com o canal errado
O cálculo parte do canal principal de hoje (o da 1ª linha), antes de mexer. Amarelo = público (nome do preset); verde = privado (o nome dele). O app mostra “Canal Principal”? O nome é vazio. Confira com o “Slot N” do topo da tela Canais. Veja cadeados.
O canal principal de hoje já é o ClimaAb
Então o nó já passou pela primeira configuração: marque “O nó já está no ClimaAb”. O checklist mostra só a chave do ClimaAb e a Senha; não crie outro canal ClimaAb nem mude a Faixa de Frequência.
Tópico Raiz (Root Topic) msh/ANZ (ou msh/…)
É o padrão de fábrica. Tem de ser ca: a regra do servidor MQTT só aceita ca/2/e/ClimaAb/<id do nó>; com msh/… nada chega.
Senha vazia, ou colada com espaço
No servidor com TLS a senha tem de ser exatamente a da configuração (24 letras e números, maiúsculas contam, sem espaço no começo ou no fim). Se o campo do iPhone não aceitar colar, digite olhando os blocos de 4. No modo sem TLS é o contrário: Nome de usuário (Username) e Senha (Password) vazios (apague tudo).
Heltec V2 não conecta com TLS
O ESP32 clássico (não S3) sem PSRAM, como o Heltec V2, não tem memória para completar o TLS com Wi-Fi e Meshtastic rodando: não aparece nem tentativa no servidor. Use o modo sem TLS (quando o servidor oferece), a ponte, ou uma placa ESP32-S3 (ex.: Heltec V3). O V3 também não tem PSRAM, mas no firmware 2.8 ele deve completar o TLS (ainda não comprovado): confirme no log serial do nó (veja “Nada chega e nenhum descarte aparece” no Diagnóstico do Wi-Fi direto).
O app diz “broker rejected connection: Authorization Error”
Essa mensagem vem do proxy do app (Proxy de Cliente MQTT, MQTT Client Proxy), não do nó: o app iOS usa um identificador longo demais para o servidor. O proxy do app não serve para testar: deixe-o desligado e acompanhe pelo detalhe da estação (Última leitura via MQTT).
“Failed to deliver to mesh” ao mandar mensagem no canal ClimaAb
Normal. Só a sua estação tem a chave do ClimaAb: ninguém na malha repete a mensagem, então o app mostra a falha. O ClimaAb é só para a telemetria; converse no canal secundário.
O app conecta pela rede, mas nada chega ao servidor
Confira a tela Redes: Address Mode DHCP. Com Static e o gateway errado o nó fala com o celular na rede de casa, mas não sai para a internet.
Liguei o WiFi e o app perdeu o nó
Normal no ESP32 (Heltec): com o WiFi ligado, o Bluetooth desliga. Reconecte o app pela rede, por IP (o IP do nó aparece na lista de aparelhos do roteador). Por isso a tela Redes é a última do checklist.
O app não oferece 10 minutos na telemetria
O app oferece de 30 min para cima. 10 min só pelo computador (--set telemetry.environment_update_interval 600) e só num nó sem nenhum canal público. Com o canal público de chave padrão em qualquer índice (ex.: o secundário, para continuar na malha da comunidade), o firmware sobe o 600 para 1800 a cada boot: --get telemetry mostra 1800. Na Configuração avançada → Diagnóstico, diga qual intervalo está no nó (com o canal público: 30 min): o aviso de “sem leitura” se ajusta.
O nó conecta ao servidor MQTT e cai em seguida, sem parar
Uma causa possível: o firmware tenta publicar as mensagens diretas cifradas (PKI) no tópico ca/2/e/PKI/!xxxxxxxx, e o servidor MQTT só deixa o nó publicar no tópico dele do ClimaAb, então nega. Se o servidor derrubar a conexão a cada negação, o nó fica reconectando (sinais: leituras faltando ou o aviso “Sem leitura via MQTT”; no log serial do nó, “MQTT connected” repetindo). Ainda não se sabe se o servidor do Clima Aberto faz isso: as negações em si são normais. Isso não se resolve no nó: avise o administrador do Clima Aberto. A saída dele é liberar esse tópico só para o próprio nó. O preço: os dados de quem mandou para quem, e quando, dessas mensagens passam a entrar no servidor MQTT (o conteúdo continua cifrado e nunca chega ao Clima Aberto).
ID do nó errado (o do celular)
Com o app conectado ao nó que anda com você, o ID do Usuário (User Id) é o dele. O ID certo é o do nó da estação, no Wi-Fi. Corrija em Configuração avançada → Forma de conexão → Wi-Fi direto → digite o ID certo → Trocar o nó. Trocou a placa da estação (ex.: um nó novo, ainda sem Wi-Fi)? Aí o ID certo é o da placa nova, mesmo que ela esteja ligada ao celular pelo Bluetooth agora: leia o ID depois de gravar o firmware final (no firmware 2.8, apagar tudo ou o reset de fábrica do aparelho troca o ID).

Configuração avançada (no site)

Aberta pelo Editar minha estação (depois de conferir a chave) ou pelo bloco Conectar o nó do detalhe da sua estação. Tem estas partes:

Alternativa: pelo computador (CLI)

Os mesmos ajustes do app, por comandos. Na tela da configuração do nó, eles ficam em Configuração avançada · Pelo computador (CLI).

  1. Ache o ID do nó que vai ficar no Wi-Fi É ! + 8 letras/números (ex.: !a1b2c3d4) do nó da estação (o que fica no Wi-Fi de casa) — não o do nó que anda com você ligado ao celular. Com Wi-Fi ligado, o Bluetooth do ESP32 desliga, então o app do celular quase sempre está conectado ao OUTRO nó. No PC, com a estação no Wi-Fi:
    meshtastic --host 192.168.x.y --info
    Nó novo, ainda sem Wi-Fi: no cabo USB, meshtastic --port COM5 --info (no Linux, /dev/ttyUSB0). Em “Nodes in mesh”, o bloco com o nome da estação (o mesmo do “Owner”) tem "id": "!xxxxxxxx". Vai gravar firmware? Leia o ID depois: no firmware 2.8, apagar tudo (full erase) ou o reset de fábrica do aparelho troca o ID. Não mande essa saída a ninguém: ela tem as senhas dos canais e do Wi-Fi.
  2. Cadastre ou troque a forma de conexão Estação nova: + Estação → em “Como o nó vai mandar os dados?”, Wi-Fi direto (MQTT) → ID do nó. Estação que já existe (usava a ponte): Editar minha estação → chave → Configuração avançada → Forma de conexão (ou, no detalhe da estação, Trocar para Wi-Fi direto (MQTT)).
  3. Guarde a configuração — ela aparece uma única vez Servidor (host), usuário, senha e a PSK do canal ClimaAb. No passo 1 da tela: baixar .txt ou copiar tudo (o arquivo é gerado no seu navegador) e “Guardei”. O servidor guarda tudo cifrado e nunca mais mostra a PSK; perdeu? Configuração avançada → Credenciais → gerar novas.
  4. Aguarde a ativação O estado começa em aguardando ativação: o administrador do Clima Aberto cria o seu usuário no servidor MQTT (é manual, no plano gratuito do broker). Você pode aplicar os comandos antes: o nó fica tentando e começa a publicar quando a ativação sair. O estado aparece no detalhe da sua estação (botão atualizar).
  5. Aplique os comandos pelo PC Na tela da configuração, abra Configuração avançada · Pelo computador (CLI): o gerador roda só no seu navegador (faça no PC onde vai rodar os comandos) e usa o cadeado, a região e o preset do passo 2. Rode antes meshtastic --host IP --info (nó ainda sem Wi-Fi: meshtastic --port COM5 --info, no cabo USB) e informe: como o PC fala com o nó (pela rede, com o IP, ou pelo cabo USB, com a porta; vazio = o CLI acha sozinho), a região e o preset (no bloco "lora" do --info, por nome; no --get lora a região aparece só como número — ANZ = 6, BR_902 = 26 — e o LongFast não aparece), se o seu canal primário de hoje é privado (nome e PSK próprios) ou o padrão público, e — no privado — o nome e a PSK dele (obrigatória: sem ela o gerador não mostra os passos que mexem nos canais, porque o seu canal seria apagado). Ele calcula a frequência e monta, na ordem: backup (backup_a1b2c3d4.yaml, um arquivo por nó, com o ID dele sem o !), conferência, frequência fixa, seu canal no índice 1, o ClimaAb no índice 0, a telemetria a cada 10 min, o MQTT, a conferência final, pelo cabo USB o Wi-Fi por último (o nome e a senha da rede você troca no terminal, dentro das aspas simples, no PowerShell; ao ligar o Wi-Fi o Bluetooth desliga, a USB continua) e o mesmo slot nos seus outros nós. Pelo computador o canal público não volta como secundário (para manter a malha da comunidade, faça a tela Canais pelo app; pelo cabo USB, antes do passo do Wi-Fi, enquanto o app ainda conecta pelo Bluetooth). Os 10 min só valem assim, sem nenhum canal público: com o público de volta, o firmware força 30 min a cada boot. Precisa do CLI oficial:
    py -m pip install "meshtastic[cli]==2.7.11"
    Espere ~30 s entre um comando e outro: o nó reinicia a cada mudança. Erro de conexão (o nó ainda reiniciando)? Espere e rode o mesmo comando de novo. Qualquer outro erro: pare e não rode o próximo — o gerador mostra o comando de desfazer (ex.: meshtastic --host IP --configure backup_a1b2c3d4.yaml, que volta o backup do passo 1 daquele nó).
  6. Veja no mapa Depois da ativação, a primeira leitura aparece no intervalo da telemetria. O detalhe da sua estação mostra Última leitura via MQTT; a Configuração avançada → Diagnóstico mostra por que pacotes foram descartados. Pode desligar a ponte, se usava.
Nunca use --ch-add-url Na CLI 2.7.11, uma URL de canal sem configuração de rádio faz o --ch-add-url gravar a LoRa com região UNSET e transmissão desligada: o rádio fica mudo. Os comandos do gerador usam só --ch-index e --ch-set.
O log serial pode imprimir a senha Ao conectar, o nó escreve no log da USB o usuário do MQTT e, no firmware 2.7.26, também a senha (o 2.8 mascara a senha, mas mostra o usuário). Não compartilhe prints nem logs do monitor serial. Os próprios comandos do gerador também têm a senha e a PSK: não cole em grupo nem fórum.

O que vai para o servidor MQTT (e o que o Clima Aberto abre)

Vai ao broker

  • só os pacotes do seu nó no canal ClimaAb (telemetria, nodeinfo, roteamento), cifrados com a PSK do canal — o broker não lê
  • o ID do nó, no tópico ca/2/e/ClimaAb/!xxxxxxxx e no usuário

Não vai / é descartado

  • mensagens do seu canal de sempre (ele fica no índice 1, sem envio ao MQTT)
  • posição: o canal ClimaAb tem position_precision 0 e o mapa público do MQTT fica desligado
  • JSON em claro (json_enabled false)
Modo sem TLS (broker público): só para nó sem memória para TLS O Heltec V2 e outros ESP32 clássicos (não S3) sem PSRAM não conseguem TLS no firmware 2.7.26 (com TLS não conectam em broker nenhum). Enquanto o servidor estiver com este modo ligado (o /api mostra "mqtt_publico" com "ativo": true), a tela da configuração pergunta “O seu nó consegue usar TLS?” e, no Não, o checklist já vem assim: endereço test.mosquitto.org, TLS desligado, usuário e senha vazios. O resto não muda: canal ClimaAb com a PSK do cadastro e encryption_enabled ligado (é a PSK que prova que o pacote é seu), e a ativação do administrador continua valendo.

Apague usuário e senha pelo app: sem TLS, uma senha que ficasse no nó iria às claras para o broker público, e o CLI 2.7.11 não consegue esvaziar texto (--set mqtt.username "" grava o texto b'').

Riscos: num broker público qualquer um vê o tópico e o ID do nó e pode publicar nele. As medidas continuam cifradas, mas a cifra (AES-CTR) não tem selo de integridade. Use só até ter firmware com TLS; depois, volte aos dados do cadastro (servidor MQTT com TLS, usuário e senha).

Quem vê o ID do nó também consegue derrubar a conexão dele: o nó usa o próprio ID como identificador da conexão (client ID), e outro cliente que conecte com o mesmo ID expulsa o seu. O servidor não tem como ver isso. O sinal é o aviso “Sem leitura via MQTT” no painel da estação: depois de 20 min com a telemetria a cada 10 min, ou de 40 min com ela a cada 30 min (o intervalo se informa em Configuração avançada → Diagnóstico). Se acontecer, a saída é o servidor MQTT com TLS (com o firmware novo, só quem tem usuário e senha conecta) ou, enquanto isso, a ponte por cabo USB ou Bluetooth.

Por que trocar o canal primário e fixar a frequência

Diagnóstico do Wi-Fi direto (códigos)

A Configuração avançada → Diagnóstico da sua estação mostra os últimos descartes. O que cada um quer dizer:

estacao_pendente
O nó já publica, mas a conexão ainda aguarda ativação. Normal até o administrador ativar. Se você gerou credenciais novas, aplique também a PSK e a senha novas no nó (no checklist: “O nó já está no ClimaAb”): com as antigas ele não volta.
no_id_divergente
O broker recebeu o seu usuário, mas de um nó com outro ID: o ID do cadastro é de outro nó (quase sempre o do nó ligado ao celular). Use Configuração avançada → Forma de conexão → Wi-Fi direto com o ID do Usuário (User Id) do nó que está no Wi-Fi → Trocar o nó.
estacao_revogada
A conexão foi revogada pelo administrador: tudo é descartado. Para pedir de novo, Configuração avançada → Credenciais → gerar novas (o administrador decide a reativação).
erro_cofre
O servidor não consegue abrir a PSK guardada (a chave do cofre dele mudou). Gere novas credenciais (Configuração avançada → Credenciais), aplique as novas e avise o administrador.
usuario_divergente ou clientid_divergente
O nó entrou no broker com outro usuário, ou o pacote não veio do nó cadastrado. Confira o Nome de usuário (Username) na tela MQTT (o da configuração, começa com ca).
limite_estacao
Mais de 30 leituras em 10 min: o excesso é descartado. Confira o intervalo da telemetria (600 s; ou 1800 s, com o canal público).
hash_do_canal ou decifra_falhou
A PSK configurada no nó não confere com a do cadastro. No app: Canais → ClimaAb → campo “chave” (Key), cole a PSK da configuração (Tamanho da Chave 256 bits). Gerou credenciais novas? A PSK antiga não vale mais.
gateway_divergente
O canal 0 do nó não se chama exatamente ClimaAb, ou o ID não confere.
em_claro
O nó está mandando sem cifra: ligue “A criptografia está ativada” (Encryption Enabled) na tela MQTT (ou --set mqtt.encryption_enabled true).
fora_da_janela
Relógio do nó fora: o nó pega a hora pelo Wi-Fi (NTP). Leituras com mais de 3 h de atraso ou adiantadas são recusadas. Confira se o nó tem internet de verdade.
sem_medida
A telemetria chegou sem nenhuma medida válida: sensor solto (BME280 não detectado no boot) ou valor fora do plausível.
nao_e_telemetria, pacote_de_terceiro, nao_broadcast, duplicado, estacao_mudou
Normais: mensagens, posições e nodeinfo descartados sem abrir, pacotes de outros nós, repetidos depois de uma reconexão, e pacotes que chegaram bem na hora de uma troca de credenciais.
Nada chega e nenhum descarte aparece
O nó não está conectando ao broker: confira o Wi-Fi (só 2,4 GHz, DHCP), MQTT ligado, o Endereço, o Nome de usuário e a Senha (meshtastic --host IP --get mqtt), o Tópico Raiz ca, e se a ativação já saiu. Heltec V2 com TLS ligado não conecta (veja o modo sem TLS). Heltec V3 (ou outro ESP32-S3): olhe o log serial do nó (monitor USB). “MQTT connected” = conectou. “SSL - Memory allocation failed” ou “start_ssl_client: connect failed: -32512”, seguidas de “MQTT server connect failed” = faltou memória para o TLS: use o modo sem TLS ou a ponte. “MQTT server connect failed” sem nenhuma linha de ssl_client = o TLS passou e o servidor recusou (confira Nome de usuário, Senha e se a ativação saiu) ou o Endereço não resolveu. Confira também a telemetria (app: Telemetria → Environment Metrics ligado; ou meshtastic --host IP --get telemetry mostrando telemetry.environment_measurement_enabled: True): no padrão ela vem desligada. Mais casos em Problemas comuns.
Voltar para a ponte
Configuração avançada → Forma de conexão → Cabo USB ou Bluetooth (as credenciais do Wi-Fi direto são apagadas). No nó: app → MQTT → MQTT Enabled desligado (ou meshtastic --host IP --set mqtt.enabled false). O backup do primeiro comando do computador guarda a configuração de antes.

Alternativa: a ponte (USB, Bluetooth ou Wi-Fi local)

Sem Wi-Fi no nó — ou preferindo não usar um servidor MQTT —, um computador ligado ao nó faz o envio. O rádio conversa com outros rádios (LoRa) e com um cliente conectado nele por USB, Wi-Fi ou Bluetooth — normalmente o app do celular.

A ponte é um programa pequeno, um arquivo só (ponte.py), que faz o papel desse cliente: fica ligada ao nó, separa a telemetria de ambiente e energia e envia ao Clima Aberto por HTTPS, com a chave da sua estação.

Nó com sensoresBME280, INA219…
USB ou Wi-Fi
Computador com a pontePC, Raspberry ou Android
internet (HTTPS)
Clima Abertomapa + API aberta

Ligado direto no nó, o cliente recebe uma leitura a cada ~1 minuto (e mais uma a cada envio pela malha). A ponte manda a primeira assim que chega a leitura de ambiente (em até ~1 minuto, para o mapa já mostrar) e depois junta as leituras e envia 1 vez a cada 5 minutos (mude com --intervalo SEG). Sem internet, ou com o servidor acordando, as leituras esperam numa fila no computador e seguem quando ele voltar.

Nó no Wi-Fi de casa e nenhum computador sobrando? O Wi-Fi direto (MQTT) dispensa a ponte. No mapa, a forma de conexão da estação se troca em Editar minha estação → Configuração avançada → Forma de conexão (ou no bloco Conectar o nó do detalhe).

O que você precisa

Cuidado com o Python 3.15 A meshtastic 2.7 ainda não aceita o Python 3.15. Nele, pip install meshtastic instala sem avisar uma versão de 2024 (2.3.11). Por isso os comandos deste guia fixam "meshtastic==2.7.11": se o Python for novo demais, o pip dá erro claro em vez de instalar a versão velha. Use o Python 3.12, 3.13 ou 3.14.
Um cliente por vez no mesmo nó O nó tem uma fila só de pacotes para clientes. Com o app do celular e a ponte ligados ao mesmo nó, as leituras se dividem entre os dois e parte não chega à ponte. Enquanto a ponte roda, desconecte o app desse nó. Pela USB, feche também o CLI meshtastic e qualquer monitor serial (a porta fica ocupada).

Windows, passo a passo

  1. Instale o Python Baixe o Python 3.12, 3.13 ou 3.14 em python.org e instale. O comando py (o lançador do Python) vem junto e é o que usamos abaixo.
  2. Instale a biblioteca meshtastic (e o keyring) Abra o Prompt de Comando ou o PowerShell e rode:
    py -m pip install "meshtastic==2.7.11" keyring
    O keyring é opcional: com ele a ponte guarda a chave no Gerenciador de Credenciais do Windows, em vez de pedir toda vez.
  3. Baixe a ponte Baixar ponte.py
    O botão salva em Downloads. Melhor guardar numa pasta fixa, por exemplo C:\clima — pelo terminal, já baixando lá:
    mkdir C:\clima
    cd C:\clima
    curl.exe -O https://clima-aberto.pages.dev/ponte.py
    No PowerShell escreva curl.exe (com .exe): lá, curl sozinho pode ser outro comando. Baixou pelo botão? Mova o arquivo para C:\clima, ou troque cd C:\clima por cd $HOME\Downloads nos passos abaixo.
  4. Ache a porta COM do nó Ligue o nó no USB e abra o Gerenciador de Dispositivos → Portas (COM e LPT). O Heltec aparece como algo parecido com Silicon Labs CP210x USB to UART Bridge (COM3) — o número pode ser outro. Tire e ponha o cabo para ver qual entrada some e volta.
  5. Feche o que usa a porta App Meshtastic conectado nesse nó, o CLI meshtastic, monitores seriais (Arduino, PlatformIO…).
  6. Confira o nó (opcional) Sempre a partir da pasta onde está o ponte.py. Lista os nós que o rádio conhece (id, nome, última leitura) — nada vai para a internet:
    cd C:\clima
    py ponte.py --serial COM3 --listar
    E para ver exatamente o que seria enviado, sem enviar e sem pedir a chave (espera a primeira leitura de ambiente do nó, até ~1 min):
    py ponte.py --estacao SEU-ID --serial COM3 --seco -v --uma-vez
  7. Rode a ponte Troque SEU-ID pelo id da estação no Clima Aberto (o comando pronto está no mapa, no bloco Conectar o nó da sua estação):
    cd C:\clima
    py ponte.py --estacao SEU-ID --serial COM3
    Na primeira vez a ponte pede a chave: no mapa, toque em copiar minha chave e cole no terminal (Ctrl+V ou botão direito) e tecle Enter uma vez só. Nada aparece enquanto você cola — é de propósito. Ela avisa “Conferindo a chave…” (até ~1 min se o servidor estava dormindo) e pergunta se pode guardá-la: com o keyring do passo 2, no cofre do sistema — Enter = sim; sem ele, num arquivo — responda s. Para parar: Ctrl+C. Sem a porta (--serial sozinho) a ponte tenta achá-la sozinha.
  8. Deixe rodando A janela precisa ficar aberta e o PC não pode dormir: em Configurações → Sistema → Energia, ponha a suspensão em Nunca.
Iniciar a ponte junto com o Windows (Agendador de Tarefas)

Antes, rode a ponte uma vez à mão (passo 7) e aceite guardar a chave — a tarefa automática não tem onde você digitar. Sem chave guardada, ela para com o aviso Sem chave para a estacao ….

  1. Abra o Agendador de Tarefas (menu Iniciar → digite “Agendador”) → Criar Tarefa Básica…
  2. Nome: Clima Aberto ponte → Disparador: Ao fazer logon → Ação: Iniciar um programa.
  3. Programa/script: py
    Adicionar argumentos: C:\clima\ponte.py --estacao SEU-ID --serial COM3
    Iniciar em: C:\clima
  4. Marque “Abrir a caixa de diálogo Propriedades…” e clique em Concluir. Nas propriedades da tarefa, ajuste — os padrões do Windows derrubam a ponte num notebook:
    • Aba Condições: desmarque “Iniciar a tarefa somente se o computador estiver ligado à rede elétrica” (isso desliga junto o “Parar se o computador alternar para energia da bateria”). Senão, uma queda de luz de segundos mata a ponte e ela não volta sozinha.
    • Aba Configurações: desmarque “Interromper a tarefa se ela for executada por mais de 3 dias”; marque “Se a tarefa falhar, reiniciar a cada: 1 minuto” com “Tentar reiniciar até: 999 vezes”; deixe “Se a tarefa já estiver em execução: Não iniciar uma nova instância”.
    • Aba Disparadores → editar o “Ao fazer logon” → marque “Repetir a tarefa a cada: 5 minutos”, “por: Indefinidamente”. Se a ponte tiver parado por qualquer motivo, ela volta em até 5 min; enquanto estiver rodando, o Windows não abre outra.

Se a tarefa não abrir, use o caminho completo do Python no lugar de py. Para descobrir: py -c "import sys; print(sys.executable)".

Bluetooth (ponte)

Com a estação cadastrada como Bluetooth (ponte), o comando do bloco Conectar o nó troca --serial por --ble e o nome Bluetooth do nó:

py ponte.py --estacao SEU-ID --ble Meshtastic_ab12

Linux / Raspberry Pi

Num Raspberry Pi (ou qualquer Linux) a ponte roda como serviço, sozinha, desde o boot. Use um ambiente virtual (o Raspberry Pi OS recente não deixa instalar pacotes com pip fora de um):

python3 -m venv ~/clima
~/clima/bin/pip install "meshtastic==2.7.11"
cd ~/clima && curl -O https://clima-aberto.pages.dev/ponte.py
ls /dev/ttyUSB* /dev/ttyACM*        # a porta do nó (Heltec: normalmente /dev/ttyUSB0)
sudo usermod -aG dialout $USER      # permissão na porta serial: saia e entre de novo
~/clima/bin/python ~/clima/ponte.py --estacao SEU-ID --serial /dev/ttyUSB0

Na primeira vez ela pede a chave. Num Raspberry sem tela normalmente não há cofre do sistema: aceite guardar no arquivo ~/.clima_aberto_ponte_chaves.json (texto puro, só o seu usuário lê). O serviço abaixo roda com o mesmo usuário e acha a chave lá.

Agora vire serviço. Crie /etc/systemd/system/clima-ponte.service (troque pi pelo seu usuário e SEU-ID pelo id da estação):

[Unit]
Description=Clima Aberto - ponte Meshtastic
After=network-online.target
Wants=network-online.target

[Service]
User=pi
WorkingDirectory=/home/pi/clima
ExecStart=/home/pi/clima/bin/python /home/pi/clima/ponte.py --estacao SEU-ID --serial /dev/ttyUSB0
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now clima-ponte
journalctl -u clima-ponte -f         # acompanhar (Ctrl+C sai; o serviço continua)

Prefere variável de ambiente? A ponte lê CLIMA_CHAVE_SEU_ID (o id em maiúsculas, com _ no lugar de -; ex.: CLIMA_CHAVE_VERA_CRUZ). Ponha num arquivo com chmod 600 e aponte com EnvironmentFile= — nunca escreva a chave direto no .service, que todos os usuários conseguem ler.

Android antigo (Termux) — só via Wi-Fi

Um celular parado na tomada gasta pouco e serve de ponte, com ressalvas:

pkg install python
pip install --no-deps meshtastic==2.7.11
pip install protobuf pypubsub pyserial requests tabulate packaging
curl -O https://clima-aberto.pages.dev/ponte.py
termux-wake-lock                     # impede a CPU de dormir
python ponte.py --estacao SEU-ID --tcp 192.168.x.y

O --no-deps pula a parte de Bluetooth da biblioteca (que tentaria compilar no celular e não serve no Android); a ponte não precisa dela. A chave pode ficar no arquivo que a ponte oferece na primeira vez. Deixe o celular carregando.

Configurar o nó

Estes comandos usam o CLI oficial (py -m pip install "meshtastic[cli]==2.7.11"). Troque COM3 pela sua porta (no Linux, /dev/ttyUSB0). Cada --set reinicia o nó, por isso junte tudo num comando só. Feche a ponte antes (a porta é uma só).

1. Telemetria de ambiente (obrigatório)

meshtastic --port COM3 --set telemetry.environment_measurement_enabled true --set telemetry.environment_update_interval 600
meshtastic --port COM3 --get telemetry

2. Leituras a cada 10 min: só sem nenhum canal público

Com o canal padrão público (ex.: LongFast, chave padrão) em qualquer índice, primário ou secundário, o firmware impõe a cada boot um piso de 30 min à telemetria, para proteger o tempo de ar da malha pública. Com um canal primário próprio (nome e senha seus) e nenhum canal público no nó, os 600 s valem:

meshtastic --port COM3 --ch-set name MeuCanal --ch-set psk random --ch-index 0

Já tem canal privado? Pule. Senão, troque MeuCanal por um nome seu. A senha (psk random) é nova: os outros nós da sua malha precisam recebê-la pela URL do canal.

O nome do canal primário também escolhe a frequência Cálculo para região ANZ, preset LongFast: “LongFast” cai em 919,875 MHz e “VeraCruz” em 921,875 MHz. Consequências: a estação deixa de ouvir e repetir os nós públicos, e outro nó só a ouve se tiver o mesmo canal primário (copie com a URL do canal — veja gateway).

Não adicione o LongFast público como canal secundário se quer 10 min: nos firmwares 2.7.26 e 2.8 isso traz o piso de 30 min de volta (e a próxima gravação de configuração grava o 1800 no nó: ao tirar o público, ponha o 600 de novo). Não use --set-ham: ele desliga a criptografia.

3. Wi-Fi (para TCP: Termux, NOMAD ou PC em outro cômodo)

meshtastic --port COM3 --set network.wifi_enabled true --set network.wifi_ssid "NomeDaRede" --set network.wifi_psk "senha"
meshtastic --host 192.168.x.y --nodes --show-fields user.id,user.shortName
A porta TCP 4403 do nó não tem senha Qualquer aparelho na sua rede pode se conectar, ler a configuração (inclusive as senhas do canal e do Wi-Fi) e mudar o nó. Use só em rede de casa confiável.

Estação longe: só no rádio, com um nó em casa

A estação fica lá fora, no solar, só no LoRa. Em casa, outro nó (por exemplo um Heltec V3) fica no USB ou no Wi-Fi do computador da ponte e ouve a estação pelo rádio. Funciona: o nó de casa entrega ao cliente a telemetria que ouve dos outros nós.

Estaçãosó LoRa, solar
rádio LoRa
Nó em casamesmo canal primário
USB ou Wi-Fi
Ponte→ Clima Aberto

Condições: mesma região, mesmo preset e mesmo canal primário (nome e senha). O jeito exato é copiar a URL do canal da estação — ela leva os canais e a configuração de rádio:

meshtastic --port COM3 --qr                # na estação: mostra a URL do canal
meshtastic --port COM4 --seturl "URL"      # no nó de casa (substitui os canais dele)
meshtastic --port COM4 --get lora          # confira região e preset

Depois rode a ponte no nó de casa dizendo qual é o nó da estação — a ponte aceita só a telemetria dele (o nó de casa ouve outros nós e pode ter sensor próprio):

py ponte.py --estacao SEU-ID --serial COM4 --no !a1b2c3d4
A URL do canal contém a senha do canal Não cole em grupo, fórum ou print. Pelo mesmo motivo, não mande a ninguém a saída de meshtastic --info ou --get network: elas trazem a configuração completa, a senha do Wi-Fi e a URL do canal.

Privacidade: o que a ponte envia e o que nunca envia

Envia (se o sensor existir)

  • temperatura, umidade, pressão
  • tensão e corrente da bateria (INA219)
  • vento, rajada e direção; chuva (1 h e 24 h)
  • luz (lux), qualidade do ar (PM2.5, PM10, CO₂, IAQ)
  • umidade e temperatura do solo
  • bateria e tensão da placa do nó

Nunca envia

  • nome do nó nem o id dele (!xxxxxxxx)
  • posição / GPS
  • mensagens de texto
  • a lista de outros nós da malha
  • canais, senhas, senha do Wi-Fi
  • configuração do nó

A chave: onde fica

A chave está no celular e a ponte no computador? No celular, abra sua estação no mapa, toque em copiar minha chave e leve até o computador por um caminho só seu (gerenciador de senhas, uma nota pessoal). Não mande em grupo nem cole em lugar público. Depois de colar na ponte, apague a cópia.

Hoje não há troca de chave: se ela vazar, exclua e recadastre a estação.

Problemas da ponte

Para o Wi-Fi direto e o app do celular, veja Problemas comuns.

Nada aparece no mapa
Telemetria de ambiente desligada ou intervalo 0 (= 1 hora): veja Configurar o nó. Com o canal padrão público no nó (primário ou secundário) o mínimo é 30 min. Confira o id da estação (é o do Clima Aberto, como vera-cruz, não o do nó). No modo gateway: id do nó errado, ou o nó de casa sem o mesmo canal primário e região. E feche o app do celular nesse nó (ele divide as leituras). Se nada chegar do nó por 30 min, a própria ponte avisa (Sem telemetria da estacao ha …) e reconecta. Para ver cada pacote aceito ou ignorado, rode com -v.
A primeira leitura demora ~1 minuto
O servidor gratuito dorme depois de 15 min sem acesso e leva ~50 s para acordar. Normal: a ponte espera, tenta de novo e guarda as leituras na fila enquanto isso; os envios seguintes são rápidos.
Só aparece a bateria, sem temperatura
O BME280 não foi detectado no boot do nó (cabo ou endereço 0x76). Confira e reinicie o nó. O --uma-vez espera a leitura de ambiente e avisa se só chegaram dados da placa.
“O relogio deste computador e o do no diferem…” / “horario da leitura no futuro”
O horário das leituras vem do computador. Acerte a hora do Windows (Configurações → Hora e idioma → Sincronizar agora). Enquanto isso a ponte corrige pela hora do servidor e não perde leituras.
Bateria em ~1 V ou valor sem sentido
Ligue o negativo da bateria ao GND do Heltec/INA219 (sem terra comum a tensão “flutua”).
“Nao consegui abrir a porta COM3: ela nao existe ou esta em uso”
Porta errada (confira no Gerenciador de Dispositivos), ou ocupada pelo app, pelo CLI ou por um monitor serial.
“Nenhum radio encontrado na USB”
Com --serial sozinho: cabo só de carga (sem dados), driver CP210x faltando, ou nó desligado. Informe a porta: --serial COM3.
can't open file '...\ponte.py': [Errno 2] No such file or directory
O terminal não está na pasta do arquivo. Vá até ela antes: cd C:\clima (ou cd $HOME\Downloads, se baixou pelo botão). Ou rode com o caminho completo: py C:\clima\ponte.py …
“Python nao foi encontrado; executar sem argumentos para instalar do Microsoft Store”
No Windows use py, não python (o python cai num atalho da Loja).
“A chave nao confere” (403) / estação inexistente (404)
A ponte confere a chave ao iniciar. 403: a chave não é desta estação — use testar chave no mapa, copie de novo e, se havia uma guardada, rode antes py ponte.py --estacao SEU-ID --esquecer-chave. 404: a estação não existe (id errado ou excluída). 401: faltou a chave. Se isso acontecer com a ponte já rodando, ela pausa a estação (as leituras ficam na fila), confere a chave de novo a cada 30 min e volta sozinha quando valer. Erros passageiros do servidor (404 de página, 408, 5xx) só fazem a ponte esperar e tentar de novo.
422
Uma leitura com valor fora do plausível (sensor com defeito?) foi recusada. As próximas seguem normalmente.
429
Mais de 120 leituras em 10 min para a mesma estação. A ponte já espaça os envios; se aparecer, veja se há duas pontes rodando para a mesma estação.
Instalou meshtastic 2.3.11
Python 3.15. Use o 3.12, 3.13 ou 3.14 e o comando com "meshtastic==2.7.11".
Wi-Fi do nó não conecta
Só rede de 2,4 GHz. Com senha errada o Bluetooth também fica desligado: corrija pela USB.

Próximos passos

Servidor MQTT próprio

O Wi-Fi direto usa o servidor MQTT do Clima Aberto (plano gratuito, com ativação manual). Uma rede maior pode ter o seu próprio (por exemplo Mosquitto no NOMAD), com um programa sempre ligado repassando ao Clima Aberto. Nunca use o servidor MQTT público do Meshtastic para isso: lá os pacotes ficam à vista de todos, e muitos abrem com a senha padrão.

NOMAD

O servidor offline de casa pode rodar a ponte; sem internet, as leituras esperam na fila dela e seguem depois (a API aceita horário antigo). No Windows, o Docker (WSL2) não enxerga a USB sem o usbipd-win — prefira o nó no Wi-Fi (TCP). Guarde a chave fora da interface e de volumes expostos.