365 lines
10 KiB
Markdown
365 lines
10 KiB
Markdown
# Power & Energy Monitoring Properties
|
|
|
|
Properties for power consumption measurement, energy usage tracking, and reporting thresholds via Zigbee2MQTT.
|
|
|
|
## Sensor Properties (Read-Only)
|
|
|
|
### power
|
|
|
|
- **Type**: Sensor (read-only)
|
|
- **Unit**: Watts (W)
|
|
- **Description**: Instantaneous measured power consumption of the connected load.
|
|
- **Home Assistant Entity**: `sensor.[device_name]_power`
|
|
- **Updates**: Based on activePowerReports threshold or periodicPowerAndEnergyReports interval
|
|
- **Use cases**:
|
|
- Real-time power monitoring
|
|
- Detect when lights turn on/off
|
|
- Track power consumption changes
|
|
- Trigger automations based on power usage
|
|
|
|
### energy
|
|
|
|
- **Type**: Sensor (read-only)
|
|
- **Unit**: Kilowatt-hours (kWh)
|
|
- **Description**: Cumulative energy consumption over time.
|
|
- **Home Assistant Entity**: `sensor.[device_name]_energy`
|
|
- **Updates**: Based on activeEnergyReports threshold or periodicPowerAndEnergyReports interval
|
|
- **Use cases**:
|
|
- Long-term energy tracking
|
|
- Billing/cost calculations
|
|
- Energy usage analytics
|
|
- Historical consumption trends
|
|
|
|
## Reporting Configuration
|
|
|
|
### activePowerReports
|
|
|
|
- **Type**: Number
|
|
- **Range**: 0-100
|
|
- **Default**: 10 (10% change)
|
|
- **Description**: Percent power level change that will result in a new power report being sent. 0 = Disabled.
|
|
- **Home Assistant Entity**: `number.[device_name]_active_power_reports`
|
|
- **Special values**:
|
|
- `0` = Disabled (no automatic power reports based on change)
|
|
- `1-100` = Percentage change threshold
|
|
- **Use cases**:
|
|
- Real-time power monitoring
|
|
- Detect significant power changes
|
|
- Trigger automations based on power delta
|
|
- **Common values**:
|
|
- Sensitive monitoring: `5` (5% change)
|
|
- Default: `10` (10% change)
|
|
- Reduce network traffic: `20` (20% change)
|
|
- **Network impact**: Lower values generate more Zigbee traffic
|
|
|
|
### periodicPowerAndEnergyReports
|
|
|
|
- **Type**: Number
|
|
- **Range**: 0-32767
|
|
- **Default**: 3600 seconds (1 hour)
|
|
- **Description**: Time period between consecutive power & energy reports being sent (in seconds). The timer is reset after each report is sent.
|
|
- **Home Assistant Entity**: `number.[device_name]_periodic_power_and_energy_reports`
|
|
- **Units**: Seconds
|
|
- **Special values**:
|
|
- `0` = Disabled (no periodic reports)
|
|
- `1-32767` = Report interval in seconds
|
|
- **Use cases**:
|
|
- Regular energy usage logging
|
|
- Dashboard updates
|
|
- Long-term consumption tracking
|
|
- Backup reporting if active reports miss changes
|
|
- **Common values**:
|
|
- Frequent updates: `300` (5 minutes)
|
|
- Default: `3600` (1 hour)
|
|
- Reduce traffic: `7200` (2 hours)
|
|
- Daily: `86400` (24 hours)
|
|
- **Note**: Works alongside activePowerReports and activeEnergyReports (not instead of)
|
|
|
|
### activeEnergyReports
|
|
|
|
- **Type**: Number
|
|
- **Range**: 0-32767
|
|
- **Default**: 10 (0.10 kWh)
|
|
- **Description**: Energy level change which will result in sending a new energy report. 0 = disabled, 1-32767 = 0.01kWh-327.67kWh.
|
|
- **Home Assistant Entity**: `number.[device_name]_active_energy_reports`
|
|
- **Units**: 0.01 kWh (value of 10 = 0.10 kWh = 100 Wh)
|
|
- **Special values**:
|
|
- `0` = Disabled (no automatic energy reports based on accumulation)
|
|
- `1-32767` = Threshold in 0.01 kWh increments
|
|
- **Use cases**:
|
|
- Track cumulative energy consumption
|
|
- Billing/cost calculations
|
|
- Energy usage analytics
|
|
- Trigger automations at energy milestones
|
|
- **Common values**:
|
|
- Sensitive: `1` (0.01 kWh = 10 Wh)
|
|
- Default: `10` (0.10 kWh = 100 Wh)
|
|
- Reduce traffic: `100` (1.0 kWh)
|
|
- **Example**: Default of 10 means report every 100 Wh (0.1 kWh) consumed
|
|
|
|
## Performance Tuning
|
|
|
|
### quickStartTime
|
|
|
|
- **Type**: Number
|
|
- **Range**: 0-60
|
|
- **Default**: 0 (disabled)
|
|
- **Description**: Duration of full power output while lamp transitions from Off to On. In 60th of second. 0 = disable, 1 = 1/60s, 60 = 1s.
|
|
- **Home Assistant Entity**: `number.[device_name]_quick_start_time`
|
|
- **Units**: 1/60th of a second
|
|
- **Use cases**:
|
|
- Help LED bulbs start reliably
|
|
- Overcome LED driver inrush requirements
|
|
- Prevent flickering on startup
|
|
- **Common values**:
|
|
- Disabled: `0`
|
|
- Short boost: `10` (0.17 seconds)
|
|
- Default boost: `20` (0.33 seconds)
|
|
- Long boost: `60` (1 second)
|
|
|
|
### quickStartLevel
|
|
|
|
- **Type**: Number
|
|
- **Range**: 1-254
|
|
- **Default**: 254 (near full power)
|
|
- **Description**: Level of power output during Quick Start Light time (quickStartTime).
|
|
- **Home Assistant Entity**: `number.[device_name]_quick_start_level`
|
|
- **Use cases**:
|
|
- Ensure LED bulbs receive enough initial power to start
|
|
- Match bulb requirements for startup
|
|
- **Requires**: quickStartTime > 0
|
|
|
|
### higherOutputInNonNeutral
|
|
|
|
- **Type**: Select
|
|
- **Values**: "Disabled (default)", "Enabled"
|
|
- **Default**: "Disabled (default)"
|
|
- **Description**: Increase output level in non-neutral mode to help bulbs start and operate properly.
|
|
- **Home Assistant Entity**: `select.[device_name]_higher_output_in_non_neutral`
|
|
- **Use cases**:
|
|
- Non-neutral installations with LED bulbs
|
|
- Improve dimming range in non-neutral mode
|
|
- Help bulbs work better without neutral wire
|
|
- **Note**: Only applies to non-neutral wiring configurations
|
|
|
|
## Power Type Detection
|
|
|
|
### powerType
|
|
|
|
- **Type**: Sensor (read-only)
|
|
- **Values**: "Non Neutral", "Neutral"
|
|
- **Description**: Detected power wiring type.
|
|
- **Home Assistant Entity**: `sensor.[device_name]_power_type`
|
|
- **Read-only**: Cannot be changed by user, automatically detected
|
|
- **Use cases**:
|
|
- Diagnostic information
|
|
- Verify wiring configuration
|
|
- Troubleshooting installation issues
|
|
- **Note**: Automatically detected by switch hardware
|
|
|
|
## Configuration Patterns
|
|
|
|
### Real-Time Power Monitoring
|
|
|
|
```yaml
|
|
# Sensitive power change detection
|
|
service: number.set_value
|
|
target:
|
|
entity_id: number.bedroom_switch_active_power_reports
|
|
data:
|
|
value: 5 # Report on 5% power change
|
|
|
|
# Frequent periodic backup
|
|
service: number.set_value
|
|
target:
|
|
entity_id: number.bedroom_switch_periodic_power_and_energy_reports
|
|
data:
|
|
value: 300 # Every 5 minutes
|
|
|
|
# Disable energy threshold reports (focus on power)
|
|
service: number.set_value
|
|
target:
|
|
entity_id: number.bedroom_switch_active_energy_reports
|
|
data:
|
|
value: 0 # Disabled
|
|
```
|
|
|
|
### Energy Usage Tracking
|
|
|
|
```yaml
|
|
# Less sensitive power reports
|
|
service: number.set_value
|
|
target:
|
|
entity_id: number.bedroom_switch_active_power_reports
|
|
data:
|
|
value: 20 # Report on 20% change
|
|
|
|
# Hourly periodic reports
|
|
service: number.set_value
|
|
target:
|
|
entity_id: number.bedroom_switch_periodic_power_and_energy_reports
|
|
data:
|
|
value: 3600 # Every hour
|
|
|
|
# Energy threshold reporting
|
|
service: number.set_value
|
|
target:
|
|
entity_id: number.bedroom_switch_active_energy_reports
|
|
data:
|
|
value: 10 # Report every 0.1 kWh
|
|
```
|
|
|
|
### Low Network Traffic
|
|
|
|
```yaml
|
|
# High power change threshold
|
|
service: number.set_value
|
|
target:
|
|
entity_id: number.bedroom_switch_active_power_reports
|
|
data:
|
|
value: 25 # 25% change
|
|
|
|
# 2-hour periodic reports
|
|
service: number.set_value
|
|
target:
|
|
entity_id: number.bedroom_switch_periodic_power_and_energy_reports
|
|
data:
|
|
value: 7200
|
|
|
|
# High energy threshold
|
|
service: number.set_value
|
|
target:
|
|
entity_id: number.bedroom_switch_active_energy_reports
|
|
data:
|
|
value: 100 # Every 1 kWh
|
|
```
|
|
|
|
### LED Bulb Quick Start
|
|
|
|
```yaml
|
|
# Enable quick start with 1/3 second boost
|
|
service: number.set_value
|
|
target:
|
|
entity_id: number.bedroom_switch_quick_start_time
|
|
data:
|
|
value: 20 # 20/60 = 0.33 seconds
|
|
|
|
# Full power during quick start
|
|
service: number.set_value
|
|
target:
|
|
entity_id: number.bedroom_switch_quick_start_level
|
|
data:
|
|
value: 254 # Near maximum
|
|
```
|
|
|
|
### Non-Neutral Optimization
|
|
|
|
```yaml
|
|
# Enable higher output for non-neutral
|
|
service: select.select_option
|
|
target:
|
|
entity_id: select.bedroom_switch_higher_output_in_non_neutral
|
|
data:
|
|
option: "Enabled"
|
|
|
|
# May also need quick start
|
|
service: number.set_value
|
|
target:
|
|
entity_id: number.bedroom_switch_quick_start_time
|
|
data:
|
|
value: 30 # 0.5 seconds
|
|
```
|
|
|
|
### Disable All Monitoring
|
|
|
|
```yaml
|
|
# Turn off all automatic reporting
|
|
service: number.set_value
|
|
target:
|
|
entity_id:
|
|
- number.bedroom_switch_active_power_reports
|
|
- number.bedroom_switch_periodic_power_and_energy_reports
|
|
- number.bedroom_switch_active_energy_reports
|
|
data:
|
|
value: 0
|
|
```
|
|
|
|
## Reporting Behavior
|
|
|
|
The switch can send reports via three independent mechanisms:
|
|
1. **Active Power Reports**: Sent when power changes by threshold percentage
|
|
2. **Active Energy Reports**: Sent when accumulated energy reaches threshold
|
|
3. **Periodic Reports**: Sent at regular time intervals
|
|
|
|
All three work independently and can be used together for comprehensive monitoring.
|
|
|
|
## Home Assistant Integration Example
|
|
|
|
### Power-Based Automation
|
|
|
|
```yaml
|
|
automation:
|
|
- alias: "Detect Light On"
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.bedroom_switch_power
|
|
above: 5 # 5W threshold
|
|
action:
|
|
- service: notify.mobile_app
|
|
data:
|
|
message: "Bedroom light turned on ({{ states('sensor.bedroom_switch_power') }}W)"
|
|
|
|
- alias: "Detect Light Off"
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.bedroom_switch_power
|
|
below: 1 # Less than 1W
|
|
for:
|
|
seconds: 5
|
|
action:
|
|
- service: notify.mobile_app
|
|
data:
|
|
message: "Bedroom light turned off"
|
|
```
|
|
|
|
### Energy Cost Tracking
|
|
|
|
```yaml
|
|
automation:
|
|
- alias: "Daily Energy Report"
|
|
trigger:
|
|
- platform: time
|
|
at: "23:59:00"
|
|
action:
|
|
- service: notify.mobile_app
|
|
data:
|
|
message: >
|
|
Bedroom light energy today: {{ states('sensor.bedroom_switch_energy') }} kWh
|
|
Estimated cost: ${{ (states('sensor.bedroom_switch_energy') | float * 0.12) | round(2) }}
|
|
```
|
|
|
|
## Example Calculations
|
|
|
|
### Power Threshold
|
|
activePowerReports = `20` → Report when power changes by 20%
|
|
- Load at 40W, dims to 35W: Change is 12.5%, no report
|
|
- Load at 40W, dims to 30W: Change is 25%, report sent
|
|
|
|
### Energy Threshold
|
|
activeEnergyReports = `50` → Report every 0.5 kWh (500 Wh)
|
|
- 100W bulb for 5 hours: 500 Wh consumed → Report sent
|
|
|
|
### Periodic Reporting
|
|
periodicPowerAndEnergyReports = `1800` → Report every 30 minutes
|
|
- Regardless of power/energy changes, status sent every 30min
|
|
|
|
## Important Notes
|
|
|
|
- All reporting properties work independently
|
|
- Power and energy sensors update based on configured thresholds
|
|
- quickStartTime/Level only applies to the transition from off to on
|
|
- higherOutputInNonNeutral only helps in non-neutral wiring setups
|
|
- Sensors are read-only; only configuration properties can be set
|
|
- Lower reporting thresholds increase Zigbee network traffic
|
|
- Power readings may have ~1W accuracy tolerance
|