Settings
The Settings menu registers the variables and resources a project uses. Most items are registered here and then selected in the action that uses them.
All Items
For example, registering a Telegram bot in Settings makes it selectable in Action → Telegram Message.
The full list of setting items is as follows. The groups match the item groups on screen, and the list is in the same order as the screen.
| Group | Item | Description |
|---|---|---|
| Hardware | GPIO | Sets the GPIO sample time and registers USB-GPIO adapters (External GPIO). |
| I/O Device | Registers LEDs, sensors, LCDs, motors, and other devices used by I/O Device Control. | |
| System | Variable | Defines the project-wide variables shared by logic, devices, and dashboards. |
| File Editor | Registers the file editors used by the Read/Write File action. | |
| Timer | Registers timers used by the Timer action. | |
| Data Logging | Creates channels that record variable values automatically at intervals or manually via the Data Logging action. | |
| Data | Statistics | Registers the statistics used by the Statistics action, together with the numeric variable to calculate them from. |
| Collection | Registers collections used by the Collection action. | |
| Database | Registers database connections used by the Database action. MySQL, PostgreSQL, SQLite, ODBC, and Firebase DB are supported. | |
| Media | Media Player | Registers players used by the Play Media action. |
| Camera | Registers cameras used by the Camera action and AI Analysis. | |
| Image Viewer | Registers viewers used by the Display Image action. | |
| Synthesizer | Registers instruments used by the Synthesizer action. Sounds come from a SoundFont file (sf2, sf3), and a default one is included. | |
| Audio Analyzer | Registers analyzers used by the Audio Analysis action. The audio source is either the microphone (input) or the speaker (output). | |
| Audio Recorder | Registers recorders used by the Record Audio action. | |
| Audio Transform | Registers transformers used by the Transform Audio action. | |
| AI | AI Analyzer | Registers analyzers used by the AI Analysis action. |
| LLM AI | Registers LLM providers (OpenAI, Anthropic, Gemini, etc.) used by LLM AI Query. | |
| Text-to-Speech | Registers TTS services used by the Text-to-Speech action. | |
| Speech-to-Text | Registers STT services used by the Speech-to-Text action. | |
| IoT | Telegram Bot | Registers bots used by the Telegram Message action. |
| Email Client | Registers clients used by the Send Email action. | |
| Zigbee Device | Registers devices discovered from the Zigbee2MQTT bridge. | |
| Home Assistant | Registers server connections used by Home Assistant Integration. | |
| Communication | MQTT Client | Registers clients used by MQTT Communication. |
| OPC UA Client | Registers clients used by OPC UA Communication. | |
| Modbus | Registers an RTU Master, RTU Slave, TCP Master, or TCP Slave used by Modbus Communication. | |
| User Defined Communication | Registers the connections used by User Defined Communication. Nine types are supported: serial, TCP and UDP client and server, shared memory, WebSocket client, and Bluetooth client and server. | |
| Control | PID Control | Registers controllers used by the PID Control action. Set the control mode to Direct when a rising output raises the measured value, and Reverse when it lowers it. |
The most frequently used items are described in detail below.
Variables
Create and manage project-wide variables in Settings → Variable. When creating a variable, choose one of eight types.
| Type | Stored Value |
|---|---|
| Digital | True or False. Used for buttons, switches, and on/off states. |
| Numeric | Numbers including decimals. Used for temperature, distance, and counts. |
| Text | Strings. Used for names, messages, and status text. |
| Date | A date in year-month-day format. |
| Time | A time of day in hour:minute:second format. |
| Duration | A length of time (hours:minutes:seconds:milliseconds). Used for delays and timers. |
| ByteArray | Binary data. Used for communication protocols and file contents. |
| Color | An RGB color value. Used for LED color control. |
The type can be changed later. Blocks that use the variable adjust to the new type, and connections that no longer match are detached.
Selecting Array stores multiple values of the same type in one variable. Array Dimension supports 1 to 3 dimensions, and the total size (the product of each dimension) must not exceed 65,536. An Initial Value set when creating the variable is applied when execution starts.
Collection
A collection is a store that holds several values, which actions then add to, read, and remove. Collection Type selects a List, which keeps values in order, or a Map, which looks them up by key. Set the Value Type the collection holds; a map also takes a Key Type. Key and value types are the same eight types as variables.
With Size Limit on, nothing can be stored beyond Maximum Size. Turning on Circular Buffer alongside a size limit on a list drops the oldest value to make room for a new one, which is how a list is used as a queue or a stack.
Database
Registering a connection in Settings → Database makes it selectable in Action → Database for storing and retrieving data. The fields depend on the type.
| Type | Fields |
|---|---|
| MySQL and PostgreSQL | Host, port (3306 by default), connection timeout, username, password, database name |
| SQLite | DB file, taken from an uploaded file. |
| ODBC | Connection string, connection timeout |
| Firebase DB | Database address, web API key, and either anonymous login or an email and password |
SQL databases are used from the action in the order Login, run query, Logout. Passwords, connection strings, and web API keys are stored encrypted on the controller.
GPIO
Settings → GPIO configures the GPIO sample time and External GPIO. The sample time is the interval at which GPIO inputs are monitored; shorter values are more precise but use more CPU, and the setting appears only when the project device is a Raspberry Pi (0~4). Values from 1 to 10μs are available and 5μs suits most cases. This interval sets the precision of devices that watch GPIO input transitions, such as PWM monitoring and the high-speed counter, so a change shorter than the sample time is not detected.
Controllers without GPIO pins, such as ordinary PCs, and boards that have run out of pins can register FT232H, MCP2221, or NUMATO USB-GPIO adapters under External GPIO. FT232H and MCP2221 are distinguished by Index (use the scan button to discover them, or keep the default with a single device), while NUMATO takes the Model matching its channel count and a Serial Port.
Camera
Register cameras in Settings → Camera by choosing a source.
- CSI/USB: A camera connected directly to the controller (Raspberry Pi camera module, USB webcam).
- ONVIF: Discovers and registers IP cameras on the same network. For cameras that require an account, enter the username and password in the camera selection dialog.
- RTSP (the standard video streaming protocol of IP cameras): Registers a stream by entering its address directly. The address is listed in the camera’s manual; add a Username and Password if the stream requires authentication.
For a camera mounted upside down or sideways, Orientation offers 90°, 180°, and 270° rotation, horizontal and vertical flips, and combinations of rotation and flip. Region of Interest (ROI) defines several areas of the frame in advance, which camera capture and AI analysis can then select.
AI Analyzer
In Settings → AI Analyzer, choose the camera to analyze and whether to use GPU acceleration.
Mode balances analysis speed against accuracy. Fast is recommended for lower-powered devices such as a Raspberry Pi, Accurate for high-performance devices such as PCs and Jetson, and Balanced in between. The available values depend on the AI model: Object Detection, Face Detection, Face Recognition, Fire Detection, and Line Crossing Counter offer all three; Pose Estimation, Hand Tracking, License Plate Recognition, and Custom Anomaly Detection offer only Fast and Accurate; the remaining models use a single model, so the Mode field is not shown.
Detection FPS caps how many times per second analysis runs. The default is 5; Pose Estimation, Hand Tracking, Action Recognition, Hand Gesture Recognition, and Line Crossing Counter default to 10, and the computation-heavy Custom Anomaly Detection defaults to 1. A value of 0 means no limit. If the controller is overloaded, lowering this value is more effective than changing the mode.
LLM AI
In Settings → LLM AI, register OpenAI, Anthropic, Google Gemini, Ollama, or an OpenAI-compatible endpoint. Multiple providers can be registered, and each LLM AI Query action can use a different one.
Model is chosen from the provider's list or typed in directly, so
a newly released model can be used by name alone. Ollama and OpenAI Compatible take the
model name directly along with a Base URL (Ollama defaults to
http://localhost:11434/v1), and a locally run Ollama needs no API key. The
other providers take an API Key issued by that service.
Image Downscale is the ratio applied to images attached to a query. The default is 100% (original); lowering it saves upload time and cost, while higher values preserve detail. With a low-resolution camera, 100% is recommended.
Text-to-Speech and Speech-to-Text
Text-to-Speech (TTS) and Speech-to-Text (STT) split into two paths according to Type.
- On Device: Converts with a model built into the controller, requiring neither an internet connection nor an API key. Selecting a Language lists the Model options for it, and the chosen model downloads automatically on first use.
- Google Cloud, OpenAI, ElevenLabs: Converts through an online service and needs an API Key, which is stored encrypted on the controller. TTS supports all four types; STT supports On Device, Google Cloud, and OpenAI.
Selecting CUSTOM in the model list lets you enter the path to a model folder you prepared yourself. Renaming the downloaded folder prevents the model from being recognized, so keep its original name.
Speech-to-Text has two settings that decide where speech starts and ends. Voice Detection Threshold ranges from 5 to 90%: lowering it picks up quieter sounds but also background noise (20 to 40% for quiet rooms, 30 to 50% for normal ones, 50 to 70% for noisy ones). Speech Completion Timeout is the silence after which speech is treated as finished, from 0.3 to 5 seconds (0.5s for fast exchanges, 1s for normal speech, 2s for deliberate speech).
Communication
The communication items register, in advance, the connections the controller uses to exchange data with external equipment and servers. A registered connection is then selected from the action of the same name.
MQTT Client
Enter the host and port. The default port is 1883 without encryption and 8883 with SSL/TLS. Client ID must be unique within the broker and is generated automatically if left empty. If the broker requires credentials, turn on User Authentication and enter the user and password; turning on SSL/TLS Encryption adds the client certificate, client private key, and CA certificate.
A Will Message is what the broker publishes on your behalf when the connection drops abnormally; set its topic, message, QoS, and retain flag. QoS 0 sends without checking for a response, QoS 1 resends until acknowledged (so duplicates are possible), and QoS 2 guarantees exactly one delivery. Higher numbers are more reliable but use more network capacity.
Modbus
Type selects RTU Master, RTU Slave, TCP Master, or TCP Slave. RTU takes a serial port with baud rate, parity bit, stop bit, and data bits; TCP takes an IP address and port (502 by default). A master addresses equipment by Unit ID (1 to 247), and a TCP slave sets the maximum number of connections from masters (16 by default).
Running as a slave, set the Register and Bit sizes and map a variable to each address. Grablo's slave memory does not separate inputs from outputs: it has only a register area and a bit area. Coils and discrete inputs use the bit area, holding and input registers use the register area, and addresses start at 0.
OPC UA Client
Enter the host, the port (4840 by default), and the response timeout. If the server requires credentials, turn on User Authentication and enter the username and password. Turning on SSL/TLS Encryption adds a certificate file, a private key file, an Encryption Method, and a Security Mode. Grablo ships default certificate and key files, so those can be registered with the server and used as they are.
User Defined Communication
Nine types are supported: serial, TCP client and server, UDP client and server, shared memory, WebSocket client, and Bluetooth client and server. Serial takes a port and line settings, TCP, UDP, and WebSocket take a host and port, shared memory takes a name and size, and Bluetooth takes a local HCI index and a remote MAC address.
Receive Timeout is how long to wait for the next byte after the last one arrived. Once it expires, no further data is assumed to be coming, which makes this value decisive when exchanging frame-based data. A shared memory name must match the other side's, and an existing shared memory with that name is reused.
Email Client
Enter the SMTP server's host, username, password, sender address, and sender name. The default port changes with the Security Method.
| Security method | Default port | Description |
|---|---|---|
| None | 25 | Sends in plain text with no encryption. Rarely used today. |
| SSL | 465 | Encrypts from the start of the connection. Now largely replaced by TLS. |
| TLS (START_TLS) | 587 | Connects in plain text, then applies encryption with the STARTTLS command. The most widely used method today. |
Data Logging
In Settings → Data Logging, create a channel and bind the variables to record. Several variables can share one channel, and values recorded in the same pass are stored with the same timestamp. With Auto logging enabled (the default), variable values are saved to the controller's database at each logging interval (one minute by default). Recorded data is viewed with the Historical Chart and Historical Table widgets.
Independently of interval recording, the Data Logging action records a single entry at a specific moment. To record only at event times, turn off Auto logging and use the action alone.
The retention policy determines how much history is kept. The default is None (unlimited); choosing size (100MB by default), count (100,000 records), or duration (30 days) deletes the oldest records once the limit is exceeded. For channels that run long-term, set a retention policy when creating the channel.
Home Assistant and Zigbee
Registering a connection in Settings → Home Assistant lets you read and control Home Assistant entities, or expose Grablo variables as new entities. Add-on mode is on by default: if Grablo was installed as a Home Assistant add-on (Part 2), it connects automatically in this state with no server address or token.
To connect from a separate controller instead, turn Add-on mode off and enter the HA Server address, the port (8123 by default), and an Access Token. Generate the token under Profile > Long-Lived Access Tokens in Home Assistant, and turn on Use HTTPS/WSS if the server runs over HTTPS.
Zigbee Device registers devices paired through Zigbee2MQTT, supporting more than 3,400 devices including lights, switches, and sensors. Pairing, selecting, and removing devices are done in the device manager dialog on the settings screen.