Asynchronous python ethernet interface and command-line tool for Sartorius and Minebea Intec scales.
This driver should work for any ethernet scale that uses the standardized communications protocol of the Scale Manufacturers Association. However, it has only been tested on the following models:
- Minebea Intec Signum
- Sartorius Entris
- Sartorius Miras
pip install sartorius
For Minebea scale setup, navigate to SETUP
- UNICOM
- DATAPROT
- ETHER
.
- Make sure
SRC.IP
is set to a valid LAN address - Ensure
MODE
-SBI-SRV
-6.1.1
is set (manual says this should be default but it is not) - All other defaults are good
This driver is intended to be stable to disconnects, so operators should be able to unplug and reposition the device without affecting any long polling.
$ sartorius scale-ip.local
{
"mass": 0.0,
"units": "kg",
"stable": true,
"info": {
"model": "SIWADCP-1-",
"serial": "37454321",
"software": "00-37-09"
}
}
If using a port other than the default of 49155 e.g. for a MODBUS gateway, use --port
or a colon between the IP address and port.
sartorius 192.168.1.1 --port 10000
or sartorius 192.168.1.1:12345
You can tare and zero with --zero
and remove the info field with --no-info
.
See sartorius --help
for more.
To use in shell scripts, parse the json output with something like
jq. For example,
sartorius scale-ip.local | jq .mass
will return the mass.
If you'd like to link this to more complex behavior, consider using a Python script. This driver exclusively supports asynchronous Python ≥3.7.
import asyncio
import sartorius
async def get():
async with sartorius.Scale('scale-ip.local') as scale:
await scale.zero() # Zero and tare the scale
print(await scale.get()) # Get mass, units, stability
print(await scale.get_info()) # Get model, serial, software version
asyncio.run(get())