/** Mock data for development preview when backend is unavailable. */ import type { DashboardData } from "./api"; export const MOCK_DATA: DashboardData = { timestamp: new Date().toISOString(), weather: { primary: { location: "Leverkusen", temp: 8, feels_like: 5, humidity: 72, wind_kmh: 18, description: "Teilweise bewölkt", icon: "⛅", forecast: [ { date: "2026-03-02", max_temp: 10, min_temp: 3, icon: "⛅", description: "Partly cloudy" }, { date: "2026-03-03", max_temp: 12, min_temp: 5, icon: "🌤️", description: "Sunny intervals" }, { date: "2026-03-04", max_temp: 7, min_temp: 1, icon: "🌧️", description: "Rain" }, ], }, secondary: { location: "Rab, Kroatien", temp: 16, feels_like: 15, humidity: 58, wind_kmh: 12, description: "Sonnig", icon: "☀️", forecast: [ { date: "2026-03-02", max_temp: 18, min_temp: 10, icon: "☀️", description: "Sunny" }, { date: "2026-03-03", max_temp: 19, min_temp: 11, icon: "🌤️", description: "Mostly sunny" }, { date: "2026-03-04", max_temp: 17, min_temp: 9, icon: "⛅", description: "Partly cloudy" }, ], }, hourly: [ { time: "14:00", temp: 8, icon: "⛅", precip_chance: 10 }, { time: "15:00", temp: 9, icon: "🌤️", precip_chance: 5 }, { time: "16:00", temp: 8, icon: "⛅", precip_chance: 15 }, { time: "17:00", temp: 7, icon: "☁️", precip_chance: 25 }, { time: "18:00", temp: 6, icon: "☁️", precip_chance: 30 }, { time: "19:00", temp: 5, icon: "🌧️", precip_chance: 55 }, { time: "20:00", temp: 4, icon: "🌧️", precip_chance: 60 }, { time: "21:00", temp: 4, icon: "☁️", precip_chance: 35 }, ], }, news: { articles: [ { id: 1, source: "tagesschau", title: "Bundesregierung beschließt neues Infrastrukturpaket", url: "#", category: "politik", published_at: new Date(Date.now() - 3600000).toISOString() }, { id: 2, source: "heise", title: "Intel stellt neue Arc-Grafikkarten vor: Battlemage kommt im Q2", url: "#", category: "tech", published_at: new Date(Date.now() - 7200000).toISOString() }, { id: 3, source: "spiegel", title: "DAX erreicht neues Allzeithoch trotz geopolitischer Spannungen", url: "#", category: "wirtschaft", published_at: new Date(Date.now() - 10800000).toISOString() }, { id: 4, source: "google_finance", title: "NVIDIA reports record quarterly revenue driven by AI demand", url: "#", category: "wirtschaft", published_at: new Date(Date.now() - 14400000).toISOString() }, { id: 5, source: "tagesschau", title: "Klimagipfel: Neue Vereinbarungen zum CO2-Ausstoß beschlossen", url: "#", category: "politik", published_at: new Date(Date.now() - 18000000).toISOString() }, { id: 6, source: "heise", title: "Linux 6.14 Kernel bringt massiven Performance-Boost für AMD Zen 5", url: "#", category: "tech", published_at: new Date(Date.now() - 21600000).toISOString() }, { id: 7, source: "google_de_finance", title: "Rheinmetall-Aktie steigt um 8% nach neuem NATO-Auftrag", url: "#", category: "wirtschaft", published_at: new Date(Date.now() - 25200000).toISOString() }, { id: 8, source: "spiegel", title: "Studie: Homeoffice bleibt auch 2026 die beliebteste Arbeitsform", url: "#", category: "allgemein", published_at: new Date(Date.now() - 28800000).toISOString() }, { id: 9, source: "heise", title: "Docker Desktop 5.0: Neue Container-Management-Features im Überblick", url: "#", category: "tech", published_at: new Date(Date.now() - 32400000).toISOString() }, { id: 10, source: "tagesschau", title: "Europäische Zentralbank senkt Leitzins um 0.25 Prozentpunkte", url: "#", category: "wirtschaft", published_at: new Date(Date.now() - 36000000).toISOString() }, { id: 11, source: "google_defense", title: "NATO increases defense spending targets for 2027", url: "#", category: "politik", published_at: new Date(Date.now() - 39600000).toISOString() }, { id: 12, source: "spiegel", title: "Unraid 7.0: Das neue Server-Betriebssystem im Test", url: "#", category: "tech", published_at: new Date(Date.now() - 43200000).toISOString() }, ], total: 12, limit: 20, offset: 0, }, servers: { servers: [ { name: "Daddelolymp", host: "10.10.10.10", online: true, uptime: "42 days, 7:23", cpu: { usage_pct: 38, cores: 16, temp_c: 52 }, ram: { used_gb: 24.3, total_gb: 32, pct: 76 }, array: { status: "normal", disks: [ { name: "Disk 1", status: "active", size: "8 TB", used: "5.2 TB" }, { name: "Disk 2", status: "active", size: "8 TB", used: "6.1 TB" }, { name: "Disk 3", status: "active", size: "4 TB", used: "2.8 TB" }, { name: "Parity", status: "active", size: "8 TB", used: "-" }, { name: "Cache", status: "active", size: "1 TB", used: "320 GB" }, ], }, docker: { running: 14, containers: [ { name: "gitlab", status: "running", image: "gitlab/gitlab-ce" }, { name: "n8n", status: "running", image: "n8nio/n8n" }, { name: "postgres", status: "running", image: "postgres:15" }, { name: "daily-briefing", status: "running", image: "daily-briefing" }, { name: "jukebox-vibe", status: "running", image: "jukebox-vibe" }, { name: "redis", status: "running", image: "redis:7" }, { name: "vikunja", status: "running", image: "vikunja/vikunja" }, { name: "nginx", status: "running", image: "nginx:alpine" }, ], }, }, { name: "Moneyboy", host: "192.168.1.100", online: true, uptime: "12 days, 14:52", cpu: { usage_pct: 12, cores: 10, temp_c: 41 }, ram: { used_gb: 8.7, total_gb: 16, pct: 54 }, array: { status: "normal", disks: [ { name: "Disk 1", status: "active", size: "4 TB", used: "1.8 TB" }, { name: "Disk 2", status: "active", size: "4 TB", used: "2.1 TB" }, { name: "Cache", status: "active", size: "500 GB", used: "180 GB" }, ], }, docker: { running: 6, containers: [ { name: "freqtrade", status: "running", image: "freqtradeorg/freqtrade" }, { name: "plex", status: "running", image: "plexinc/pms-docker" }, { name: "nextcloud", status: "running", image: "nextcloud" }, ], }, }, ], }, ha: { online: true, lights: [ { entity_id: "light.wohnzimmer", name: "Wohnzimmer", state: "on", brightness: 80 }, { entity_id: "light.schlafzimmer", name: "Schlafzimmer", state: "off", brightness: 0 }, { entity_id: "light.kueche", name: "Küche", state: "on", brightness: 100 }, { entity_id: "light.flur", name: "Flur", state: "off", brightness: 0 }, { entity_id: "light.badezimmer", name: "Badezimmer", state: "on", brightness: 60 }, { entity_id: "light.buero", name: "Büro", state: "off", brightness: 0 }, { entity_id: "light.balkon", name: "Balkon", state: "off", brightness: 0 }, { entity_id: "light.gaestezimmer", name: "Gästezimmer", state: "off", brightness: 0 }, ], covers: [ { entity_id: "cover.wohnzimmer", name: "Wohnzimmer Rollo", state: "open", position: 100 }, { entity_id: "cover.schlafzimmer", name: "Schlafzimmer Rollo", state: "closed", position: 0 }, { entity_id: "cover.kueche", name: "Küche Rollo", state: "open", position: 75 }, ], sensors: [ { entity_id: "sensor.temp_wohnzimmer", name: "Wohnzimmer", state: 21.5, unit: "°C" }, { entity_id: "sensor.temp_aussen", name: "Außen", state: 7.8, unit: "°C" }, { entity_id: "sensor.temp_schlafzimmer", name: "Schlafzimmer", state: 19.2, unit: "°C" }, ], lights_on: 3, lights_total: 8, }, mqtt: { connected: true, entities: [ { topic: "unraid/daddelolymp/cpu_temp", value: 52, timestamp: Date.now() / 1000 - 5, name: "Cpu Temp", category: "unraid" }, { topic: "unraid/daddelolymp/array_status", value: "normal", timestamp: Date.now() / 1000 - 12, name: "Array Status", category: "unraid" }, { topic: "unraid/moneyboy/cpu_temp", value: 41, timestamp: Date.now() / 1000 - 8, name: "Cpu Temp", category: "unraid" }, { topic: "zigbee2mqtt/wohnzimmer/temperature", value: 21.5, timestamp: Date.now() / 1000 - 30, name: "Temperature", category: "zigbee2mqtt" }, { topic: "zigbee2mqtt/wohnzimmer/humidity", value: 48, timestamp: Date.now() / 1000 - 30, name: "Humidity", category: "zigbee2mqtt" }, { topic: "frigate/events/front_door", value: "person", timestamp: Date.now() / 1000 - 120, name: "Front Door", category: "frigate" }, ], }, tasks: { private: { open: [ { id: 101, title: "Garten winterfest machen", done: false, priority: 3, project_name: "Haus & Garten", due_date: "2026-03-05" }, { id: 102, title: "Heizung warten lassen", done: false, priority: 2, project_name: "Haus & Garten", due_date: "2026-03-10" }, { id: 103, title: "Projekt-Bericht abgeben", done: false, priority: 4, project_name: "Jugendeinrichtung", due_date: "2026-03-03" }, { id: 104, title: "Elternabend planen", done: false, priority: 1, project_name: "Jugendeinrichtung", due_date: null }, { id: 105, title: "Neue Pflanzen bestellen", done: false, priority: 1, project_name: "Haus & Garten", due_date: null }, ], done: [ { id: 106, title: "Müll rausbringen", done: true, priority: 1, project_name: "Haus & Garten", due_date: null }, ], open_count: 5, }, sams: { open: [ { id: 201, title: "Daily Briefing Dashboard refactoren", done: false, priority: 4, project_name: "OpenClaw AI", due_date: "2026-03-02" }, { id: 202, title: "n8n Workflows aufräumen", done: false, priority: 3, project_name: "OpenClaw AI", due_date: null }, { id: 203, title: "Trading Bot backtesting", done: false, priority: 2, project_name: "Sam's Wunderwelt", due_date: null }, ], done: [ { id: 204, title: "Jukebox Drag & Drop Feature", done: true, priority: 3, project_name: "OpenClaw AI", due_date: null }, ], open_count: 3, }, }, };