Pi as a UPS monitor
- 
 Hopefully I can get it to do something tomorrow. no more time tonight. 
- 
 Instructions assuming a Pi3 - Install NOOBS to the SD Card.
- Boot the Pi to NOOBS
- Connect to wifi
- Once it sees internet you can choose to install a minimal version of raspbian with no GUI
- wait
- login with default creds pi/raspberry
- run sudo raspi-configto enable SSH and optionally set other options you want.
- edit the wifi config file sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
 network={
 ssid="yourssid"
 psk="ssidpassword"
 }
- reboot the Pi3
- update raspian
- sudo apt-get update
- sudo apt-get upgrade
 
- Install nut- sudo apt-get install nut
 
- Edit sudo nano /etc/nut/nut.conf- change MODE=standalone
 
- change 
- Edit sudo nano /etc/nut/ups.conf
- add a block at the end of the file.
- a default example
 [somenameforups]
 driver = usbhid-ups
 port = auto
 desc = "Some descriptive name for UPS"
- what mine is
 [jaredoffice]
 driver = usbhid-ups
 port = auto
 desc = "Jared's Desk"
 
- a default example
- Test the conf file is right sudo upsdrvctl start
- Launch the UPS daemon sudo upsd
- see if it is talking sudo upsc somenameforups@localhost- or my real one sudo upsc jaredoffice@localhost
 
- or my real one 
 
- 
 Interesting that the last two of the last three messages seem out of order. But - great information. 
- 
 Well - while I don't have a Pi yet, I do happen to have a LM 17.x system running as my Pandora Music box (Pithos). It's within reach of one of the several UPS units I have (I have like nine) so I used your process and got one set up: sudo upsc pandora : Init SSL without certificate database battery.charge: 100 battery.charge.low: 10 battery.charge.warning: 50 battery.date: not set battery.mfr.date: 2014/06/22 battery.runtime: 3336 battery.runtime.low: 120 battery.type: PbAc battery.voltage: 13.5 battery.voltage.nominal: 12.0 device.mfr: APC device.model: Back-UPS ES 550G device.serial: 4B1425P54201 device.type: ups driver.name: usbhid-ups driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.version: 2.7.1 driver.version.data: APC HID 0.95 driver.version.internal: 0.38 input.sensitivity: medium input.transfer.high: 139 input.transfer.low: 92 input.voltage: 125.0 input.voltage.nominal: 120 ups.beeper.status: enabled ups.delay.shutdown: 20 ups.firmware: 904.W1 .D ups.firmware.aux: W1 ups.load: 12 ups.mfr: APC ups.mfr.date: 2014/06/22 ups.model: Back-UPS ES 550G ups.productid: 0002 ups.serial: 4B1425P54201 ups.status: OL ups.timer.reboot: 0 ups.timer.shutdown: -1 ups.vendorid: 051d
- 
 Today will be tinkering with notification options. 
- 
 Just got this: Init SSL without certificate database Error: Data stale
- 
 Went back through the commands above to validation / confirmation: $ sudo nano /etc/nut/nut.confno changes - the same. $ sudo nano /etc/nut/ups.confno changes - the same $ sudo upsdrvctl start Network UPS Tools - UPS driver controller 2.7.1 Network UPS Tools - Generic HID driver 0.38 (2.7.1) USB communication driver 0.32 Duplicate driver instance detected! Terminating other driver! Using subdriver: APC HID 0.95Okay - seems 'ok' $ sudo upsd Network UPS Tools upsd 2.7.1 fopen /var/run/nut/upsd.pid: No such file or directory not listening on 127.0.0.1 port 3493 not listening on ::1 port 3493 no listening interface available$ sudo upsc pandora Init SSL without certificate database Error: Data stalecurious. 
