Skip to content

🔥 Unofficial Flutter app for remote control & monitoring of RIKA pellet/wood stoves via Firenet. Smart notifications, Android widget, multilingual. MIT License.

License

Notifications You must be signed in to change notification settings

R-Gld/RikaFirenetUnofficialApp

🔥 Rika Firenet Unofficial

Version Flutter Dart Platform License Status i18n

Unofficial cross-platform Flutter application for remote control and monitoring of Rika pellet and wood stoves via the Rika Firenet web interface.


📑 Table of Contents


📖 About

Rika Firenet Unofficial is a cross-platform mobile application for remote control and monitoring of your Rika stoves via the Rika Firenet web interface.

💡 Inspiration and Motivation

This application was created to address limitations of the official Rika Firenet app:

  • Customizable Notifications: The official app doesn't provide configurable notifications for stove monitoring
  • Accessible Advanced Controls: Many advanced parameters available on the web interface are not exposed in the official mobile app
  • Comprehensive Monitoring: Access to 100+ data points (temperatures, sensors, motors, statistics) for detailed tracking
  • Customizable Interface: Show or hide controls and panels according to your needs
  • Optimized Multi-Stove Management: More fluid interface for managing multiple stoves
  • Android Widget: Quick stove status overview directly from your home screen

🎯 Target Audience

Owners of Rika pellet or wood stoves equipped with the Firenet module who want:

  • More complete control of their installation
  • Smart background notifications
  • Detailed state and performance monitoring
  • Modern and customizable interface
  • Quick access via home screen widget

✨ Features

🌍 Internationalization (i18n)

Full multilingual support with 7 languages:

  • Supported Languages:

    • 🇬🇧 English
    • 🇫🇷 Français (French)
    • 🇩🇰 Dansk (Danish)
    • 🇩🇪 Deutsch (German)
    • 🇪🇸 Español (Spanish)
    • 🇮🇹 Italiano (Italian)
    • 🇳🇱 Nederlands (Dutch)
  • Features:

    • Language selector in settings
    • Automatic system language detection with fallback to English
    • 200+ translated strings covering entire UI
    • Localized error messages and notifications
    • Localized day names in heating schedule

📱 Android Home Screen Widget

Quick stove status at a glance:

  • Widget Features:
    • Dark modern design matching app theme
    • Real-time status display (online/offline)
    • Current and target temperature
    • Operating mode (Manual/Auto/Comfort)
    • Last update timestamp
    • Direct tap to open app
    • Auto-refresh when app updates data

⚙️ Reorganized Settings Screen

Better organized settings with submenus:

  • Main Settings:

    • GitHub repository link card (top)
    • Theme selector (Light/Dark/System)
    • Language selector
    • App version display
  • Organized Submenus:

    • Advanced Controls: Toggle visibility of advanced features
    • Notifications: Full notification configuration
    • Information Panels: Manage panel visibility

🔒 Security Features

Advanced security features to protect your data and connection:

  • Biometric Authentication: Optional fingerprint or Face ID app lock (Android & iOS)

    • Enable/disable in Settings → Security
    • Fallback to password always available
    • Prompt on every app launch when enabled
  • Certificate Pinning: SSL certificate validation to prevent man-in-the-middle attacks

    • Automatic validation of Rika Firenet certificate
    • Protects against network-level attacks
  • Rate Limiting: Client-side request throttling to prevent API abuse

    • Token bucket algorithm with exponential backoff
    • Protects against accidental request flooding
    • Configurable limits per endpoint
  • Secure Deletion: Multi-layer cryptographic erasure on logout

    • Credentials wiped from secure storage
    • Session cookies cleared
    • HTTP cache purged
    • Best-effort memory zeroing

🎛️ Real-Time Control

  • Power ON/OFF: Toggle control with confirmation dialog
  • Target Temperature: Adjust from 16°C to 30°C (Comfort mode)
  • Heating Power: Adjustment from 0% to 100% (Manual mode)
  • Operating Modes:
    • Manual: Direct power control
    • Auto: Automatic regulation based on temperature
    • Comfort: Target temperature with smart management
  • Heating Schedule: Complete weekly programming with detailed editor

