This integration imports Wiener Netze smart meter data into Home Assistant and exposes:
- sensor entities
- recorder statistics streams for Energy Dashboard and history views
This custom component is configurable through the Home Assistant UI only.
YAML configuration is not supported.
Custom component folder name: custom_components/wnsmeter30.
Use the Home Assistant integration dialog to enter your Wiener Netze username and password.
After login, Home Assistant opens meter selection. Keep the preselected meters selected and submit.
By default, active and smart-meter-ready meters are preselected.
If no meter matches that status, all discovered meters are preselected.
Inactive meters can appear in the list.
After meter selection, an alias step appears with the description: Change the Display Name of Reading Meter.
For each selected meter (zaehlpunkt), the integration can create up to 3 sensor entities.
Entities view example (meter numbers blurred, suffixes kept readable):
Statistics view example (meter numbers blurred, suffixes kept readable):
<zaehlpunkt> below means your meter ID, for example at0010000000000000001000009111111.
| Entity ID pattern | Created by default | Type | Description |
|---|---|---|---|
sensor.<zaehlpunkt> |
Yes | Sensor entity | Main total energy sensor (kWh), total_increasing. |
sensor.<zaehlpunkt>_daily_cons |
Yes (if _daily_cons toggle is enabled) |
Sensor entity | Latest cumulative value from daily historical consumption stream (kWh). |
sensor.<zaehlpunkt>_daily_cons_day |
Yes (if _daily_cons toggle is enabled) |
Sensor entity | Latest day value (daily delta) derived from the daily consumption stream (kWh). |
If Use alias also for statistic and entity IDs is enabled and an alias exists, entity IDs use alias-based slugs instead of <zaehlpunkt>.
Important:
- There is currently no dedicated
sensor.<zaehlpunkt>_meter_readentity. _meter_readis implemented as recorder statistics (see below).
For each selected meter, these statistic IDs are used:
| Statistic ID pattern | Default | Controlled by |
|---|---|---|
wnsmeter30:<zaehlpunkt_lowercase> |
Enabled | Always on |
wnsmeter30:<zaehlpunkt_lowercase>_cum_abs |
Enabled | Always on |
wnsmeter30:<zaehlpunkt_lowercase>_daily_cons |
Enabled | Toggle: Enable daily historical values, sensor, and statistics (Suffix _daily_cons). |
wnsmeter30:<zaehlpunkt_lowercase>_meter_read |
Enabled | Toggle: Enable total consumption historical values (Zählerstand) and statistics (Suffix meter_read). Energy Dashboard stream (sum is monotonic). |
If Use alias also for statistic and entity IDs is enabled and an alias exists, statistic IDs use an alias-based slug instead of <zaehlpunkt_lowercase>.
Granularity:
_cum_abs: hourly points (derived from finer input)._daily_cons: daily points.
Upstream data source:
_cum_abs: quarter-hour/higher-resolution movement data._daily_cons: daily endpoint values.
When to prefer which:
- Use
_cum_abswhen you want finer trend continuity from high-resolution source data. - Use
_daily_conswhen you want a stream aligned to daily historical values and daily sensor behavior.
Default values in the UI:
Scan interval (minutes):360(6 hours, allowed range5-720)Days retreived by historical API Calls:1095(allowed range1-3650)Enable daily historical values, sensor, and statistics (Suffix _daily_cons).:TrueEnable total consumption historical values (Zählerstand) and statistics (Suffix meter_read).:TrueUse alias also for statistic and entity IDs:FalseMeters: active/smart-meter-ready meters are pre-selected by default; if none match, all discovered meters are pre-selectedEnable raw Api Response written to /config/tmp/wnsm_api_calls:False(uses first writable path from/config/tmp/wnsm_api_calls,/homeassistant/tmp/wnsm_api_calls,/tmp/wnsm_api_calls)
Raw API logging note:
- When raw API logging is enabled, existing files and folders under the selected log root are cleaned during log directory preparation.
When enabled (default):
- Creates sensor entities:
sensor.<zaehlpunkt>_daily_conssensor.<zaehlpunkt>_daily_cons_day
- Imports/maintains statistics stream:
wnsmeter30:<zaehlpunkt_lowercase>_daily_cons
When disabled:
- The two
_daily_cons*sensors are not created. - No new
_daily_consstatistics are imported.
When enabled (default):
- Imports/maintains statistics stream:
wnsmeter30:<zaehlpunkt_lowercase>_meter_read
When disabled:
- No new
_meter_readstatistics are imported. - Existing other sensors/entities are unaffected.
Show daily value (not cumulative):
type: tile
entity: sensor.at0010000000000000001000009111111_daily_cons_day
vertical: false
features_position: bottomUser note:
- All examples below use the sample
zaehlpunktIDat0010000000000000001000009111111. - Replace
at0010000000000000001000009111111with your own meter ID in everyentity/ statistics ID.
chart_type: bar
period: day
type: statistics-graph
title: Daily Consumption
entities:
- wnsmeter30:at0010000000000000001000009111111
hide_legend: true
stat_types:
- changechart_type: bar
period: day
type: statistics-graph
title: Total Consumption per Day from Hourly Sum
days_to_show: 30
entities:
- wnsmeter30:at0010000000000000001000009111111_cum_abs
stat_types:
- state
hide_legend: truechart_type: bar
period: day
type: statistics-graph
title: Total Consumption per Day from Day Sum
days_to_show: 30
entities:
- wnsmeter30:at0010000000000000001000009111111_daily_cons
stat_types:
- state
hide_legend: truechart_type: bar
period: day
type: statistics-graph
title: Einspeisung kumuliert (30 Tage)
days_to_show: 30
entities:
- wnsmeter30:at0010000000000000001000009111111_meter_read
stat_types:
- state
hide_legend: truetype: statistic
entity: wnsmeter30:at0010000000000000001000000000000
period:
calendar:
period: day
offset: -1
stat_type: changetype: tile
entity: sensor.at0010000000000000001000009111111_daily_cons_day
vertical: false
features_position: bottomtype: tile
entity: sensor.at0010000000000000001000009111111
vertical: false
features_position: bottomtype: tile
entity: sensor.at0010000000000000001000009111111_daily_cons
vertical: false
features_position: bottomImportant note:
- If the smart meter hardware is replaced (for example due to a defect), totals from Historical Day and Historical Hour can differ from Total Consumption.
- Historical Day and Historical Hour totals should stay consistent with each other over time.
- Total Consumption corresponds to the "Zaehlerstand" in the Wiener Netze Smart Meter Portal.
In this example, Wiener Netze Smart Meter hardware was exchanged twice, and Total Consumption (Zaehlerstand) got reset to zero.
We recommend using sensor.zaehlpunkt.
After changing options in the integration:
- Home Assistant reloads the integration automatically.
- You can also change the selected meters in the same options dialog.
- If needed, run a full Home Assistant restart to force immediate entity/statistics refresh.
This integration is based on the original work by DarwinsBuddy:





