Skip to main content

Settings Init

This block initializes settings with default values or restores settings to defaults. Use it at application startup or for factory reset functionality.

Settings Init Block

Overview

The Settings Init block sets initial values for settings, ensuring proper configuration at application startup or restoring factory defaults.

Configuration

  • Setting: Which setting to initialize
  • Value: Default value to set
  • Condition: When to initialize (always, if empty, if invalid)

Initialization Modes

Always Initialize

Set value every time block executes:

  • Force specific value
  • Restore to defaults
  • Override current value

Initialize if Empty

Set value only if setting is not configured:

  • First-time setup
  • Preserve user configuration
  • Default value for new settings

Initialize if Invalid

Set value only if current value is invalid:

  • Recover from corruption
  • Handle out-of-range values
  • Fix configuration errors

Use Cases

Common settings initialization scenarios:

Application Startup

Initialize critical settings on boot:

On System Boot:
- Settings Init: MQTT Server = "mqtt.example.com"
- Settings Init: Poll Interval = 60
- Settings Init: Temperature Unit = "Celsius"

Factory Reset

Restore all settings to defaults:

On Factory Reset Button:
- Settings Init: All settings to defaults
- Clear data tables
- Reboot device

First-Time Setup

Configure new device:

If (first_boot == true):
- Settings Init: Device Name = "Device-{serial}"
- Settings Init: Network Mode = "DHCP"
- Set first_boot = false

Migration

Update settings after firmware upgrade:

If (config_version < 2.0):
- Settings Init: New settings to defaults
- Migrate old settings
- Update config_version

Setting Types

Initialize various setting types:

Text Settings

Device Name: "My Device"
WiFi SSID: "MyNetwork"
MQTT Topic: "devices/sensor1"

Numeric Settings

Poll Interval: 60
Temperature Setpoint: 22
Alarm Threshold: 100

Boolean Settings

Enable Logging: true
Auto Reconnect: true
Debug Mode: false

Selection Settings

Network Mode: "WiFi" (from list: WiFi, Cellular, Ethernet)
Temperature Unit: "Celsius" (from list: Celsius, Fahrenheit)

Default Values

Define appropriate defaults:

  • Safe operating values
  • Common use case values
  • Values that work out-of-box
  • Comply with regulations

Validation

Validate initialization:

  • Check value ranges
  • Verify required format
  • Ensure dependencies
  • Test default configuration

Startup Sequence

Typical initialization sequence:

  1. System Boot
  2. Settings Init blocks execute
  3. Load user-configured values (if exist)
  4. Initialize features with settings
  5. Start application logic

Multiple Settings

Initialize multiple settings:

  • Create separate init blocks
  • Execute in proper order
  • Handle dependencies
  • Group related settings

Conditional Initialization

Initialize based on conditions:

Environment-Based

If (hardware_type == "industrial"):
Settings Init: Max Temperature = 85
Else:
Settings Init: Max Temperature = 70

Feature-Based

If (cellular_enabled):
Settings Init: APN = "internet"
Settings Init: Data Limit = 1000

Linking to Variables

Settings can be linked to variables:

  • Initialize variable-linked settings
  • Establish default variable values
  • Configure hardware defaults

Reset Functionality

Implement reset features:

Partial Reset

Reset specific setting groups:

  • Network settings only
  • Application settings only
  • Hardware settings only

Full Reset

Restore all settings to factory defaults

Selective Reset

User chooses which settings to reset

Persistence

Settings persistence:

  • Initialized values saved to non-volatile memory
  • Survive power cycles
  • Backed up for recovery
  • Exportable for cloning

Security

Secure initialization:

  • Don't hardcode sensitive values
  • Use secure default passwords
  • Initialize security settings properly
  • Clear sensitive data on reset

Testing

Test initialization:

  • Verify default values applied
  • Test first boot scenario
  • Validate factory reset
  • Check setting persistence

Documentation

Document default values:

  • Reason for each default
  • Acceptable value ranges
  • Dependencies on other settings
  • Effects of changing defaults

Best Practices

Settings initialization best practices:

  1. Initialize all critical settings
  2. Use safe default values
  3. Test first-boot experience
  4. Provide factory reset capability
  5. Document all defaults
  6. Validate initialized values
  7. Handle initialization errors

Migration Strategy

Handle setting changes across versions:

If (settings_version == 1):
Settings Init: New setting = default
Convert old settings format
Set settings_version = 2

Error Handling

Handle initialization errors:

  • Invalid default value
  • Storage write failure
  • Dependency conflicts
  • Recovery procedures

Integration

Settings Init integrates with:

See Also