HansOS

Ersteinrichtung — Admin-Konto anlegen

{{ error }}

HansOS

{{ siteSub || '\u00a0' }}

{{ error }}
{{ sleepClock.time }}
{{ sleepClock.date }}
Keine Verbindung zum Server seit {{ new Date(offlineSince).toLocaleTimeString('de-DE', { hour:'2-digit', minute:'2-digit' }) }} – angezeigte Werte sind veraltet
{{ t.label }}

Bewässerung

Livewerte, Boden & Zisterne im Verlauf

Gartenverlauf

{{ irHist.error }}

{{ irHist.busy ? 'Verlauf wird geladen …' : 'Noch keine Messwerte im gewählten Zeitraum. Die Aufzeichnung beginnt mit diesem Update, sobald aktuelle Messwerte eintreffen.' }}

%°C {{ g.pct }}{{ g.temp }} {{ t.label }}
{{ irChart.hover.label }}
{{ p.label }}: {{ deNum(p.value,1) }} {{ p.unit }}
Keine zeitnahen Messwerte

Links Prozent, rechts Temperatur. Linien per Legende ein-/ausblenden; mit Maus oder Finger Werte ansehen. Veraltete Werte werden nicht als neue Messungen gespeichert, größere Messlücken nicht verbunden.

{{ irMsg }}

{{ ir.error }}

Zisterne
{{ irValue('level', '%') }} Trockenlaufsperre bei ≤ {{ ir.cfg?.min_level }} %
{{ ir.cfg?.enabled ? 'Automatik aktiviert' : 'Automatik deaktiviert' }}

{{ irPhase }}

{{ ir.active.name }} · noch {{ Math.ceil(ir.remaining / 60) }} min

Wartend: {{ ir.queue.join(' → ') }}

Außen {{ irValue('temperature','°C') }}Bodenfeuchte {{ irValue('moisture','%') }}Boden {{ irValue('soil_temperature','°C') }}Frostsperre {{ irState('frost', 'GESPERRT', 'frei') }}Zisternenpumpe {{ irState('pump_status') }}Trafo {{ irState('transformer_status') }}
{{ ir.reasons.length ? 'Aktuelle Sperrgründe' : 'Allgemeine Freigabe vorhanden' }}
  • {{ r }}

Nächster aktiver Zeitplan oder „Jetzt bewässern“. Alle Bedingungen werden während des Laufs weiter geprüft. Sensorzuordnungen können einzelne Kreise zusätzlich sperren (siehe Kreisdetails).

Bewässerungskreise

Noch keine Kreise angelegt. Unter Konfiguration → Fahrzeuge & Garten → Bewässerung hinzufügen.

{{ i+1 }} · {{ z.name }}{{ irState('zone:'+z.id) }}

{{ z.plant === 'hedge' ? 'Hecken' : 'Rasen' }} · {{ z.start }} · {{ z.minutes }} min

{{ z.enabled ? irDays.filter((d,j)=>z.days.includes(j)).join(', ') || 'Keine Wochentage' : 'Kreis deaktiviert' }}

  • {{ r }}

Gardena · Sensoren & Water Control

Lokale Sensoren & Water Control · Messwerte mit Originalzeitstempel

{{ gd.connected ? 'Gateway verbunden' : gd.enabled ? 'Gateway nicht verbunden' : 'Gateway deaktiviert' }} · Letzter Abruf {{ new Date(gd.received_at*1000).toLocaleString('de-DE') }}

{{ gdMsg }}

{{ gd.error }}

Gardena-Laufzeit fehlt. Container mit dem aktuellen Dockerfile neu bauen.

Noch keine Geräte geladen. Gateway konfigurieren, aktivieren und aktualisieren.

{{ d.name }}

{{ d.model }} · ID …{{ d.id.slice(-8) }}

