Skip to content

Commit 90b0476

Browse files
authored
Merge pull request #1407 from minfrin/voltronics-axpert
WIP: Support for Voltronic Axpert P30 protocol inverters (main)
2 parents dcc0430 + c2221ad commit 90b0476

10 files changed

+4969
-67
lines changed

NEWS.adoc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,24 @@ https://github.com/networkupstools/nut/milestone/9
186186
using "buzzword mode" settings more correctly than in the previous
187187
iteration, shipped in NUT v2.8.3 release (as PR #2750 for issue #2708).
188188
[issue #2494]
189+
* Introduced a `voltronic-axpert` subdriver for Voltronic Axpert inverters
190+
which speak the P30 protocol, currently in a highly experimental state:
191+
with initial support for query commands, but most values are "hidden"
192+
from default NUT builds by being defined in `experimental.*` namespace,
193+
and should also be enabled by `configure --with-unmapped-data-points`.
194+
Development was based on work done in the Voltronic Sunny subdriver in
195+
https://github.com/nickma82/nut/tree/nutdrv_qx_voltronic-sunny_rebased%2Bcommand
196+
[#1407]
197+
+
198+
Still TODO:
199+
- Implement commands to write to the inverter.
200+
- Remove commented code originating from `sunny` driver.
201+
- Further testing.
202+
- Understand how to map values we can read/set with those devices
203+
to the NUT standard vocabulary at `docs/nut-names.txt` (or extend
204+
it by discussion and agreement with community -- notably to track
205+
a `pv.*` namespace for photovoltaic, separately from `ups.*` etc.)
206+
- Update docs (manpages, acknowledgements...)
189207

190208
- `phoenixcontact_modbus` driver updates:
191209
* Added more settings that can be tuned -- support for shutdown variables,

docs/man/nutdrv_qx.txt

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ If you set stayoff in linkman:ups.conf[5] when FSD arises the UPS will call a *s
8888

8989
*protocol =* 'string'::
9090
Skip autodetection of the protocol to use and only use the one specified.
91-
Supported values: 'bestups', 'gtec', 'hunnox', 'innovart31', 'innovart33', 'masterguard', 'mecer', 'megatec', 'megatec/old', 'mustek', 'q1', 'q2', 'q6', 'voltronic', 'voltronic-qs', 'voltronic-qs-hex' and 'zinto'.
91+
Supported values: 'bestups', 'gtec', 'hunnox', 'innovart31', 'innovart33', 'masterguard', 'mecer', 'megatec', 'megatec/old', 'mustek', 'q1', 'q2', 'q6', 'voltronic', 'voltronic-axpert', 'voltronic-qs', 'voltronic-qs-hex' and 'zinto'.
9292
+
9393
Run the driver program with the `--help` option to see the exact list of
9494
`protocol` values it would currently recognize.
@@ -244,6 +244,22 @@ The acceptable range is +60..599940+ seconds.
244244
The acceptable range is +12..540+ seconds.
245245

246246

247+
VOLTRONIC-AXPERT PROTOCOL
248+
~~~~~~~~~~~~~~~~~~~~~~~~~
249+
250+
NOTE: This protocol is currently largely experimental, many features may
251+
be only exposed in specially configured builds of the NUT driver program.
252+
253+
*reset_to_default*::
254+
Reset capability options and their limits to safe default values
255+
256+
*bypass_alarm*::
257+
Alarm (BEEP!) at Bypass Mode [enabled/disabled]
258+
259+
*battery_alarm*::
260+
Alarm (BEEP!) at Battery Mode [enabled/disabled]
261+
262+
247263
VOLTRONIC PROTOCOL
248264
~~~~~~~~~~~~~~~~~~
249265

@@ -771,6 +787,19 @@ MASTERGUARD UNITS
771787
The driver is supposed to support both "new" A series (A700/1000/2000/3000 and their -19 cousins) and E series (E60/100/200) but was tested only on A due to lack of E hardware.
772788

773789

790+
VOLTRONIC-AXPERT UNITS
791+
~~~~~~~~~~~~~~~~~~~~~~~~~
792+
793+
This protocol supports Voltronic Power Axpert inverters, based on P30 protocol
794+
(used e.g. in photovoltaic equipment, often paired with an UPS charged by the
795+
solar panels).
796+
797+
The code is currently largely experimental, with data point and command names
798+
not aligned with concepts that are part of NUT standard vocabulary (this many
799+
of them are prefixed with `experimental.` namespace). In fact, many features
800+
may be only exposed in specially configured builds of the NUT driver program.
801+
802+
774803
VOLTRONIC-QS UNITS
775804
~~~~~~~~~~~~~~~~~~
776805

docs/nut.dict

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
personal_ws-1.1 en 3535 utf-8
1+
personal_ws-1.1 en 3538 utf-8
22
AAC
33
AAS
44
ABI
@@ -80,6 +80,7 @@ Autobook
8080
Autoconfigure
8181
Avocent
8282
Axel
83+
Axpert
8384
Axxium
8485
BATGNn
8586
BATNn
@@ -1642,6 +1643,7 @@ avahi
16421643
avr
16431644
awd
16441645
awk
1646+
axpert
16451647
b'some
16461648
b'string
16471649
bAlternateSetting
@@ -2866,6 +2868,7 @@ pts
28662868
ptv
28672869
pty
28682870
pulizzi
2871+
pv
28692872
pw
28702873
pwd
28712874
pwmib

drivers/Makefile.am

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -409,13 +409,16 @@ nutdrv_qx_CFLAGS += -DQX_USB
409409
nutdrv_qx_SOURCES += $(LIBUSB_IMPL) usb-common.c
410410
nutdrv_qx_LDADD += $(LIBUSB_LIBS)
411411
endif WITH_USB
412-
NUTDRV_QX_SUBDRIVERS = nutdrv_qx_bestups.c nutdrv_qx_blazer-common.c \
412+
NUTDRV_QX_SUBDRIVERS = \
413+
nutdrv_qx_bestups.c nutdrv_qx_blazer-common.c \
413414
nutdrv_qx_innovart31.c \
414415
nutdrv_qx_innovart33.c \
415416
nutdrv_qx_masterguard.c \
416417
nutdrv_qx_mecer.c nutdrv_qx_megatec.c nutdrv_qx_megatec-old.c \
417-
nutdrv_qx_mustek.c nutdrv_qx_q1.c nutdrv_qx_q2.c nutdrv_qx_q6.c nutdrv_qx_voltronic.c \
418-
nutdrv_qx_voltronic-qs.c nutdrv_qx_voltronic-qs-hex.c nutdrv_qx_zinto.c \
418+
nutdrv_qx_mustek.c nutdrv_qx_q1.c nutdrv_qx_q2.c nutdrv_qx_q6.c \
419+
nutdrv_qx_voltronic.c common_voltronic-crc.c \
420+
nutdrv_qx_voltronic-axpert.c nutdrv_qx_voltronic-qs.c nutdrv_qx_voltronic-qs-hex.c \
421+
nutdrv_qx_zinto.c \
419422
nutdrv_qx_hunnox.c nutdrv_qx_ablerex.c nutdrv_qx_gtec.c
420423
nutdrv_qx_SOURCES += $(NUTDRV_QX_SUBDRIVERS)
421424

@@ -439,7 +442,9 @@ dist_noinst_HEADERS = \
439442
delta_ups-mib.h nutdrv_qx.h nutdrv_qx_bestups.h nutdrv_qx_blazer-common.h \
440443
nutdrv_qx_gtec.h nutdrv_qx_innovart31.h nutdrv_qx_innovart33.h nutdrv_qx_masterguard.h nutdrv_qx_mecer.h nutdrv_qx_ablerex.h \
441444
nutdrv_qx_megatec.h nutdrv_qx_megatec-old.h nutdrv_qx_mustek.h nutdrv_qx_q1.h nutdrv_qx_q2.h nutdrv_qx_q6.h nutdrv_qx_hunnox.h \
442-
nutdrv_qx_voltronic.h nutdrv_qx_voltronic-qs.h nutdrv_qx_voltronic-qs-hex.h nutdrv_qx_zinto.h \
445+
nutdrv_qx.h common_voltronic-crc.h nutdrv_qx_voltronic.h \
446+
nutdrv_qx_voltronic-axpert.h nutdrv_qx_voltronic-qs.h nutdrv_qx_voltronic-qs-hex.h \
447+
nutdrv_qx_zinto.h \
443448
upsdrvquery.h \
444449
xppc-mib.h huawei-mib.h eaton-ats16-nmc-mib.h eaton-ats16-nm2-mib.h apc-ats-mib.h raritan-px2-mib.h eaton-ats30-mib.h \
445450
apc-pdu-mib.h apc-epdu-mib.h ecoflow-hid.h ever-hid.h eaton-pdu-genesis2-mib.h eaton-pdu-marlin-mib.h eaton-pdu-marlin-helpers.h \

0 commit comments

Comments
 (0)