Skip to content

Commit f294e6b

Browse files
committed
drivers/nutdrv_hashx: Add new driver for PowerManager+ supported devices
Add an initial driver for the "#*" protocol support that is used by many UPS out there that rely on the proprietary software suites PowerMaster+, ViewPower, PowerGuide and so on... The naming of the driver has been chosen since all the UPS replies start with an "#", while there's not a definitive common pattern for the queries or commands. Apparently the same protocol is used by various UPS devices, both online and line-interactive (given that many producers advertise to use the said programs), and only in serial mode (AFAIK). Although this driver has solely been tested with the Atlantis Land S1200 line-interactive UPS. So there may be missing features (such as the bypass mode) or lack of information. However most of the decoding has been done and the driver is enough to update the UPS status for monitoring and shutdown purposes. As for now, only the status updates features have been implemented. Signed-off-by: Marco Trevisan (Treviño) <mail@3v1n0.net> Closes: networkupstools#2769
1 parent 1203514 commit f294e6b

File tree

6 files changed

+694
-2
lines changed

6 files changed

+694
-2
lines changed

data/driver.list.in

+1
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@
156156
"Atlantis Land" "ups" "2" "OnePower 841+ (A03-P841)" "USB" "nutdrv_qx"
157157
"Atlantis Land" "ups" "2" "(various)" "Serial" "nutdrv_qx"
158158
"Atlantis Land" "ups" "2" "(various)" "USB" "nutdrv_qx"
159+
"Atlantis Land" "ups" "1" "A03-S1200" "Serial" "nutdrv_hashx"
159160

160161
"Aviem Systems" "ups" "2" "Aviem Power RT 1000-3000VA" "" "blazer_ser"
161162
"Aviem Systems" "ups" "2" "Aviem Pro 2000VA" "USB" "blazer_usb" # https://github.com/networkupstools/nut/issues/827

docs/man/Makefile.am

+3
Original file line numberDiff line numberDiff line change
@@ -826,6 +826,7 @@ SRC_SERIAL_PAGES = \
826826
oneac.txt \
827827
microdowell.txt \
828828
microsol-apc.txt \
829+
nutdrv_hashx.txt \
829830
nutdrv_siemens_sitop.txt \
830831
optiups.txt \
831832
powercom.txt \
@@ -874,6 +875,7 @@ INST_MAN_SERIAL_PAGES = \
874875
oneac.$(MAN_SECTION_CMD_SYS) \
875876
microdowell.$(MAN_SECTION_CMD_SYS) \
876877
microsol-apc.$(MAN_SECTION_CMD_SYS) \
878+
nutdrv_hashx.$(MAN_SECTION_CMD_SYS) \
877879
nutdrv_siemens_sitop.$(MAN_SECTION_CMD_SYS) \
878880
optiups.$(MAN_SECTION_CMD_SYS) \
879881
powercom.$(MAN_SECTION_CMD_SYS) \
@@ -940,6 +942,7 @@ INST_HTML_SERIAL_MANS = \
940942
oneac.html \
941943
microdowell.html \
942944
microsol-apc.html \
945+
nutdrv_hashx.html \
943946
nutdrv_siemens_sitop.html \
944947
optiups.html \
945948
powercom.html \

docs/man/nutdrv_hashx.txt