{{ d.online?.value == null ? 'Status unbekannt' : gdField(d.online,'') + (!d.online.fresh ? ' (älter)' : '') }}
Bodenfeuchte{{ gdField(d.moisture,'%') }}{{ gdAge(d.moisture) }}
{{ d.sensor ? 'Bodentemperatur' : 'Temperatur' }}{{ gdField(d.temperature,'°C') }}{{ gdAge(d.temperature) }}
Batterie{{ gdField(d.battery,'%') }}{{ gdAge(d.battery) }}Statuscode {{ d.battery_status.value }}
{{ d.signal?.key?.includes('rf_link_quality') ? 'Signalqualität' : 'Signalstärke' }}{{ gdField(d.signal,d.signal?.key?.includes('rf_link_quality') ? '%' : 'dBm') }}{{ gdAge(d.signal) }}
Ventil {{ v.id+1 }}: {{ v.open == null ? 'unbekannt' : v.open ? 'offen' : 'geschlossen' }}{{ !v.fresh ? ' · veraltet/unklar' : '' }}

{{ v.ts ? 'Status von '+new Date(v.ts*1000).toLocaleString('de-DE') : 'Kein Rückmeldezeitpunkt' }} · Tasterlaufzeit {{ v.button_seconds == null ? 'unbekannt' : v.button_seconds/60+' min' }}

Direkte manuelle Gerätebedienung. Die Sensorzuordnung sperrt HansOS-Automatikläufe; Zeitpläne in der Gardena-App werden dadurch nicht verändert. Ein bestätigter Befehl ist noch keine frische Ventilrückmeldung.

