I recently posted a arduino-app-lab project to github that when installed will provide a python script to measure the latency of the Arduino router / bridge that is in place.
https://github.com/majones-services/arduino-uno-q-MAX31855
There is likely a more precise way to evaluate hardware latency but in the end, we're all interested in how long it takes for a python call on the debian instance to get data back from the MCU. Here is the data that I'm seeing:
Running RAW Latency Test
Performing 10 test calls...
Raw Latency Results
Min Latency: 6.72 ms
Max Latency: 7.84 ms
Avg Latency: 7.04 ms
Running Temperature Latency Test
Performing 10 test calls to get_temp1
Execution 1: Latency: 8.87 ms, Temp: 22.00 °C
Execution 2: Latency: 7.78 ms, Temp: 22.00 °C
Execution 3: Latency: 7.91 ms, Temp: 22.00 °C
Execution 4: Latency: 7.31 ms, Temp: 22.00 °C
Execution 5: Latency: 8.21 ms, Temp: 22.00 °C
Execution 6: Latency: 7.76 ms, Temp: 22.00 °C
Execution 7: Latency: 8.10 ms, Temp: 22.00 °C
Execution 8: Latency: 7.54 ms, Temp: 22.00 °C
Execution 9: Latency: 7.65 ms, Temp: 22.00 °C
Execution 10: Latency: 8.20 ms, Temp: 22.00 °C
Temp Latency Results
Min Latency: 7.31 ms
Max Latency: 8.87 ms
Avg Latency: 7.93 ms
App is starting
2026-01-07 16:58:10.387 INFO - [MainThread] App: App started
Requesting temperatures
THERMO1: 22.00 °C
THERMO2: 22.75 °C
THERMO3: 22.50 °C
Requesting temperatures
THERMO1: 22.00 °C
THERMO2: 22.75 °C
THERMO3: 22.50 °C
Summary:
For design purposes, python should not attempt calls to the router/bridge faster than every 7.84 ms. In my case, I also included a thermocouple in the testing to determine how fast can I call a function on the MCU that is "provided" to the bridge. I concluded that I could collect data at max: 122 hz. However, MAX31855 updates it's register every 100 ms or 10hz so, I can poll the device at 122 hz but the returned will be the last stored value until it's updated (10Hz).