- 
 @gjacobse I do not get that. Mine has been untouched since last night. pi@raspberrypi:~ $ sudo upsc jaredoffice Init SSL without certificate database battery.charge: 100 battery.charge.low: 10 battery.charge.warning: 50 battery.date: 2001/09/25 battery.mfr.date: 2010/12/15 battery.runtime: 1472 battery.runtime.low: 120 battery.type: PbAc battery.voltage: 27.2 battery.voltage.nominal: 24.0 device.mfr: American Power Conversion device.model: Back-UPS BR1000G device.serial: 3B1051X20329 device.type: ups driver.name: usbhid-ups driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.version: 2.7.2 driver.version.data: APC HID 0.95 driver.version.internal: 0.38 input.sensitivity: medium input.transfer.high: 147 input.transfer.low: 88 input.voltage: 124.0 input.voltage.nominal: 120 ups.beeper.status: enabled ups.delay.shutdown: 20 ups.firmware: 868.L1 .D ups.firmware.aux: L1 ups.load: 20 ups.mfr: American Power Conversion ups.mfr.date: 2010/12/15 ups.model: Back-UPS BR1000G ups.productid: 0002 ups.realpower.nominal: 600 ups.serial: 3B1051X20329 ups.status: OL ups.test.result: No test initiated ups.timer.reboot: 0 ups.timer.shutdown: -1 ups.vendorid: 051d pi@raspberrypi:~ $
- 
 This is what I will be following to configure reporting/alerting. 
 http://www.techrepublic.com/article/customize-ups-related-alerts-in-nut/
- 
 @JaredBusch 
 Well push comes to Meh -okay. I restarted the box and it's polls now.Won't do anything else with it for a spell to see if it retains it. It's been four days since I restarted it. Now - to reconnect to it as I had to pull the monitor off. X2Go works great,.. but only once I've signed in at the local. sure that is omething that can be changed. 
- 
 checking on my UPS this morning ~ $ uptime 09:59:20 up 6 days, 18:12, 2 users, load average: 0.19, 0.25, 0.25 ~ $ sudo upsc pandora Init SSL without certificate database battery.charge: 100 battery.charge.low: 10 battery.charge.warning: 50 battery.date: not set battery.mfr.date: 2014/06/22 battery.runtime: 3172 battery.runtime.low: 120 battery.type: PbAc battery.voltage: 13.6 battery.voltage.nominal: 12.0 device.mfr: APC device.model: Back-UPS ES 550G device.serial: 4B1425P54201 device.type: ups driver.name: usbhid-ups driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.version: 2.7.1 driver.version.data: APC HID 0.95 driver.version.internal: 0.38 input.sensitivity: medium input.transfer.high: 139 input.transfer.low: 92 input.voltage: 126.0 input.voltage.nominal: 120 ups.beeper.status: enabled ups.delay.shutdown: 20 ups.firmware: 904.W1 .D ups.firmware.aux: W1 ups.load: 13 ups.mfr: APC ups.mfr.date: 2014/06/22 ups.model: Back-UPS ES 550G ups.productid: 0002 ups.serial: 4B1425P54201 ups.status: OL ups.timer.reboot: 0 ups.timer.shutdown: -1 ups.vendorid: 051dSince reboot, the monitor has been running all the time. So it may have been simply that. As for having multiple UPS monitoring, I was curious what you thought about having a central display which showed the status of each UPS monitored. That way you have one display to glance at for a health check. 
- 
 @gjacobse said in Pi as a UPS monitor: checking on my UPS this morning Since reboot, the monitor has been running all the time. So it may have been simply that. As for having multiple UPS monitoring, I was curious what you thought about having a central display which showed the status of each UPS monitored. That way you have one display to glance at for a health check. Maybe something similar to the UBNT controller software - central configuration ability..... 
- 
 @gjacobse said in Pi as a UPS monitor: checking on my UPS this morning ~ $ uptime 09:59:20 up 6 days, 18:12, 2 users, load average: 0.19, 0.25, 0.25 ~ $ sudo upsc pandora Init SSL without certificate database battery.charge: 100 battery.charge.low: 10 battery.charge.warning: 50 battery.date: not set battery.mfr.date: 2014/06/22 battery.runtime: 3172 battery.runtime.low: 120 battery.type: PbAc battery.voltage: 13.6 battery.voltage.nominal: 12.0 device.mfr: APC device.model: Back-UPS ES 550G device.serial: 4B1425P54201 device.type: ups driver.name: usbhid-ups driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.version: 2.7.1 driver.version.data: APC HID 0.95 driver.version.internal: 0.38 input.sensitivity: medium input.transfer.high: 139 input.transfer.low: 92 input.voltage: 126.0 input.voltage.nominal: 120 ups.beeper.status: enabled ups.delay.shutdown: 20 ups.firmware: 904.W1 .D ups.firmware.aux: W1 ups.load: 13 ups.mfr: APC ups.mfr.date: 2014/06/22 ups.model: Back-UPS ES 550G ups.productid: 0002 ups.serial: 4B1425P54201 ups.status: OL ups.timer.reboot: 0 ups.timer.shutdown: -1 ups.vendorid: 051dSince reboot, the monitor has been running all the time. So it may have been simply that. As for having multiple UPS monitoring, I was curious what you thought about having a central display which showed the status of each UPS monitored. That way you have one display to glance at for a health check. Take the output of upsc and throw it up on a web page. Unless you want a local display, in which case it's actually more difficult. 
