divoom-times-gate-server
v1.0.3
Published
Server daemon for controlling Divoom Times Gate via MQTT
Downloads
39
Maintainers
Readme
divoom-times-gate-server
Server daemon for controlling a Divoom Times Gate over MQTT.
Handles Divoom cloud authentication, device discovery, heartbeats, and token refresh automatically. Exposes a WebSocket interface that divoom-times-gate-client connects to.
How it works
divoom-times-gate-client (your app)
│ WebSocket
▼
divoom-times-gate-server (this package, runs on your server)
│ MQTT
▼
Mosquitto broker (runs on the same machine)
│ MQTT
▼
Divoom Times Gate (your device)
│ HTTPS
▼
Divoom cloud (auth, device discovery, IP registration)Prerequisites
- Node.js 14+
- Mosquitto running on the same machine
- A Divoom account
- Times Gate on the same local network as this server
Installing Mosquitto (Ubuntu/Debian)
sudo apt install -y mosquitto mosquitto-clients
echo -e "listener 1883 0.0.0.0\nallow_anonymous true" \
| sudo tee /etc/mosquitto/conf.d/divoom.conf
sudo systemctl restart mosquitto
sudo systemctl enable mosquittoInstallation
npm install divoom-times-gate-serverConfiguration
Copy .env.example to .env and fill in your values:
cp node_modules/divoom-times-gate-server/.env.example .env| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| DIVOOM_EMAIL | ✓ | | Divoom account email |
| DIVOOM_PASSWORD | ✓ | | Plaintext password (hashed internally with MD5) |
| APP_IP | ✓ | | LAN IP of this machine |
| APP_NETMASK | | 255.255.255.0 | Subnet mask |
| DIVOOM_DEVICE_ID | | auto | Skip device auto-discovery |
| CLOUD_URL | | https://appin.divoom-gz.com | Use https://appchina.divoom-gz.com for China accounts |
| MQTT_HOST | | 127.0.0.1 | Mosquitto host |
| MQTT_PORT | | 1883 | Mosquitto port |
| WS_PORT | | 3000 | WebSocket port clients connect to |
Usage
npm startOutput:
[auth] userId=404401333 deviceId=300292005
[mqtt] Broker connected
[device] Times Gate connected
[server] Ready — WebSocket listening on port 3000Programmatic usage
const DivoomServer = require('divoom-times-gate-server');
const server = new DivoomServer({
email: process.env.DIVOOM_EMAIL,
password: process.env.DIVOOM_PASSWORD,
appIp: process.env.APP_IP,
});
server.on('ready', ({ wsPort }) => console.log(`Listening on :${wsPort}`));
server.on('deviceConnected', () => console.log('Device online'));
server.on('heartbeat', msg => {});
server.on('error', e => console.error(e));
await server.start();
// Graceful shutdown
await server.stop();Related
divoom-times-gate-client— client library for your applications
License
MIT
