supported_hardware:apc
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
supported_hardware:apc [2018/10/02 11:13] – [XTension Units] James Sentman | supported_hardware:apc [2018/11/17 15:13] – [XTension Units] James Sentman | ||
---|---|---|---|
Line 4: | Line 4: | ||
There is a rather severe problem with connecting a UPS directly to a Mac OS Server. (not MacOSX Server, but any Mac acting as a server) You might wonder why you wouldn’t want to just connect the UPS to the computer? It will shut it down properly then and all will be well. Except that if you have the energy saver preferences set up to properly shut down your computer then it will not restart when the power comes back. There is a setting for most Macs to “restart after a power failure” but this only works if you let the power actually be pulled and NOT do a proper shutdown. The bug in MacOS is that this doesn’t work if you have a UPS connected to the machine! This has been broken for several major OS versions now. If you are running a Mac server and wish to use a UPS then you don’t actually want the UPS connected to the Mac or it will not restart without you there to push the button. | There is a rather severe problem with connecting a UPS directly to a Mac OS Server. (not MacOSX Server, but any Mac acting as a server) You might wonder why you wouldn’t want to just connect the UPS to the computer? It will shut it down properly then and all will be well. Except that if you have the energy saver preferences set up to properly shut down your computer then it will not restart when the power comes back. There is a setting for most Macs to “restart after a power failure” but this only works if you let the power actually be pulled and NOT do a proper shutdown. The bug in MacOS is that this doesn’t work if you have a UPS connected to the machine! This has been broken for several major OS versions now. If you are running a Mac server and wish to use a UPS then you don’t actually want the UPS connected to the Mac or it will not restart without you there to push the button. | ||
- | ===Raspberry Pi and APCUPSD to the rescue=== | + | ====Raspberry Pi and APCUPSD to the rescue==== |
{{ : | {{ : | ||
Line 25: | Line 25: | ||
Once you’ve done all this you can be done with the GUI interface. You can also use the raspi-config app or the settings in the GUI to set the pi to boot into a command line instead of the graphic interface. This will save you some memory and CPU cycles as you’re not going to be using that for the most part. You can now ssh from your Mac into the Pi to complete the config. You’ll use the hostname you set above with a command similar to “ssh pi@yournewhostname.local" | Once you’ve done all this you can be done with the GUI interface. You can also use the raspi-config app or the settings in the GUI to set the pi to boot into a command line instead of the graphic interface. This will save you some memory and CPU cycles as you’re not going to be using that for the most part. You can now ssh from your Mac into the Pi to complete the config. You’ll use the hostname you set above with a command similar to “ssh pi@yournewhostname.local" | ||
- | ===Give Your Pi a Static IP=== | + | ====Give Your Pi a Static IP==== |
This is important so that XTension can connect to the apcupsd program. Yes, you just connected to your Pi via SSH and the hostname but that doesn’t appear to work for other connections. It seems that it only advertises an IPv6 address for the .local hostname and we cannot connect to the apcupsd via IPv6. If someone knows how to configure it to also register it’s IPv4 address then please let me know as that would make the static IP unnecessary. | This is important so that XTension can connect to the apcupsd program. Yes, you just connected to your Pi via SSH and the hostname but that doesn’t appear to work for other connections. It seems that it only advertises an IPv6 address for the .local hostname and we cannot connect to the apcupsd via IPv6. If someone knows how to configure it to also register it’s IPv4 address then please let me know as that would make the static IP unnecessary. | ||
Line 79: | Line 79: | ||
static domain_name_servers=192.168.0.1 8.8.8.8 fd51: | static domain_name_servers=192.168.0.1 8.8.8.8 fd51: | ||
</ | </ | ||
+ | notice that the line for the static ip6 address is not uncommented, | ||
reboot the pi via “sudo reboot” and then reconnect via ssh when it comes back up with it’s new static IP address. | reboot the pi via “sudo reboot” and then reconnect via ssh when it comes back up with it’s new static IP address. | ||
- | ===Install APCUPSD=== | + | ====Install APCUPSD==== |
To install [[http:// | To install [[http:// | ||
Line 94: | Line 95: | ||
and change the single line from “isconfigured=no” to “isconfigured=yet” and save the file. | and change the single line from “isconfigured=no” to “isconfigured=yet” and save the file. | ||
- | ===Configure APCUPSD=== | + | ====Configure APCUPSD==== |
There are several lines in the configuration file that need to be changed. Most of the options in the file are only needed if you’re trying to use it with older serially connected UPS models. Thats much more complicated because in the past APC purposefully changed pin outs and other requirements to connect so that they could sell you a custom cable. The setup is very model dependent and beyond the scope of this document. If at all possible use a USB connected APC ups. Here’s an excuse to buy a new one. | There are several lines in the configuration file that need to be changed. Most of the options in the file are only needed if you’re trying to use it with older serially connected UPS models. Thats much more complicated because in the past APC purposefully changed pin outs and other requirements to connect so that they could sell you a custom cable. The setup is very model dependent and beyond the scope of this document. If at all possible use a USB connected APC ups. Here’s an excuse to buy a new one. | ||
- | Change the following lines as described. If the lines are commented out with a hash at the beginning remove that before changing the value to make it live. | + | Change the following lines as described. If the lines are commented out with a hash at the beginning remove that before changing the value to make it live. Note that many of the sections in the configuration file begin with the same command as you must edit, The parameter after it will be named inside of <> |
Edit the file via: | Edit the file via: | ||
Line 103: | Line 104: | ||
sudo nano / | sudo nano / | ||
- | uncomment and edit the following lines: | + | uncomment |
UPSNAME (give it a short meaningful name, like main or myups or office or attic or something) | UPSNAME (give it a short meaningful name, like main or myups or office or attic or something) | ||
Line 112: | Line 113: | ||
NETSERVER on (this is important it’s how XTension will connect to it) | NETSERVER on (this is important it’s how XTension will connect to it) | ||
NISIP 0.0.0.0 (this defaults to the 127.0.0.1 address meaning that it will only accept connections from the local host. If you want to be able to connect to it from XTension you must set it to 0.0.0.0) | NISIP 0.0.0.0 (this defaults to the 127.0.0.1 address meaning that it will only accept connections from the local host. If you want to be able to connect to it from XTension you must set it to 0.0.0.0) | ||
- | NISPORT 3551 (this is the default, don’t change it but remember it as you’ll have to enter it into XTension | + | NISPORT 3551 (this is the default, don’t change it, If you have to change |
Line 161: | Line 162: | ||
</ | </ | ||
- | If you see that “STATUS: | + | If you see that “STATUS: |
- | ===XTension Setup=== | + | ====Install User Scripts==== |
+ | The purpose of installing this script is to keep the apc software from doing a normal shutdown of the pi and also to broadcast power fail and other events to XTension when they happen without waiting for the next poll of apcaccess. If you allow the apc software to operate normally it will shutdown the pi and kill the power from the UPS before the batteries are fully used up. Adding these scripts keeps that from happening in addition to sending powerfail, battery replacement and other events to XTension immediately. | ||
- | {{: | + | To install these you will download |
- | ===XTension Units=== | + | < |
+ | cd / | ||
+ | sudo curl -o ./ | ||
+ | # at this point you may view the script so that you understand what it is doing if you wish | ||
+ | sudo chmod a+x ./ | ||
+ | # and finally run the install | ||
+ | sudo ./ | ||
+ | </ | ||
+ | The install moves any default scripts to *.orig and creates several sym links to the xtevent.py script so that it will be invoked for every known UPS event. After doing this your raspberry pi install is completely and you can setup the interface in XTension to talk to it and watch for events. | ||
+ | |||
+ | |||
+ | ====XTension Setup==== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Set the polling times. You can set separate polling times for when the power is on and then the power is off. I don’t need to see every single change in load when things are working fine and so the default for AC On Polling time is 30 seconds. Once the power goes off though I want to see updates to the battery charge and time left more often so the default for polling times when the power is off is every 10 seconds. When the interface is running you can manually poll it for new information with the Poll Now button. | ||
+ | |||
+ | The Event Broadcast Port is set by the xtevent.py script you installed above. Immediate events are sent to XTension via a UDP broadcast on this port. If you change this port in XTension then you must edit the xtevent.py script on your raspberry pi to match or you won’t receive any realtime events. | ||
+ | |||
+ | Click the save button, find the new interface in the Interface Status window and check it’s enabled checkbox to start it up. | ||
+ | ====XTension Units==== | ||
{{ : | {{ : | ||
- | **AC Power**: shows online and is in an on state as long as the AC power is available. | + | **AC Power**: shows online and is in an on state as long as the AC power is available. |
**Error**: sometimes the software will append an error message to the status line. I have seen “LOWBATT” when my ups battery wasn’t going to be able to service the high load. This unit will display either “none” or the message sent. It will be off as long as there is no error and will turn on to alert you that the UPS has sent some error message. Use the On script to notify yourself of an error message from the UPS. Note that this is not the same as a failed battery self test, that message handled separately see the “Self Test Failure” unit below. | **Error**: sometimes the software will append an error message to the status line. I have seen “LOWBATT” when my ups battery wasn’t going to be able to service the high load. This unit will display either “none” or the message sent. It will be off as long as there is no error and will turn on to alert you that the UPS has sent some error message. Use the On script to notify yourself of an error message from the UPS. Note that this is not the same as a failed battery self test, that message handled separately see the “Self Test Failure” unit below. | ||
Line 187: | Line 209: | ||
**Self Test Failure**: If no self test has been run since the program connected then this unit will be in an off state and show “none”. Once a test has been run while it’s watching the unit label will change to “OK” unless there is a problem. If a self test failure of the battery or the load or whatever happens the label will change to the error message and the unit will turn on. Use the on script to notify yourself of a failed self test. | **Self Test Failure**: If no self test has been run since the program connected then this unit will be in an off state and show “none”. Once a test has been run while it’s watching the unit label will change to “OK” unless there is a problem. If a self test failure of the battery or the load or whatever happens the label will change to the error message and the unit will turn on. Use the on script to notify yourself of a failed self test. | ||
+ | |||
+ | **On Battery**: When the power has been out long enough for the UPS to be sure it isn’t a self test this unit will turn on. This is usually 5 or 6 seconds after a power failure. This will not turn on for power failure events shorter than that duration. This could be useful as you might turn off loads that are plugged into the UPS that are not necessary in a long term power failure condition to reduce the load and increase the runtime. | ||
+ | |||
+ | **Charging**: | ||
If your device supports these additional readings then units to create them will be setup as well. Most simpler units do not support these. | If your device supports these additional readings then units to create them will be setup as well. Most simpler units do not support these. | ||
Line 198: | Line 224: | ||
**Humidity**: | **Humidity**: | ||
- | + | ====History==== | |
- | ===History=== | + | |
- | The apcupsd plugin first appeared in XTension 9.4.12 on Oct 2nd 2018 and is written by James Sentman | + | * Version 2.0 of the plugin added support for realtime event reception of power fails and other messages. It also stops the ups software from shutting down the pi and killing the power from the UPS early. It was released in XTension version 9.4.13 in November of 2018. |
supported_hardware/apc.txt · Last modified: 2023/02/17 13:39 by James Sentman