A YAML script for Home Assistant that will allow you to interface with the Public SNMPv1 to monitor the UPS
Configuration YAML
cyberpower.yaml
sensor:
- platform: snmp
scan_interval: 60
name: "ups_batterycapacity"
host: xxx.xxx.xxx.xxx
community: public
baseoid: 1.3.6.1.4.1.3808.1.1.1.2.2.1.0
accept_errors: true
unit_of_measurement: "%"
- platform: snmp
scan_interval: 60
name: "ups_load"
host: xxx.xxx.xxx.xxx
community: public
baseoid: 1.3.6.1.4.1.3808.1.1.1.4.2.3.0
accept_errors: true
unit_of_measurement: "%"
- platform: snmp
scan_interval: 60
name: ups_nompower
host: xxx.xxx.xxx.xxx
community: public
baseoid: 1.3.6.1.4.1.3808.1.1.1.4.2.5.0
accept_errors: true
unit_of_measurement: W
device_class: power
- platform: snmp
scan_interval: 60
name: ups_nominv
host: xxx.xxx.xxx.xxx
community: public
baseoid: 1.3.6.1.4.1.3808.1.1.1.3.2.1.0
accept_errors: true
unit_of_measurement: V
device_class: voltage
value_template: "{{((value | int) / 10) | int}}"
- platform: snmp
scan_interval: 60
name: ups_timeleft
host: xxx.xxx.xxx.xxx
community: public
baseoid: 1.3.6.1.4.1.3808.1.1.1.2.2.4.0
accept_errors: true
unit_of_measurement: min
value_template: "{{((value | int) / 6000) | int}}"
- platform: snmp
scan_interval: 30
name: ups_status
host: xxx.xxx.xxx.xxx
community: public
baseoid: 1.3.6.1.4.1.3808.1.1.1.4.1.1.0
accept_errors: true
value_template: >-
{% set status = (value | int) %}
{%- if status == 2 -%}
Online
{%- elif status == 3 -%}
On Battery
{%- elif status == 4 -%}
On Boost
{%- elif status == 5 -%}
On Sleep
{%- elif status == 6 -%}
Off
{%- elif status == 7 -%}
Rebooting
{%- elif status == 8 -%}
On ECO
{%- elif status == 9 -%}
On Bypass
{%- elif status == 10 -%}
On Buck
{%- elif status == 11 -%}
On Overload
{%- else -%}
Unknown
{%- endif -%}
- platform: integration
source: sensor.ups_nompower
name: ups_nompower_wh
unit_time: h
method: left
round: 2
utility_meter:
ups_nompower_wh_daily:
source: sensor.ups_nompower_wh
cycle: daily
homeassistant:
customize:
sensor.ups_batterycapacity:
friendly_name: "UPS Battery Capacity"
icon: mdi:battery
sensor.ups_load:
friendly_name: "UPS Load"
icon: mdi:percent
sensor.ups_nompower:
friendly_name: "UPS Nominal Output Power"
icon: mdi:flash
sensor.ups_nominv:
friendly_name: "UPS Nominal Input Voltage"
icon: mdi:flash
sensor.ups_status:
friendly_name: "UPS Status"
icon: mdi:information-outline
sensor.ups_timeleft:
friendly_name: "UPS Time Left"
icon: mdi:clock-alert
sensor.ups_nompower_wh:
friendly_name: "Server & Network Consumption Energy"
icon: mdi:flash
unit_of_measurement: Wh
device_class: energy
sensor.ups_nompower_wh_daily:
friendly_name: "Server & Network Consumption Energy (Daily)"
icon: mdi:flash
unit_of_measurement: Wh
device_class: energy
group:
cyberpower_ups:
name: CyberPower UPS
entities:
- sensor.ups_batterycapacity
- sensor.ups_load
- sensor.ups_nompower
- sensor.ups_nominv
- sensor.ups_status
- sensor.ups_timeleft
- sensor.ups_nompower_wh
- sensor.ups_nompower_wh_daily
Dashboard YAML
type: vertical-stack
cards:
- type: markdown
content: <h1>Server and Network UPS</h1>
- type: glance
entities:
- entity: sensor.ups_status
name: Status
- entity: sensor.ups_batterycapacity
name: Battery
- entity: sensor.ups_timeleft
name: Time Left
- entity: sensor.ups_nompower
name: Power
Energy Dashboard
The following sensor can be added to the Energy Dashboard as an Individual Device
- Friendly Name: "Server & Network Consumption Energy (Daily)"
- Display Name: "Server & Network"