⚙️ Advanced Controls (Optional)

  • ECO Mode: Pellet consumption optimization
  • Room Power Request: Levels 1 to 4
  • Convection Fans: Dual fan control, levels 0 to 5
  • Frost Protection: Minimum temperature from 4°C to 10°C
  • Temperature Calibration: Offset from -3°C to +3°C
  • Bake Temperature: Oven temperature control (compatible stoves)

These controls can be individually enabled/disabled in settings to simplify the interface.

📊 Comprehensive Monitoring

Access to 100+ data points organized in information panels:

  • ⚠️ Errors and Warnings: Real-time active alerts
  • 🔒 Safety Status: Door, pressure, WiFi, temperature limiter
  • 🌡️ Sensors: Multiple temperatures, external requests
  • ⚙️ Outputs: Motor states, fans, dampers, ignition
  • 📈 Statistics: Runtime, consumption, maintenance cycles

Each panel can be shown or hidden according to your preferences.

🔔 Background Notification System

Flagship Feature: Continuous monitoring even when app is closed (Android)

  • Free Field Selection: 23 priority fields available in categories:

    • 📊 Status: General state, mode, power
    • 🌡️ Temperatures: Ambient, target, oven, smoke
    • 🔒 Safety: Door, pressure, temperature limiter
    • ⚙️ Motors: Auger, suction, cleaning
    • 📉 Consumption: Pellets consumed, runtime
  • Configurable Thresholds: For numerical values (e.g., notify if temperature > 25°C)

  • Grouped Notifications: Smart grouping of multiple changes

  • Priority Channels: HIGH for critical alerts, MEDIUM for information

  • Customizable Interval: 15, 30, 45, or 60 minutes

  • Smart Anti-Spam: 5-minute throttle between notifications

  • Auto-Reauthentication: Automatic reconnection if session expires

  • Immediate Test: "Test Now" function to verify configuration

🎨 Interface Customization

  • Control Visibility: Enable only the controls you need
  • Panel Visibility: Display only relevant information
  • Material Design 3: Modern and fluid interface
  • Status Color Coding:
    • 🔴 Off: Stove is off
    • 🟡 Transition: Starting or shutting down
    • 🟢 Active: Normal operation
    • 🟠 Warning: Warning or error
  • Theme Support: Light, Dark, and System modes

🏠 Multi-Stove Management

  • Automatic Detection: All stoves from your Rika Firenet account
  • Easy Selection: Intuitive stove switching interface
  • Per-Stove Notifications: Independent configuration for each installation
  • Widget Support: Shows data from currently selected stove

📸 Screenshots

Login & Main Controls

Login Screen Stove Control Screen

Advanced Controls & Information Panels

Advanced Controls Information Panels


🏗️ Technical Architecture

📚 Tech Stack

  • Framework: Flutter 3.38.2 / Dart 3.10.0
  • State Management: Riverpod 2.5.1
  • Architecture: Clean Architecture (presentation / data / services / providers / core)
  • HTTP Client: Dio 5.4.3 with cookie management
  • Persistence:
    • FlutterSecureStorage: Encrypted credentials
    • SharedPreferences: App settings
    • PersistCookieJar: Session cookies
  • Security:
    • local_auth: Biometric authentication (fingerprint/Face ID)
    • crypto: SHA-256 hashing for certificate pinning
  • Background Tasks: WorkManager 0.9.0 (Android/iOS)
  • Notifications: flutter_local_notifications 17.0.0
  • Home Widget: home_widget 0.8.1 (Android)
  • Internationalization:
    • flutter_localizations (SDK)
    • intl 0.20.2
  • Code Generation: Freezed 2.5.7, json_serializable 6.8.0, build_runner 2.4.12
  • HTML Parsing: html 0.15.4
  • URL Launcher: url_launcher 6.3.0
  • Package Info: package_info_plus 8.0.0

📦 Data Models (Freezed)

  • Stove: Stove identity and information
  • StoveData: Complete real-time state
  • StoveControls: All control parameters
  • StoveSensors: 100+ sensors and measurements
  • NotificationSettings: Notification configuration
  • AppSettings: User interface preferences (including locale)

🗂️ Architecture Layers

