Troubleshooting¶
Common issues, symptoms, and resolutions. Start with the symptom you're seeing and follow the fix.
Serial port permission denied
Symptom: PermissionError: [Errno 13] Permission denied: '/dev/ttyUSB0'
Fix:
Log out and back in for the group change to take effect. Verify with:
No sensor data appearing
Symptom: MQTT topics are empty or only mapping/state publishes.
Checklist:
-
Check the raw channel — subscribe to
jeelink2mqtt/raw/state. If frames appear here but not on named topics, the issue is in sensor mapping — see the auto-adopt section below. -
Verify serial port — confirm the device exists and matches config:
-
Check baud rate — must be
57600(the JeeLink default). -
Check sensor batteries — LaCrosse sensors don't transmit when batteries are dead.
-
Try dry-run mode —
jeelink2mqtt --dry-runconfirms the rest of the pipeline works.
Sensor not auto-adopting
Symptom: New sensor ID appears in raw/state but no named sensor
picks it up.
Cause: Multiple configured sensors are stale. Auto-adopt requires exactly one stale sensor to avoid ambiguous assignment.
Fix:
-
List unknown IDs:
-
Subscribe to see the response:
-
Manually assign each sensor:
See User Guide → Multi-Battery Failure for the full workflow.
Mapping conflict error
Symptom: Assign command returns {"error": "Sensor ID 42 is already mapped to 'outdoor'..."}
Cause: The sensor ID is already assigned to a different sensor name.
Fix: Reset the conflicting mapping first, then reassign:
# Remove the existing mapping
mosquitto_pub -h localhost -t 'jeelink2mqtt/mapping/set' \
-m '{"command": "reset", "sensor_name": "outdoor"}'
# Now assign to the intended sensor
mosquitto_pub -h localhost -t 'jeelink2mqtt/mapping/set' \
-m '{"command": "assign", "sensor_name": "office", "sensor_id": 42}'
Sensor shows offline (stale)
Symptom: jeelink2mqtt/{sensor}/availability shows "offline".
Cause: No reading received within the staleness timeout (default: 600 seconds / 10 minutes).
Checklist:
- Batteries — check and replace if
low_batterywastruebefore the sensor went offline. - Distance — the sensor may be too far from the JeeLink receiver. LaCrosse 868 MHz has ~100 m open-air range, less through walls.
- Interference — other 868 MHz devices can cause collisions.
-
Staleness timeout — if the sensor transmits infrequently, increase the per-sensor
staleness_timeout:
MQTT connection issues
Symptom: Application starts but no messages appear on the broker.
Checklist:
-
Broker running?
-
Host and port correct?
-
Authentication — if the broker requires credentials:
-
Network — verify connectivity from the jeelink2mqtt host:
Readings seem wrong
Symptom: Temperature or humidity values are consistently off.
Fix: Use calibration offsets. Compare the raw reading (from
jeelink2mqtt/raw/state) against a reference instrument and set
offsets accordingly:
Also check:
- Median filter window — a very large window (e.g. 21) smooths aggressively and can delay real changes. Default of 7 is a good balance.
- Sensor placement — avoid direct sunlight, heat sources, or enclosures that trap heat.
Data not persisting across restarts
Symptom: Sensor mappings are lost after restarting jeelink2mqtt.
Checklist:
-
Directory exists and is writable:
-
Docker volume mounted:
-
File present after running:
If the file is empty or missing, check that the application has write
permissions to the data/ directory.
Still Stuck?¶
- Run with debug logging:
jeelink2mqtt --log-level DEBUG - Check the raw channel:
mosquitto_sub -h localhost -t 'jeelink2mqtt/raw/state' -v - Check mapping state:
mosquitto_sub -h localhost -t 'jeelink2mqtt/mapping/state' -v - Open an issue with the debug log output.