From b86bff17082e622efcf353fa374a23ac44b68bf7 Mon Sep 17 00:00:00 2001 From: dido18 Date: Thu, 4 Dec 2025 15:20:03 +0100 Subject: [PATCH 1/5] add hidden variable --- .../orchestrator/bricksindex/bricks_index.go | 1 + .../bricksindex/bricks_index_test.go | 9 + .../bricksindex/testdata/bricks-list.yaml | 303 ++++++++++-------- 3 files changed, 174 insertions(+), 139 deletions(-) diff --git a/internal/orchestrator/bricksindex/bricks_index.go b/internal/orchestrator/bricksindex/bricks_index.go index 9e52f1c6..cbe1567e 100644 --- a/internal/orchestrator/bricksindex/bricks_index.go +++ b/internal/orchestrator/bricksindex/bricks_index.go @@ -42,6 +42,7 @@ type BrickVariable struct { Name string `yaml:"name"` DefaultValue string `yaml:"default_value"` Description string `yaml:"description,omitempty"` + Hidden bool `yaml:"is_hidden,omitempty"` } func (v BrickVariable) IsRequired() bool { diff --git a/internal/orchestrator/bricksindex/bricks_index_test.go b/internal/orchestrator/bricksindex/bricks_index_test.go index b8d28c07..f65bb53e 100644 --- a/internal/orchestrator/bricksindex/bricks_index_test.go +++ b/internal/orchestrator/bricksindex/bricks_index_test.go @@ -58,6 +58,15 @@ func TestGenerateBricksIndexFromFile(t *testing.T) { bNoRequireModel, found := index.FindBrickByID("arduino:missing-model-require") require.True(t, found) require.False(t, bNoRequireModel.RequireModel) + + withHidden, found := index.FindBrickByID("arduino:with-hidden-variables") + require.True(t, found) + require.Equal(t, "HIDDEN_VAR", withHidden.Variables[0].Name) + require.True(t, withHidden.Variables[0].Hidden) + require.Equal(t, "VISIBLE_VARIABLE", withHidden.Variables[1].Name) + require.False(t, withHidden.Variables[1].Hidden) + require.Equal(t, "VISIBLE_VARIABLE_IF_MISSING", withHidden.Variables[2].Name) + require.False(t, withHidden.Variables[2].Hidden) } func TestBricksIndexYAMLFormats(t *testing.T) { diff --git a/internal/orchestrator/bricksindex/testdata/bricks-list.yaml b/internal/orchestrator/bricksindex/testdata/bricks-list.yaml index c494df17..c7267093 100644 --- a/internal/orchestrator/bricksindex/testdata/bricks-list.yaml +++ b/internal/orchestrator/bricksindex/testdata/bricks-list.yaml @@ -1,142 +1,167 @@ bricks: -- id: arduino:image_classification - name: Image Classification - description: "Brick for image classification using a pre-trained model. It processes\ - \ images and returns the predicted class label and confidence score.\nBrick is\ - \ designed to work with pre-trained models provided by framework or with custom\ - \ image classification models trained on Edge Impulse platform. \n" - require_container: true - require_model: true - ports: [] - model_name: mobilenet-image-classification - variables: - - name: CUSTOM_MODEL_PATH - default_value: /opt/models/ei/ - description: path to the custom model directory - - name: EI_CLASSIFICATION_MODEL - default_value: /models/ootb/ei/mobilenet-v2-224px.eim - description: path to the model file -- id: arduino:camera_scanner - name: Camera Scanner - description: Scans a camera for barcodes and QR codes - require_container: false - require_model: false - ports: [] -- id: arduino:streamlit_ui - name: Streamlit UI - description: A simplified user interface based on Streamlit and Python. - require_container: false - require_model: false - ports: - - 7000 -- id: arduino:keyword_spotter - name: Keyword Spotter - description: 'Brick for keyword spotting using a pre-trained model. It processes - audio input to detect specific keywords or phrases. + - id: arduino:image_classification + name: Image Classification + description: + "Brick for image classification using a pre-trained model. It processes\ + \ images and returns the predicted class label and confidence score.\nBrick is\ + \ designed to work with pre-trained models provided by framework or with custom\ + \ image classification models trained on Edge Impulse platform. \n" + require_container: true + require_model: true + ports: [] + model_name: mobilenet-image-classification + variables: + - name: CUSTOM_MODEL_PATH + default_value: /opt/models/ei/ + description: path to the custom model directory + - name: EI_CLASSIFICATION_MODEL + default_value: /models/ootb/ei/mobilenet-v2-224px.eim + description: path to the model file + - id: arduino:camera_scanner + name: Camera Scanner + description: Scans a camera for barcodes and QR codes + require_container: false + require_model: false + ports: [] + - id: arduino:streamlit_ui + name: Streamlit UI + description: A simplified user interface based on Streamlit and Python. + require_container: false + require_model: false + ports: + - 7000 + - id: arduino:keyword_spotter + name: Keyword Spotter + description: + "Brick for keyword spotting using a pre-trained model. It processes + audio input to detect specific keywords or phrases. - Brick is designed to work with pre-trained models provided by framework or with - custom audio classification models trained on Edge Impulse platform. + Brick is designed to work with pre-trained models provided by framework or with + custom audio classification models trained on Edge Impulse platform. - ' - require_container: true - require_model: true - ports: [] - model_name: keyword-spotting-hello-world - variables: - - name: CUSTOM_MODEL_PATH - default_value: /opt/models/ei/ - description: path to the custom model directory - - name: EI_KEYWORK_SPOTTING_MODEL - default_value: /models/ootb/ei/keyword-spotting-hello-world.eim - description: path to the model file -- id: arduino:mqtt - name: MQTT Connector - description: MQTT connector module. Acts as a client for receiving and publishing - messages to an MQTT broker. - require_container: false - require_model: false - ports: [] -- id: arduino:web_ui - name: Web UI - description: A user interface based on HTML and JavaScript that can rely on additional - APIs and a WebSocket exposed by a web server. - require_container: false - require_model: false - ports: - - 7000 -- id: arduino:dbstorage_tsstore - name: Database Storage - Time Series Store - description: Simplified time series database storage layer for Arduino sensor samples - built on top of InfluxDB. - require_container: true - require_model: false - ports: [] - variables: - - name: APP_HOME - default_value: . - - name: DB_PASSWORD - default_value: Arduino15 - description: Database password - - name: DB_USERNAME - default_value: admin - description: Edge Impulse project API key - - name: INFLUXDB_ADMIN_TOKEN - default_value: 392edbf2-b8a2-481f-979d-3f188b2c05f0 - description: InfluxDB admin token -- id: arduino:dbstorage_sqlstore - name: Database Storage - SQLStore - description: Simplified database storage layer for Arduino sensor data using SQLite - local database. - require_container: false - require_model: false - ports: [] -- id: arduino:object_detection - name: Object Detection - description: "Brick for object detection using a pre-trained model. It processes\ - \ images and returns the predicted class label, bounding-boxes and confidence\ - \ score.\nBrick is designed to work with pre-trained models provided by framework\ - \ or with custom object detection models trained on Edge Impulse platform. \n" - require_container: true - require_model: true - ports: [] - model_name: yolox-object-detection - variables: - - name: CUSTOM_MODEL_PATH - default_value: /opt/models/ei/ - description: path to the custom model directory - - name: EI_OBJ_DETECTION_MODEL - default_value: /models/ootb/ei/yolo-x-nano.eim - description: path to the model file -- id: arduino:weather_forecast - name: Weather Forecast - description: Online weather forecast module for Arduino using open-meteo.com geolocation - and weather APIs. Requires an internet connection. - require_container: false - require_model: false - ports: [] -- id: arduino:visual_anomaly_detection - name: Visual Anomaly Detection - description: "Brick for visual anomaly detection using a pre-trained model. It processes\ - \ images and returns detected anomalies and bounding-boxes.\nBrick is designed\ - \ to work with pre-trained models provided by framework or with custom object\ - \ detection models trained on Edge Impulse platform. \n" - require_container: true - require_model: true - ports: [] - model_name: concreate-crack-anomaly-detection - variables: - - name: CUSTOM_MODEL_PATH - default_value: /opt/models/ei/ - description: path to the custom model directory - - name: EI_V_ANOMALY_DETECTION_MODEL - default_value: /models/ootb/ei/concrete-crack-anomaly-detection.eim - description: path to the model file -- id: arduino:missing-model-require - name: Camera Scanner - description: Scans a camera for barcodes and QR codes - require_container: false - ports: [] -- id: arduino:model_required - name: Model Required Brick - description: A brick that requires a model - require_model: true + " + require_container: true + require_model: true + ports: [] + model_name: keyword-spotting-hello-world + variables: + - name: CUSTOM_MODEL_PATH + default_value: /opt/models/ei/ + description: path to the custom model directory + - name: EI_KEYWORK_SPOTTING_MODEL + default_value: /models/ootb/ei/keyword-spotting-hello-world.eim + description: path to the model file + - id: arduino:mqtt + name: MQTT Connector + description: + MQTT connector module. Acts as a client for receiving and publishing + messages to an MQTT broker. + require_container: false + require_model: false + ports: [] + - id: arduino:web_ui + name: Web UI + description: + A user interface based on HTML and JavaScript that can rely on additional + APIs and a WebSocket exposed by a web server. + require_container: false + require_model: false + ports: + - 7000 + - id: arduino:dbstorage_tsstore + name: Database Storage - Time Series Store + description: + Simplified time series database storage layer for Arduino sensor samples + built on top of InfluxDB. + require_container: true + require_model: false + ports: [] + variables: + - name: APP_HOME + default_value: . + - name: DB_PASSWORD + default_value: Arduino15 + description: Database password + - name: DB_USERNAME + default_value: admin + description: Edge Impulse project API key + - name: INFLUXDB_ADMIN_TOKEN + default_value: 392edbf2-b8a2-481f-979d-3f188b2c05f0 + description: InfluxDB admin token + - id: arduino:dbstorage_sqlstore + name: Database Storage - SQLStore + description: + Simplified database storage layer for Arduino sensor data using SQLite + local database. + require_container: false + require_model: false + ports: [] + - id: arduino:object_detection + name: Object Detection + description: + "Brick for object detection using a pre-trained model. It processes\ + \ images and returns the predicted class label, bounding-boxes and confidence\ + \ score.\nBrick is designed to work with pre-trained models provided by framework\ + \ or with custom object detection models trained on Edge Impulse platform. \n" + require_container: true + require_model: true + ports: [] + model_name: yolox-object-detection + variables: + - name: CUSTOM_MODEL_PATH + default_value: /opt/models/ei/ + description: path to the custom model directory + - name: EI_OBJ_DETECTION_MODEL + default_value: /models/ootb/ei/yolo-x-nano.eim + description: path to the model file + - id: arduino:weather_forecast + name: Weather Forecast + description: + Online weather forecast module for Arduino using open-meteo.com geolocation + and weather APIs. Requires an internet connection. + require_container: false + require_model: false + ports: [] + - id: arduino:visual_anomaly_detection + name: Visual Anomaly Detection + description: + "Brick for visual anomaly detection using a pre-trained model. It processes\ + \ images and returns detected anomalies and bounding-boxes.\nBrick is designed\ + \ to work with pre-trained models provided by framework or with custom object\ + \ detection models trained on Edge Impulse platform. \n" + require_container: true + require_model: true + ports: [] + model_name: concreate-crack-anomaly-detection + variables: + - name: CUSTOM_MODEL_PATH + default_value: /opt/models/ei/ + description: path to the custom model directory + - name: EI_V_ANOMALY_DETECTION_MODEL + default_value: /models/ootb/ei/concrete-crack-anomaly-detection.eim + description: path to the model file + - id: arduino:missing-model-require + name: Camera Scanner + description: Scans a camera for barcodes and QR codes + require_container: false + ports: [] + - id: arduino:model_required + name: Model Required Brick + description: A brick that requires a model + require_model: true + - id: arduino:with-hidden-variables + name: Visual Anomaly Detection + description: "Brick with hidden variables" + variables: + - name: HIDDEN_VARIABLE + default_value: a_hidden_value + description: this variable is hidden + hidden: true + - name: VISIBLE_VARIABLE + default_value: a_visible_value + description: this variable is visible because 'hidden' is set to false + hidden: false + - name: VISIBLE_VARIABLE_IF_MISSING_HIDDEN + default_value: another_visible_value + description: this variable is visiable because 'hidden' field is missing + hidden: false From b36adc7d02383be117ddcb075e5c71fb479d3d44 Mon Sep 17 00:00:00 2001 From: dido18 Date: Thu, 4 Dec 2025 16:06:40 +0100 Subject: [PATCH 2/5] bricks tests --- internal/orchestrator/bricks/bricks.go | 6 +++ internal/orchestrator/bricks/bricks_test.go | 49 +++++++++++++++++++ .../orchestrator/bricksindex/bricks_index.go | 2 +- .../bricksindex/bricks_index_test.go | 4 +- 4 files changed, 58 insertions(+), 3 deletions(-) diff --git a/internal/orchestrator/bricks/bricks.go b/internal/orchestrator/bricks/bricks.go index b9e0da7d..3248d129 100644 --- a/internal/orchestrator/bricks/bricks.go +++ b/internal/orchestrator/bricks/bricks.go @@ -141,6 +141,9 @@ func getInstanceBrickConfigVariableDetails( variableDetails := make([]BrickConfigVariable, 0, len(brick.Variables)) for _, v := range brick.Variables { + if v.Hidden { + continue + } finalValue := v.DefaultValue userValue, ok := userVariables[v.Name] @@ -224,6 +227,9 @@ func getBrickConfigVariableDetails( variableDetails := make([]BrickConfigVariable, 0, len(brick.Variables)) for _, v := range brick.Variables { + if v.Hidden { + continue + } variablesMap[v.Name] = BrickVariable{ DefaultValue: v.DefaultValue, Description: v.Description, diff --git a/internal/orchestrator/bricks/bricks_test.go b/internal/orchestrator/bricks/bricks_test.go index ef51fad6..adb411de 100644 --- a/internal/orchestrator/bricks/bricks_test.go +++ b/internal/orchestrator/bricks/bricks_test.go @@ -313,6 +313,20 @@ func TestGetBrickInstanceVariableDetails(t *testing.T) { expectedConfigVariables: []BrickConfigVariable{}, expectedVariableMap: map[string]string{}, }, + { + name: "hidden variables", + brick: &bricksindex.Brick{Variables: []bricksindex.BrickVariable{ + {Name: "HIDDEN_VAR", DefaultValue: "i-am-hidden", Description: "a-hidden-variable", Hidden: true}, + {Name: "VISIBLE_VAR", DefaultValue: "i-am-visible", Description: "a-visible-variable", Hidden: false}, + {Name: "VISIBLE_VAR_WITH_MISSING", DefaultValue: "i-am-visible-if-missing-hidden", Description: "a-visible-variable"}, + }}, + userVariables: map[string]string{}, + expectedConfigVariables: []BrickConfigVariable{ + {Name: "VISIBLE_VAR", Value: "i-am-visible", Description: "a-visible-variable", Required: true}, + {Name: "VISIBLE_VAR_WITH_MISSING", Value: "i-am-visible-if-missing-hidden", Description: "a-visible-variable", Required: true}, + }, + expectedVariableMap: map[string]string{"VISIBLE_VAR": "i-am-visible", "VISIBLE_VAR_WITH_MISSING": "i-am-visible-if-missing-hidden"}, + }, } for _, tt := range tests { @@ -705,6 +719,15 @@ func TestAppBrickInstancesList(t *testing.T) { RequireModel: false, Ports: []string{"7000", "8000"}, }, + { + ID: "arduino:with-hidden-vars", + Name: "I have some hidden variables", + Variables: []bricksindex.BrickVariable{ + {Name: "HIDDEN_VAR", DefaultValue: "/i/am/hidden", Hidden: true}, + {Name: "VISIBLE_VAR", DefaultValue: "/i/am/visible"}, + {Name: "VISIBLE_VAR_IF_MISSING", DefaultValue: "/i/am/visible", Hidden: false}, + }, + }, }, } @@ -833,6 +856,32 @@ func TestAppBrickInstancesList(t *testing.T) { require.Equal(t, "/models/ootb/ei/glass-breaking.eim", b2.ConfigVariables[1].Value) }, }, + { + name: "Success - hidden variables are not included", + app: &app.ArduinoApp{ + Descriptor: app.AppDescriptor{ + Bricks: []app.Brick{ + { + ID: "arduino:with-hidden-vars", + Variables: map[string]string{ + "HIDDEN_VAR": "/this/is/a/new/hidden/value", + "VISIBLE_VAR": "/this/isa/new/visible/value", + }, + }, + }, + }, + }, + validate: func(t *testing.T, res AppBrickInstancesResult) { + require.Len(t, res.BrickInstances, 1) + brick := res.BrickInstances[0] + require.Equal(t, "arduino:with-hidden-vars", brick.ID) + want := []BrickConfigVariable{ + {Name: "VISIBLE_VAR", Value: "/this/is/a/new/visible/value"}, + {Name: "VISIBLE_VAR_IF_MISSING", Value: "/i/am/visible"}, + } + require.Equal(t, want, brick.ConfigVariables) + }, + }, } for _, tt := range tests { diff --git a/internal/orchestrator/bricksindex/bricks_index.go b/internal/orchestrator/bricksindex/bricks_index.go index cbe1567e..4fb7d065 100644 --- a/internal/orchestrator/bricksindex/bricks_index.go +++ b/internal/orchestrator/bricksindex/bricks_index.go @@ -42,7 +42,7 @@ type BrickVariable struct { Name string `yaml:"name"` DefaultValue string `yaml:"default_value"` Description string `yaml:"description,omitempty"` - Hidden bool `yaml:"is_hidden,omitempty"` + Hidden bool `yaml:"hidden"` } func (v BrickVariable) IsRequired() bool { diff --git a/internal/orchestrator/bricksindex/bricks_index_test.go b/internal/orchestrator/bricksindex/bricks_index_test.go index f65bb53e..2db3bb0e 100644 --- a/internal/orchestrator/bricksindex/bricks_index_test.go +++ b/internal/orchestrator/bricksindex/bricks_index_test.go @@ -61,11 +61,11 @@ func TestGenerateBricksIndexFromFile(t *testing.T) { withHidden, found := index.FindBrickByID("arduino:with-hidden-variables") require.True(t, found) - require.Equal(t, "HIDDEN_VAR", withHidden.Variables[0].Name) + require.Equal(t, "HIDDEN_VARIABLE", withHidden.Variables[0].Name) require.True(t, withHidden.Variables[0].Hidden) require.Equal(t, "VISIBLE_VARIABLE", withHidden.Variables[1].Name) require.False(t, withHidden.Variables[1].Hidden) - require.Equal(t, "VISIBLE_VARIABLE_IF_MISSING", withHidden.Variables[2].Name) + require.Equal(t, "VISIBLE_VARIABLE_IF_MISSING_HIDDEN", withHidden.Variables[2].Name) require.False(t, withHidden.Variables[2].Hidden) } From ee24c29c11fcaad098b46d7c870958e896776a27 Mon Sep 17 00:00:00 2001 From: dido18 Date: Thu, 4 Dec 2025 16:19:37 +0100 Subject: [PATCH 3/5] fix tests --- internal/orchestrator/bricks/bricks_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/orchestrator/bricks/bricks_test.go b/internal/orchestrator/bricks/bricks_test.go index adb411de..87569c02 100644 --- a/internal/orchestrator/bricks/bricks_test.go +++ b/internal/orchestrator/bricks/bricks_test.go @@ -865,7 +865,7 @@ func TestAppBrickInstancesList(t *testing.T) { ID: "arduino:with-hidden-vars", Variables: map[string]string{ "HIDDEN_VAR": "/this/is/a/new/hidden/value", - "VISIBLE_VAR": "/this/isa/new/visible/value", + "VISIBLE_VAR": "/this/is/a/new/visible/value", }, }, }, @@ -875,11 +875,11 @@ func TestAppBrickInstancesList(t *testing.T) { require.Len(t, res.BrickInstances, 1) brick := res.BrickInstances[0] require.Equal(t, "arduino:with-hidden-vars", brick.ID) - want := []BrickConfigVariable{ + expected := []BrickConfigVariable{ {Name: "VISIBLE_VAR", Value: "/this/is/a/new/visible/value"}, {Name: "VISIBLE_VAR_IF_MISSING", Value: "/i/am/visible"}, } - require.Equal(t, want, brick.ConfigVariables) + require.Equal(t, expected, brick.ConfigVariables) }, }, } From 05105af42dd3371bd6b399dec252264f4188be6a Mon Sep 17 00:00:00 2001 From: dido18 Date: Thu, 4 Dec 2025 16:19:48 +0100 Subject: [PATCH 4/5] Set Required to false for visible brick variables in test --- internal/orchestrator/bricks/bricks_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/orchestrator/bricks/bricks_test.go b/internal/orchestrator/bricks/bricks_test.go index 87569c02..332f5cb1 100644 --- a/internal/orchestrator/bricks/bricks_test.go +++ b/internal/orchestrator/bricks/bricks_test.go @@ -322,8 +322,8 @@ func TestGetBrickInstanceVariableDetails(t *testing.T) { }}, userVariables: map[string]string{}, expectedConfigVariables: []BrickConfigVariable{ - {Name: "VISIBLE_VAR", Value: "i-am-visible", Description: "a-visible-variable", Required: true}, - {Name: "VISIBLE_VAR_WITH_MISSING", Value: "i-am-visible-if-missing-hidden", Description: "a-visible-variable", Required: true}, + {Name: "VISIBLE_VAR", Value: "i-am-visible", Description: "a-visible-variable", Required: false}, + {Name: "VISIBLE_VAR_WITH_MISSING", Value: "i-am-visible-if-missing-hidden", Description: "a-visible-variable", Required: false}, }, expectedVariableMap: map[string]string{"VISIBLE_VAR": "i-am-visible", "VISIBLE_VAR_WITH_MISSING": "i-am-visible-if-missing-hidden"}, }, From 7430f77bf47b93ea50fb229cdc85493a0a5413f7 Mon Sep 17 00:00:00 2001 From: dido18 Date: Thu, 4 Dec 2025 16:35:14 +0100 Subject: [PATCH 5/5] revert yml --- .../bricksindex/testdata/bricks-list.yaml | 319 +++++++++--------- 1 file changed, 155 insertions(+), 164 deletions(-) diff --git a/internal/orchestrator/bricksindex/testdata/bricks-list.yaml b/internal/orchestrator/bricksindex/testdata/bricks-list.yaml index c7267093..6af413a5 100644 --- a/internal/orchestrator/bricksindex/testdata/bricks-list.yaml +++ b/internal/orchestrator/bricksindex/testdata/bricks-list.yaml @@ -1,167 +1,158 @@ bricks: - - id: arduino:image_classification - name: Image Classification - description: - "Brick for image classification using a pre-trained model. It processes\ - \ images and returns the predicted class label and confidence score.\nBrick is\ - \ designed to work with pre-trained models provided by framework or with custom\ - \ image classification models trained on Edge Impulse platform. \n" - require_container: true - require_model: true - ports: [] - model_name: mobilenet-image-classification - variables: - - name: CUSTOM_MODEL_PATH - default_value: /opt/models/ei/ - description: path to the custom model directory - - name: EI_CLASSIFICATION_MODEL - default_value: /models/ootb/ei/mobilenet-v2-224px.eim - description: path to the model file - - id: arduino:camera_scanner - name: Camera Scanner - description: Scans a camera for barcodes and QR codes - require_container: false - require_model: false - ports: [] - - id: arduino:streamlit_ui - name: Streamlit UI - description: A simplified user interface based on Streamlit and Python. - require_container: false - require_model: false - ports: - - 7000 - - id: arduino:keyword_spotter - name: Keyword Spotter - description: - "Brick for keyword spotting using a pre-trained model. It processes - audio input to detect specific keywords or phrases. +- id: arduino:image_classification + name: Image Classification + description: "Brick for image classification using a pre-trained model. It processes\ + \ images and returns the predicted class label and confidence score.\nBrick is\ + \ designed to work with pre-trained models provided by framework or with custom\ + \ image classification models trained on Edge Impulse platform. \n" + require_container: true + require_model: true + ports: [] + model_name: mobilenet-image-classification + variables: + - name: CUSTOM_MODEL_PATH + default_value: /opt/models/ei/ + description: path to the custom model directory + - name: EI_CLASSIFICATION_MODEL + default_value: /models/ootb/ei/mobilenet-v2-224px.eim + description: path to the model file +- id: arduino:camera_scanner + name: Camera Scanner + description: Scans a camera for barcodes and QR codes + require_container: false + require_model: false + ports: [] +- id: arduino:streamlit_ui + name: Streamlit UI + description: A simplified user interface based on Streamlit and Python. + require_container: false + require_model: false + ports: + - 7000 +- id: arduino:keyword_spotter + name: Keyword Spotter + description: 'Brick for keyword spotting using a pre-trained model. It processes + audio input to detect specific keywords or phrases. - Brick is designed to work with pre-trained models provided by framework or with - custom audio classification models trained on Edge Impulse platform. + Brick is designed to work with pre-trained models provided by framework or with + custom audio classification models trained on Edge Impulse platform. - " - require_container: true - require_model: true - ports: [] - model_name: keyword-spotting-hello-world - variables: - - name: CUSTOM_MODEL_PATH - default_value: /opt/models/ei/ - description: path to the custom model directory - - name: EI_KEYWORK_SPOTTING_MODEL - default_value: /models/ootb/ei/keyword-spotting-hello-world.eim - description: path to the model file - - id: arduino:mqtt - name: MQTT Connector - description: - MQTT connector module. Acts as a client for receiving and publishing - messages to an MQTT broker. - require_container: false - require_model: false - ports: [] - - id: arduino:web_ui - name: Web UI - description: - A user interface based on HTML and JavaScript that can rely on additional - APIs and a WebSocket exposed by a web server. - require_container: false - require_model: false - ports: - - 7000 - - id: arduino:dbstorage_tsstore - name: Database Storage - Time Series Store - description: - Simplified time series database storage layer for Arduino sensor samples - built on top of InfluxDB. - require_container: true - require_model: false - ports: [] - variables: - - name: APP_HOME - default_value: . - - name: DB_PASSWORD - default_value: Arduino15 - description: Database password - - name: DB_USERNAME - default_value: admin - description: Edge Impulse project API key - - name: INFLUXDB_ADMIN_TOKEN - default_value: 392edbf2-b8a2-481f-979d-3f188b2c05f0 - description: InfluxDB admin token - - id: arduino:dbstorage_sqlstore - name: Database Storage - SQLStore - description: - Simplified database storage layer for Arduino sensor data using SQLite - local database. - require_container: false - require_model: false - ports: [] - - id: arduino:object_detection - name: Object Detection - description: - "Brick for object detection using a pre-trained model. It processes\ - \ images and returns the predicted class label, bounding-boxes and confidence\ - \ score.\nBrick is designed to work with pre-trained models provided by framework\ - \ or with custom object detection models trained on Edge Impulse platform. \n" - require_container: true - require_model: true - ports: [] - model_name: yolox-object-detection - variables: - - name: CUSTOM_MODEL_PATH - default_value: /opt/models/ei/ - description: path to the custom model directory - - name: EI_OBJ_DETECTION_MODEL - default_value: /models/ootb/ei/yolo-x-nano.eim - description: path to the model file - - id: arduino:weather_forecast - name: Weather Forecast - description: - Online weather forecast module for Arduino using open-meteo.com geolocation - and weather APIs. Requires an internet connection. - require_container: false - require_model: false - ports: [] - - id: arduino:visual_anomaly_detection - name: Visual Anomaly Detection - description: - "Brick for visual anomaly detection using a pre-trained model. It processes\ - \ images and returns detected anomalies and bounding-boxes.\nBrick is designed\ - \ to work with pre-trained models provided by framework or with custom object\ - \ detection models trained on Edge Impulse platform. \n" - require_container: true - require_model: true - ports: [] - model_name: concreate-crack-anomaly-detection - variables: - - name: CUSTOM_MODEL_PATH - default_value: /opt/models/ei/ - description: path to the custom model directory - - name: EI_V_ANOMALY_DETECTION_MODEL - default_value: /models/ootb/ei/concrete-crack-anomaly-detection.eim - description: path to the model file - - id: arduino:missing-model-require - name: Camera Scanner - description: Scans a camera for barcodes and QR codes - require_container: false - ports: [] - - id: arduino:model_required - name: Model Required Brick - description: A brick that requires a model - require_model: true - - id: arduino:with-hidden-variables - name: Visual Anomaly Detection - description: "Brick with hidden variables" - variables: - - name: HIDDEN_VARIABLE - default_value: a_hidden_value - description: this variable is hidden - hidden: true - - name: VISIBLE_VARIABLE - default_value: a_visible_value - description: this variable is visible because 'hidden' is set to false - hidden: false - - name: VISIBLE_VARIABLE_IF_MISSING_HIDDEN - default_value: another_visible_value - description: this variable is visiable because 'hidden' field is missing - hidden: false + ' + require_container: true + require_model: true + ports: [] + model_name: keyword-spotting-hello-world + variables: + - name: CUSTOM_MODEL_PATH + default_value: /opt/models/ei/ + description: path to the custom model directory + - name: EI_KEYWORK_SPOTTING_MODEL + default_value: /models/ootb/ei/keyword-spotting-hello-world.eim + description: path to the model file +- id: arduino:mqtt + name: MQTT Connector + description: MQTT connector module. Acts as a client for receiving and publishing + messages to an MQTT broker. + require_container: false + require_model: false + ports: [] +- id: arduino:web_ui + name: Web UI + description: A user interface based on HTML and JavaScript that can rely on additional + APIs and a WebSocket exposed by a web server. + require_container: false + require_model: false + ports: + - 7000 +- id: arduino:dbstorage_tsstore + name: Database Storage - Time Series Store + description: Simplified time series database storage layer for Arduino sensor samples + built on top of InfluxDB. + require_container: true + require_model: false + ports: [] + variables: + - name: APP_HOME + default_value: . + - name: DB_PASSWORD + default_value: Arduino15 + description: Database password + - name: DB_USERNAME + default_value: admin + description: Edge Impulse project API key + - name: INFLUXDB_ADMIN_TOKEN + default_value: 392edbf2-b8a2-481f-979d-3f188b2c05f0 + description: InfluxDB admin token +- id: arduino:dbstorage_sqlstore + name: Database Storage - SQLStore + description: Simplified database storage layer for Arduino sensor data using SQLite + local database. + require_container: false + require_model: false + ports: [] +- id: arduino:object_detection + name: Object Detection + description: "Brick for object detection using a pre-trained model. It processes\ + \ images and returns the predicted class label, bounding-boxes and confidence\ + \ score.\nBrick is designed to work with pre-trained models provided by framework\ + \ or with custom object detection models trained on Edge Impulse platform. \n" + require_container: true + require_model: true + ports: [] + model_name: yolox-object-detection + variables: + - name: CUSTOM_MODEL_PATH + default_value: /opt/models/ei/ + description: path to the custom model directory + - name: EI_OBJ_DETECTION_MODEL + default_value: /models/ootb/ei/yolo-x-nano.eim + description: path to the model file +- id: arduino:weather_forecast + name: Weather Forecast + description: Online weather forecast module for Arduino using open-meteo.com geolocation + and weather APIs. Requires an internet connection. + require_container: false + require_model: false + ports: [] +- id: arduino:visual_anomaly_detection + name: Visual Anomaly Detection + description: "Brick for visual anomaly detection using a pre-trained model. It processes\ + \ images and returns detected anomalies and bounding-boxes.\nBrick is designed\ + \ to work with pre-trained models provided by framework or with custom object\ + \ detection models trained on Edge Impulse platform. \n" + require_container: true + require_model: true + ports: [] + model_name: concreate-crack-anomaly-detection + variables: + - name: CUSTOM_MODEL_PATH + default_value: /opt/models/ei/ + description: path to the custom model directory + - name: EI_V_ANOMALY_DETECTION_MODEL + default_value: /models/ootb/ei/concrete-crack-anomaly-detection.eim + description: path to the model file +- id: arduino:missing-model-require + name: Camera Scanner + description: Scans a camera for barcodes and QR codes + require_container: false + ports: [] +- id: arduino:model_required + name: Model Required Brick + description: A brick that requires a model + require_model: true +- id: arduino:with-hidden-variables + name: Visual Anomaly Detection + description: "Brick with hidden variables" + variables: + - name: HIDDEN_VARIABLE + default_value: a_hidden_value + description: this variable is hidden + hidden: true + - name: VISIBLE_VARIABLE + default_value: a_visible_value + description: this variable is visible because 'hidden' is set to false + hidden: false + - name: VISIBLE_VARIABLE_IF_MISSING_HIDDEN + default_value: another_visible_value + description: this variable is visiable because 'hidden' field is missing + hidden: false