← Portfolio
IoT Startup · ΟΠΑ · Ψηφιακή Καινοτομία · 2026

MoodLight —
HRV-Driven Ambient Intelligence

Real-time stress-detection IoT system — reads HRV from a smart ring and automatically adjusts ambient lighting & music, with zero manual input.

📡 Smart ring · Μέτρηση στρες σε real-time Arduino · C++ PWA · Android Market Validated · May 2026 Freemium · B2C+B2B 🎓 ΟΠΑ · Ψηφιακή Καινοτομία · 2026
91.7%
Purchase
Intent
4.17/5
Concept
Rating
~79%
Gross Margin
(Year 3)
18–20
Months to
Break-even
Summary — for recruiters
IoT Product Designer & Business Architect · ΟΠΑ · Ψηφιακή Καινοτομία · 2026
Built an end-to-end IoT startup: Arduino C++ firmware (HRV algorithm, BLE, PWM LED), an Android PWA (Web Bluetooth, Canvas dashboard), and a full business plan — market validation, 3-year financial projections, Freemium model.
Impact 91.7% purchase intent · 4.17/5 concept rating · LTV/CAC ~10× · break-even in 18–20 months · ~79% gross margin (Year 3)
Arduino · C++ Firmware HRV Algorithm Design Web Bluetooth / PWA IoT System Architecture Business Plan & Financials Market Validation

The Problem

Burnout and chronic stress are among today's biggest public-health risks. Students and young professionals usually notice only after it has already hurt their performance and sleep.

Two market gaps: (1) no reliable, real-time stress-measurement tool exists for everyday users; (2) environments don't adapt automatically to physiological state — smart home devices remain entirely manual.

How It Works

Four steps from heartbeat to relaxation — zero user action required:

💍
Smart Ring
MAX30102
HR · HRV · SpO₂
— BLE →
🧠
MoodBox
Arduino Uno
Stress Score 0–100
— PWM →
🌈
RGB LED
Ambient light
colour ↔ stress
+ UART
🎵
DFPlayer
Ambient audio
MP3 from SD
BLE / Wi-Fi → EU Cloud (GDPR) → Mobile App · Stress score only · No raw biometric data leaves the device

The MAX30102 uses PPG (measures heart rate via light on the skin) for the pulse · BLE (low-power Bluetooth) sends it to the MoodBox · PWM (rapid on/off pulsing) sets the LED's brightness/colour · UART (a simple serial link) passes the command to the speaker.

Processes in under 15 seconds · lighting + music activate at a score of 65+ · built-in false-positive check: exercise (high HRV) ≠ stress.

Calm
0 – 40
Green LED · No intervention
Moderate
41 – 64
Yellow LED · Passive monitoring
Stress
65 – 100
Red → warm LED · Ambient music

Under the Hood

Two components over BLE (Bluetooth): an Arduino MoodBox (C++ firmware) and an Android PWA (Vanilla JS, HTML5 Canvas), both built from scratch. The interesting part isn't the code — it's the design decisions behind it:

Roles: Hardware & firmware — solo. SW prototype — solo. Business plan (BMC — Business Model Canvas, a one-page business-model design tool, financials, UI/UX) — co-authored with a teammate.

Design Decision #1 — The Scoring Algorithm

Research shows HRV (heart-rate variability, measured as RMSSD) is a stronger autonomic-nervous-system indicator than heart rate alone, so the score weights it higher: ×40 vs ×30 for HR. Just as important, the baseline isn't a population average — it's each user's own resting rhythm, learned during setup. That's what stops 170 BPM while running from registering as stress.

C++ · MoodLight_Simulation.ino
// Personal baseline learned at startup (5-loop incremental avg)
// — not a population norm, not a fixed constant
float baselineHR = 70.0, baselineRMSSD = 35.0;

int calcStress(float hr, float rmssd) {
  float refHR = baselineReady ? baselineHR : 70.0;
  float refR  = baselineReady ? baselineRMSSD : 35.0;

  float s = 50.0
    + ((hr - refHR)  / max(refHR, 1.0f)) * 30.0   // HR contribution
    + ((refR - rmssd) / max(refR,  1.0f)) * 40.0;  // HRV weighted higher

  return constrain((int)s, 0, 100);
  // constrain() prevents negative scores during exercise (high HR + high HRV)
  // key false-positive prevention: running at 170 BPM ≠ stress
}
Design Decision #2 — Intervention Logging in the App

The dashboard doesn't just show a value — it shows when the system intervened and by how much stress dropped. That's not a technical detail, it's the core retention loop: the user sees that MoodLight worked, which no competing product offers.

