ATLASPortal
Betreiber
ATLAS · EINE INTEGRIERTE ENERGIE-PLATTFORM

Von der Erzeugung
bis zur Anwendung.

Ein System · ein Vertrag · ein verantwortlicher Partner.

Peak-Shaving Netzkosten ↓ BESS Speicher E-Flotte Depot-Laden Contracting 0 € Einstieg

Deine Werkzeuge

Alle Module · Rolle: Betreiber
… und viele weitere Module kommen dazu. ATLAS wächst modular.
Admin & Reports
Agenten
Arbeits-Warteschlange
Dienste
Laufende Tool-Freigaben — 30 Tage Laufzeit, hier verlängern oder widerrufen.
⚡ Energiezentrale · 24h
QuelleReisenbauer.Solutions
PV
Speicher
Netz
SOC %
Alle registrierten Nutzer — Rolle ändern oder sperren.
Gescannte Visitenkarten (Kontakte & Firmen).

Zu erledigen

In Arbeit

Erledigt

Rat der Weisen · Experten-Gremium — Voten live aus Supabase (Tabelle rat_sessions/rat_votes)
RAT wird geladen …
ATLAS-Agenten · 10 Fachbots + 14 Automations-Pipelines — klicke auf einen Bereich, um zu sehen, wie er arbeitet.
Agenten werden geladen …
n8n-Workflows · Live-Status
Status wird geladen …
Luftbild-Solar-Screening · Airbus via SkyWatch — Satellitendaten zur Lead-Generierung
Preise & Produkte (Airbus via SkyWatch)
ProduktAuflösungArchiv $/km²Einsatz
SPOT1,5 m$3,50 · Min. 1 km²Großflächiges Screening ✅ Einstieg
Pléiades50 cm$10,00Einzelobjekte
Pléiades Neo30 cm$22,50Präzise Dachvermessung
WorldDEM-12mHöhenmodell$7,21Verschattungsanalyse
✅ Axpo-Bestätigung (05.09.2026)

Der Data Analyst der Axpo Gruppe hat bestätigt, dass Axpo den Airbus-Service über SkyWatch nutzt. Seine Angabe: SPOT · 1,5 m · $3,50/km² · Mindestbestellung 1 km² — „am preiswertesten". Damit ist SPOT als Einstieg real verifiziert (nicht nur Herstellerangabe).

Workflow

Gebiet festlegen → Satellitenbild (SPOT) → Dachflächen + Ausrichtung erkennen → kWp schätzen → mit Excel-Leads abgleichen → Kontaktplan.
Rollen: Paul (Scoring) · Lena (Ertragsprognose) · Anna (Visualisierung).

