Skip to main content

Weigh scale Modbus Ethernet client user interface

Project description

Table of Contents

[[TOC]]

1. Introduction

Modbus Scale UI builds on the capabilities of Modbus Scale Client, and permits users of the later to verify that their code is working as expected.

Modbus Scale UI takes the IPv4 (Internet Protocol version 4) addresses of two scale servers as command-line arguments. If only one physical scale is available, then a fake (but legal) IPv4 scale server address may be supplied as the second argument.

2. Dependencies

Modbus Scale UI is part of the UC-02-2024 Coffee Cart Modifications software suite. Scale software has been split along hardware component lines, with the software for each hardware component residing in a separate GitLab repository.

  1. modbus_scale_broker. The Arduino sketch that must be downloaded to the Uno.

  2. modbus_scale_server. The Modbus Ethernet server daemon that runs on the Raspberry Pi.

  3. modbus_scale_client. The Modbus Ethernet client that queries the server.

  4. modbus_scale_ui. A Textual UI (User Interface) that displays the output of the Mazzer and Rancilio scales, and which can be used to tare (zero) either scale.

Because these repositories are designed to be deployed together as part of a comprehensive weigh scale solution, both hardware and software dependencies exist between them. These dependencies must be borne in mind when deciding whether or not to employ Modbus Scale UI in isolation.

Python packages are also available for the following software components.

These packages may be installed using pip. Note however that the caveat regarding hardware and software dependencies still applies.

3. Installation

Two installation methods are available, with the most appropriate depending on whether the intent is to use the code base as-is, or to modify it.

3.1. PyPI Package

Those who wish to use the code base as-is should install the Python package via pip.

Whilst it is not strictly necessary to create a venv (virtual environment) in order to deploy the package, doing so provides a Python environment that is completely isolated from the system-wide Python install. The practical upshot of this is that the venv can be torn-down and recreated multiple times without issue.

$ python -m venv ~/venv

Next, activate the venv and install the package. Note that once activated, the name of the venv will be prepended to the terminal prompt.

$ source ~/venv/bin/activate
(venv) $ python -m pip install modbus-scale-ui

3.2. GitLab Repository

Those who wish to modify the code base should clone the GitLab repository instead. Again, whilst not strictly necessary to create a venv in order to modify the code base, doing so is still recommended.

$ python -m venv ~/venv
$ source ~/venv/bin/activate
(venv) $ cd ~/venv
(venv) $ git clone https://gitlab.com/uc_mech_wing/robotics_control_lab/uc-02-2024/modbus_scale_ui.git

Irrespective of whether or not a venv has been created, the requirements.txt file may be used to ensure that the correct module dependencies are installed.

(venv) $ cd ~/venv/modbus_scale_ui
(venv) $ python -m pip install -r ./requirements.txt

4. Verification

In order to verify that Modbus Scale UI has been installed correctly, it is advisable to create a minimal working example.

$ touch ~/venv/example.py

If installed from the Python package, add the following.

from modbus_scale_ui import modbus_scale_ui

app = modbus_scale_ui.ScaleApp()
app.run()

If cloned from the GitLab repository, replace the import statement with the following.

from modbus_scale_ui.src.modbus_scale_ui import modbus_scale_ui

The example may now be run as follows.

(venv) $ python ~/venv/example.py "<host_1>" "<host_2>"

Be sure to replace <host_1> and <host_2> with the IPv4 addresses of two scale servers. If only one physical scale exists, then a fake (but legal) IPv4 scale server address may be supplied as the second argument.

5. Tips & Tricks

Certain applications may benefit from having the Modbus Scale UI displayed on a monitor directly connected to the Raspberry Pi hosting the Modbus Scale Server. In such situations, it would also be advantageous if the UI were to be displayed whenever the Raspberry Pi booted without requiring any user intervention.

Such a system configuration may be effected by following the steps below.

  1. Install Raspberry Pi OS Lite (64-bit) onto the Raspberry Pi 4 Model B that will be used as the Modbus Ethernet server daemon.

  2. Install modbus_scale_server per the repository README, up to and including the creation of a systemd service using the example server code.

  3. Install modbus_scale_ui per the instructions above, changing the name of the UI example to example_ui.py or similar to avoid conflict with the server example. Add the following to the top of the file.

     #!/home/<user>/venv/bin/python
    

    Be sure to replace <user> with the name of a suitable Raspberry Pi user.

  4. Make the UI example executable.

     $ chmod a+x ~/venv/example_ui.py
    
  5. Edit ~/.bashrc, adding the following to the end of the file.

     /home/<user>/venv/example_ui.py "<host_1>" "<host_2>"
    
  6. Due to the fact that Raspberry Pi OS Lite only supports eight colours, it is recommended to replace the default modbus_scale_ui.tcss TCSS (Texual Cascading Style Sheet) with one that makes better use of the limited colour palette. See modbus_scale_extras for an example.

  7. Use raspi-config to enable auto login.

  8. Reboot.

6. Further Information

For further information about Coffee Cart Modifications please refer to the project UC-02-2024 group README.

7. Documentation

Code has been documented using Doxygen.

8. License

Modbus Scale UI is released under the GNU General Public License.

9. Authors

Code by Rodney Elliott, rodney.elliott@canterbury.ac.nz

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

modbus_scale_ui-1.0.5.tar.gz (46.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

modbus_scale_ui-1.0.5-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file modbus_scale_ui-1.0.5.tar.gz.

File metadata

  • Download URL: modbus_scale_ui-1.0.5.tar.gz
  • Upload date:
  • Size: 46.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for modbus_scale_ui-1.0.5.tar.gz
Algorithm Hash digest
SHA256 807c87cd2b96994aba67f880bdc3e419188eac1caac7be5e77f4218fc95b6e0b
MD5 5326689b7382b8bf9f227a86bd5e6049
BLAKE2b-256 90c5afd22eeddd347e883b29f609ace69c806034a91aa5508e8391f7ae52b6b4

See more details on using hashes here.

File details

Details for the file modbus_scale_ui-1.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for modbus_scale_ui-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 c65e6c8067c48d81c5a27def5303b655d767889fcb9145aec54535e87f554223
MD5 c2651297f6e06e3db298f76ad5d76af9
BLAKE2b-256 fdd11fa3ea4b2b68b7e98871fb2ea18cc1bda55630bf99037e8e018c56be4894

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page