Kachel festhalten und ziehen (Touch: kurz gedrückt halten), Bereiche an der lila Leiste. Jede Kachel lässt sich zwischen „Status“ und eigenen Bereichen verschieben. Wird sofort für alle Geräte gespeichert. –
⠿Energiefluss – Bereich verschieben
Wechselrichter nicht erreichbarDer Energiefluss erscheint, sobald Daten kommen.
Energiedaten werden geladen …
⠿Status – Bereich verschieben
{{ d.name }}
{{ devText(d).v }}{{ devText(d).u }}
{{ d.room || d.type_label }}
Aktualisiert: {{ wmpLastUpdate }} Lade Daten...
Status
Betriebsmodus
{{ modes[wmp.betriebsmodus] ?? '–' }}
Party für {{ wmp.party_hours }} h
Urlaub für {{ wmp.urlaub_tage }} Tage
Wärmepumpe
{{ wpStatusText() }}
Leistung
{{ wmp.wp_power_w != null ? kwNum(wmp.wp_power_w / 1000) : '–' }} {{ kwUnit(wmp.wp_power_w != null ? wmp.wp_power_w / 1000 : null) }}
L1 {{ wmp.wp_power_phases[0] }} · L2 {{ wmp.wp_power_phases[1] }} · L3 {{ wmp.wp_power_phases[2] }} W
{{ wmp.wp_power_w != null ? (wpPwrSrc === 'knx' ? 'über KNX' : 'Shelly') : wpPwrSrc === 'knx' ? 'keine Werte vom KNX-Zähler' : 'Shelly nicht erreichbar' }}
Smart-Steuerung
{{ hc.status }}
{{ hc.state_label }} {{ hcK(hc.delta_k) }}
Schattenmodus
aus
{{ ind.label }}: {{ ind.text }}
{{ pm.label }}: {{ pm.on == null ? '–' : pm.on ? 'an' : 'aus' }}
Zentral-Temperaturen
{{ t.label }}
{{ fmt(t.pair[0]) }}/{{ fmt(t.pair[1]) }}°C
{{ fmt(t.ist) }}{{ t.unit || '°C' }}
Soll {{ fmt(t.soll) }} °C
{{ t.sub }}
{{ t.extra }}
{{ hcTileNote(t.hc) }}
Ofen {{ ofen.burning ? 'an' + (ofen.on_since ? ' seit ' + new Date(ofen.on_since * 1000).toLocaleTimeString('de-DE', {hour:'2-digit', minute:'2-digit'}) : '') : 'aus' }} EVU-Sperre aktiv KNX nicht verbunden Bus: {{ ofen.read.ok }} von {{ ofen.read.total }} Adressen antworten · {{ new Date(ofen.read.ts * 1000).toLocaleTimeString('de-DE', {hour:'2-digit', minute:'2-digit'}) }}
{{ ofen.error }}
{{ t.label }}
{{ t.pair[0] }}/{{ t.pair[1] }}{{ t.u }}
{{ t.v }}{{ t.u }}
{{ t.sub }}
{{ t.extra }}
Stand vor {{ t.stale }} – keine neuen Werte
Verlauf
{{ l.label }} {{ deNum(l.last, 1) }} °C {{ ofenChart.onKey === 'ofen_an' ? 'Ofen an' : 'Ladepumpe an' }} EVU-Sperre
{{ g.v }}° {{ t.label }}
{{ ofenChart.hover.time }}
{{ p.label }} {{ deNum(p.v, 1) }} °C
Ladepumpe {{ ofenChart.hover.pump ? 'an' : 'aus' }}
Noch keine Verlaufsdaten – werden ab jetzt alle 5 Minuten aufgezeichnet.
Aufzeichnung läuft seit {{ ofenChart.since }} – die Linien wachsen nach rechts weiter.
Ofen · Erkennung & EVU-Sperre
Ofen {{ ofen.burning ? 'an' : 'aus' }} Wassertasche {{ ofen.rise >= 0 ? '+' : '' }}{{ deNum(ofen.rise, 1) }} K in {{ ofen.cfg?.rise_min }} min
{{ ofen.lock_err }}
Ofen an: Wassertasche steigt in {{ ofen.cfg.rise_min }} min um mindestens {{ deNum(ofen.cfg.rise_k, 1) }} K. Ofen aus: Wassertasche unter {{ deNum(ofen.cfg.off_c, 1) }} °C und steigt nicht mehr (frühestens 15 min nach „an“).
{{ ofen.cfg.notify ? ' Meldung per Pushover.' : '' }}
{{ e.text }}
{{ ofen.msg.text }}
Smart-Steuerung
{{ hc.loadError }}
Smart-Steuerung
{{ hc.status }} {{ hc.state_label }} {{ hcK(hc.delta_k) }}
seit {{ hcTime(hc.since) }} · ausgelöst: {{ hc.reason }}
jetzt {{ String(Math.round(hc.plan[0].price * 1000) / 10).replace('.', ',') }} ct{{ hc.want && hc.want !== hc.state ? ' · ' + ({normal:'Normal', absenken:'Absenken', anheben:'Anheben'}[hc.want]) + ' geplant' + (hc.want_reason ? ': ' + hc.want_reason : '') : '' }}
Schattenmodus – würde jetzt: {{ {absenken:'Absenken', anheben:'Anheben'}[hc.want] }} {{ hcWantK }} · {{ hc.want_reason }}
Schattenmodus – plant nur, schreibt nichts{{ hc.want_reason ? ' · ' + hc.want_reason : '' }}
ausgeschaltet
{{ hc.want_reason || 'keine Verschiebung lohnt sich gerade' }}
{{ hc.pv_live_info }}
Nachtabsenkung {{ hc.night.from }}–{{ hc.night.to }} Uhr{{ hc.night.active ? ' · jetzt aktiv' : '' }}{{ hc.night.text ? ': ' + hc.night.text : ' – kein Heizkreis eingestellt' }}
Nachtabsenkung: {{ hc.night.error }}
pausiert bis {{ hcTime(hc.paused_until) }}
{{ hc.error }}
{{ hc.loadError }}
zuletzt geprüft {{ hc.last_eval ? hcTime(hc.last_eval) : '–' }} · alle 5 min jetzt prüfen
{{ c.label }}: {{ !c.available ? 'nicht verfügbar' : c.needs_base ? 'Grundeinstellung fehlt – nicht gesteuert' : !c.active ? 'nicht gesteuert' : c.default == null ? 'gesteuert' : c.ww ? 'Soll ' + c.default + ' °C' : 'Parallelverschiebung ' + hcK(c.default) }} Nacht −{{ Math.abs(c.night_shift) }} K {{ c.shift > 0 ? '+' : '−' }}{{ Math.abs(c.shift) }} {{ c.unit }}{{ hc.mode === 'shadow' ? ' (würde)' : '' }}
Abweichung von der Grundeinstellung: {{ hc.deviation.join(' · ') }}
{{ l.label }} {{ l.error ? '–' : hcK(l.value_k) }}
Gelesen {{ hcInsp.at }}. Bei HK2/HK3 schaltet die App dafür kurz die Heizkreis-Auswahl um und stellt sie danach zurück.
{{ hcInsp.msg.text }}
{{ a.label }} PV-Prognose (kW, rechte Achse; gestrichelt = ab hier deckt PV die WP) Balken = Wärmepreis: Strompreis bzw. {{ hc.settings.feed_in_ct }} ct, wenn PV die WP deckt ()
{{ t.v }} ct {{ t.label }}
{{ hcPlan.tip.title }}
{{ row.label }}: {{ row.text }}
Prognose: {{ hc.forecast_source === 'tibber' ? 'Tibber-Preise + eigene PV-Prognose' + (hc.pv_kwp ? ' (' + String(hc.pv_kwp).replace('.', ',') + ' kWp)' : ' (keine Modulfelder)') : '–' }}
Noch keine Prognose – es werden Strompreise von Tibber benötigt.
Eingriffe ({{ hc.log.length }})
{{ hcTime(e.ts, true) }}
{{ e.to === 'normal' ? 'Normal' : ({absenken:'Absenken', anheben:'Anheben'}[e.to] + ' ' + hcK(e.k)) }} · {{ e.reason || '–' }}{{ e.mode !== 'active' ? ' (Schatten)' : '' }}
{{ e.values }}
Fußbodenheizung Räume {{ fbhSummary }}
RaumIstSollAbw.Ventil
{{ r.name }}{{ r.via === 'cloud' ? 'CLOUD' : 'WLAN' }} {{ fmt(r.ist) }} °C {{ fmt(r.soll) }} °C {{ r.delta != null ? (r.delta >= 0 ? '+' : '−') + Math.abs(r.delta).toFixed(1).replace('.', ',') : '–' }} {{ r.tuya ? (r.on === false ? 'aus' : r.ventil == null ? '–' : (r.ventil ? 'heizt' : 'aus') + (r.est ? '*' : '')) : (r.ventil != null ? r.ventil + ' %' : '–') }}
Fußbodenheizung Räume
Noch keine Räume eingerichtet.
Energie & Effizienz
{{ c.label }}
{{ c.text ?? (c.value != null ? c.value.toLocaleString('de-DE') : '–') }}{{ c.unit }}
{{ line }}
Zählerstände {{ new Date().getFullYear() }} nachpflegen

