A small, open-source cross-platform tool to configure Mesavss USB temperature/humidity data loggers (and related Mesavss devices) that expose a HID interface under Vendor ID 0x246C.
This repository contains:
- GUI (Tkinter) for comfortable configuration (time, interval, thresholds, etc.)
- CLI for scripting and debugging (read/write config, device info, stats, alarms, tests, records)
The implementation is based on reverse-engineering the vendor’s WebHID application/protocol frames and is therefore best-effort: not every Mesavss device necessarily supports every command.
This software is provided as-is, without any warranty, and without any guarantee of functionality, merchantability, fitness for a particular purpose, or non-infringement. This software and the owner of this repository are in no way affiliated with Mesavss/Seven-MS.
It is shared without any liability or obligation from heise Medien / c’t (including editors, employees, contractors, or contributors). Use at your own risk.
You are responsible for verifying results and ensuring safe operation of your device(s). Some functions (e.g. reset/clear records) may irreversibly modify device state.
Large parts of this software and/or documentation were created with the help of AI.
Please review the code carefully before relying on it in production or safety-relevant contexts.
- Tested using Ubuntu 24.04.1
- Likely any MesaVSS/SevenMS Temperature logger that presents as USB HID device with Vendor ID
0x246C - Known working example: SLOG-30
Because different models may expose different HID interfaces (or different protocol variants), this tool:
- enumerates all HID interfaces under VID
0x246C - lets you select a device by index (CLI) or dropdown (GUI)
- tries commands best-effort and reports timeouts/checksum issues cleanly
Please let us know if you tested other operating systems and devices.
- Enumerate and select Mesavss HID devices (VID
0x246C) - Auto-read configuration on connect (if supported)
- Manual “Read config” button stays available
- Configure:
- start delay
- interval (seconds or minutes)
- high and low temperature alerts
- high and low humidity alerts
- Read/set device time (timezone-offset aware)
- Read:
- device info
- statistics
- alarm summary
- records (best effort)
- Diagnostic/test actions (may vary by device):
- self-check
- key test
- LED test
- write serial number (SN)
- List all Mesavss HID devices (VID
0x246C) - Read/write config, set interval only
- Read/set device time
- Read device info, stats, alarms
- Read record chunks (best effort)
- Reset/clear records (dangerous)
- Diagnostic/test commands
- Python 3.9+ (recommended)
hid(hidapi wrapper)- Tkinter (usually included with Python on Windows/macOS; on some Linux distros you must install it separately)
python3 -m pip install --upgrade pip
python3 -m pip install hidIf your platform has trouble with hid, try also installing hidapi:
python3 -m pip install hidapi
python3 -m pip install hidOn Linux, HID devices often appear as /dev/hidraw* and may require special permissions.
Create a file:
sudo nano /etc/udev/rules.d/99-mesavss-hid.rulesPut the following content inside:
# Mesavss HID devices (VID 0x246C): allow plugdev users to access hidraw nodes
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="246c", MODE="0660", GROUP="plugdev"
Notes:
- This grants access to users in the
plugdevgroup. - If your distro uses a different group convention, you can replace
plugdevwith e.g.inputorusers.
sudo usermod -aG plugdev "$USER"Log out and log back in (or reboot) so the group membership becomes active.
sudo udevadm control --reload-rules
sudo udevadm triggerPlug the device in and check which hidraw node belongs to it:
lsusb -d 246c:
ls -l /dev/hidraw*If the rule matches, the device node should have group plugdev and mode rw for that group.
List devices:
python3 mesavss_cli.py --listExample output:
[0] VID=246c PID=2022 iface=0 usage_page=0 usage=0 ... path=b'1-1.4:1.0'
[1] ...
Read configuration from device 0:
python3 mesavss_cli.py --device 0 --read-paramsSet device time to “now” (using local timezone offset):
python3 mesavss_cli.py --device 0 --set-time-now --tz localSet interval only (seconds), keeping other parameters unchanged:
python3 mesavss_cli.py --device 0 --set-interval-s 120Read device info / stats / alarms:
python3 mesavss_cli.py --device 0 --read-device-info
python3 mesavss_cli.py --device 0 --read-stat
python3 mesavss_cli.py --device 0 --read-alarmRead records (best effort):
python3 mesavss_cli.py --device 0 --read-records 100Show raw frames (debugging):
python3 mesavss_cli.py --device 0 --read-params --rawWarning: Reset clears records and may be irreversible:
python3 mesavss_cli.py --device 0 --resetStart the GUI:
python3 mesavss_gui.py- Select the device from the dropdown
- Click Connect
- Configuration is auto-read on connect if supported
- Use Read config to re-read manually
- Use Write full config to apply settings
Apparently Mesavss devices store timestamps as “device epoch seconds” plus an implicit offset.
This tool uses the --tz / GUI “TZ” field to interpret and write time consistently.
Examples:
local— uses your OS timezone offsetUTC— offset 0+01:00/-05:00— explicit offsets+120— offset in minutes
If your CSV/PDF report shows a wrong timezone label but the timestamps are correct, the device (or report generator) may be hard-coded to display a fixed label. In that case, setting time correctly still matters, but the displayed label might not change.
- Not all Mesavss devices support all commands.
- Some devices expose multiple HID interfaces; only one may respond to the logger protocol.
- Record reading is “best effort” and assumes 16-byte record frames. Some models may differ. Please prefer the PDF/CSV export.
- “Write SN”, tests, and reset behavior vary by device.
- This tool communicates directly with HID interfaces.
- Use the reset/clear function only if you understand the consequences.
- Always verify settings by re-reading configuration after writing.
