nut icon indicating copy to clipboard operation
nut copied to clipboard

Salicru SPS 850 ADV T supported by usbhid-ups

Open abelgomez opened this issue 2 years ago • 9 comments

I have a few Salicru SPS 850 ADV T UPS, and this model seems to work with the new salicru-hid subdriver for usbhid-ups, but the product id (0302) is different from other supported Salicru USB HID UPSs (0201, 0202, 0203, 0300). I suppose all the others variants from the same ADVANCE T family will work too since all of them seem to use the same PowerMaster software (but I cannot check if the productid is indeed different).

I'm new to nut, and I don't know what else I need to provide/test, but you can find below the output for the upsc, upsrw and upscmd commands (anyway, notice that instant commands are commented in the salicru-hid subdriver, and thus, no commands are available).

root@host:~# upsc salicru
Init SSL without certificate database
battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 20
battery.runtime: 4500
battery.runtime.low: 300
battery.type: PbAcid
battery.voltage: 26.00
battery.voltage.nominal: 24
device.mfr: 1
device.model:  850
device.serial: 000000000000
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.productid: 0302
driver.parameter.synchronous: auto
driver.parameter.vendorid: 2e66
driver.version: 2.8.0-21-gf8462e88a
driver.version.data: Salicru HID 0.3
driver.version.internal: 0.47
driver.version.usb: libusb-0.1 (or compat)
input.frequency: 50.2
input.voltage: 228.0
input.voltage.nominal: 230
output.frequency: 50.2
output.voltage: 22.8
output.voltage.nominal: 24
ups.beeper.status: enabled
ups.load: 11
ups.mfr: 1
ups.model:  850
ups.productid: 0302
ups.realpower.nominal: 595
ups.serial: 000000000000
ups.status: OL
ups.vendorid: 2e66
root@host:~# upsrw salicru
[battery.charge.low]
Remaining battery level when UPS switches to LB (percent)
Type: STRING
Maximum length: 10
Value: 10

[battery.runtime.low]
Remaining battery runtime when UPS switches to LB (seconds)
Type: STRING
Maximum length: 10
Value: 300

root@host:~# upscmd -l salicru
Instant commands supported on UPS [salicru]:

root@host:~#

I tried to set the value of battery.runtime.low and battery.charge.low using upsrw, but although the command returns OK, no values seem to be modified.

I tested the driver on a Debian system, installing the stable Debian packages (nut 2.7.4), and overwriting the drivers with freshly built ones from the master branch (> 2.8.0) as explained here: https://github.com/networkupstools/nut/wiki/Building-NUT-on-Debian,-Raspbian-and-Ubuntu (i.e., running make install from within the drivers and the scripts/udev directory). The mixture of versions does not seem to be an issue.

I didn't want to deviate from the standard packages of the distribution (as long as possible), since the UPSs are connected in a production environment (and I wanted to avoid installing complex stuff from sources). Now I'm on a test environment, and I can make software tests, but I will not have physical access to the UPS in the short term.

Just specifying both vendorid and productid in /etc/nut/ups.conf works with the code in the master branch:

[salicru]
    driver = usbhid-ups
    port = auto
    vendorid = 2e66
    productid = 0302
    desc = "Salicru SPS 850 ADV T"

In any case, I have explicitly added this model to the nut sources in a fork: https://github.com/networkupstools/nut/compare/master...abelgomez:salicru-sps-850-adv-t.

I can make a PR if you are interested.

abelgomez avatar May 08 '22 02:05 abelgomez

Looks great, and a PR from that branch looks useful too, thanks.

If you can also post a PR to nut-ddl repo with the upsc data dump and comments above for other points, would be great also :)

jimklimov avatar May 08 '22 10:05 jimklimov

Sure!

Regarding the PR for nut-ddl, just a Salicru/Salicru__SPS_850_ADV_T__usbhid_ups__2.8.0__01.dev file with the above upsc dump is enough?

Which points do you want me to include in the comments? I said a lot of things that maybe are not interesting for the nut-ddl repo 😄

abelgomez avatar May 08 '22 10:05 abelgomez

Github-eMail intergration hicced up on me again :( Sorry about the delay.

Part of the idea with nut-ddl is to help people adding or troubleshooting device vs. driver support. so they would benefit at having as much context as possible. The files in that repository support explicit data usable by dummy-ups driver (effectively the data dumps from upsc), as well as structured comments that could be parsed by some tools, as well as unstructured comments for people to see.

I suppose the lack of value-setting and instant commands is something to at least comment there in layman fashion, not sure OTOH if there are structured-comment ways to specify lack of supported (working) items. There may be more details documented at https://networkupstools.org/ddl/#_file_naming_convention FWIW

jimklimov avatar May 10 '22 12:05 jimklimov

Great, thanks for the clarifications.

Indeed, yesterday I cloned the nut-ddl repo and started to look in more detail at the documentation about the file format.

On the other hand, I didn't start the PR since I saw that the comment associated with the PRs had a long template to fill, and I wanted to check it carefully. Thanks for being proactive on your side ;)

Now I'm a bit busy these days, but I hope I'll be able to contribute to the nut-ddl repo in one week or so. I'm informing you just in case you want to hold the PR to the base nut code until I prepare the PR in nut-ddl.

Thanks!

abelgomez avatar May 10 '22 13:05 abelgomez

Well, for nut-ddl the other stuff is deemed useful too, so someone (not just scripts looking for structured comments) investigating that device has as much info as possible.

jimklimov avatar Oct 11 '22 08:10 jimklimov

Hi @jimklimov ,

sorry for not advancing with this device, but I finally had physical access to the UPS, and I ended up by using the serial interface directly (rather than the USB HID) which indeed does work with the manufacturer's software (as opposed to the USB interface).

Thus, I'm no longer able to do further tests.

Nevertheless, since I already prepared a dev file in my clone of nut-ddl (which I never pushed), I can do it now, and I'll do a PR in a few minutes with the information I already gathered above (just in case it's useful).

Please, check the format since I created the file months ago, and let me know if further adjustments in the PR are needed.

abelgomez avatar Oct 11 '22 11:10 abelgomez

Regarding the Sanity check list, I tried to check all relevant points (but for some of them I wasn't sure whether to tick them or not).

W.r.t. variables, as I said, it seems that writing values was not possible using upsrw, so I did not further inspect, and I didn't include comments for them.

abelgomez avatar Oct 11 '22 12:10 abelgomez

I believe I have a device with the same firmware, https://www.salicru.com/sps-2000-adv-t.html. I'm not too familiar with git, but should I add a similar report to https://github.com/networkupstools/nut-ddl aswell? Managed to get git head compiled and running on a raspberry pi, driver.version: 2.8.1-94-gd59c05349.

hakonalstadheim avatar Nov 12 '23 12:11 hakonalstadheim