homeassistant-mikrotik_router
homeassistant-mikrotik_router copied to clipboard
More system health variables
The MikroTik Router Integration does not yet supply all my system health items. I am missing fan 3 and fan 4, poe-out-consumptuon, psu1-current, psu1-voltage, psu2-current and psu2-voltages.
I have altered the sensor_types.py file and tested it.
I have added:
UnitOfElectricCurrent
to:
from homeassistant.const import ()
And added the following sensors:
MikrotikSensorEntityDescription( key="system_fan3-speed", name="Fan3 speed", icon="mdi:fan", native_unit_of_measurement=REVOLUTIONS_PER_MINUTE, device_class=None, state_class=SensorStateClass.MEASUREMENT, entity_category=EntityCategory.DIAGNOSTIC, ha_group="System", data_path="health", data_attribute="fan3-speed", data_name="", data_uid="", data_reference="", ), MikrotikSensorEntityDescription( key="system_fan4-speed", name="Fan4 speed", icon="mdi:fan", native_unit_of_measurement=REVOLUTIONS_PER_MINUTE, device_class=None, state_class=SensorStateClass.MEASUREMENT, entity_category=EntityCategory.DIAGNOSTIC, ha_group="System", data_path="health", data_attribute="fan4-speed", data_name="", data_uid="", data_reference="", ), MikrotikSensorEntityDescription( key="system_poe_out_consumption", name="PoE out power consumption", icon="mdi:transmission-tower", native_unit_of_measurement=UnitOfPower.WATT, suggested_unit_of_measurement=UnitOfPower.WATT, suggested_display_precision=1, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, entity_category=EntityCategory.DIAGNOSTIC, ha_group="System", data_path="health", data_attribute="poe-out-consumption", data_name="", data_uid="", data_reference="", ), MikrotikSensorEntityDescription( key="system_psu1_current", name="PSU 1 power consumption", icon="mdi:lightning-bolt-circle", native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, suggested_unit_of_measurement=UnitOfElectricCurrent.MILLIAMPERE, suggested_display_precision=1, device_class=SensorDeviceClass.CURRENT, state_class=SensorStateClass.MEASUREMENT, entity_category=EntityCategory.DIAGNOSTIC, ha_group="System", data_path="health", data_attribute="psu1-current", data_name="", data_uid="", data_reference="", ), MikrotikSensorEntityDescription( key="system_psu1_voltage", name="PSU 1 Voltage", icon="mdi:lightning-bolt", native_unit_of_measurement=UnitOfElectricPotential.VOLT, suggested_unit_of_measurement=UnitOfElectricPotential.VOLT, suggested_display_precision=1, device_class=SensorDeviceClass.VOLTAGE, state_class=SensorStateClass.MEASUREMENT, entity_category=EntityCategory.DIAGNOSTIC, ha_group="System", data_path="health", data_attribute="psu1-voltage", data_name="", data_uid="", data_reference="", ), MikrotikSensorEntityDescription( key="system_psu2_current", name="PSU 2 power consumption", icon="mdi:lightning-bolt-circle", native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, suggested_unit_of_measurement=UnitOfElectricCurrent.MILLIAMPERE, suggested_display_precision=1, device_class=SensorDeviceClass.CURRENT, state_class=SensorStateClass.MEASUREMENT, entity_category=EntityCategory.DIAGNOSTIC, ha_group="System", data_path="health", data_attribute="psu2-current", data_name="", data_uid="", data_reference="", ), MikrotikSensorEntityDescription( key="system_psu2_voltage", name="PSU 2 Voltage", icon="mdi:lightning-bolt", native_unit_of_measurement=UnitOfElectricPotential.VOLT, suggested_unit_of_measurement=UnitOfElectricPotential.VOLT, suggested_display_precision=1, device_class=SensorDeviceClass.VOLTAGE, state_class=SensorStateClass.MEASUREMENT, entity_category=EntityCategory.DIAGNOSTIC, ha_group="System", data_path="health", data_attribute="psu2-voltage", data_name="", data_uid="", data_reference="", ),
Thanks to your, @tomaae, great work, this was quite easily implemented and the sensors showed up immediately after HomeAssistant restart. I hope you add these sensors with the next update.
For the record: fan 3 and fan 4 are added to my router aftermarket to optimize airflow and RouterOS picks up their respectable variables automatically.
Yea, there are many mikrotik devices with different health sensors.
Can you give me output of /system/health/print terse
?
Hereby:
/system/health/print terse
0 name=poe-out-consumption value=21.8 type=W 1 name=cpu-temperature value=57 type=C 2 name=fan1-speed value=1485 type=RPM 3 name=fan2-speed value=1635 type=RPM 4 name=fan3-speed value=2280 type=RPM 5 name=fan4-speed value=2415 type=RPM 6 name=board-temperature1 value=29 type=C 7 name=psu1-voltage value=26.4 type=V 8 name=psu2-voltage value=52.8 type=V 9 name=psu1-current value=0 type=A 10 name=psu2-current value=0.4 type=A
Great, how can I get power consumption from my Mikrotik devices? CRS328-24P-4S+
/system/health/print terse 0 name=poe-out-consumption value=21.9 type=W 1 name=cpu-temperature value=52 type=C 2 name=sfp-temperature value=36 type=C 3 name=fan1-speed value=0 type=RPM 4 name=fan2-speed value=0 type=RPM 5 name=board-temperature1 value=30 type=C 6 name=psu1-voltage value=26.4 type=V 7 name=psu2-voltage value=52.7 type=V 8 name=psu1-current value=0.1 type=A 9 name=psu2-current value=0.3 type=A
@ffries
Alter (copy and paste) the sensor_types.py
like the first post exact as described and you should be good to go.
Alternatively you can add the following lines to the end of the file sensor_types.py
:
from homeassistant.const import (
UnitOfElectricCurrent,
)
SENSOR_TYPES += (
MikrotikSensorEntityDescription(
key="system_fan3-speed",
name="Fan3 speed",
icon="mdi:fan",
native_unit_of_measurement=REVOLUTIONS_PER_MINUTE,
device_class=None,
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
ha_group="System",
data_path="health",
data_attribute="fan3-speed",
data_name="",
data_uid="",
data_reference="",
),
MikrotikSensorEntityDescription(
key="system_fan4-speed",
name="Fan4 speed",
icon="mdi:fan",
native_unit_of_measurement=REVOLUTIONS_PER_MINUTE,
device_class=None,
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
ha_group="System",
data_path="health",
data_attribute="fan4-speed",
data_name="",
data_uid="",
data_reference="",
),
MikrotikSensorEntityDescription(
key="system_poe_out_consumption",
name="PoE out power consumption",
icon="mdi:transmission-tower",
native_unit_of_measurement=UnitOfPower.WATT,
suggested_unit_of_measurement=UnitOfPower.WATT,
suggested_display_precision=1,
device_class=SensorDeviceClass.POWER,
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
ha_group="System",
data_path="health",
data_attribute="poe-out-consumption",
data_name="",
data_uid="",
data_reference="",
),
MikrotikSensorEntityDescription(
key="system_psu1_current",
name="PSU 1 power consumption",
icon="mdi:lightning-bolt-circle",
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
suggested_unit_of_measurement=UnitOfElectricCurrent.MILLIAMPERE,
suggested_display_precision=1,
device_class=SensorDeviceClass.CURRENT,
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
ha_group="System",
data_path="health",
data_attribute="psu1-current",
data_name="",
data_uid="",
data_reference="",
),
MikrotikSensorEntityDescription(
key="system_psu1_voltage",
name="PSU 1 Voltage",
icon="mdi:lightning-bolt",
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
suggested_unit_of_measurement=UnitOfElectricPotential.VOLT,
suggested_display_precision=1,
device_class=SensorDeviceClass.VOLTAGE,
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
ha_group="System",
data_path="health",
data_attribute="psu1-voltage",
data_name="",
data_uid="",
data_reference="",
),
MikrotikSensorEntityDescription(
key="system_psu2_current",
name="PSU 2 power consumption",
icon="mdi:lightning-bolt-circle",
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
suggested_unit_of_measurement=UnitOfElectricCurrent.MILLIAMPERE,
suggested_display_precision=1,
device_class=SensorDeviceClass.CURRENT,
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
ha_group="System",
data_path="health",
data_attribute="psu2-current",
data_name="",
data_uid="",
data_reference="",
),
MikrotikSensorEntityDescription(
key="system_psu2_voltage",
name="PSU 2 Voltage",
icon="mdi:lightning-bolt",
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
suggested_unit_of_measurement=UnitOfElectricPotential.VOLT,
suggested_display_precision=1,
device_class=SensorDeviceClass.VOLTAGE,
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
ha_group="System",
data_path="health",
data_attribute="psu2-voltage",
data_name="",
data_uid="",
data_reference="",
),
)
Note: considering your system health variables, you haven't added custom fans to your MikroTik router (which is optional), so fan 3
and fan 4
will report 0
.