.. py:currentmodule:: sml2mqtt.config.operations
It's possible to define operations which are used to process the received value
.. autopydantic_model:: OnChangeFilter :exclude-members: get_kwargs_on_change :inherited-members: BaseModel
type: change filter
.. autopydantic_model:: RangeFilter :inherited-members: BaseModel :exclude-members: type, get_kwargs_limit
type: range filter
min: 0
.. autopydantic_model:: DeltaFilter :exclude-members: get_kwargs_delta :inherited-members: BaseModel
type: delta filter
min: 5
min %: 10
type: delta filter
min: 5
type: delta filter
min %: 10
.. autopydantic_model:: ThrottleFilter :inherited-members: BaseModel
throttle filter: 60
.. autopydantic_model:: RefreshAction :inherited-members: BaseModel
refresh action: 01:30:00
.. autopydantic_model:: HeartbeatAction :inherited-members: BaseModel
heartbeat action: 30
.. autopydantic_model:: Factor :inherited-members: BaseModel
factor: -1
.. autopydantic_model:: Offset :inherited-members: BaseModel
offset: 10
.. autopydantic_model:: Round :inherited-members: BaseModel
round: 2
.. autopydantic_model:: NegativeOnEnergyMeterWorkaround :inherited-members: BaseModel
negative on energy meter status: true
.. autopydantic_model:: VirtualMeter :inherited-members: BaseModel :exclude-members: get_kwargs_dt_fields, type
type: meter
start now: False
reset times:
- 02:00
reset days:
- 1
- monday
.. autopydantic_model:: MaxValue :inherited-members: BaseModel :exclude-members: get_kwargs_dt_fields, type
type: max value
start now: True
reset times:
- 02:00
.. autopydantic_model:: MinValue :inherited-members: BaseModel :exclude-members: get_kwargs_dt_fields, type
type: min value
start now: True
reset times:
- 02:00
.. autopydantic_model:: MaxOfInterval :inherited-members: BaseModel :exclude-members: get_kwargs_interval_fields, type
type: max interval
interval: 3600
wait for data: False
.. autopydantic_model:: MinOfInterval :inherited-members: BaseModel :exclude-members: get_kwargs_interval_fields, type
type: min interval
interval: 3600
wait for data: False
.. autopydantic_model:: MeanOfInterval :inherited-members: BaseModel :exclude-members: get_kwargs_interval_fields, type
type: mean interval
interval: 3600
wait for data: False
.. autopydantic_model:: Or :inherited-members: BaseModel
or:
- type: change filter
- heartbeat action: 60
.. autopydantic_model:: Sequence :inherited-members: BaseModel
sequence:
- factor: 0.1
- offset: -50
.. py:currentmodule:: sml2mqtt.config.device
These are some examples for sml value configurations
This will report the power consumption of today. The first reported value every day will be 0 and then it will increase for every day.
obis: '0100010800ff' # Obis code for the energy meter
mqtt:
topic: energy_today # MQTT topic for the meter
operations:
- type: meter
start now: true # Start immediately
reset times: # Reset at midnight
- 00:00
- round: 1
- type: change filter # Only report on changes
- refresh action: 01:00 # ... but refresh every hour
This will report a power value every max every 30s. The reported value will be the weighted mean value of the last 30s.
obis: '0100100700ff' # Obis code for the energy meter
mqtt:
topic: power # MQTT topic for the meter
operations:
- type: mean interval # Calculate weighted mean over 30s
interval: 30
wait for data: False
- throttle filter: 30 # Let a value pass every 30s
- round: 0 # Round the mean value to the full number
- type: delta filter # Only report when the value changes at least 10W or 5%
min: 10
min %: 5
- refresh action: 01:00 # ... but refresh every hour