text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Add Add category Add energy type Add meter Close Color hex (optional, e.g. #ff9800) Delete '{0}' and its {1} membership(s)? Manual costs in this category are kept but unlinked. Delete category Edit {0} Meter: {0} {0} meter(s), {1} type(s) Type: {0} Members New category No members yet — add a meter or an energy type. Save the category first to add members. Saved. Add members below. Sort Sort order Cost Actions Amount Cancel Cost (range) Currency Date Delete Deleted. Enabled Energy type Events: Last seen Manual costs: Meter Meters Mode Name Name is required. No data in this range. Now Preview Range All time Last 12 months Last 24 months Last 5 years Readings: Save Saved. Scope Skipped rows: Status Target This year Type Unit Value Add connector Back to '{0}' Base URL (e.g. http://homeassistant.local:8123) Delete '{0}'? {0} source(s) use it and will stop ingesting until reassigned to another connector. Delete connector Disabled — these sources are not ingesting Edit {0} No connectors yet. Add an MQTT broker or a Home Assistant connection. Encrypted before it is stored; database dumps and JSON exports carry nothing usable. Enter credentials here Enter the token here Extra topics (comma-separated, optional) Setting up a connector for a source of '{0}'. Saving it takes you back. Host Last status New connector no Password env-var name (optional) Password (optional) Password (stored — type to replace) Port name of an environment variable Secrets are never stored here. Credentials/tokens are referenced by the (or Docker secret) resolved at runtime. Base URL differs from the saved one. Re-enter the token to test against a different host — a stored token is only sent to the host it was saved for. Base URL is required. Connected — Home Assistant API reachable and token accepted. Connected — {0} = {1}. Test connection Test entity id (optional, e.g. sensor.house_power) Environment variable '{0}' is not set on the server. Set it and restart the app, or switch on "Enter the token here" to store the token directly. Connection failed: {0} Home Assistant answered {0}. Connected, but "{0}" has no numeric state (unavailable, unknown or not a number). Enter a token first. Name the environment variable holding the token, or switch on "Enter the token here". No token available to test. TLS Long-lived access token Token env-var name (e.g. HA_TOKEN) name The variable's , not the token. Set it on the server and restart the app. Enter the token, or switch off "Enter the token here" and name an env var. Long-lived access token (stored — type to replace) Not used Used by +{0} more Username env-var name (optional) Username (optional) On: subscribe to state changes and ingest in real time. Off: REST poll on each source's interval. Real-time WebSocket push yes as of {0} Burner runtime Consumption by month Deliveries ({0}) Effective rate {0}% of {1} {2} Forecast to empty No deliveries recorded. No consumable meters found. Add a meter with mode , or load the reference data from and set up its tank in Consumables ({0} {1}/day) Record delivery Tank level {0} has no tank set up yet — its level, fill and forecast need the tank's capacity and dipstick calibration. {0} used Used (range) Category Now Prev Latest month with data Costs are reported per cost category, and there is none yet: No costs this year yet. They appear once a meter in a cost category records consumption with a tariff in effect. No meter counts toward a cost category yet. Pick categories when editing a meter, or assign them per category: No meters yet. Costs start with a meter — add one, or import existing data: No tariffs yet — consumption needs a price before it has a cost: This month What cost more / less (year vs last year) What costs most (this year) Add energy type Base unit Base unit (kWh, m3, L, h) Color hex (optional, e.g. #4caf50) Default mode Cannot delete '{0}': {1} meter(s) still use it. Delete '{0}'? This cannot be undone. Delete energy type Display name Edit {0} Icon (optional) Key Key '{0}' is already in use. Key (stable machine key, e.g. electricity) New energy type Key, display name and base unit are required. Consumption Upstream of Energy Flow Where the top-level flow goes. Arrow thickness ∝ amount; "Other" is the unmetered remainder. {0} flow No meter chain configured yet. In → edit a sub-meter and set its to show where the main meter's flow divides (e.g. main → car, pool, other). upstream meter(s) No consumption recorded for these meters in the selected range yet. No meters for this energy type yet. Add meters in , or load the reference data from Top-level throughput Consumption Generation Home Assistant MQTT broker Delivery Ignore Manual cost Reading Tank level Correction Counter reset Delivery Meter swap Note Tank level Consumable balance Cumulative counter Direct delta Generation counter Instant rate Runtime counter Virtual Anomaly Counter reset Meter swap Month-end value Estimated Imported Interpolated Manual Measured Home Assistant Import Manual MQTT Tasmota Virtual Delta Level Rate Register Runtime Empirical Fixed Base price Bonus Discount Feed-in Tax Unit price Energy type Global Meter Allowed not enabled (MeterVault__AllowInAppUpdate) not supported on this install For local debugging, enable the {0} environment by setting the {1} environment variable to {0} and restarting the app. Development Mode Swapping to {0} environment will display more detailed information about the error that occurred. The Development environment shouldn't be enabled for deployed applications. It can result in displaying sensitive information from exceptions to end users. Error. An error occurred while processing your request. Error Request ID: Other ({0}) Row {0}: register for meter {1} fell {2}→{3}; a swap event was created (please check). Row {0}: register for meter {1} fell {2}→{3}; consumption across the swap set to {4}. Row {0}: skipped ({1}). Row {0}: expected unit "{1}" but found "{2}". Row {0}: unparseable date, skipped. Back to Import Choose CSV Col {0} Col {0}: {1} Commit import Commit failed: {0} Imported batch #{0}: {1} rows staged. Consumption recomputed. Auto-detect Date column Day (31.12.2024) Date format Month name (Januar 2024) Detect swaps Dry-run preview {0} rows, {1} columns First data row Column Role Header row Sample Upload any CSV, map its columns to your meters and categories, preview what would be staged, then commit it as a revertible import. Values may use the German dialect (decimal comma, unit suffixes, or dates) — the same parser the reference sheets use. The mapping changed after the preview. Run the dry run again, then commit. meter {0} Nothing staged. Check the first-data-row, date column and column mappings above. Faded rows are before the first data row. The 📅 column supplies the date. Select category Select meter Skip zero rows 1. Parsing options 2. Column preview 3. Map columns 4. Preview & commit Import wizard e.g. kWh {0} all read into '{1}'. Each Reading column needs its own meter. Col {0} (ManualCost) needs a target category. Col {0} ({1}) needs a target meter. Map at least one column to a role other than Ignore. Import #{0} reverted. Imported Rows Source Wrote to Dry-run a reference sheet Import failed: {0} Load reference data Mapping wizard No imports yet. Costs (Kosten) Electricity (Strom) Heating oil (Heizöl) Water (Wasser) Recent imports Reference data loaded. Reference dataset Load the bundled Energiebilanz sheets (electricity, water, heating oil, costs) as a starter dataset with meters, tariffs and categories. Loaded Reference profile Revert Delete all {0} rows from import #{1} ({2}) and recompute the affected meters? Revert import? Revert failed: {0} active reverted unnamed {0} warnings Your own CSV Map an arbitrary sheet's columns to your meters/categories, preview and commit it as a revertible import. Or dry-run against one of the built-in reference profiles below. Dark mode Find a meter Language Light mode Reload Toggle navigation An unhandled error has occurred. about the same Add first reading Add reading Add reading — {0} Add source Set up another connector Attribute (optional; blank = state) Back to meters Backdated before the latest reading — consumption from there on is recomputed. (baseline {0}) {0} {1} since last reading Component Connect a live source Connector '{0}' is disabled, so this source would never ingest. Enable it first. '{0}' is disabled, so it cannot serve this source — '{0}' is a {1} connector; a {2} source needs {3}. Cost this year (set it up once; every source then just picks it). create one Below the last reading ({0} {1}) on a register that only counts up, so it would be rejected. If the meter was swapped or its counter reset, record that first — the value you typed is kept. Delete the {0} of {1}? The new register's start reading recorded with it is removed too, and consumption is recomputed. Delete event Delete the {0} of {1}? Consumption is recomputed. Delete this hand-entered reading Delete the reading {0} {1} of {2}? Consumption is recomputed without it. Delete reading Delete this {0} source? Delete source Edit meter Edit source enable it Open the {0} flow Enter a value Entity id (e.g. sensor.house_power) Event deleted — consumption recomputed. Notes annotate this meter's history; they change no figures. Record a meter swap or a counter reset here — the history stays continuous on this meter. Tank levels and deliveries drive this tank's consumption. Flags From That time is in the future. Nothing recorded for this meter yet — start with a first value. Go to events Imported Came from an import — revert that import to remove it. Kind {0} this month last month {0} {1} Last reading {0} {1} on {2}. Last value · {0} last year Lifetime total Local time in {0}. Manage tariffs This meter no longer exists. New source no no basis yet no change since last reading No {0} connector yet — No normalized consumption yet. No events recorded yet. No raw readings. No readings yet — prefilled with this meter's baseline ({0} {1}). No ingest sources bound to this meter. Add one to pull from MQTT/Tasmota or Home Assistant. No tank set up for this meter yet — its level, fill and forecast need the tank's capacity and dipstick calibration. No applicable tariffs. Meter #{0} not found. Notes Offset Pick a {0} connector for this {1} source. Hourly is plenty for a meter — monthly totals and cost come out identical, with far less raw data. Poll interval (minutes) Prev→New Priority '{0}' is disabled no connector — never ingests '{0}' is {1}, needs {2} ≈ {0} {1} by month end ≈ {0} {1} full year Quality Reading deleted — consumption recomputed. Reading ({0}) Rejected — below the previous reading on a register that only counts up. If the meter was swapped or reset, record that first. Replaced the reading at that time with {0} {1}. Reading saved: {0} {1}. Readings Most recent {0} normalized deltas. Most recent {0} (raw, immutable audit truth). Times in {1}. Record event Record counter reset Record meter swap Record tank level Meter register details Register span This meter already has a reading at that time — saving replaces its value. Replaces the new meter's start value recorded with the swap — consumption across the swap stays correct. retired Save reading Saving… Scale This meter S/N {0} Set up tank That clock time never happened in {0} — the clocks moved forward. Pick another time. Source deleted. Source saved. Source type Below last reading — swapped or reset? Consumption ({0}) Events ({0}) Readings ({0}) Sources ({0}) Tariffs ({0}) A tank's consumption comes from tank levels and deliveries, which are recorded as events — a reading entered here would change nothing. open Time Time Time path (optional, e.g. Time) To MQTT topic (e.g. tele/plug1/SENSOR) Value kind Value path (e.g. ENERGY.Total; blank = bare scalar) A virtual meter has no readings of its own — enter readings on the meters it adds up. Virtual meter — it has no readings of its own; its value is the sum of the upstream meters linked to it. See it in the flow view. vs last month {0} vs {1} last year yes That did not go through, and nothing was changed. Try again; the details are in the log. Register after the reset ({0}) Its last value before it started over. Leave empty if unknown — the stretch since the last reading is then not counted. Register before the reset ({0}) Later readings count on from {0} {1}. Delivered ({0}) Delivered since then: {0} {1} First level for this tank — consumption is counted from the next one. A refill of the tank. It raises the level; the next tank level turns the difference into consumption. A remark on this meter's history, e.g. a repair or a moved sensor. It changes no figures. The register started over — a reset or a rollover — but it is still the same meter. Later readings count on from the value after the reset. The physical meter was replaced. Enter the old meter's final reading and the new meter's start reading — the history continues on this meter without a gap or a spike. A dipstick or gauge reading of what is in the tank. Consumption is the difference to the previous level, plus the deliveries in between. Last level: {0} ({1} {2}) on {3} Last reading before: {0} {1} on {2} Tank level The level rose {0} {1} more than the recorded deliveries — is a delivery missing? It is booked as no consumption. = {0} {1} in the tank {0} live source(s) feed this meter. If they still read the old register, update or disable them on the Sources tab — otherwise their next value counts against the new one. Usually 0, or the value on the installation record. New meter — start reading ({0}) Centimetres need the tank's dipstick calibration — set it up under Edit meter. No earlier reading — the old register counts from the meter's initial baseline, {0} {1}. Not a number Note Note (optional) From the swap record or a photo of the old meter. Prefilled with the last reading — the difference is booked as consumption at the swap. Old meter — final reading ({0}) A swap or reset is already recorded between the same two readings — delete it first, or pick a time after the next reading. That value is not possible here — a delivery must be above zero, and a level cannot be negative. Enter an amount. The old register's final reading is below where it last stood (its last reading, or the meter's initial baseline) — check both numbers. This came from an import — revert that import to remove it. A later meter swap or counter reset was recorded against this — delete that one first. A tank level is already recorded at exactly this time — delete that one first, or pick another minute. A level in centimetres needs the tank's calibration — set it up under Edit meter, or enter the volume. This event does not apply to a meter in this measurement mode. It no longer exists — the page was out of date. Only hand-entered readings can be deleted here — measured readings are the audit record, and imported ones go with their import. Enter the note. There is already a reading at exactly this time — pick a minute before or after it, depending on which meter it belongs to. The new register's start reading could not be stored because a reading arrived meanwhile. Nothing was saved — try again. {0} reading(s) are already recorded after this time — the next is {1} {2} on {3}. They will count as the new register; if they still belong to the old meter, pick a later time. Delivery recorded — consumption recomputed. Note saved. Counter reset recorded — consumption recomputed. Meter swap recorded — consumption recomputed. Tank level recorded — consumption recomputed. {0} {1} since that reading, booked at this time. {0} — {1} Used since the last level: {0} {1} Showing {0} of {1} — keep typing to narrow down. No meters yet. Name, serial number or location Active Add meter Something changed while this dialog was open (a meter or category was deleted). Nothing was saved — check and save again. Cost categories The dashboard reports cost per category; a meter in none has no cost there. Already counted through its energy type in: {0} Delete '{0}'? This cannot be undone. Delete '{0}'? This will also delete {1} reading(s) and {2} consumption row(s). This cannot be undone. Delete meter Edit {0} to load the reference data. No meters yet. Add one, or go to Initial register baseline rate in this meter's unit (e.g. kW for kWh, L/h for L): a source reporting W or L/min should carry a scale factor to convert it first. Power/flow sensor — readings are an instantaneous rate, integrated over time into consumption. Store the value as a per-hour Location (optional) Manufacturer (optional) Measurement mode Model (optional) New meter no No cost categories yet, so this meter's cost will not show on the dashboard. Create one in No meter matches “{0}”. PV role (optional) Tag the house meter total_load and the grid meter grid_import to unlock self-consumption, autarky and savings on the Solar page. Settings that affect consumption changed — it will be recomputed on save. Record meter swap instead Name, energy type and unit are required. Was the physical meter replaced? Record a meter swap instead: history, sources, flow links and cost categories stay on this meter, without a gap. Retire a meter only when it is gone for good. — none — Search by name, serial number, location or type Serial number (optional) Sources Capacity Enter the tank's capacity to set up its tank. Fixed rate ({0}/h) Capacity sets the fill level; the calibration turns dipstick centimetres into volume. Levels and deliveries are then recorded on the meter's Events tab. Offset ({0}) Burner rate Tank {0} per cm e.g. 7000 L ÷ 150 cm = 46.67. Leave empty if levels are entered as volume. This meter measures a subsection of the selected meter(s)' flow. Sub-meter of (upstream meters) Virtual "sum" meter — it has no readings of its own. In the flow view it equals the sum of the upstream meters you select below (e.g. Sum Solar = Solar 1 + Solar 2). yes Admin Connectors Oil / consumables Cost categories Energy types Import Meters Overview Meters & data Energy Settings Solar / PV Tariffs Trends Sorry, the content you are looking for does not exist. Not Found The session has been paused by the server. Failed to rejoin. Rejoining the server... Resume Failed to resume the session. Retry Rejoin failed... trying again in seconds. Please retry or reload the page. Flow diagram No flow to show for this period. Access & ingestion closed (401) API docs at {0} key(s) configured Keys themselves are never shown here. Set API keys with open (anonymous) effective These are the settings the running instance is using. They are configured via environment variables or Docker/compose, not stored in the database — so config stays reproducible and secrets never land in the DB. Change them in your compose/env and restart. Env keys: Live ingestion workers Locale Locale & time off on Raw-reading retention {0} days Reverse-proxy trust Seed reference data on start Timezone Autarky Generation Generation & self-consumption Generation by meter Grid draw {0} kWh No generation meters found. Add a meter with mode , or load the reference data from in Savings (Ersparnis) Self-consumption {0}% of generation Set the PV role of your house meter to and of your grid meter to to unlock self-consumption, autarky and savings — in the meter editor under Add tariff Component Delete this {0} tariff ({1} {2})? Delete tariff Edit tariff No tariffs yet. Add one, or load the reference data from New tariff Notes (optional) open Global Meter: {0} Select the energy type or meter this tariff applies to. Type: {0} Unit and valid-from are required. Unit (e.g. EUR/kWh, EUR/m3, EUR/month) Valid from Valid to Valid to (empty = open-ended) Monthly cost Apply Last 48 months Cost trend Total over range: {0} This pulls the latest source, rebuilds it, and restarts the service. It takes a few minutes, during which MeterVault is unavailable. Readings are not affected — ingestion resumes on restart. Update MeterVault pull the new image and recreate the container run: update MeterVault {0} is available — this instance runs {1}. Starting… Update now Could not start the update. Could not start the update: {0} Could not start systemd-run. Update cannot be started: {0}. Update started. The service restarts when the rebuild finishes — this usually takes a few minutes.