eWeLink to MQTT Bridge
2.0K
From: https://github.com/codejive/ewelink-mqtt-bridge
ewelink-mqtt-bridge connects to the eWeLink cloud websocket and republishes device updates to any MQTT broker.
This is useful when your eWeLink devices can't connect directly to your MQTT broker. For example because your broker is on a public server and uses SSL, which the eWeLink devices don't support.
Default topic layout:
ewelink/<deviceId>/state/rawewelink/<deviceId>/state/<key>ewelink/bridge/statusExamples:
ewelink/1000abcdef/state/raw -> {"temperature":22.5,"humidity":48}ewelink/1000abcdef/state/temperature -> 22.5ewelink/1000abcdef/state/humidity -> 48ewelink/bridge/status -> online or offlineTopic prefix is configurable via TOPIC_PREFIX.
The bridge is configured only through environment variables.
| Variable | Required | Default | Description |
|---|---|---|---|
EWELINK_EMAIL | Yes | - | eWeLink account email used for cloud login. |
EWELINK_PASSWORD | Yes | - | eWeLink account password used for cloud login. |
EWELINK_REGION | No | us | eWeLink region for your account. Valid values: us, eu, cn, as. |
MQTT_URL | No | mqtt://127.0.0.1:1883 | MQTT broker URL. Examples: mqtt://broker:1883, mqtts://broker:8883. |
MQTT_USER | No | empty | Username for MQTT authentication. |
MQTT_PASS | No | empty | Password for MQTT authentication. |
TOPIC_PREFIX | No | ewelink | Prefix used for all published topics. |
PUBLISH_RAW_STATE | No | true | If true, publishes full update JSON to <prefix>/<deviceId>/state/raw. |
MQTT_RETAIN | No | true | If true, publishes state messages with retain flag enabled. |
MQTT_QOS | No | 1 | MQTT QoS level for published messages. Allowed: 0, 1, 2. |
EXIT_ON_WEBSOCKET_CLOSE | No | true | If true, process exits when eWeLink websocket closes (recommended in containers with restart policy). |
Boolean variables (PUBLISH_RAW_STATE, MQTT_RETAIN, EXIT_ON_WEBSOCKET_CLOSE) accept: true/false, 1/0, yes/no, on/off.
npm install
EWELINK_EMAIL="[email protected]" \
EWELINK_PASSWORD="your-password" \
EWELINK_REGION="eu" \
MQTT_URL="mqtt://127.0.0.1:1883" \
node bridge.js
Build image:
docker build -t ewelink-mqtt-bridge:local .
Run container:
docker run -d \
--name ewelink-mqtt-bridge \
--restart unless-stopped \
-e EWELINK_EMAIL="[email protected]" \
-e EWELINK_PASSWORD="your-password" \
-e EWELINK_REGION="eu" \
-e MQTT_URL="mqtt://broker:1883" \
-e MQTT_USER="mqtt-user" \
-e MQTT_PASS="mqtt-pass" \
ewelink-mqtt-bridge:local
Use host networking only if your platform/setup requires it.
.env.example to .env and fill in your values.docker-compose.yml to your published image (or build locally and point to that tag).docker compose up -d
docker login
docker tag ewelink-mqtt-bridge:local <namespace>/ewelink-mqtt-bridge:latest
docker push <namespace>/ewelink-mqtt-bridge:latest
<namespace> can be a personal Docker Hub username or an organization name.
Workflow: .github/workflows/docker-publish.yml
Required repository secrets:
DOCKERHUB_USERNAME: Docker account used for login.DOCKERHUB_TOKEN: Docker access token.DOCKERHUB_NAMESPACE: Docker Hub namespace to publish to (user or organization).Publish behavior:
latest.v*.*.* publishes version tags.MQTT_RETAIN=false.mqtts:// URL and ensure trust/cert settings are provided by your runtime environment.This project is licensed under the Apache License 2.0. See LICENSE.
Content type
Image
Digest
sha256:d5c8a7f7f…
Size
58.4 MB
Last updated
5 months ago
docker pull codejive/ewelink-mqtt-bridge