exxer-cloud-edge
Gateway Edge para coleta, armazenamento e sincronização segura de telemetria IoT com o Exxer Cloud
5.4K
Buffer local durável e sincronização de telemetria com o Exxer Cloud. O Edge roda dentro da rede da planta, recebe os dados dos equipamentos (por HTTP ou MQTT), armazena tudo com segurança em disco e sincroniza com a nuvem assim que há conexão. Se a internet cair, nada se perde: os dados são reenviados automaticamente.
O broker MQTT já vem embutido — a aplicação roda em um único container, sem depender de um Mosquitto externo.
docker run -d --name exxer-edge -p 9595:9595 -p 1883:1883 -v edge_data:/var/lib/exxer-edge --restart unless-stopped exxersoftware/exxer-cloud-edge:latest
Depois acesse http://localhost:9595 (ou http://<IP-DO-SERVIDOR>:9595).
Nenhum arquivo de configuração é necessário: as credenciais internas são geradas
automaticamente no primeiro início.
MQTT (recomendado para IoT/Node-RED) — publique em qualquer tópico na porta
1883, QoS 1, com o campo token na mensagem:
{ "token": "SEU_TOKEN_DE_INGESTAO", "data": { "temperature": 24.7 } }
Qual endereço usar como broker (depende de onde o cliente MQTT roda):
localhost;host.docker.internal (no Linux, suba o container com --add-host=host.docker.internal:host-gateway);192.168.0.10).Em todos os casos, porta 1883.
HTTP — envie um POST com o token no cabeçalho:
curl -X POST http://<IP-DO-SERVIDOR>:9595/api/v1/ingest \
-H "Authorization: Bearer SEU_TOKEN_DE_INGESTAO" \
-H "Content-Type: application/json" \
-d '{ "data": { "temperature": 24.7 } }'
Fluxo mínimo de publicação MQTT: um inject dispara a cada 5 s, uma function
monta a leitura (com timestamp e location) e um mqtt out publica no Edge.
No Node-RED, use Menu → Import, cole o JSON abaixo e ajuste dois pontos:
IP-DO-EDGE pelo IP do servidor do Edge
(ou host.docker.internal, se o Node-RED roda em Docker no mesmo host), porta 1883.SEU_TOKEN_DE_INGESTAO pelo token de ingestão do dispositivo.[
{ "id": "exxer-demo-tab", "type": "tab", "label": "Exxer Edge — MQTT", "disabled": false, "info": "" },
{ "id": "exxer-inject", "type": "inject", "z": "exxer-demo-tab", "name": "a cada 5s", "props": [{ "p": "payload" }], "repeat": "5", "crontab": "", "once": true, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 150, "y": 120, "wires": [["exxer-fn"]] },
{ "id": "exxer-fn", "type": "function", "z": "exxer-demo-tab", "name": "monta leitura", "func": "msg.payload = JSON.stringify({\n timestamp: new Date().toISOString(),\n type: \"telemetry\",\n token: \"SEU_TOKEN_DE_INGESTAO\",\n data: {\n temperature: Math.round(Math.random() * 100),\n humidity: Math.round(Math.random() * 100),\n pressure: Math.round(Math.random() * 50),\n battery: Math.round(Math.random() * 100)\n },\n location: {\n lat: -23.5489,\n lng: -48.6388\n }\n});\nreturn msg;", "outputs": 1, "timeout": 0, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 350, "y": 120, "wires": [["exxer-mqtt-out"]] },
{ "id": "exxer-mqtt-out", "type": "mqtt out", "z": "exxer-demo-tab", "name": "publica no Edge", "topic": "telemetria", "qos": "1", "retain": "false", "respTopic": "", "contentType": "", "userProps": "", "correl": "", "expiry": "", "broker": "exxer-broker", "x": 580, "y": 120, "wires": [] },
{ "id": "exxer-broker", "type": "mqtt-broker", "name": "Exxer Edge", "broker": "IP-DO-EDGE", "port": "1883", "clientid": "", "autoConnect": true, "usetls": false, "protocolVersion": 4, "keepalive": 60, "cleansession": true }
]
O Edge assina todos os tópicos, então qualquer tópico funciona — o dispositivo é
identificado pelo campo token da mensagem, não pelo tópico.
| Porta | Uso |
|---|---|
9595 | Interface web e API HTTP. |
1883 | Broker MQTT embutido (padrão MQTT). |
Todos os dados e as credenciais ficam no volume edge_data
(/var/lib/exxer-edge). Não remova esse volume — é a memória do Edge e contém
a chave que decifra os tokens. Faça backup periódico:
docker exec exxer-edge npm run backup
O Edge funciona sem nenhuma configuração. Para casos específicos:
| Variável | Padrão | Descrição |
|---|---|---|
EDGE_DEFAULT_MODE | batch_v1 | Modo de sincronização (batch_v1 recomendado). |
EDGE_MQTT_BROKER_ENABLED | true | Defina false para usar um broker MQTT externo. |
EDGE_MQTT_URL | mqtt://127.0.0.1:1883 | Broker usado quando o embutido está desativado. |
EDGE_LOG_LEVEL | info | Nível de log. |
linux/amd64 e linux/arm64 (compatível com Raspberry Pi).latest e a versão fixa (ex.: 1.0.0).O broker MQTT aceita conexões anônimas para facilitar a integração, mas o Edge
descarta mensagens sem token de ingestão válido. Restrinja as portas 1883 e
9595 à rede local no firewall.
Exxer — https://exxer.com/
Content type
Image
Digest
sha256:c1a91901a…
Size
83 MB
Last updated
14 days ago
docker pull exxersoftware/exxer-cloud-edge