Stand am 1.1. und Stand heute, jeweils vom selben Zähler abgelesen. Ab heute rechnet das Dashboard mit den Live-Zählern weiter. Wärme: am Display unter „Wärmemengen“ den Wert „Wärmepumpe gesamt“ (Heizen + Warmwasser) nehmen.

Der Strom kommt aus der importierten Strom-Historie. Die Stromfelder kannst du leer lassen.

{{ jazSeedError }}
Betriebszeiten je Tag
{{ wpaRange.label }} – {{ wpaRange.label }}
{{ wpa.error }}
{{ p.name }}{{ wpaH(p.h) }} {{ p.pct }} % · Ø {{ wpaH(p.perDay) }}/Tag
{{ t.v }} {{ l.t }} {{ wpa.loading ? 'lädt …' : 'Noch keine Daten – die Aufzeichnung läuft ab jetzt' }}
{{ wpaTip.title }}
{{ r.l }}
Zeit je Zustand laut Statusmeldung der WPM (alle 10 s erfasst). Ohne KNX-Verbindung wird nichts gezählt – der Rest bis 24 h bleibt dann leer.
Alarmanlage
{{ alStateText }}
{{ al.alarm_by?.text }} · {{ alTime(al.alarm_since, true) }}
{{ al.armed ? 'scharf' : 'unscharf' }} seit {{ alTime(al.since, true) }}{{ al.by_text ? ' · ' + al.by_text : '' }}
Offen: {{ al.blockers.join(', ') }}
{{ al.msg.text }}
{{ al.error }}
Zeitschaltuhr
Keine Zeitschaltuhr – nur von Hand, über KNX oder Apple Home.
Überwachte Auslöser
{{ label }}{{ alTrigInfo(k) }}
Handlungen bei Alarm
Pushover{{ al.cfg?.actions?.pushover?.enabled ? AL_PRIO[al.cfg.actions.pushover.priority] : 'aus' }}
Lampen einschalten{{ al.cfg?.actions?.lights?.enabled ? (al.cfg.actions.lights.ids || []).length + ' Lampen' : 'aus' }}
KNX Alarm-Ausgang{{ al.cfg.ga_alarm }}
KNX & Apple Home
Schalten (1 = scharf){{ al.cfg?.ga_arm || '–' }}
Status (lesbar){{ al.cfg?.ga_status || (al.cfg?.ga_arm ? al.cfg.ga_arm : '–') }}
{{ feat('homekit') ? 'In Apple Home als Sicherheitssystem „Alarmanlage“ (Abwesend = scharf).' : 'HomeKit-Bridge ist aus – in Apple Home nicht sichtbar.' }}
Fenster & Türen {{ al.watched.filter(w => w.open).length }} offen
{{ w.name }}{{ w.kind === 'doors' ? 'Tür' : '' }}{{ w.open == null ? '?' : w.tilted ? 'gekippt' : w.type === 'lock' ? (w.open ? 'entriegelt' : 'verriegelt') : w.open ? 'offen' : 'zu' }}
Protokoll
Noch keine Einträge.
{{ alTime(e.ts, true) }}{{ e.text }}
Noch keine Geräte eingerichtet.

