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

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:
- System Boot
- Settings Init blocks execute
- Load user-configured values (if exist)
- Initialize features with settings
- 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
Related Blocks
- Variable Set: Set variable values
- On Variable Changed: React to changes
- System Reboot: Restart after configuration
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:
- Initialize all critical settings
- Use safe default values
- Test first-boot experience
- Provide factory reset capability
- Document all defaults
- Validate initialized values
- 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:
- Settings Feature: Core settings system
- DS Manager: Settings management
- Web Dashboard: Settings interface