New (old) UPS
Power Shield PSCR3000
Can it be saved?
I picked up a cheap PowerShield PSCR3000 UPS from an auction. This ones been decommissioned from a WA Gov TAFE. It's 10+ years old. It was not tested and was a little bit of gamble. I would need to replace all the batteries anyway but these things are pretty solid and should just keep on chugging with fresh guts.
15 amp plug?
As this is a 15 amper I first needed to find a C19 cable to power it. https://www.altronics.com.au/p/p8442a-2m-iec-c19-15a-3-pin-black-appliance-mains-lead/
Next I needed to either shave the ground pin or get an adapter from bunnings.
https://www.bunnings.com.au/arlec-10a-to-15a-compact-single-power-adaptor_p0272241
The benfit of the adapter is it just plugs in easy without any hacks.
Choose your adventure.
Battery upgrades
This UPS has 6 x 12v 7Ah with F1 plugs.
I've upgraded the batteries to CSB 12V HRL1234W F2FR 9Ah. These batteries will last up to 10 years... maybe. The old batteries only last about 3 years.
I purchsed the batteries and connectors from LanPlus: https://www.lanplus.com.au/index.php?route=product/product&language=en-gb&product_id=587
The batteries are the same dimensions but use a different connector, the F2. The F2 connector is just wider tab. You can buy an F2 to F1 adapter to reuse the cables.
At time of writing...
- Batteries are about $45 AUD delivered.
- Connector adapters are $3 AUD a pair.
SNMP
As this UPS came with an ethernet card for snmp monitoring we can connect it to home assistant and log data. Below is come of the congfig I use to connect to the device from HA.
sensor:
- platform: snmp
host: 192.168.1.4
version: "1"
community: public
baseoid: .1.3.6.1.2.1.33.1.2.7.0 # upsBatteryTemperature.0
unit_of_measurement: "°C"
name: "UPS battery temperature"
state_class: measurement
accept_errors: true
- platform: snmp
host: 192.168.1.4
version: "1"
community: public
baseoid: .1.3.6.1.2.1.33.1.2.5.0 # upsBatteryVoltage.0
unit_of_measurement: "V"
state_class: measurement
name: "UPS battery Voltage"
accept_errors: true
value_template: "{{ ( value | int / 10 ) | round(1) }}"
- platform: snmp
host: 192.168.1.4
version: "1"
community: public
baseoid: .1.3.6.1.2.1.33.1.2.4.0 # upsEstimatedChargeRemaining.0
unit_of_measurement: "%"
state_class: measurement
name: "UPS battery charge remaining"
accept_errors: true
- platform: snmp
host: 192.168.1.4
version: "1"
community: public
baseoid: .1.3.6.1.2.1.33.1.2.3.0 # upsEstimatedMinutesRemaining.0
unit_of_measurement: "minutes"
state_class: measurement
name: "UPS runtime minutes remaining"
accept_errors: true
- platform: snmp
host: 192.168.1.4
version: "1"
community: public
baseoid: .1.3.6.1.2.1.33.1.2.2.0 # upsSecondsOnBattery.0
unit_of_measurement: "seconds"
state_class: measurement
name: "UPS seconds on battery"
accept_errors: true
- platform: snmp
host: 192.168.1.4
version: "1"
community: public
baseoid: .1.3.6.1.2.1.33.1.3.3.1.3.1 # upsInputVoltage.1
unit_of_measurement: "V"
state_class: measurement
name: "UPS AC Input Voltage"
accept_errors: true
- platform: snmp
host: 192.168.1.4
version: "1"
community: public
baseoid: .1.3.6.1.2.1.33.1.4.4.1.2.1 # upsOutputVoltage.1
unit_of_measurement: "V"
state_class: measurement
name: "UPS output voltage"
accept_errors: true
- platform: snmp
host: 192.168.1.4
version: "1"
community: public
baseoid: .1.3.6.1.2.1.33.1.4.4.1.5.1 # upsOutputPercentLoad.1
unit_of_measurement: "%"
state_class: measurement
name: "UPS output load"
accept_errors: true
- platform: snmp
host: 192.168.1.4
version: "1"
community: public
baseoid: .1.3.6.1.2.1.33.1.2.1.0 # upsBatteryStatus.0
name: "UPS battery status"
value_template: >
{% if value | int == 1 %}
unknown
{% elif value | int == 2 %}
Normal
{% elif value | int == 3 %}
BatteryLow
{% elif value | int == 4 %}
BatteryDepleted
{% else %}
commfail
{% endif %}
accept_errors: true
- platform: snmp
host: 192.168.1.4
version: "1"
community: public
baseoid: .1.3.6.1.2.1.33.1.4.1.0 # upsOutputSource.0
name: "UPS Source"
value_template: >
{% if value | int == 0 %}
unknown
{% elif value | int == 1 %}
other
{% elif value | int == 2 %}
none
{% elif value | int == 3 %}
normal
{% elif value | int == 4 %}
bypass
{% elif value | int == 5 %}
battery
{% elif value | int == 6 %}
booster
{% elif value | int == 7 %}
reducer
{% else %}
commfail
{% endif %}
accept_errors: true