UNO Q – Modulino sensors dashboard using App Lab, Bridge and WebUI

Hello,

I’m sharing a small UNO Q project that might be useful to others exploring Arduino App Lab.

The goal is intentionally simple:
read Modulino sensors on the STM32 side, forward the data to Python using Bridge, and display everything in a lightweight WebUI dashboard.

The project focuses on:

  • using the official Arduino App Lab workflow (single Run action),

  • a clean STM32 → Bridge → Python → WebUI path,

  • Modulino sensors (Thermo, Light, Distance),

  • a read-only web interface refreshed every second,

  • no external Python frameworks (no Flask, no FastAPI).

One motivation was to document some practical details that are not always obvious when starting with UNO Q, such as App Lab file structure, WebUI assets, and current Modulino library usage.

Repository:
https://github.com/philippe86220/uno-q-sensors-webui

Feedback is welcome, especially from other UNO Q users.

I have downloaded your zip file from the link, but I cannot import it in my app. This is the error message:

This App is invalid

This app is broken or misconfigured.

Error:bad request: invalid archive structure: missing or misplaced app.yaml. Supported paths: archive.zip/app.yaml or archive.zip/<root_dir>/app.yaml

I can import the zip file of this link @jens-bongartz without issue.

Thanks for trying the project.

This repository is not an App Lab–importable ZIP.

It is intended to be used by creating a new project in Arduino App Lab and then copying the files manually.

The expected workflow is:

  1. Create a new App Lab project

  2. Create an assets/ folder and an index.html file

  3. Copy the content of the repository files into:

    • sketch/sketch.ino

    • python/main.py

    • assets/index.html

  4. Add the WebUI – HTML brick

  5. Install the Arduino_Modulino library

  6. Click Run

App Lab ZIP import requires an app.yaml manifest, which this repository does not provide by design.

Then how does the zip file of the referred link of #2 work?

Anyway, I am going to follow your steps of #3 and hopefully it will work.

Good question.

The ZIP in link #2 is an Arduino App Lab import package.

It contains an app.yaml manifest and follows the specific archive structure required by App Lab for direct ZIP import.

My repository is not packaged as an App Lab import ZIP by design.

It is a source-based example, meant to be used by creating a new App Lab project and copying the files into the appropriate folders.

Both approaches are valid, they just target different use cases:

  • ZIP import → fully packaged App Lab app

  • Source repository → transparent, editable reference project

Following step #3 (manual copy into App Lab) should work without any issue.

I have carried out all the steps of #3 except 3. (copying index.html under assets folder).

I have not found any index.html file in your given zip file after extraction.

And yet I have run the app and got the following error:

/home/arduino/.arduino15/packages/arduino/hardware/zephyr/0.53.0/libraries/Arduino_RPClite/src/error.h:20:10: fatal error: MsgPack.h: No such file or directory
20 | #include "MsgPack.h"
|          ^~~~~~~~~~~
compilation terminated.
exit status 1

Thanks for the detailed feedback.

This repository is not an App Lab–importable ZIP.

The files are meant to be copied into a manually created Arduino App Lab project.

Regarding index.html:

  • You need to create an assets/ folder in App Lab

  • then create assets/index.html

  • and copy the content of the repository file assets/index.html into it
    The file is not used directly from the extracted ZIP.

Regarding the error:

fatal error: MsgPack.h: No such file or directory

This indicates that the Sketch Libraries dependencies were not installed correctly.

Please make sure to:

  1. Install Arduino_Modulino from Sketch Libraries

  2. Let App Lab resolve and install all dependent libraries automatically

If the error persists, it usually means the App Lab environment is incomplete or inconsistent (I’ve observed this after some updates).

Reinstalling the required Sketch Libraries in a clean App Lab setup resolves the issue.

PS: Please copy the files directly from the repository using “Copy raw file”, and paste their contents into the corresponding files in Arduino App Lab (sketch.ino, python/main.py, assets/index.html).

The GitHub ZIP archive is not meant to be imported or used directly.

You seem to be under the impression that you would be required to host the ZIP file yourself. You are absolutely right that this would be a bad approach for the reasons you stated. However, the conclusion is based on an erroneous understanding of the proposal