JavaScript · app.js
// Each intervention stored with timestamp, description, and stress delta
// — user sees the impact, not just a raw number
const periodsData = {
  week: {
    events: [
      { time: 'Tue 10:12', desc: 'Stress spike · light + music', delta: '-22pts' },
      { time: 'Wed 14:33', desc: 'Auto intervention',           delta: '-18pts' },
      { time: 'Fri 16:05', desc: 'Auto intervention',           delta: '-17pts' },
      { time: 'Sat 09:20', desc: 'Low stress · no intervention', delta: '—' },
    ]
  }
};

// Tapping a chart dot highlights the list item — and vice versa
// Bidirectional linking: chart → list, list → chart
function highlightEvent(idx) {
  document.querySelectorAll('.event-item').forEach((el, i) => {
    el.classList.toggle('active', i === idx);
  });
}

Competitive Advantage

The only system combining measurement + lighting + music into one automated, privacy-first product.

Feature Oura Ring Philips Hue Spotify Calm App MoodLight
HR/HRV Measurement
Smart lighting
Relaxation music
Automatic intervention
Privacy-first / EU data ~~
Price €299–499€150–300€10.99/mo€69.99/yr€89.99 + €15/mo

Business Model

Freemium: one-time hardware bundle + recurring subscription. From Year 2, B2B expansion into corporate wellness programmes.

B2C — Hardware
€89.99
One-time bundle. COGS ~€37.50 → Gross margin ~58%. E-commerce + Amazon EU.
B2C — Premium
€15 /mo
Full HRV trends, AI assistant, Spotify integration. 3-year LTV: €540/user.
B2B — Bulk (Year 2+)
€69 /unit (10+)
Corporate packages. Direct sales / LinkedIn.
B2B — Subscription (Year 2+)
€12 /user/mo
HR dashboard with anonymised stress trends. GDPR Article 9 by design (EU health-data protection rules).

Financial Projections

Metric Year 1 (2026) Year 2 (2027) Year 3 (2028)
HW Units5001.5004.000
HW Revenue€44.995€134.985€319.960
Premium Subscribers2008002.500
Subscription Revenue€24.000€96.000€330.000
Total Revenue€68.995€230.985€649.960
Gross Margin~72%~75%~79%
EBITDA−€71.355€17.835€322.460
LTV / CAC~10×  ·  CAC ~€55 (Y1) → ~€30 (Y3)

HW = hardware · EBITDA = earnings before interest, tax, depreciation & amortisation · LTV/CAC = customer lifetime value vs. cost to acquire a customer

Market Validation

Two phases: (1) a quantitative survey of the target demographic, controlled sample (Google Forms, May 2026); (2) qualitative user testing, n=5, with the SW prototype.

Hypothesis 1 — Demand
✓ Confirmed
83.4% experience stress regularly · 75% already use music or lighting to relax
Hypothesis 2 — Value
✓ Strongly confirmed
Concept rating 4.17/5 · 91.7% purchase intent · User: «You don't need to remember to open it»
Hypothesis 3 — Privacy
↻ Overturned
Privacy concern only 2.50/5 · 58.3% score 1–2 → privacy-first is a differentiator, not a defensive move
User Testing (n=5)
Avg 4.2/5 · Word-of-mouth
Spontaneous recommendation to a friend during testing → early product-market fit signal. Feedback: 30-day trial policy.

Market Size

$20B+
TAM (Total Addressable Market) · Global stress mgmt + wearables + IoT wellness
€1.5–2B
SAM (Serviceable Available Market) · EU consumer wellness IoT, ages 18–35
€60K–750K
SOM (Serviceable Obtainable Market) · GR + DE + NL, Year 1–3 (bottom-up)

Roadmap: MVP → Final Product

Element MVP (Current) Final Product
Sensor2× Potentiometer (TinkerCAD)MAX30102 PPG Smart Ring · BLE
HubArduino Uno R3Custom PCB / MoodBox (ESP32)
ActuatorsRGB LED + Piezo BuzzerSmart Bulbs + LED Strip + Speaker
AppPWA · HTML/JS · Web BluetoothNative iOS & Android
CloudLocal processingEU Cloud · GDPR · LLM API

Next Steps

Clinical validation (50+ users) → CE marking → €150K angel round → Product Hunt launch → 30-day trial policy → MediaMarkt pilot (B2B)

Σπήλιος Δημακόπουλος · IoT Engineer & Business Designer — MoodLight · ΟΠΑ · 2026
✓ EMAIL COPIED