%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#2C3E50', 'primaryTextColor': '#fff', 'primaryBorderColor': '#16A085', 'lineColor': '#16A085', 'secondaryColor': '#E67E22', 'tertiaryColor': '#7F8C8D'}}}%%
flowchart TD
subgraph Complexity["Learning Curve"]
direction LR
Low["Low<br/>Node-RED"]
Med["Medium<br/>Home Assistant"]
High["High<br/>Eclipse Kura"]
end
subgraph Scale["Typical Scale"]
direction LR
Proto["Prototype<br/>< 100 devices"]
Home["Home<br/>< 500 devices"]
Ind["Industrial<br/>< 10,000 devices"]
end
subgraph Focus["Primary Focus"]
direction LR
Int["Integration<br/>APIs + Services"]
Auto["Automation<br/>Smart Home"]
Gate["Gateway<br/>Protocol Bridge"]
end
Low --> Proto
Med --> Home
High --> Ind
Proto --> Int
Home --> Auto
Ind --> Gate
style Low fill:#16A085,stroke:#2C3E50,color:#fff
style Med fill:#E67E22,stroke:#2C3E50,color:#fff
style High fill:#2C3E50,stroke:#16A085,color:#fff
1580 IoT Application Frameworks
1580.1 Learning Objectives
By the end of this chapter, you will be able to:
- Implement flow-based IoT applications using Node-REDβs visual programming
- Deploy Home Assistant for comprehensive home automation with 2,000+ device integrations
- Configure Eclipse Kura for industrial gateway applications with protocol translation
- Choose appropriate application frameworks based on use case requirements
- Integrate multiple protocols and services using visual programming nodes
- Build custom dashboards and automations without extensive coding
- Understand the trade-offs between rapid development and production scalability
1580.2 Prerequisites
Before diving into this chapter, you should be familiar with:
- Cloud IoT Platforms: Understanding cloud platform capabilities helps you decide when to use application frameworks as alternatives or complements
- MQTT Protocol: MQTT is the primary protocol for connecting devices to application frameworks
- Software Platforms Overview: The parent chapter provides context on the full IoT software stack
Application frameworks are tools that make building IoT apps easierβlike using LEGOs instead of carving wood.
Instead of writing thousands of lines of code, you can: - Drag and drop components in Node-RED - Configure rules in Home Assistantβs UI - Install pre-built connectors for common devices
Three popular frameworks:
| Framework | Best For | Learning Curve |
|---|---|---|
| Node-RED | Connecting APIs, sensors, databases | Low (visual) |
| Home Assistant | Smart home with many device brands | Medium |
| Eclipse Kura | Industrial gateways, protocol translation | High |
Real-world analogy: - Cloud platforms = Building a house from blueprints (powerful but complex) - Application frameworks = Using a pre-fab house kit (faster, simpler, but less flexible)
When to use frameworks: - Prototyping and proof-of-concept - Home automation projects - Integrating devices from different manufacturers - Creating dashboards without web development skills
When NOT to use frameworks: - High-performance applications (millions of messages/second) - Complex business logic requiring custom code - Strict enterprise compliance requirements
1580.3 Introduction
Application frameworks bridge the gap between raw cloud platform APIs and user-facing IoT applications. They provide higher-level abstractions, visual development environments, and pre-built integrations that accelerate development for common IoT scenarios. While cloud platforms like AWS IoT and Azure IoT provide foundational infrastructure, application frameworks focus on making that infrastructure accessible to developers with varying skill levels.
1580.4 Node-RED
Description: Flow-based programming tool for wiring together hardware devices, APIs, and online services.
1580.4.1 Key Features
- Visual programming (drag-and-drop nodes)
- Browser-based editor
- Extensive node library (IoT protocols, databases, APIs)
- JavaScript function nodes for custom logic
- Dashboard for visualization
1580.4.2 Example Flow Architecture
[MQTT Input Node] β [Function Node] β [Dashboard Gauge]
β
[Debug Node]
1580.4.3 Flow Code Example
// Function node: Convert Celsius to Fahrenheit
const tempC = msg.payload.temperature;
const tempF = (tempC * 9/5) + 32;
msg.payload = {
celsius: tempC,
fahrenheit: tempF
};
return msg;1580.4.4 Installation
# Install Node-RED
npm install -g --unsafe-perm node-red
# Run Node-RED
node-red
# Access at http://localhost:18801580.4.5 Common Nodes
| Node | Purpose | Example Use |
|---|---|---|
| MQTT in/out | Connect to MQTT brokers | Subscribe to sensor topics |
| HTTP request | Call REST APIs | Fetch weather data |
| Dashboard | Create UIs | Gauges, charts, buttons |
| Function | JavaScript logic | Data transformation |
| Switch | Route messages | Conditional branching |
| Delay | Rate limiting | Throttling messages |
1580.4.6 Strengths and Limitations
Strengths: - Rapid prototyping - Low/no code for simple flows - Huge community and node library - Easy integration across protocols
Limitations: - Not suitable for complex applications - Performance limits for high-throughput - Version control challenges (flows are JSON) - Limited testing framework
Typical Use Cases: - Home automation - Prototyping IoT applications - Data pipeline integration - Dashboard creation
1580.5 Home Assistant
Description: Open-source home automation platform focusing on local control and privacy.
1580.5.1 Key Features
- 2,000+ device integrations
- Automation engine (triggers, conditions, actions)
- Web-based UI (dashboards)
- Add-ons (additional services)
- Mobile apps (iOS/Android)
1580.5.2 Example Automation
# automations.yaml
automation:
- alias: "Turn on lights when motion detected"
trigger:
- platform: state
entity_id: binary_sensor.living_room_motion
to: 'on'
condition:
- condition: sun
after: sunset
action:
- service: light.turn_on
target:
entity_id: light.living_room
data:
brightness: 2551580.5.3 Automation Components
Triggers - What starts the automation: - State changes (sensor on/off) - Time-based (sunrise, 8:00 AM) - Events (button press, webhook) - Zone entry/exit (GPS tracking)
Conditions - Requirements that must be met: - Sun position (before/after sunset) - Device state (TV is on) - Time range (weekdays only) - Template conditions (complex logic)
Actions - What happens when triggered: - Turn devices on/off - Send notifications - Call services (play music) - Set variables
1580.5.4 Strengths and Limitations
Strengths: - Massive device ecosystem - Local-first (works without internet) - Strong privacy focus - Active community - Free and open source
Limitations: - Home automation focus (not industrial) - Complex configuration for advanced use - Resource intensive (Raspberry Pi minimum)
Typical Use Cases: - Smart home control - Home automation - Energy monitoring - Device integration hub
1580.6 Eclipse Kura
Description: Java/OSGi-based IoT gateway framework for edge computing.
1580.6.1 Key Features
- Modular architecture (OSGi bundles)
- Web-based management console
- Cloud connectivity (MQTT, REST)
- Protocol support (Modbus, CANbus, BLE)
- Container deployment
1580.6.2 Example Configuration
// Kura Cloud Service Configuration
public class SensorPublisher extends AbstractCloudApp {
@Override
protected void doUpdate() throws KuraException {
KuraPayload payload = new KuraPayload();
payload.addMetric("temperature", readTemperature());
payload.addMetric("timestamp", System.currentTimeMillis());
cloudClient.publish(new KuraMessage(payload));
}
}1580.6.3 Architecture Layers
βββββββββββββββββββββββββββββββββββββββ
β Cloud Services (MQTT/REST) β
βββββββββββββββββββββββββββββββββββββββ€
β Kura Core Services β
β (Configuration, Network, Clock) β
βββββββββββββββββββββββββββββββββββββββ€
β Protocol Bundles β
β (Modbus, CANbus, BLE, OPC UA) β
βββββββββββββββββββββββββββββββββββββββ€
β OSGi Runtime β
βββββββββββββββββββββββββββββββββββββββ€
β Linux / Gateway β
βββββββββββββββββββββββββββββββββββββββ
1580.6.4 Strengths and Limitations
Strengths: - Industrial-grade - Strong gateway focus - Extensive protocol support - Commercial support available (Eurotech)
Limitations: - Java/OSGi complexity - Heavy resource requirements - Smaller community than other frameworks
Typical Use Cases: - Industrial gateways - Protocol translation - Edge processing - Field deployments
1580.7 Framework Comparison
| Feature | Node-RED | Home Assistant | Eclipse Kura |
|---|---|---|---|
| Programming Model | Visual flows | YAML config | Java/OSGi |
| Target User | Developers, hobbyists | Home users | Industrial engineers |
| Device Integrations | 4,000+ nodes | 2,000+ | Industrial protocols |
| Local Processing | Yes | Yes | Yes |
| Cloud Integration | Easy (any) | Optional | Enterprise |
| Dashboard | Built-in | Built-in | Basic |
| Resource Needs | Low (Node.js) | Medium (Python) | High (Java) |
1580.8 Knowledge Check
1580.9 Summary
- Node-RED provides visual flow-based programming ideal for rapid prototyping, API integration, and dashboard creation, with 4,000+ community nodes but limited scalability for production web applications
- Home Assistant excels at smart home automation with 2,000+ device integrations, local-first architecture for privacy, and YAML-based configuration for automations triggered by state changes, time, or events
- Eclipse Kura serves industrial gateway applications with Java/OSGi architecture, supporting industrial protocols (Modbus, CANbus, OPC UA) but requiring more technical expertise and resources
- Framework selection depends on use case: Node-RED for integration prototypes, Home Assistant for multi-vendor smart homes, Eclipse Kura for industrial protocol translation
- All frameworks support local processing without cloud dependency, enabling offline operation and reduced latency
- Production migration often requires separating concerns: keep Node-RED for data flows, build dedicated web applications for user interfaces at scale
Platform Deep Dives: - Cloud IoT Platforms - AWS, Azure, Google Cloud - Edge Computing Platforms - AWS Greengrass, Azure IoT Edge, EdgeX - Device Management and Selection - Balena, Mender, platform selection
Development: - Programming Paradigms - Programming approaches - Prototyping Software - Development tools
Protocols: - MQTT - Primary messaging protocol - Modbus - Industrial protocol
1580.10 Whatβs Next
The next section covers Edge Computing Platforms, which bring cloud capabilities to local devices for reduced latency, offline operation, and bandwidth optimization. These platforms enable local processing and decision-making at the network edge.