🛰️ Beispiel-Aufnahme · Würth Handelsges.m.b.H.
Satellitenaufnahme Würth Handelsges.m.b.H., Böheimkirchen
📍 Würth Straße 1, 3071 Böheimkirchen
🛰️ 48.1911 N · 15.7701 O · Esri World Imagery (Zoom 17)
🏛️ FN 51475 Z · HG St. Pölten
Solar-Potenzial-Rechner
Visitenkarten-Scanner · Foto hochladen (oder Handy-Kamera) → OCR → Kontakt in Supabase
Neue Karte scannen
Gescannte Kontakte
Lädt…
Smart Meter Watch · Anlage Hochgschaid 69, 3073 Stössing · Live + Wetter
⚠ Leistungs-Alarm ✓ OK
Verlauf · PV-Einspeisung
PV-Einspeisung Temperatur (°C, nur „Heute")
Verlauf · Verbrauch (heute, Minuten)
Verbrauch Alarm-Schwelle
7-Tage-Prognose · PV-Ertrag & Wetter
PV-Ertrag (kWh/Tag) Regen (mm) ☀︎ = Einstrahlung · °C = Tageshöchstwert
ATLAS Smart Control · Heizstab-Steuerung —
Überschuss (PV)
— W
nutzbare Einspeisung
Schwellwert
— W
Kalender + Wetter angepasst
Heizstab
—
Steuerungs-Entscheidung
Kalender (heute)
—
Feiertag · Ferien · Arbeitstag
Wetter
—
Bewölkung
Kalender · Feiertage & Ferien —
Feiertag Ferien Wochenende Heute Tag anklicken = Details
—
Spotmarkt · EPEX Day-ahead (Österreich) — ct/kWh
Spotpreis (ct/kWh) Börsenpreis-Verlauf Quelle: Spotty Energy · 15-Minuten-Takt
Außendienst-Berichte · OSINT · aus dem Visitenkarten-Scan (Supabase firmen_berichte)
Lade Berichte …
ATLAS Smart Control · SmartMeterWatch-Integration · MyPV-Heizstab + Kalender/Wetter-Kontext Demo-Ready

1 · Was es tut

ATLAS liest Echtzeit-Messwerte (10 s) und kombiniert sie mit Kalender- (Feiertag/Ferien/Heizperiode) und Wetter-Prognose (Bewölkung). Ergebnis: Der Heizstab lädt Warmwasser automatisch, wenn PV-Überschuss da ist — Überschuss wird genutzt statt eingespeist.

SmartMeterWatch Dongle (10-s-Takt) ↓ Supabase Edge Function „atlas-control" (liest Messwerte + Kalender + Wetter, entscheidet) ↓ MyPV REST-API ↓ Heizstab lädt = Überschuss statt Einspeisung

2 · Datenquellen

SmartMeterWatch

Bereits konfiguriert. Felder: instant_power_net, instant_power_produced, instant_power_consumed. Takt 10 s / 2 min.

Kalender

Österreich-Feiertage (kostenlos): holidays-api.azurewebsites.net + kundenspezifische Ferien/Heizperiode manuell in atlas_calendar.

Wetter

OpenMeteo (kostenlos, kein Key): Bewölkung, Temperatur, Wind — Stössing 48.117 / 15.817.

3 · Deployment · Schritt 1 — Tabellen (SQL)

-- Feiertage + Ferien + Kontexte CREATE TABLE public.atlas_calendar ( id uuid PRIMARY KEY DEFAULT gen_random_uuid(), uid text NOT NULL, date date NOT NULL, event_type text NOT NULL, -- 'feiertag','ferien_start','ferien_end','arbeitstag','heizperiode_start' description text, occupancy_expected text DEFAULT 'unknown', -- 'absent','partial','present' custom boolean DEFAULT false, created_at timestamptz DEFAULT now(), UNIQUE(uid, date) ); CREATE INDEX atlas_calendar_uid_date ON public.atlas_calendar(uid, date); -- Wetter-Cache (optional) CREATE TABLE public.atlas_weather_cache ( id uuid PRIMARY KEY DEFAULT gen_random_uuid(), uid text NOT NULL, date date NOT NULL, hour int NOT NULL, cloud_cover_percent int, temperature_c numeric, wind_speed_ms numeric, fetched_at timestamptz DEFAULT now(), UNIQUE(uid, date, hour) );

4 · Deployment · Schritt 2 — Edge Function „atlas-control"

import { serve } from "https://deno.land/std@0.208.0/http/server.ts"; const SUPABASE_URL = Deno.env.get("SUPABASE_URL"); const SUPABASE_SERVICE_ROLE = Deno.env.get("SUPABASE_SERVICE_ROLE_KEY"); const MYPV_API_KEY = Deno.env.get("MYPV_API_KEY"); const MYPV_DEVICE_ID = Deno.env.get("MYPV_DEVICE_ID"); serve(async (req) => { if (req.method !== "POST") return new Response("Method not allowed", { status: 405 }); const { uid = "5341475905ea7789" } = await req.json().catch(() => ({})); const today = new Date().toISOString().split("T")[0]; // 1. Kalender-Kontext const calRes = await fetch(`${SUPABASE_URL}/rest/v1/atlas_calendar?uid=eq.${uid}&date=eq.${today}`, { headers: { Authorization: `Bearer ${SUPABASE_SERVICE_ROLE}` } }); const calData = await calRes.json(); const calendar = calData.length > 0 ? calData[0] : null; // 2. Wetter-Prognose (OpenMeteo) const wRes = await fetch(`https://api.open-meteo.com/v1/forecast?latitude=48.117&longitude=15.817&hourly=cloud_cover,temperature_2m&timezone=Europe/Vienna&forecast_days=1`); const wData = await wRes.json(); const weather = { cloud_cover_percent: wData.hourly.cloud_cover[new Date().getHours()] || 50 }; // 3. Aktueller Messwert const rRes = await fetch(`${SUPABASE_URL}/rest/v1/atlas_readings?uid=eq.${uid}&order=ts.desc&limit=1`, { headers: { Authorization: `Bearer ${SUPABASE_SERVICE_ROLE}` } }); const rData = await rRes.json(); const reading = rData.length > 0 ? rData[0] : null; if (!reading) return new Response(JSON.stringify({ error: "No readings" }), { status: 400 }); // 4. Intelligente Schwellwert-Berechnung let heaterThreshold = 2000; if (calendar?.occupancy_expected === "absent") heaterThreshold = 5000; else if (calendar?.occupancy_expected === "present") heaterThreshold = 1500; if ((weather.cloud_cover_percent || 50) > 80) heaterThreshold = Math.max(heaterThreshold - 500, 1000); else if ((weather.cloud_cover_percent || 50) < 20) heaterThreshold += 500; // 5. Steuerung: Überschuss = negative Netto-Leistung const excess = -reading.instant_power_net; const action = excess >= heaterThreshold ? "on" : "off"; const mypv = await fetch(`https://api.my-pv.com/v1/devices/${MYPV_DEVICE_ID}/control`, { method: "POST", headers: { Authorization: `Bearer ${MYPV_API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify(action === "on" ? { power: Math.max(excess, 3000) } : { power: 0 }), }); return new Response(JSON.stringify({ uid, timestamp: new Date().toISOString(), excess_kw: (excess / 1000).toFixed(2), calendar_context: calendar?.event_type || "normal_day", weather_cloud_cover: weather.cloud_cover_percent, threshold_adjusted_w: heaterThreshold, action }), { headers: { "Content-Type": "application/json" } }); });

5 · Deployment · Schritt 3 — Secrets + Cron

# Secrets (Supabase CLI) supabase secrets set MYPV_API_KEY="<dein-key>" supabase secrets set MYPV_DEVICE_ID="<device-id>" -- Cron-Trigger (alle 2 Minuten) SELECT cron.schedule('atlas-control-2min', '*/2 * * * *', $$ SELECT net.http_post( 'https://henfrhwlkqvjxxdzhqtv.supabase.co/functions/v1/atlas-control', '{"uid":"5341475905ea7789"}', headers := '{"Authorization":"Bearer <SERVICE_ROLE_KEY>"}'::jsonb ); $$);

6 · Rollout-Plan

Woche 1 Tabellen + Secrets · Woche 2 Edge Function deployen + testen · Woche 3 Kalender-Daten eintragen · Woche 4 Dashboard-Widget · Woche 5 Wetter live · Woche 6 Demo-Video + Kundenfreigabe
Demo-Kunde: Sigi Muhr (Hochgschaid 69, 3073 Stössing) · Dongle-UID: 5341475905ea7789 · Supabase: henfrhwlkqvjxxdzhqtv · MyPV Device: ausstehend (Sigi besorgt) · USP: Messung → automatische Steuerung + KI-Kontext · Pricing-Idee: €99–199/Monat „Smart Control"-Add-on
ATLAS-Assistent
ATLAS-Assistent
Beantwortet Ihre Fragen · online
Tipp: /Grill me = deine Energie-Idee kritisch prüfen · /normal = zurück