Energieverbrauch & Strompreise

PV & Verbrauch Live
Fronius-Daten werden geladen…
Autarkie
{{ frAutonomy.toFixed(0) }}%
{{ c.label }}
{{ c.text }}{{ c.liveUnit || c.unit }}
{{ line }}
{{ tibberError }}
Aktueller Monat
Strompreis jetzt
{{ (tibber.current_price.total * 100).toFixed(1).replace('.', ',') }}ct/kWh
{{ tibberLevelText(tibber.current_price.level) }}
Energie {{ (tibber.current_price.energy * 100).toFixed(1).replace('.', ',') }} · Steuern & Abgaben {{ (tibber.current_price.tax * 100).toFixed(1).replace('.', ',') }} ct
Strompreise
{{ l.label }}
{{ t.v }} ct morgen {{ t.label }}
{{ tpChart.tip.title }}
Preis: {{ tpChart.tip.price }}
{{ tpChart.tip.level }}
Min {{ tpChart.stats.min }} Max {{ tpChart.stats.max }} Ø {{ tpChart.stats.avg }} (gestrichelt) günstigste Stunde {{ tpChart.stats.cheapest }}
Preise für morgen kommen meist ab ca. 13 Uhr.
Verbrauchsanalyse
{{ anRange.label }} – {{ anRange.label }}
{{ an.error }}
{{ an.hidden.length ? 'Auswahl' : 'Verbrauch' }}{{ anKwh(anSum.sel) }}kWh von {{ anKwh(anSum.total) }} kWh gesamt
PV erzeugt{{ anKwh(anSum.pv) }}kWh {{ anKwh(anSum.pv_direct) }} direkt · Einspeisung {{ anKwh(anSum.export) }}
Netzbezug{{ anKwh(anSum.grid_total) }}kWh {{ anKwh(anSum.grid) }} ins Haus · {{ anKwh(anSum.grid_charge) }} in die Batterie
Batterie{{ anKwh(anSum.battery) }}kWh geladen {{ anKwh(anSum.charge) }} kWh
Autarkie{{ anSum.autarky != null ? anSum.autarky + ' %' : '–' }} aus PV und Batterie
{{ deNum(t.v, t.v % 1 ? 1 : 0) }} kWh {{ l.t }} {{ an.loading ? 'lädt …' : 'Keine Daten im Zeitraum' }}
{{ anTip.title }}
{{ r.l }}: {{ r.v }}
links Verbraucher {{ c.name }} rechts Herkunft PV direktBatterie NetzNetz → BatterieEinspeisung
{{ p.name }} {{ anKwh(p.kwh) }} kWh{{ p.pct }} %
Aus der eigenen Aufzeichnung (kWh-Zähler je Verbraucher und Quelle). Der laufende Abschnitt zählt bis jetzt.