lib/
├── l10n/                  # Internationalization files
│   ├── app_en.arb         # English translations
│   ├── app_fr.arb         # French translations
│   ├── app_da.arb         # Danish translations
│   ├── app_de.arb         # German translations
│   ├── app_es.arb         # Spanish translations
│   ├── app_it.arb         # Italian translations
│   └── app_nl.arb         # Dutch translations
│
├── presentation/          # Presentation layer (UI)
│   ├── screens/          # Main screens
│   │   ├── auth/
│   │   │   ├── login_screen.dart
│   │   │   └── biometric_lock_screen.dart
│   │   ├── home/
│   │   │   └── home_screen.dart
│   │   ├── stove_detail/
│   │   │   └── stove_detail_screen.dart
│   │   └── settings/
│   │       ├── settings_screen.dart
│   │       ├── advanced_controls_settings_screen.dart
│   │       ├── notifications_settings_screen.dart
│   │       └── info_panels_settings_screen.dart
│   ├── widgets/          # Reusable components
│   │   ├── auth/         # Authentication widgets
│   │   │   └── biometric_prompt_dialog.dart
│   │   ├── controls/     # Control widgets
│   │   ├── info/         # Information panels
│   │   └── common/       # Common widgets
│   └── theme/            # Theme and colors
│       ├── app_colors.dart
│       └── app_theme.dart
│
├── data/                 # Data layer
│   ├── models/           # Freezed data classes
│   ├── repositories/     # Repository implementations
│   │   ├── auth_repository.dart
│   │   ├── stove_repository.dart
│   │   ├── storage_repository.dart
│   │   └── notification_repository.dart
│   └── datasources/      # Data sources
│       ├── rika_api_client.dart
│       └── html_parser_service.dart
│
├── services/             # Business logic
│   ├── background_polling_service.dart
│   ├── background_task_handler.dart
│   ├── notification_change_detector.dart
│   ├── notification_service.dart
│   ├── permission_service.dart
│   ├── battery_optimization_service.dart
│   └── home_widget_service.dart
│
├── providers/            # Riverpod providers
│   ├── auth_provider.dart
│   ├── stove_provider.dart
│   ├── settings_provider.dart
│   └── notification_provider.dart
│
└── core/                 # Utilities and constants
    ├── constants/
    │   └── api_constants.dart
    ├── errors/
    │   ├── exceptions.dart
    │   └── failures.dart
    ├── network/
    │   ├── token_bucket.dart
    │   └── rate_limiter.dart
    ├── security/
    │   ├── biometric_auth_service.dart
    │   ├── certificate_pinning.dart
    │   ├── pinned_http_client.dart
    │   └── secure_deletion_service.dart
    └── utils/
        └── cookie_parser.dart

🌐 Rika Firenet API

The application communicates with the Rika Firenet web API via the following endpoints:

Endpoint Method Description
/web/login POST Authentication (email + password)
/web/summary GET Stove list (HTML parsing)
/api/client/{id}/status GET Complete stove state (JSON)
/api/client/{id}/controls POST Control update

API Characteristics:

  • Cookie-based authentication connect.sid
  • Confirmation polling (10 × 2s) after control changes
  • ⚠️ Temperatures as STRING ("16"-"30") in API
  • ⚠️ Complete update required (no partial PATCH)

⚙️ Background Tasks

The notification system uses WorkManager to execute periodic tasks:

Execution Flow:

  1. Load credentials (FlutterSecureStorage)
  2. Create API client (PersistCookieJar)
  3. Fetch stove data
  4. Auto-reauthentication if session expired
  5. Snapshot of monitored fields
  6. Comparison with previous snapshot
  7. Change detection + threshold verification
  8. Send local notifications
  9. Save new snapshot
  10. Update home widget data

Constraints:

  • Execution in separate isolate (no app context access)
  • Minimum interval: 15 minutes (WorkManager constraint)
  • Respects Android Doze mode (possible delays)

🚀 Installation & Setup

✅ Prerequisites

  • Flutter: 3.38.2 or higher
  • Dart: 3.10.0 or higher
  • Development Environment:
    • Android Studio (for Android)
    • Xcode (for iOS, requires macOS)
    • Linux development tools (for Linux)
  • Rika Firenet Account: https://www.rika-firenet.com

📥 Installation

