Collection of CheckMK checks (see https://checkmk.com/). All checks and plugins are provided as is. Absolutely no warranty. Send any comments to thl-cmk[at]outlook[dot]com

Skip to content
Snippets Groups Projects
Commit b8cba490 authored by thl-cmk's avatar thl-cmk :flag_na:
Browse files

Delete fritzbox_smarthome_power_meter.py

parent 338f5df2
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# License: GNU General Public License v2
#
# Author: thl-cmk[at]outlook[dot]com
# URL : https://thl-cmk.hopto.org
# Date : 2023-12-28
# File : fritzbox_smarthome_power_meter.py (check plugin)
#
#
from time import time as time_now
from typing import Dict
from cmk.base.plugins.agent_based.agent_based_api.v1 import (
GetRateError,
Result,
Service,
State,
check_levels,
get_rate,
get_value_store,
register,
)
from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import CheckResult, DiscoveryResult
from cmk.utils.render import physical_precision
from cmk.base.plugins.agent_based.utils.fritzbox_smarthome import AvmSmartHomeDevice
def discovery_fritzbox_smarthome_voltage_single(
section: AvmSmartHomeDevice | Dict[str, AvmSmartHomeDevice]
) -> DiscoveryResult:
if isinstance(section, AvmSmartHomeDevice):
if section.power_meter and section.power_meter.voltage:
yield Service()
def discovery_fritzbox_smarthome_voltage_multiple(
section: AvmSmartHomeDevice | Dict[str, AvmSmartHomeDevice]
) -> DiscoveryResult:
if not isinstance(section, AvmSmartHomeDevice):
for device_id, device in section.items():
if device.power_meter and device.power_meter.voltage:
yield Service(item=str(device_id))
def check_fritzbox_smarthome_voltage_single(
params, section: AvmSmartHomeDevice | Dict[str, AvmSmartHomeDevice]
) -> CheckResult:
if not isinstance(section, AvmSmartHomeDevice):
return
if section.power_meter and section.power_meter.voltage:
yield from check_levels(
label='Voltage',
levels_lower=params.get('levels_lower'),
levels_upper=params.get('levels'),
metric_name='voltage',
render_func=lambda x: f'{x}V',
value=section.power_meter.voltage,
)
def check_fritzbox_smarthome_voltage_multiple(
item, params, section: AvmSmartHomeDevice | Dict[str, AvmSmartHomeDevice]
) -> CheckResult:
if isinstance(section, Dict):
try:
yield from check_fritzbox_smarthome_voltage_single(params, section[item])
except KeyError:
return
register.check_plugin(
name='fritzbox_smarthome_voltage_single',
service_name='Voltage',
sections=['fritzbox_smarthome'],
discovery_function=discovery_fritzbox_smarthome_voltage_single,
check_function=check_fritzbox_smarthome_voltage_single,
check_ruleset_name='voltage_single',
check_default_parameters={}
)
register.check_plugin(
name='fritzbox_smarthome_voltage_multiple',
service_name='Smarthome Voltage %s',
sections=['fritzbox_smarthome'],
discovery_function=discovery_fritzbox_smarthome_voltage_multiple,
check_function=check_fritzbox_smarthome_voltage_multiple,
check_ruleset_name='voltage',
check_default_parameters={}
)
def discovery_fritzbox_smarthome_power_single(
section: AvmSmartHomeDevice | Dict[str, AvmSmartHomeDevice]
) -> DiscoveryResult:
if isinstance(section, AvmSmartHomeDevice):
if section.power_meter and section.power_meter.power:
yield Service()
def discovery_fritzbox_smarthome_power_multiple(
section: AvmSmartHomeDevice | Dict[str, AvmSmartHomeDevice]
) -> DiscoveryResult:
if not isinstance(section, AvmSmartHomeDevice):
for device_id, device in section.items():
if device.power_meter and device.power_meter.power:
yield Service(item=str(device_id))
def check_fritzbox_smarthome_power_single(
params, section: AvmSmartHomeDevice | Dict[str, AvmSmartHomeDevice]
) -> CheckResult:
if not isinstance(section, AvmSmartHomeDevice):
return
if section.power_meter and section.power_meter.power:
yield from check_levels(
value=section.power_meter.power,
metric_name='power',
label='Power',
render_func=lambda x: f'{x}W',
levels_upper=params.get('levels_upper'),
levels_lower=params.get('levels_lower'),
)
def check_fritzbox_smarthome_power_multiple(
item, params, section: AvmSmartHomeDevice | Dict[str, AvmSmartHomeDevice]
) -> CheckResult:
if isinstance(section, Dict):
try:
yield from check_fritzbox_smarthome_power_single(params, section[item])
except KeyError:
return
register.check_plugin(
name='fritzbox_smarthome_power_single',
service_name='Power',
sections=['fritzbox_smarthome'],
discovery_function=discovery_fritzbox_smarthome_power_single,
check_function=check_fritzbox_smarthome_power_single,
check_ruleset_name='epower_single',
check_default_parameters={}
)
register.check_plugin(
name='fritzbox_smarthome_power_multiple',
service_name='Smarthome Power %s',
sections=['fritzbox_smarthome'],
discovery_function=discovery_fritzbox_smarthome_power_multiple,
check_function=check_fritzbox_smarthome_power_multiple,
check_ruleset_name='epower',
check_default_parameters={}
)
def discovery_fritzbox_smarthome_energy_single(
section: AvmSmartHomeDevice | Dict[str, AvmSmartHomeDevice]
) -> DiscoveryResult:
if isinstance(section, AvmSmartHomeDevice):
if section.power_meter and section.power_meter.energy:
yield Service()
def discovery_fritzbox_smarthome_energy_multiple(
section: AvmSmartHomeDevice | Dict[str, AvmSmartHomeDevice]
) -> DiscoveryResult:
if not isinstance(section, AvmSmartHomeDevice):
for device_id, device in section.items():
if device.power_meter and device.power_meter.energy:
yield Service(item=str(device_id))
def check_fritzbox_smarthome_energy_single(
params, section: AvmSmartHomeDevice | Dict[str, AvmSmartHomeDevice]
) -> CheckResult:
if not isinstance(section, AvmSmartHomeDevice):
return
if section.power_meter and section.power_meter.energy:
try:
energy = get_rate(
value_store=get_value_store(),
key='energy',
time=time_now(),
value=section.power_meter.energy,
raise_overflow=True
)
except GetRateError as e:
yield Result(state=State.OK, notice=str(e))
else:
yield from check_levels(
value=energy,
metric_name='energy',
label='Consumption current',
render_func=lambda x: physical_precision(v=x, precision=3, unit_symbol="Wh"),
levels_lower=params.get('levels_lower'),
levels_upper=params.get('levels_upper'),
)
yield Result(
state=State.OK,
summary=f'Consumption total: '
f'{physical_precision(v=section.power_meter.energy, precision=3, unit_symbol="Wh")}'
)
def check_fritzbox_smarthome_energy_multiple(
item, params, section: AvmSmartHomeDevice | Dict[str, AvmSmartHomeDevice]
) -> CheckResult:
if isinstance(section, Dict):
try:
yield from check_fritzbox_smarthome_energy_single(params, section[item])
except KeyError:
return
register.check_plugin(
name='fritzbox_smarthome_energy_single',
service_name='Energy',
sections=['fritzbox_smarthome'],
discovery_function=discovery_fritzbox_smarthome_energy_single,
check_function=check_fritzbox_smarthome_energy_single,
check_ruleset_name='energy_single',
check_default_parameters={}
)
register.check_plugin(
name='fritzbox_smarthome_energy_multiple',
service_name='Smarthome Energy %s',
sections=['fritzbox_smarthome'],
discovery_function=discovery_fritzbox_smarthome_energy_multiple,
check_function=check_fritzbox_smarthome_energy_multiple,
check_ruleset_name='energy_multiple',
check_default_parameters={}
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment