Digital multimeter control library with support for voltage, current, resistance, continuity, and temperature measurements using SCPI protocol over Ethernet.
- Model: Multicomp-Pro MP730027
- Type: Digital Multimeter
- Interface: Ethernet (TCP Socket)
- Default Port: 3000
- Protocol: SCPI (Standard Commands for Programmable Instruments)
The MP730027 driver is part of the multimeter_device package:
from multimeter_device import MP730027from multimeter_device import MP730027
# Connect to multimeter
mm = MP730027("192.168.1.99", port=3000)
# Measure DC voltage
voltage = mm.measure_dc_voltage()
print(f"DC Voltage: {voltage}V")
# Measure resistance
resistance = mm.measure_resistance()
print(f"Resistance: {resistance}Ω")
# Generic measurement
result = mm.measure("ac_current")
print(f"AC Current: {result['value']}A")mm = MP730027(ip, port=3000, timeout=2)Parameters:
ip(str): Device IP addressport(int): TCP port (default: 3000)timeout(float): Socket timeout in seconds (default: 2)
Measure DC voltage (V).
voltage = mm.measure_dc_voltage()
# Returns: "5.00" (as string)Measure AC voltage (V).
voltage = mm.measure_ac_voltage()
# Returns: "230.5" (as string)Measure DC current (A).
current = mm.measure_dc_current()
# Returns: "0.50" (as string)Measure AC current (A).
current = mm.measure_ac_current()
# Returns: "1.23" (as string)Measure resistance (Ω).
resistance = mm.measure_resistance()
# Returns: "1500" (as string, in ohms)Test continuity (beeps if resistance < 50Ω).
result = mm.measure_continuity()
# Returns: "0" (beeps) or "1" (open circuit)Measure temperature (°C). Requires probe sensor connected.
temp = mm.measure_temperature()
# Returns: "25.3" (as string, in Celsius)Unified interface for all measurement types.
result = mm.measure("dc_voltage")
# Returns: {"mode": "dc_voltage", "value": "5.00"}Supported Modes:
"dc_voltage"- DC voltage measurement"ac_voltage"- AC voltage measurement"dc_current"- DC current measurement"ac_current"- AC current measurement"resistance"- Resistance measurement"continuity"- Continuity test"temperature"- Temperature measurement
Returns:
{
"mode": str, # The measurement mode used
"value": str # The measured value
}For advanced usage or custom SCPI commands:
Send command to device (no response expected).
mm.write("CONF:VOLT:DC")Send command and retrieve response.
response = mm.query("MEAS:VOLT:DC?")Flask-based HTTP interface for remote access.
cd multimeter_device
python -m flask --app flask_app run --port 5001Server runs on http://localhost:5001
Measure with specified mode.
Request:
{
"mode": "dc_voltage"
}Response:
{
"mode": "dc_voltage",
"value": "5.00"
}Quick measurement with mode in URL.
Request:
GET /measure/dc_voltage
GET /measure/resistance
GET /measure/ac_current
Response:
{
"mode": "dc_voltage",
"value": "5.00"
}Valid Modes:
dc_voltage,ac_voltagedc_current,ac_currentresistance,continuity,temperature
measurements = {
"dc_voltage": mm.measure_dc_voltage(),
"dc_current": mm.measure_dc_current(),
"resistance": mm.measure_resistance(),
}
for name, value in measurements.items():
print(f"{name}: {value}")import time
for i in range(10):
voltage = mm.measure_dc_voltage()
print(f"Reading {i+1}: {voltage}V")
time.sleep(1)voltage_str = mm.measure_dc_voltage()
voltage_float = float(voltage_str)
print(f"Type: {type(voltage_float)}, Value: {voltage_float}")try:
voltage = mm.measure_dc_voltage()
print("Connected!")
except:
print("Connection failed")See demo.py for example of using multimeter to verify PSU output:
from psu_device import MP711001
from multimeter_device import MP730027
psu = MP711001("192.168.1.100")
mm = MP730027("192.168.1.99", port=3000)
# Set PSU and verify with multimeter
psu.set_voltage(1, 5.0)
psu.output_on(1)
import time
time.sleep(2) # Wait for stabilization
measured = mm.measure_dc_voltage()
print(f"Set: 5.0V, Measured: {measured}V")The driver automatically reconnects on socket errors. No explicit error handling required in most cases.
For custom error handling:
try:
voltage = mm.measure_dc_voltage()
except ValueError as e:
print(f"Invalid mode: {e}")
except Exception as e:
print(f"Measurement error: {e}")
# Driver will attempt reconnect on next command- Timing: 0.15-0.2s delay between commands for stability
- Measurement: Single-shot, blocking. No polling loops.
- Reconnection: ~0.5s delay on error recovery
- Response Format: All measurements return strings (convert with
float()as needed)
Typical multimeter specifications (refer to device manual for exact values):
- Voltage Range: 0-1000V AC/DC
- Current Range: 0-10A AC/DC
- Resistance Range: 0-100MΩ
- Display Resolution: 3-4 digits typical
- Accuracy: ±0.5-1% typical
- Check device IP address:
ping 192.168.1.99 - Verify device is powered on
- Confirm port 3000 is not blocked by firewall
- Device may be slow; try increasing
timeoutparameter - Check network latency
- Ensure probe connections are secure
- Check mode spelling (use constants or list from docstring)
- Verify mode is supported by device
- Check probe connections
- Verify measurement range for device
- Try a known voltage source to verify device operation
- Confirm temperature probe is connected
- Some devices require probe to be recognized before use
- Check device manual for probe specifications
- Main documentation: ../README.md
- Example usage: ../demo.py
- PSU device: ../psu_device/README.md