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