An importable App can also be transparent and editable. GitHub automatically generates ZIP archives for your repository, for every ref (e.g., for the tip of the main branch, for each release/tag). So you only need to structure your repository as a valid App (not hosted in a ZIP file, but in a valid non-archived App structure). The user can then install the App as follows:

  1. Click the following link to open the repository homepage in your web browser:
    https://github.com/philippe86220/uno-q-sensors-webui
  2. Click the "Code ▾" button you see on that page.
  3. Select Download ZIP from the menu.
    A download of the ZIP file of the App will start.
  4. Wait for the download to finish.
  5. Start Arduino App Lab and connect it to your UNO Q board (if using the board in PC hosted mode).
  6. Select "My Apps" from the bar on the left hand side of the Arduino App Lab window.
    The "My Apps" view will open.
  7. Click the "Create new app+" button a the top right hand corner of the Arduino App Lab window.
    A menu will open.
  8. Select "Import App" from the menu.
    The "Import an App" dialog will open.
  9. Either drag and drop the ZIP file you downloaded at the previous step, or click the "Import from computer" button and select the downloaded ZIP file.
    A notification will appear:

    UNO Q – Sensors WebUI Dashboard correctly imported

It seems to me more convenient and less prone to human error than copy and pasting the content of each file. All that is required on your part is to add two additional simple files to the repository (app.yaml and sketch/sketch.yaml).

Hi @ptillisch .

I tried to add the yaml files but unfortunately the zip is not compliant. I'll get back to you tomorrow

Best regards

It imported just fine for me. I downloaded the ZIP file from the revision before you deleted the two files:

https://github.com/philippe86220/uno-q-sensors-webui/tree/a140addb05a7c7af3050c56b2dc6158a3729638d

@ptillisch
I downloaded the ZIP file of #10 and imported it into my app. It compiles successfully and runs well, even though I do not have the Modulino sensor for connection.

Hello @ptillisch, @golammostafa,

Thank you both for testing and for your feedback.

On my side, I still get export/import error messages in the App Lab. I’ll try to better understand where this difference comes from and I’ll report back as soon as I have a clear explanation :

@golammostafa: just to confirm, you don’t have the Modulino sensor libraries installed, right?

Thanks again for taking the time to check this.

The Arduino App Lab application is primarily a GUI. The underlying functionality is mostly implemented in a helper tool named Arduino App CLI. It is Arduino App CLI that actually performs the import and export. The import and export capabilities were added in the most recent version of Arduino App CLI (0.8.2). So this error might occur if you have an older version of Arduino App CLI installed on the UNO Q board's Linux machine.

In order to test this hypothesis, please do this:

  1. If you are using the board in PC hosted mode, click the >_ ("Connect to the board's shell") icon near the bottom left hand corner of the Arduino App Lab window. Otherwise, open the terminal via the desktop menu.
    A terminal window will open.
  2. Type the following command in the terminal window:
    arduino-app-cli version
    
  3. Press the Enter key.

You should now see something like this printed in the terminal:

Arduino App CLI version 0.8.2
daemon version: 0.8.2

If you see a version older than 0.8.2 there, then this will prove my hypothesis to be correct.

After manually flashing the Linux core using
arduino-flasher-cli flash latest,
the board boots with a clean system and then reports that some internal components (App Lab, Zephyr, CLI) can be updated.

At this point, two different behaviors are observed:

• If I install the proposed updates, App Lab project import works, but Modulino sensor data is no longer usable.
• If I skip the updates (“Next time”), Modulino sensors work correctly, but App Lab project import is not available.

This suggests a version mismatch between the Linux image flashed by the CLI and the internally updated components.

with next time all libraries with add Arduino_modulino manually :

with install Updates :

missing libraries :

  • Arduino_LPS22HB

  • Arduino_LSM6DSOX

  • Arduino_LTR381RGB

  • STM32duino VL53L4CD

  • STM32duino VL53L4ED

  • Arduino_HS300x

    → can’t find : ArduinoGraphics 1.1.4→ Other libraries can be installed as mentioned above.

    → the application don’t work :

    Best regards

I have installed the modular library from within App Lab. The zip file linked by @ptillisch compiles and runs without any issue.

What is the problem ?

Thank you

I don't have the sensor physically. It is not yet available in my country.

Ok

Thank you very much.

There is a problem with modulino libraries​:wink:

Best regards

Best regards

Now, are you ready to offer a zip file of your app that can be imported in a user app of App Lab?