Add input_number state to prometheus metrics (#56507)

* Add input_number to prometheus metrics

* Add prometheus input_number tests

* Removed unused import from test
This commit is contained in:
alim4r 2021-11-18 04:35:48 +01:00 committed by GitHub
parent 5d0c758886
commit e180f1e302
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 0 deletions

View File

@ -276,6 +276,15 @@ class PrometheusMetrics:
value = self.state_as_number(state) value = self.state_as_number(state)
metric.labels(**self._labels(state)).set(value) metric.labels(**self._labels(state)).set(value)
def _handle_input_number(self, state):
metric = self._metric(
"input_number_state",
self.prometheus_cli.Gauge,
"State of the input number",
)
value = self.state_as_number(state)
metric.labels(**self._labels(state)).set(value)
def _handle_device_tracker(self, state): def _handle_device_tracker(self, state):
metric = self._metric( metric = self._metric(
"device_tracker_state", "device_tracker_state",

View File

@ -7,6 +7,7 @@ import unittest.mock as mock
import pytest import pytest
from homeassistant.components import climate, humidifier, sensor from homeassistant.components import climate, humidifier, sensor
from homeassistant.components.demo.number import DemoNumber
from homeassistant.components.demo.sensor import DemoSensor from homeassistant.components.demo.sensor import DemoSensor
import homeassistant.components.prometheus as prometheus import homeassistant.components.prometheus as prometheus
from homeassistant.const import ( from homeassistant.const import (
@ -99,6 +100,17 @@ async def prometheus_client(hass, hass_client, namespace):
sensor5.entity_id = "sensor.sps30_pm_1um_weight_concentration" sensor5.entity_id = "sensor.sps30_pm_1um_weight_concentration"
await sensor5.async_update_ha_state() await sensor5.async_update_ha_state()
number1 = DemoNumber(None, "Threshold", 5.2, None, False, 0, 10, 0.1)
number1.hass = hass
number1.entity_id = "input_number.threshold"
await number1.async_update_ha_state()
number2 = DemoNumber(None, None, 60, None, False, 0, 100)
number2.hass = hass
number2.entity_id = "input_number.brightness"
number2._attr_name = None
await number2.async_update_ha_state()
return await hass_client() return await hass_client()
@ -229,6 +241,18 @@ async def test_view_empty_namespace(hass, hass_client):
'friendly_name="SPS30 PM <1µm Weight concentration"} 3.7069' in body 'friendly_name="SPS30 PM <1µm Weight concentration"} 3.7069' in body
) )
assert (
'input_number_state{domain="input_number",'
'entity="input_number.threshold",'
'friendly_name="Threshold"} 5.2' in body
)
assert (
'input_number_state{domain="input_number",'
'entity="input_number.brightness",'
'friendly_name="None"} 60.0' in body
)
async def test_view_default_namespace(hass, hass_client): async def test_view_default_namespace(hass, hass_client):
"""Test prometheus metrics view.""" """Test prometheus metrics view."""