Energie-Auswertung

{{ edError }}
Stromverbrauch {{ edYear }} nach Verbraucher
{{ sr.label }}
{{ t.label }} {{ b.name }} · {{ seg.label }}: {{ fmtKwh(seg.v) }} kWh {{ b.name }}: {{ b.tip }} {{ fmtKwh(b.total) }} {{ n }} kWh
Noch keine Daten für {{ edYear }}. Gesamtverbrauch und PV kommen aus den Fronius-Zählern, aufgezeichnet ab dem ersten Tagesstand.
Monatswerte {{ edYear }}
Eingetragene Werte ersetzen den automatischen Wert (grau im Feld). Feld leeren = wieder automatisch. {{ plant.names.main }}, Eigenverbrauch, Effizienz und Kosten werden daraus neu berechnet.
{{ n }}{{ edYear }}
Fronius-Werte (Gesamtverbrauch, PV, Netzbezug) werden ab {{ ed.fronius_since || 'dem ersten Tagesstand' }} aufgezeichnet. Gesamtverbrauch = Netzbezug + PV-Erzeugung − Einspeisung. Kosten {{ plant.names.other }} = kWh × {{ edPriceLabel }} €/kWh, Heizung {{ plant.names.other }} = Heizung × {{ ed.settings.mum_heat_share }} % × Preis.

Batteriesteuerung