- 
 @gjacobse said in Pi as a UPS monitor: checking on my UPS this morning ~ $ uptime 09:59:20 up 6 days, 18:12, 2 users, load average: 0.19, 0.25, 0.25 ~ $ sudo upsc pandora Init SSL without certificate database battery.charge: 100 battery.charge.low: 10 battery.charge.warning: 50 battery.date: not set battery.mfr.date: 2014/06/22 battery.runtime: 3172 battery.runtime.low: 120 battery.type: PbAc battery.voltage: 13.6 battery.voltage.nominal: 12.0 device.mfr: APC device.model: Back-UPS ES 550G device.serial: 4B1425P54201 device.type: ups driver.name: usbhid-ups driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.version: 2.7.1 driver.version.data: APC HID 0.95 driver.version.internal: 0.38 input.sensitivity: medium input.transfer.high: 139 input.transfer.low: 92 input.voltage: 126.0 input.voltage.nominal: 120 ups.beeper.status: enabled ups.delay.shutdown: 20 ups.firmware: 904.W1 .D ups.firmware.aux: W1 ups.load: 13 ups.mfr: APC ups.mfr.date: 2014/06/22 ups.model: Back-UPS ES 550G ups.productid: 0002 ups.serial: 4B1425P54201 ups.status: OL ups.timer.reboot: 0 ups.timer.shutdown: -1 ups.vendorid: 051dSince reboot, the monitor has been running all the time. So it may have been simply that. As for having multiple UPS monitoring, I was curious what you thought about having a central display which showed the status of each UPS monitored. That way you have one display to glance at for a health check. AMQP / MQTT may be awesome for this at the transport layer. MQTT is an interesting protocol that let you define a "last will and testament" action in case something goes south. Ansible/Puppet etc. can handle the central configuration. 
- 
 Hey 3 months later..... 
- 
 Alright, I plugged the thing back in and got to testing. Yeah! It still communicates. pi@raspberrypi:~ $ sudo upsc jaredoffice Init SSL without certificate database battery.charge: 84 battery.charge.low: 10 battery.charge.warning: 50 battery.date: 2001/09/25 battery.mfr.date: 2010/12/15 battery.runtime: 1236 battery.runtime.low: 120 battery.type: PbAc battery.voltage: 27.0 battery.voltage.nominal: 24.0 device.mfr: American Power Conversion device.model: Back-UPS BR1000G device.serial: 3B1051X20329 device.type: ups driver.name: usbhid-ups driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.version: 2.7.2 driver.version.data: APC HID 0.95 driver.version.internal: 0.38 input.sensitivity: medium input.transfer.high: 147 input.transfer.low: 88 input.transfer.reason: input voltage out of range input.voltage: 124.0 input.voltage.nominal: 120 ups.beeper.status: enabled ups.delay.shutdown: 20 ups.firmware: 868.L1 .D ups.firmware.aux: L1 ups.load: 20 ups.mfr: American Power Conversion ups.mfr.date: 2010/12/15 ups.model: Back-UPS BR1000G ups.productid: 0002 ups.realpower.nominal: 600 ups.serial: 3B1051X20329 ups.status: OL CHRG ups.test.result: No test initiated ups.timer.reboot: 0 ups.timer.shutdown: -1 ups.vendorid: 051d
