⠿Energiefluss – Bereich verschieben
Quellen
{{ skFlow.total != null ? (skFlow.total / 1000).toFixed(2).replace('.', ',') + ' kW' : '' }}
Verbraucher
{{ skFlow.links[skHover].from }} → {{ skFlow.links[skHover].to }}: {{ fmtW(skFlow.links[skHover].w) }} W
{{ skFlow.note }}
{{ k.value }}{{ k.label }}
{{ row.label }} {{ row.total }}
{{ g.name }} {{ g.text }}
{{ sr.name }}
PV-Erzeugung
{{ fvDay.hover.title }}
{{ row.label }}: {{ row.text }}
Heute 0–24 Uhr, 5-Minuten-Mittel · {{ fvDay.sum }}
Fronius-Daten werden geladen …
⠿Status – Bereich verschieben
{{ devText(d).v }}{{ devText(d).u }}
{{ d.room || d.type_label }} · {{ devText(d).sub }}
{{ d.state.target_temp != null ? deNum(d.state.target_temp, 1) + ' °C' : '–' }}
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 ? (wmp.wp_power_w / 1000).toFixed(2).replace('.', ',') : '–' }} kW
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' }}
{{ t.label }}
{{ fmt(t.pair[0]) }}/{{ fmt(t.pair[1]) }}°C
{{ fmt(t.ist) }}{{ t.unit || '°C' }}
Soll {{ fmt(t.soll) }} °C
· {{ (t.ist - t.soll >= 0 ? '+' : '−') + Math.abs(t.ist - t.soll).toFixed(1).replace('.', ',') }} K
{{ t.sub }}
{{ t.extra }}
{{ hcTileNote(t.hc) }}
{{ t.label }}
{{ t.valText ?? fmt(t.ist) }}{{ t.unit.trim() }}
{{ 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
{{ 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 {{ ofen.burning ? 'an' : 'aus' }}
Wassertasche {{ ofen.rise >= 0 ? '+' : '' }}{{ deNum(ofen.rise, 1) }} K in {{ ofen.cfg?.rise_min }} min
EVU-Sperre: {{ !ofen.cfg?.ga?.lock ? 'keine Adresse' : ofen.locked ? 'aktiv seit ' + new Date(ofen.lock_since * 1000).toLocaleTimeString('de-DE', {hour:'2-digit', minute:'2-digit'}) : 'frei' }}
{{ 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“).
EVU-Sperre extern ({{ ofen.cfg.ga.lock }}): bei „Ofen an“ sperren, aufheben sobald Regenerativ über {{ deNum(ofen.cfg.reg_release, 1) }} °C, bei „Ofen aus“ oder spätestens nach {{ deNum(ofen.cfg.lock_max_h, 1) }} h. EVU-Sperre: in den Einstellungen unten die Gruppenadresse eintragen. EVU-Sperre-Automatik ist aus.{{ ofen.cfg.notify ? ' Meldung per Pushover.' : '' }}
EVU-Sperre extern ({{ ofen.cfg.ga.lock }}): bei „Ofen an“ sperren, aufheben sobald Regenerativ über {{ deNum(ofen.cfg.reg_release, 1) }} °C, bei „Ofen aus“ oder spätestens nach {{ deNum(ofen.cfg.lock_max_h, 1) }} h. EVU-Sperre: in den Einstellungen unten die Gruppenadresse eintragen. EVU-Sperre-Automatik ist aus.{{ ofen.cfg.notify ? ' Meldung per Pushover.' : '' }}
liest jede Ofen-Adresse einzeln und zeigt, ob sie antwortet
| Datenpunkt | Adresse | Leseanfrage | letztes Telegramm | von Gerät |
|---|---|---|---|---|
| {{ r.label }} | {{ r.ga }} | {{ r.ok ? '✓ ' + (typeof r.value === 'boolean' ? (r.value ? 'ein' : 'aus') : deNum(r.value, 1)) + ' (' + r.ms + ' ms)' : '✗ ' + (r.error || 'keine Antwort') }} | {{ r.seen ? new Date(r.seen * 1000).toLocaleTimeString('de-DE', {hour:'2-digit', minute:'2-digit'}) : 'seit Start keins' }} | {{ r.src || '–' }} |
{{ ofenProbe.err }}
{{ e.text }}
{{ ofen.msg.text }}
Ofen · Einstellungen (Gruppenadressen, Schwellen)
{{ lbl }}
{{ hc.loadError }}
{{ 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] }} {{ hcK(hc.want === 'absenken' ? -hc.settings.absenk_k : hc.settings.anheb_k) }} · {{ hc.want_reason }}
Schattenmodus – plant nur, schreibt nichts{{ hc.want_reason ? ' · ' + hc.want_reason : '' }}
ausgeschaltet
{{ hc.want_reason || 'keine Verschiebung lohnt sich gerade' }}
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.ww ? ('Soll ' + (c.soll_c ?? '–') + ' °C' + (c.value_k ? ' (' + hcK(c.value_k) + ')' : '')) : (c.value_k != null ? 'Parallelverschiebung ' + hcK(c.value_k) + (c.base_k != null && c.base_k !== c.value_k ? ' (sonst ' + hcK(c.base_k) + ')' : '') : 'gesteuert') }}
⚠ Abweichung von der Grundeinstellung: {{ hc.deviation.join(' · ') }}
{{ l.label }}
{{ l.error ? '–' : hcK(l.value_k) }}
{{ l.error }}
gerade übersteuert
Grundeinstellung nicht eingetragen – setzen auf
K
= Grundeinstellung ✓
Grundeinstellung {{ hcK(l.base_k) }} – weicht ab!
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 (☀)
{{ hcPlan.tip.title }}
{{ row.label }}: {{ row.text }}
Strombedarf Wärmepumpe – kWh je Stunde (Schätzung)
Bedarf normal
Bedarf übersteuert
daneben Herkunft:
PV
Batterie
Netz
Außentemperatur (°C, rechts)
{{ hcEnergy.tip.title }}
{{ row.label }}: {{ row.text }}
24 h: {{ hcKwh(hc.energy.total.kwh) }}
(PV {{ hcKwh(hc.energy.total.pv) }} · Batterie {{ hcKwh(hc.energy.total.bat) }} · Netz {{ hcKwh(hc.energy.total.grid) }})
· ohne Übersteuerung {{ hcKwh(hc.energy.total.base_kwh) }}
Basis: {{ hc.energy.basis }}; {{ String(hc.settings.effect_pct_per_k).replace('.', ',') }} % je K Verschiebung; Warmwasser-Anhebung ≈ {{ hcKwh(hc.settings.ww_liter * 1.163 * hc.settings.ww_anheb_k / 3000) }} Strom je Aufheizung (COP 3)
Temperaturprognose nicht verfügbar: {{ hc.energy.temp_error }}
Basis: {{ hc.energy.basis }}; {{ String(hc.settings.effect_pct_per_k).replace('.', ',') }} % je K Verschiebung; Warmwasser-Anhebung ≈ {{ hcKwh(hc.settings.ww_liter * 1.163 * hc.settings.ww_anheb_k / 3000) }} Strom je Aufheizung (COP 3)
Temperaturprognose nicht verfügbar: {{ hc.energy.temp_error }}
Prognose: {{ hc.forecast_source === 'batcontrol' ? 'batcontrol (Preise + PV' + (hc.pv_kwp ? ', ' + String(hc.pv_kwp).replace('.', ',') + ' kWp' : '') + ')' : hc.forecast_source === 'tibber' ? 'Tibber-Preise (ohne PV – batcontrol läuft nicht)' : '–' }}
Noch keine Prognose – es werden Preise von batcontrol oder Tibber benötigt.
{{ [hc.forecast_diag.batcontrol, hc.forecast_diag.tibber].filter(Boolean).join(' · ') }}
{{ [hc.forecast_diag.batcontrol, hc.forecast_diag.tibber].filter(Boolean).join(' · ') }}
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 }}
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 + ' %' : '–') }}
{{ 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 }}
{{ wpa.error }}
{{ p.name }}{{ wpaH(p.h) }}
{{ p.pct }} % · Ø {{ wpaH(p.perDay) }}/Tag
{{ wpaTip.title }}
{{ r.l }}: {{ r.v }}
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.
{{ c.label }}{{ c.hint }}
{{ wmp[c.key] != null ? (c.bool ? (wmp[c.key] ? 'Aktiv' : 'Inaktiv') : wmp[c.key] + ' ' + c.unit) : '–' }}
{{ dispVal(c.key) }} {{ c.unit }}
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 }}
{{ al.schedule_active ? 'im Zeitfenster' : 'außerhalb' }}
{{ alDays(sl.days) }}{{ sl.from }} – {{ sl.to }}
Nächster Wechsel: {{ al.schedule_next.on ? 'scharf' : 'unscharf' }} {{ alTime(al.schedule_next.ts, true) }}
Keine Zeitschaltuhr – nur von Hand, über KNX oder Apple Home.
{{ label }}{{ alTrigInfo(k) }}
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 }}
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.' }}
{{ w.name }}{{ w.kind === 'doors' ? 'Tür' : '' }}{{ w.open == null ? '?' : w.tilted ? 'gekippt' : w.type === 'lock' ? (w.open ? 'entriegelt' : 'verriegelt') : w.open ? 'offen' : 'zu' }}
Noch keine Einträge.
{{ alTime(e.ts, true) }}{{ e.text }}
Geräte
{{ dev.list.length }} Geräte · KNX nicht verbundenNoch keine Geräte eingerichtet.
Keine Geräte passen zum Filter.
{{ g.room || 'Ohne Raum' }}
{{ d.name }}{{ d.type_label }}
{{ devText(d).v }}{{ devText(d).u }}
{{ devText(d).sub }}{{ devText(d).sub ? ' · ' : '' }}{{ devFlags(d) }}
Soll {{ d.state.target_temp != null ? deNum(d.state.target_temp, 1) + ' °C' : '–' }}
{{ dev.msg.text }}
Energieverbrauch & Strompreise
Fronius-Daten werden geladen…
Quellen
{{ skFlow.total != null ? (skFlow.total / 1000).toFixed(2).replace('.', ',') + ' kW' : '' }}
Verbraucher
{{ skFlow.links[skHover].from }} → {{ skFlow.links[skHover].to }}: {{ fmtW(skFlow.links[skHover].w) }} W
{{ skFlow.note }}
{{ k.value }}{{ k.label }}
{{ row.label }} {{ row.total }}
{{ g.name }} {{ g.text }}
{{ sr.name }}
PV-Erzeugung
{{ fvDay.hover.title }}
{{ row.label }}: {{ row.text }}
Heute 0–24 Uhr, 5-Minuten-Mittel · {{ fvDay.sum }}
Autarkie
{{ frAutonomy.toFixed(0) }}%
{{ c.label }}
{{ c.text }}{{ c.unit }}
{{ line }}
{{ tibberError }}
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
Verbrauch
{{ tibber.monthly.consumption.toFixed(1).replace('.', ',') }}kWh
seit 1. {{ new Date(tibber.monthly.from).toLocaleDateString('de-DE', {month:'long'}) }}, inkl. heute
Vormonat {{ tibber.last_month.consumption.toFixed(0) }} kWh
Kosten
{{ tibber.monthly.cost.toFixed(2).replace('.', ',') }}€
Vormonat {{ tibber.last_month.cost.toFixed(2).replace('.', ',') }} €
Ø Preis
{{ tibber.monthly.unit_price ? (tibber.monthly.unit_price * 100).toFixed(1).replace('.', ',') : '--' }}ct/kWh
Ø pro Tag
{{ tibberDailyAvg.toFixed(1).replace('.', ',') }}kWh
≈ {{ tibberDailyCostAvg.toFixed(2).replace('.', ',') }} €/Tag · volle Tage dieses Monats
{{ l.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.
{{ 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
{{ 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 }}
{{ sr.label }}
Noch keine Daten für {{ edYear }}. Gesamtverbrauch und PV kommen aus den Fronius-Zählern, aufgezeichnet ab dem ersten Tagesstand.
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 }} | |
|---|---|---|
| {{ sec.title }} | ||
| {{ row.label }}{{ edSrc(row) }} | {{ edFmt(row, m[row.key]) }} {{ edFmt(row, m[row.key]) }} | {{ edFmt(row, ed.totals[row.key]) }} |
Fronius-Werte (Gesamtverbrauch, PV, Netzbezug) werden ab {{ ed.fronius_since || 'dem ersten Tagesstand' }} aufgezeichnet, ältere Monate stammen aus dem Archiv.
Gesamtverbrauch = Netzbezug + PV-Erzeugung − Einspeisung. Effizienz = Wärme ÷ Strom Wärmepumpe im selben Zeitraum.
Kosten {{ plant.names.other }} = kWh × {{ edPriceLabel }} €/kWh, Heizung {{ plant.names.other }} = Heizung × {{ ed.settings.mum_heat_share }} % × Preis.
batcontrol
{{ bc.engine === 'eigen' ? 'eigene Steuerung aktiv' : !bc.installed ? 'nicht installiert' : bc.running ? (bc.fresh ? 'läuft' : 'läuft, wartet auf Daten') : (bc.autostart ? 'abgestürzt – Neustart folgt' : 'gestoppt') }} v{{ bc.version }}{{ bcMsg.text }}
Demo-Modus: batcontrol nutzt einen simulierten Wechselrichter und ändert nichts an der Anlage.
Unter Konfiguration den Wechselrichter auf
fronius_gen24 stellen, um wirklich zu steuern.
Modus
{{ bc.mode_label || (bc.running ? 'noch keine Entscheidung' : '–') }}
{{ bc.problem_hint }}
Log: {{ bc.problem }}
Ladeleistung {{ fmtW(bc.charge_rate) }} W
Ladelimit {{ fmtW(bc.limit_battery_charge_rate) }} W
Akku
{{ bc.soc != null ? bc.soc.toFixed(0) : '–' }}%
{{ (bc.stored_energy/1000).toFixed(1).replace('.', ',') }} von {{ ((bc.max_energy||0)/1000).toFixed(1).replace('.', ',') }} kWh
Strompreis jetzt
{{ bc.price != null ? (bc.price*100).toFixed(1).replace('.', ',') : '–' }}ct/kWh
{{ bc.utility_type || '' }}
Bedarf in teuren Stunden
{{ bc.reserved_energy != null ? (bc.reserved_energy/1000).toFixed(1).replace('.', ',') : '–' }}kWh
im Akku nutzbar: {{ (bc.usable_energy/1000).toFixed(1).replace('.', ',') }} kWh
PV-Überschuss erwartet: {{ (bc.solar_surplus_wh/1000).toFixed(1).replace('.', ',') }} kWh
Letzte Auswertung
{{ bc.last_evaluation ? new Date(bc.last_evaluation*1000).toLocaleTimeString('de-DE',{hour:'2-digit',minute:'2-digit'}) : '–' }}
eigene Steuerung · Modbus TCP
MQTT {{ bc.mqtt?.connected ? 'verbunden' : 'getrennt' }} · {{ bc.broker_mode === 'intern' ? 'interner Broker' : bc.mqtt?.broker }}
Entscheidung: {{ bc.decision }}
{{ boLabel(bo.st.decision || bo.st.plan_mode) }}
{{ bo.st.mode === 'shadow' ? '(nur geplant)' : '' }}{{ bo.st.decision === '-1' && bo.st.charge_w ? ' · ' + fmtW(bo.st.charge_w) + ' W' : '' }}
aus
{{ bo.st.reason }}
batcontrol: {{ bo.st.other_mode ? boLabel(bo.st.other_mode) : 'keine Daten' }}
· heute {{ bo.st.compare.same_pct }} % gleich ({{ bo.st.compare.minutes }} min verglichen)
Preise: {{ bo.st.sources.prices }} · PV: {{ bo.st.sources.pv }} · Verbrauch: {{ bo.st.sources.cons }} · Akku: {{ bo.st.sources.soc }}{{ bo.st.capacity_wh ? ', ' + deNum(bo.st.capacity_wh / 1000, 1) + ' kWh' : '' }}
{{ bo.msg.text }}
ZeitPreisPVVerbr.AkkuPlan
{{ 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.soc != null ? Math.round(x.soc) + ' %' : '–' }}
{{ boLabel(x.action) }}
kWh je Abschnitt · Akku = erwarteter Ladestand am Ende · Vorschau, wird jede Minute neu berechnet
Abweichungen von batcontrol ({{ bo.st.compare.last.length }})
{{ new Date(e.ts * 1000).toLocaleString('de-DE', {day:'2-digit', month:'2-digit', hour:'2-digit', minute:'2-digit'}) }}:
eigene {{ boLabel(e.mine) }}, batcontrol {{ boLabel(e.bc) }} – {{ e.reason }}
Einstellungen & Wechselrichter
{{ bo.msg.text }}
Ladestand (Modbus){{ deNum(bo.st.inverter.soc, 1) }} %
Max. Ladeleistung{{ fmtW(bo.st.inverter.w_cha_max) }} W
Reserve am Wechselrichter{{ deNum(bo.st.inverter.min_rsv_pct, 0) }} %
Steuerung gerade{{ bo.st.inverter.ctl_mod === 0 ? 'frei (Wechselrichter regelt)' : 'begrenzt (Modus ' + bo.st.inverter.ctl_mod + ')' }} · Entladen {{ deNum(bo.st.inverter.out_pct, 0) }} % · Laden {{ deNum(bo.st.inverter.in_pct, 0) }} %
Netzladung erlaubt{{ bo.st.inverter.grid_charge ? 'ja' : 'nein' }}
Am Fronius unter Kommunikation → Modbus: „Modbus TCP“ ein, „SunSpec Model Type: int + SF“ und „Wechselrichter-Steuerung über Modbus“ erlauben.
Im Modus Aktiv wird batcontrol beendet und HansOS steuert den Akku selbst. Jede Vorgabe gilt nur für die Rückfallzeit und wird laufend erneuert – fällt HansOS aus, regelt der Wechselrichter danach wieder selbst.
Schatten plant nur und vergleicht mit batcontrol.
günstig
mittel
teuer
jetzt
Einordnung im Vergleich zu den kommenden Stunden · Ø {{ bcPriceChart.avg }} ct
{{ bcPriceChart.tip.title }}
{{ row.label }}: {{ row.text }}
Grundlage für die Lade- und Sperrentscheidungen von batcontrol.
{{ m.label }}
Stunden je Modus. {{ bcPeriod === 'tag' ? 'Letzte 14 Tage' : bcPeriod === 'woche' ? 'Letzte 12 Wochen' : 'Letzte 12 Monate' }}.
| Zeitraum | Netzladung | Ø Ladepreis | Entladen | Ø Wert Entladung | Entladesperre | Bezug in Sperre | Wechsel | Effekt (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 über die Fronius-Akku- und Netzleistung, bewertet mit dem Preis aus batcontrol.
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.
Noch keine Ereignisse.
{{ new Date(e.ts*1000).toLocaleString('de-DE',{day:'2-digit',month:'2-digit',hour:'2-digit',minute:'2-digit'}) }}
{{ bcModeLabel(e.from) }}
→
{{ bcModeLabel(e.to) }}
{{ 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 }}
{{ bcLog || 'Noch kein Log.' }}
Konfiguration
Übersicht aller Funktionen dieser Anlage. Zum Ändern ein Thema antippen.
Gespeichert – wirksam nach Neustart der App.
{{ g.title }}
{{ t.stateText }}
{{ l }}
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 werden automatisch überwacht sobald Meross konfiguriert ist.
Alarm → Notfall-Push (wiederholt bis bestätigt) · Batterie/Offline → Normale Push-Nachricht
{{ dev.alarm ? '🚨' : !dev.online ? '⚫' : '🟢' }}
{{ 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.alert ? '🔴' : item.value == null ? '⚪' : '🟢' }}
{{ item.value != null ? (typeof item.value === 'boolean' ? (item.value ? 'AN':'AUS') : item.value) : '--' }} · {{ item.note }}
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).
Berechtigungen
Admin — Vollzugriff: alles bedienen, Konfiguration und Einstellungen (Wärmepumpe, Smart-Steuerung, batcontrol, Alarmanlage, Geräte, KNX …), Home anordnen, Überwachungsregeln, Benutzer verwalten
Benutzer (bedienen) — Alles einsehen und bedienen: Geräte und Lampen schalten (Tab Geräte und Home), Mähroboter, Alarmanlage scharf/unscharf, Gegensprechen an der Haustür. Keine Konfiguration – Konfigurations- und Benutzer-Tab sowie alle Einrichten-Links sind ausgeblendet.
Nur Lesen — Alle Werte und Status einsehen, aber nichts schalten und nichts ändern