# Clone the repository
git clone https://github.com/R-Gld/RikaFirenetUnofficialApp.git
cd RikaFirenetUnofficialApp

# Install dependencies
flutter pub get

# Generate code files (Freezed, JSON, i18n)
flutter pub run build_runner build --delete-conflicting-outputs

# Run the application (development)
flutter run

🏗️ Production Build

# Android APK (debug)
flutter build apk

# Android APK (release)
flutter build apk --release

# Android App Bundle for Play Store
flutter build appbundle --release

# iOS (requires macOS and Xcode)
flutter build ios --release

# Linux
flutter build linux --release

# macOS
flutter build macos --release

📱 Usage

🔐 First Connection

  1. Open the application
  2. Enter your Rika Firenet credentials:
    • Email
    • Password
  3. Automatic Detection: The app discovers all your stoves
  4. Automatic Navigation: If single stove, direct navigation to control screen

🌍 Change Language

  1. SettingsLanguage
  2. Select from 7 available languages or use System default
  3. App restarts with selected language

🏠 Add Home Screen Widget (Android)

  1. Long-press on home screen
  2. Select Widgets
  3. Find Rika Firenet widget
  4. Drag to home screen
  5. Widget shows current stove status
  6. Tap widget to open app

🎛️ Control the Stove

  • Turn ON/OFF: Toggle button with confirmation dialog
  • Temperature: Slider from 16°C to 30°C (Comfort mode)
  • Power: Slider from 0% to 100% (Manual mode)
  • Mode: Manual / Auto / Comfort selector
  • Refresh: Pull-to-refresh to update data

Changes may take 10-20 seconds to be confirmed by the stove.

🔔 Enable Notifications

  1. SettingsNotifications
  2. Enable toggle (Android permission requested if needed)
  3. Choose interval: 15, 30, 45, or 60 minutes
  4. Select fields to monitor:
    • By category: Status, Temperatures, Safety, Motors, Consumption
    • 23 priority fields available
  5. Optional: Configure thresholds for numerical fields
    • Example: "Ambient temperature > 25°C"
  6. Test: "Test Now" button to verify configuration

🔒 Enable Biometric Authentication

  1. SettingsSecurity
  2. Enable biometric toggle (fingerprint/Face ID authentication is tested)
  3. Confirm with your biometric to enable
  4. On next app launch: Biometric prompt appears before accessing the app
  5. Disable anytime: Toggle off in Settings or use "Use Password Instead" button

Only available on Android and iOS devices with biometric sensors.

🎨 Customize Interface

Advanced Controls:

  1. SettingsAdvanced Controls
  2. Enable/disable according to your needs:
    • ECO Mode
    • Room Power Request
    • Convection Fans
    • Frost Protection
    • Temperature Calibration
    • Bake Temperature

Information Panels:

  1. SettingsInformation Panels
  2. Choose panels to display:
    • Errors and Warnings
    • Safety Status
    • Sensors
    • Outputs
    • Statistics

⚙️ Configuration

🔑 Android Permissions

Required permissions in AndroidManifest.xml:

  • INTERNET: Communication with Rika Firenet API
  • POST_NOTIFICATIONS: Local notifications (Android 13+)
  • WAKE_LOCK: Keep active for background tasks
  • RECEIVE_BOOT_COMPLETED: Restart tasks after reboot
  • VIBRATE: Vibration during notifications
  • REQUEST_IGNORE_BATTERY_OPTIMIZATIONS: Background network access
  • USE_BIOMETRIC: Fingerprint authentication
  • USE_FINGERPRINT: Legacy fingerprint support

💾 Storage

Data Type Storage Method Encryption
Credentials (email/password) FlutterSecureStorage ✅ Yes
Session cookies PersistCookieJar ⚠️ No
App settings SharedPreferences ⚠️ No
Notification snapshots SharedPreferences ⚠️ No
Widget data HomeWidget (SharedPreferences) ⚠️ No

🔧 Development

🛠️ Useful Commands

# Static code analysis
flutter analyze

# Format code
flutter format lib/ test/

# Run tests
flutter test

# Tests with coverage
flutter test --coverage

# Clean build
flutter clean && flutter pub get

# Generate app icons
flutter pub run flutter_launcher_icons

# Generate i18n files
flutter pub get  # Auto-generates from ARB files