- 
 Pulled the power cord from the wall. UPS beeps, but nothing from nut.Ok back to the manual and checking the conf files. Well it would probably help if I told the thing what to monitor.. 
 /etc/nut/upsmon.confMONITOR jaredoffice@localhost 1 upsmon demo masterOh but those details have to match /etc/nut/ups.confand/etc/nut/upsd.users. Well I already know that my unit is called jaredoffice@localhost from ups.conf. So just edit upsd.users.pi@raspberrypi:~ $ sudo nano /etc/nut/upsd.users # put at end of file [upsmon] password = demo upsmon masterNow reload the monitor pi@raspberrypi:~ $ sudo upsmon -c reload Network UPS Tools upsmon 2.7.2 pi@raspberrypi:~ $Then unplug the UPS. and get nothing. look in the logs.. 
 tail/var/log/syslogFeb 1 17:05:38 raspberrypi upsmon[732]: UPS jaredoffice@localhost on battery Feb 1 17:05:38 raspberrypi rsyslogd-2007: action 'action 17' suspended, next retry is Wed Feb 1 17:06:08 2017 [try http://www.rsyslog.com/e/2007 ] Feb 1 17:05:38 raspberrypi upssched[964]: Can't open /etc/nut/upssched.conf: Permission denied Feb 1 17:05:48 raspberrypi upsmon[732]: UPS jaredoffice@localhost on line power Feb 1 17:05:48 raspberrypi upssched[967]: Can't open /etc/nut/upssched.conf: Permission deniedSay to yourself, WTF did I do 3 months ago.... Time to reload and start over. 
- 
 @JaredBusch said in Pi as a UPS monitor: Pulled the power cord from the wall. UPS beeps, but nothing from nut.Ok back to the manual and checking the conf files. Well it would probably help if I told the thing what to monitor.. 
 /etc/nut/upsmon.confMONITOR jaredoffice@localhost 1 upsmon demo masterOh but those details have to match /etc/nut/ups.confand/etc/nut/upsd.users. Well I already know that my unit is called jaredoffice@localhost from ups.conf. So just edit upsd.users.pi@raspberrypi:~ $ sudo nano /etc/nut/upsd.users # put at end of file [upsmon] password = demo upsmon masterNow reload the monitor pi@raspberrypi:~ $ sudo upsmon -c reload Network UPS Tools upsmon 2.7.2 pi@raspberrypi:~ $Then unplug the UPS. and get nothing. look in the logs.. 
 tail/var/log/syslogFeb 1 17:05:38 raspberrypi upsmon[732]: UPS jaredoffice@localhost on battery Feb 1 17:05:38 raspberrypi rsyslogd-2007: action 'action 17' suspended, next retry is Wed Feb 1 17:06:08 2017 [try http://www.rsyslog.com/e/2007 ] Feb 1 17:05:38 raspberrypi upssched[964]: Can't open /etc/nut/upssched.conf: Permission denied Feb 1 17:05:48 raspberrypi upsmon[732]: UPS jaredoffice@localhost on line power Feb 1 17:05:48 raspberrypi upssched[967]: Can't open /etc/nut/upssched.conf: Permission deniedSay to yourself, WTF did I do 3 months ago.... Time to reload and start over. think i got the same thing, and decide the same course of action, to which I have not moved forward with. Albeit, it's not on a rPi but a desktop - premise is the same. Think we may have to create a user for the NUT system.... but again,.. can't work with it right now. 
- 
 Quick check of upsmon.conf found this, uncommented it. # RUN_AS_USER nutRebooted Pi, unplugged UPS. Broadcast message from nut@raspberrypi (somewhere) (Wed Feb 1 17:19:04 2017): UPS jaredoffice@localhost on battery Broadcast message from nut@raspberrypi (somewhere) (Wed Feb 1 17:19:24 2017): UPS jaredoffice@localhost on line power
- 
 Syslog had this though. Feb 1 17:19:04 raspberrypi upsmon[734]: UPS jaredoffice@localhost on battery Feb 1 17:19:11 raspberrypi upssched[792]: Failed to connect to parent and failed to create parent: No such file or directory Feb 1 17:19:24 raspberrypi upsmon[734]: UPS jaredoffice@localhost on line powerBack to the config files we go! 
 /etc/nut/upssched.conf# PIPEFN <filename> # This is commented out by default to make you visit this file and think # about how your system works before potentially opening a hole.FFS, but it gets better! Right below that, also commented out. # LOCKFN <filename> # # REQUIRED. This was added after version 1.2.1. # # upssched needs to be able to create this filename in order to avoid # a race condition when two events are dispatched from upsmon at nearly # the same time. This file will only exist briefly. It must not be # created by any other process. # # You should put this in the same directory as PIPEFN. #So I update the config and make a directory forgetting to chown it from root /sigh... PIPEFN /etc/nut/upssched/upssched.pipe LOCKFN /etc/nut/upssched/upssched.lock