{{ bat.stateText }}
{{ bo.msg.text }}
Aktueller Status
{{ bat.state === 'shadow' ? 'Würde jetzt' : 'Modus' }}
{{ bat.mode ? boLabel(bat.mode) : (bat.state === 'off' ? 'aus' : 'noch keine Entscheidung') }}
Ladeleistung {{ wFmt(Math.abs(bat.charge_w)) }}
{{ bat.error }}
Wechselrichter regelt selbst – HansOS zeigt nur, was es täte.
Akku
{{ bat.soc != null ? Math.round(bat.soc) : '–' }}%
{{ deNum(bat.soc / 100 * bat.cap / 1000, 1) }} von {{ deNum(bat.cap / 1000, 1) }} kWh
Strompreis jetzt
{{ bat.price != null ? deNum(bat.price * 100, 1) : '–' }}ct/kWh
Planung bis {{ new Date(bat.window_end * 1000).toLocaleString('de-DE', {weekday:'short', hour:'2-digit', minute:'2-digit'}) }} (nächste volle PV-Ladung)
Letzte Auswertung
{{ bat.ts ? new Date(bat.ts * 1000).toLocaleTimeString('de-DE', {hour:'2-digit', minute:'2-digit'}) : '–' }}
{{ bat.state === 'active' ? 'steuert den Wechselrichter über Modbus TCP' : bat.state === 'shadow' ? 'nur planen' : 'Steuerung aus' }}
Begründung: {{ bat.reason }}
Grundlage – Preise: {{ bo.st.sources.prices }} · PV: {{ bo.st.sources.pv }} · Verbrauch: {{ bo.st.sources.cons }} · Akku: {{ bo.st.sources.soc }}
Prognose & Plan (Zukunft)
PV-Erzeugung{{ deNum(boChart.sum.pv, 1) }} kWh
Verbrauch{{ deNum(boChart.sum.cons, 1) }} kWh
Netzbezug{{ deNum(boChart.sum.grid, 1) }} kWh
Stromkosten{{ deNum(boChart.sum.cost, 2) }} €
ohne Akku{{ deNum(boChart.sum.nobat, 2) }} € −{{ deNum(boChart.sum.nobat - boChart.sum.cost, 2) }} €
bis {{ boChart.until }} · {{ boChart.n }} Abschnitte · Prognose, wird jede Minute neu berechnet
PVVerbrauch PreisAkku % {{ boLabel(m) }}
{{ l.t }}
kWh
ct
Antippen bzw. mit der Maus über das Diagramm fahren für Details je Stunde.
Tabelle (je Stunde)
ZeitPreisPVVerbr.NetzKostenAkkuPlan
{{ new Date(x.t * 1000).toLocaleTimeString('de-DE', {hour:'2-digit', minute:'2-digit'}) }} {{ deNum(x.price * 100, 1) }} {{ deNum(x.pv_wh / 1000, 1) }} {{ deNum(x.cons_wh / 1000, 1) }} {{ x.grid_wh != null ? deNum(x.grid_wh / 1000, 1) : '–' }} {{ x.cost != null ? deNum(x.cost * 100, 0) : '–' }} {{ x.soc != null ? Math.round(x.soc) + ' %' : '–' }} {{ boLabel(x.action) }}
Preis und Kosten in ct · PV, Verbrauch, Netzbezug in kWh je Abschnitt · Akku = erwarteter Ladestand am Ende · Kosten ohne Einspeisevergütung
Strompreis-Prognose (ct/kWh)
günstig mittel teuer jetzt Einordnung im Vergleich zu den kommenden Stunden · Ø {{ bcPriceChart.avg }} ct
{{ t.v }} ct {{ t.label }}
{{ bcPriceChart.tip.title }}
{{ row.label }}: {{ row.text }}
Grundlage für die Lade- und Sperrentscheidungen.
Was die Steuerung bewirkt hat
{{ m.label }}
{{ t.label }} {{ b.label }} · {{ seg.label }}: {{ seg.v.toFixed(1).replace('.', ',') }} h {{ b.short }}
Stunden je Modus. {{ bcPeriod === 'tag' ? 'Letzte 14 Tage' : bcPeriod === 'woche' ? 'Letzte 12 Wochen' : 'Letzte 12 Monate' }}.
ZeitraumNetzladungØ LadepreisEntladenØ Wert Entladung EntladesperreBezug in SperreWechselEffekt (Schätzung)
{{ r.label }} {{ bcKwh(r.grid_charge_kwh) }} {{ bcCt(r.avg_charge_price) }} {{ bcKwh(r.discharge_kwh) }} {{ bcCt(r.avg_discharge_price) }} {{ r.hours['0'] ? r.hours['0'].toFixed(1).replace('.', ',') + ' h' : '–' }} {{ bcKwh(r.hold_import_kwh) }} {{ r.days ? r.switches : '–' }} {{ r.effect_eur != null && r.days ? (r.effect_eur > 0 ? '+' : '') + fmtEur(r.effect_eur) + ' €' : '–' }}
Gemessen minütlich (im Modus „Aktiv“) über die Fronius-Akku- und Netzleistung, bewertet mit dem Strompreis. Effekt = daraus entladene Menge (Netzladung × {{ String(bcStats.eta).replace('.', ',') }} Wirkungsgrad, höchstens die Entlademenge) × Ø Wert der Entladung − Kosten der Netzladung, plus durch die Entladesperre verschobene PV-Energie (Entladung ohne den Netzlade-Anteil, höchstens der Bezug in der Sperre) × (Ø Wert der Entladung − Ø Preis in der Sperre). Jede entladene kWh zählt nur einmal. Aufteilung beim Darüberfahren über den Effekt. Eine Schätzung, keine Abrechnung.
Letzte Umschaltungen
Noch keine Ereignisse.
{{ new Date(e.ts*1000).toLocaleString('de-DE',{day:'2-digit',month:'2-digit',hour:'2-digit',minute:'2-digit'}) }}
{{ e.kind === 'crash' ? 'Abgestürzt' : 'Gestoppt' }} {{ e.soc != null ? ' · SOC ' + Math.round(e.soc) + ' %' : '' }}{{ e.price != null ? ' · ' + bcCt(e.price) : '' }}{{ e.note ? ' · ' + e.note : '' }}
{{ e.decision }}

Konfiguration

Übersicht aller Funktionen dieser Anlage. Zum Ändern ein Thema antippen. HansOS {{ appVersion.version }}{{ appVersion.commit ? ' · ' + appVersion.commit : '' }} Release Notes

Gespeichert – wirksam nach Neustart der App.

Uptime

{{ up.sum.up }} erreichbar {{ up.sum.down }} gestört {{ up.sum.pending }} wird geprüft {{ up.sum.paused }} pausiert
{{ up.msg.text }}
Noch keine Monitore
Überwacht Webseiten (Statuscode oder Text), Ports, Ping und DNS. Fällt etwas aus, kommt eine Mitteilung – und wieder eine, wenn es zurück ist.
{{ upPct(m.up24) }} {{ m.name }}{{ upTarget(m) }}