+80
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
NUTDRV_HASHX(8)
2+
===============
3+
4+
NAME
5+
----
6+
7+
nutdrv_hashx - Driver for #* protocol serial based UPS equipment
8+
9+
SYNOPSIS
10+
--------
11+
12+
*nutdrv_hashx* -h
13+
14+
*nutdrv_hashx* -a 'UPS_NAME' ['OPTIONS']
15+
16+
NOTE: This man page only documents the hardware-specific features of the
17+
*nutdrv_hashx* driver. For information about the core driver, see
18+
linkman:nutupsdrv[8].
19+
20+
SUPPORTED HARDWARE
21+
------------------
22+
23+
The protocol originates from Cyber Energy that apparently developed the
24+
protocol for their UPS and it was used then by various other vendors
25+
(that in some cases they just re-brand the Cyber Energy products).
26+
27+
The *nutdrv_hashx* driver is expected to work with various UPSes from
28+
'Ablerex', 'Atlantis Land', 'Epyc', 'Infosec', 'ION', 'PowerWalker',
29+
'Right Power Technology', 'Salicru', 'UPS Solutions' and various others.
30+
31+
Long story short: if your UPS came with a software called 'PowerMaster+'
32+
(or the older 'PowerMaster' and 'PowerGuide'), chances are high that it
33+
works with this driver.
34+
35+
Only devices with a serial interface are supported.
36+
37+
KNOWN ISSUES AND BUGS
38+
---------------------
39+
40+
The driver has only been tested with a single line-interactive device
41+
(Atlantis Land A03-S1200) so far, thus the protocol reverse engineering
42+
has been currently limited to what such device supports.
43+
44+
Thus the lack of these features:
45+
46+
* Specific support for PDU or ATS devices.
47+
* Detection of the UPS type (line-interactive / online).
48+
* Detection of max/min voltage ratings.
49+
* Detection of load banks.
50+
* Detection of Extended battery modules.
51+
* Detection of Over voltage state.
52+
* Detection of Under voltage state.
53+
* Detection of Frequency failure state.
54+
* Detection of Wiring Fault state.
55+
* Detection of lack of Neutral line connection.
56+
* Detection of UPS generators.
57+
* Detection of other Battery / UPS error states.
58+
* Reading of actual Voltage, Frequency, Current, Power factor, Temperature values.
59+
* Reading the status of the battery packs.
60+
* Bypass modes usage and detection.
61+
* USB Support (PM+ mentions being it supported, unsure if with the same protocol).
62+
63+
The driver shutdown function is not implemented (while it's supported), so other
64+
arrangements must be made to turn off the UPS.
65+
66+
AUTHORS
67+
-------
68+
69+
Marco Trevisan <mail@3v1n0.net>
70+
71+
The core driver:
72+
~~~~~~~~~~~~~~~~
73+
74+
linkman:nutupsdrv[8]
75+
76+
Internet resources:
77+
~~~~~~~~~~~~~~~~~~~
78+
79+
* The NUT (Network UPS Tools) home page: https://www.networkupstools.org/
80+
* PowerMaster+: https://www.powermonitor.software/

docs/nut.dict

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
personal_ws-1.1 en 3473 utf-8
1+
personal_ws-1.1 en 3478 utf-8
22
AAC
33
AAS
44
ABI
@@ -358,6 +358,7 @@ Emilien
358358
Energia
359359
EnergySaving
360360
Enphase's
361+
Epyc
361362
Erikson
362363
Eriksson
363364
Evgeny
@@ -966,10 +967,12 @@ PowerAlert
966967
PowerCOM
967968
PowerCom
968969
PowerES
970+
PowerGuide
969971
PowerKinetics
970972
PowerMac
971973
PowerMan
972974
PowerManagerII
975+
PowerMaster
973976
PowerMust
974977
PowerNet
975978
PowerOff
@@ -1318,6 +1321,7 @@ TopGuard
13181321
Toth
13191322
TrackingID
13201323
TrackingResult
1324+
Trevisan
13211325
Tripp
13221326
TrippLite
13231327
Tru
@@ -2134,6 +2138,7 @@ gzip
21342138
hal
21352139
hardcoded
21362140
hasFeature
2141+
hashx
21372142
hb
21382143
hcd
21392144
hcl

drivers/Makefile.am

+3-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ NUTSW_DRIVERLIST = $(NUTSW_DRIVERLIST_DUMMY_UPS) \
6666
SERIAL_DRIVERLIST = al175 bcmxcp belkin belkinunv bestfcom \
6767
bestfortress bestuferrups bestups etapro everups \
6868
gamatronic genericups isbmex liebert liebert-esp2 liebert-gxe masterguard metasys \
69-
mge-utalk microdowell microsol-apc mge-shut oneac optiups powercom rhino \
69+
mge-utalk microdowell microsol-apc mge-shut nutdrv_hashx oneac optiups powercom rhino \
7070
safenet nutdrv_siemens-sitop solis tripplite tripplitesu upscode2 victronups powerpanel \
7171
blazer_ser ivtscd apcsmart apcsmart-old riello_ser sms_ser bicker_ser ve-direct
7272
if HAVE_LINUX_SERIAL_H
@@ -180,6 +180,8 @@ microsol_apc_SOURCES = microsol-apc.c microsol-common.c
180180
microsol_apc_LDADD = $(LDADD) -lm
181181
nhs_ser_SOURCES = nhs_ser.c
182182
nhs_ser_LDADD = $(LDADD) -lm
183+
nutdrv_hashx_SOURCES = nutdrv_hashx.c
184+
nutdrv_hashx_LDADD = $(LDADD) -lm
183185
oneac_SOURCES = oneac.c
184186
optiups_SOURCES = optiups.c
185187
powercom_SOURCES = powercom.c

0 commit comments

Comments
 (0)