🏗️ Code Generation (Freezed)

# Single build (after model modifications)
flutter pub run build_runner build --delete-conflicting-outputs

# Watch mode (automatic regeneration)
flutter pub run build_runner watch --delete-conflicting-outputs

🌍 Adding New Language

  1. Create new ARB file: lib/l10n/app_XX.arb (XX = language code)
  2. Translate all 200+ strings from app_en.arb
  3. Add locale to lib/app.dart supportedLocales
  4. Add dropdown item in settings_screen.dart
  5. Run flutter pub get to generate Dart files

📝 Commit Structure

  • Clean and readable Git history
  • Descriptive commit messages
  • Feature branches for new developments
  • Pull requests for integration

🛡️ Security

For our complete security policy and vulnerability reporting procedures, please see SECURITY.md.

✅ Implemented Best Practices

  • Encrypted credentials at rest (FlutterSecureStorage)
  • No plaintext storage of passwords
  • HTTPS enforced: Automatic HTTP → HTTPS upgrade
  • Certificate pinning: SSL validation to prevent MITM attacks
  • Biometric authentication: Optional app lock with fingerprint/Face ID
  • Rate limiting: Client-side throttling with exponential backoff
  • Secure deletion: Multi-layer cryptographic erasure on logout
  • Secure session cookies with persistence
  • Auto-logout with confirmation dialog
  • Authentication error handling
  • Notification if reauthentication fails in background

⚠️ Considerations

  • Unofficial API (no RIKA support)
  • Use at your own risk
  • Test critical controls (power on/off)
  • Don't rely solely on this app for your installation's safety

🐛 Known Issues & Limitations

🌐 Rika API Limitations

  • Polling required: No websocket, confirmation via polling (10 × 2s)
  • Confirmation delay: 10-20 seconds to see applied changes
  • Session cookies: Can expire (auto-renewal implemented)
  • Temperature format: Temperatures MUST be strings in API

📱 Platform Limitations

  • Background notifications: Android only (not iOS/Linux)
  • Doze mode: WorkManager respects Android optimizations (possible delays)
  • Minimum interval: 15 minutes (WorkManager constraint)
  • Home widget: Android only

🚧 Potential TODOs

  • Temperature history graphs
  • Detailed event logs
  • iOS widgets for home screen
  • Deep linking from notifications
  • CSV data export
  • Offline mode with cache
  • Additional language support

🤝 Contributing

This project is open source and contributions are welcome! Whether you're fixing bugs, adding features, improving documentation, or adding translations, your help is appreciated.

For detailed contribution guidelines, development setup, code style, and more, please read our CONTRIBUTING.md.

Quick Start

  1. Fork the repository
  2. Clone your fork and install dependencies
  3. Create a feature branch: git checkout -b feature/AmazingFeature
  4. Make your changes following our code style guidelines
  5. Test your changes
  6. Commit using conventional commit format
  7. Push and open a Pull Request

See CONTRIBUTING.md for complete setup instructions, architecture guidelines, testing requirements, and more.


📄 License

This project is distributed under the MIT license. See the LICENSE file for details.


👨‍💻 Author

@R-Gld


🙏 Acknowledgments

  • RIKA for their excellent pellet and wood stoves
  • The Flutter community for the rich ecosystem and packages
  • All contributors and testers of the application

⚖️ Disclaimer

IMPORTANT: This application is NOT official and is NOT affiliated with RIKA or its subsidiaries. It uses the Rika Firenet web interface in an undocumented and unsupported manner.

⚠️ Warnings

  • Use at your own risk
  • No guarantee of continuous operation
  • The API may change without notice
  • Always test critical commands (power on/off)
  • Don't rely solely on this application for your installation's safety
  • RIKA is not responsible for damages caused by using this application

📞 In Case of Problem

If your stove malfunctions:

  1. Use the official Rika Firenet interface
  2. Contact RIKA support
  3. Don't modify critical parameters without technical knowledge

📞 Support


🔗 Useful Links


Made with ❤️ for the Rika stove owners community

About

🔥 Unofficial Flutter app for remote control & monitoring of RIKA pellet/wood stoves via Firenet. Smart notifications, Android widget, multilingual. MIT License.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors 2

  •  
  •