{{ upSel.name }}

{{ UP_TYPE[upSel.type] }} · {{ upTarget(upSel) }}
{{ UP_STATE[upSel.state] }} seit {{ upAgo(upSel.since) }} · {{ upSel.msg }}
Antwort{{ upSel.ms != null ? upSel.ms + ' ms' : '–' }}
Mittel 24 h{{ upSel.avg24 != null ? upSel.avg24 + ' ms' : '–' }}
24 Stunden{{ upPct(upDet?.up24 ?? upSel.up24) }}
7 Tage{{ upPct(upDet?.up7) }}
30 Tage{{ upPct(upDet?.up30 ?? upSel.up30) }}
Zertifikat{{ upSel.cert_days_left }} Tage
Antwortzeitletzte {{ upChart.n }} Prüfungen · max. {{ upChart.max }} ms
90 Tage{{ upPct(upDet.up90) }}
Ereignisse
{{ { down:'gestört', up:'erreichbar', cert:'Zertifikat' }[e.kind] }} {{ new Date(e.ts * 1000).toLocaleString('de-DE', { day:'2-digit', month:'2-digit', hour:'2-digit', minute:'2-digit' }) }} {{ e.msg }}
Zeigt nur Name, Zustand und Verfügbarkeit der Monitore mit „Auf der Statusseite“ – keine Adressen und keine Fehlermeldungen. Statusseite öffnen

Wertüberwachung & Pushover

{{ monEditId ? 'Regel bearbeiten' : 'Neue Überwachungsregel' }}
{{ k.label }} · {{ k.manual ? 'eigene Adresse' : 'aus KNX-Projekt' }} {{ k.ga || k.key }}
{{ monError }}
Aktive Regeln ({{ monRules.length }})
{{ rule.label }}
{{ rule.ga ? 'KNX ' + rule.ga : rule.key }}
= {{ monFmtCondVal(rule.cond_val, rule.key) }} ≠ {{ monFmtCondVal(rule.cond_val, rule.key) }} Min: {{ rule.min }} Max: {{ rule.max }} Aktuell: {{ monCurVal(rule.key) }}
Keine Überwachungsregeln definiert. Wähle oben einen Datenpunkt oder gib eine KNX-Gruppenadresse ein und lege Grenzen fest.
Rauchmelder Überwachung {{ monSmokeAnyAlarm ? 'ALARM' : monSmokeAnyOffline ? 'Geräte offline' : 'Alle OK' }}
Rauchmelder werden automatisch überwacht sobald Meross konfiguriert ist. Alarm → Notfall-Push (wiederholt bis bestätigt) · Batterie/Offline → Normale Push-Nachricht
{{ dev.name }}
{{ dev.alarm ? 'RAUCHALARM!' : dev.online ? 'OK' : 'Offline' }}
Automatische Überwachung alle 5 Min · Rauchalarm = Emergency-Push (Priority 2, wiederholt alle 60s) · Batterie/Offline = Normale Push
Live-Status ({{ monStatusItems.length }} Werte) {{ monStatusAlerts }} Alarm{{ monStatusAlerts > 1 ? 'e' : '' }} Alles OK
{{ item.label }}
{{ item.value != null ? (typeof item.value === 'boolean' ? (item.value ? 'AN':'AUS') : item.value) : '–' }}

Benutzerverwaltung

Benutzer anlegen
{{ userError }}
Bestehende Benutzer
Lade…
Benutzer Rolle Pushover Aktionen
{{ u.username }} (du)
Pushover je Benutzer: eigene Nachrichten nur zu ausgewählten Themen – im selben Pushover-Konto auf einem anderen Gerät oder mit eigenem Konto (User-Key).
Rollen: Admin – alles bedienen und einstellen (Konfiguration, Benutzer). Benutzer (bedienen) – alles einsehen und bedienen (Geräte, Lampen, Alarmanlage, Mäher, Musik, JARVIS), aber nichts einstellen. Nur Lesen – alles einsehen, nichts schalten und nichts ändern.