UPS Green Cell I integracja z NUT

Port 3493 musi być dostępny - po nim się komunikuje.
Jak to zrobić w HA - nie wiem :wink:

Musze odkopać temat.

Po dwóch latach padł mój UPS Green Cell, który był zintegrowany z HA przez dodatek NUT Network UPS Tools Integration.

Następnym UPS-em jest CyberPower UPS UT1050EG-FR.
Pomóżcie proszę, w jaki sposób go zintegrować z HA ? od czego zacząć ?

UPS Jest podpięty do serwera kablem USB.
Poniżej konfiguracja dot. poprzedniego UPSa.

Spróbuj na tym driverze … i port: auto

  driver: usbhid-ups
1 polubienie

Dziękuję za pomoc, to był dobry strzał :slight_smile:

Edit:

Okazało się, że zepsuty UPS Green Cell jest na gwarancji i zostanie wymieniony na nowy egzemplarz.

Pytanie:
Czy przez dodatek NUT Network UPS Tools Integration mogę jednocześnie mieć zintegrowane dwa UPS-y ?

W konfiguracji NUT Yaml mam powtórzyć zapis ?, zmieniając:

  • password
  • username
  • driver
  • port

masz dodać dodatkowe w sekcji devices

przykład dla 2 różnych UPSów podpiętych do tego samego hosta przez USB, musisz je wyliczyć na podstawie właściwości rozróżnialnych dla nut, więc np. w przykładzie poniżej jest to VID

users:
  - username: nut
    password: haslo-nie-do-zlamania
    instcmds:
      - all
    actions: []
devices:
  - name: liebert
    driver: usbhid-ups
    port: auto
    config:
      - desc = "Emerson Liebert PSA650MT3-230U"
      - vendorid = 10af
  - name: apc
    driver: usbhid-ups
    port: auto
    config:
      - desc = "APC Back-UPS 700VA"
      - vendorid = 051d
mode: netserver
shutdown_host: false
list_usb_devices: true
log_level: debug

ale nie ma musu używać obu w jednym miejscu - zintegrować możesz każdy serwer nut, więc drugi może być wpięty w inną maszynę w innym miejscu i obie integrujesz wtedy po sieci (jak pokazał wyżej @MariuszAK ) tj. integracja nie musi wcale korzystać z lokalnego serwera nut, może być dowolny zdalny.

Chciałbym mieć podpięte dwa UPS-y Przez USB do jednej maszyny. To w tym przypadku, już do istniejącej integracji NUT ma dodać nowe urządzenie ?

Czy to o to chodzi ?

Więc oba UPSy musisz dodać do tego samego serwera nut (czyli do Dodatku tak jak pokazałem w przykładzie wyżej), muszą być rozróżnialne, więc jeśli są różnych producentów to masz łatwo, bo będą miały różne VID, gdybyś miał 2 tego samego producenta, ale różne modele to wtedy po PID (jeśli mają różne, a z tym bywa różnie), w przeciwnym razie jest większy młyn, bo trzeba rozróżniać po numerach seryjnych czy czymkolwiek po czym się da (akurat nut olewa ścieżki dla urządzeń USB więc nie tędy droga).

Skoro masz jeden serwer to integracja powinna się łączyć tylko z tym jednym.
Integracja sobie sama znajdzie kolejny sprzęt udostępniony przez serwer (a przynajmniej powinna).
Gdyby to nie chciało działać to można odpalić dwa serwery naraz (i w każdym musi być wyliczony 1 UPS po jakiejś rozróżnialnej własności, ale takie podejście to w ogóle marnowanie zasobów), ale najpierw zrób to normalnie a nie martw się na zapas.


z ustawionymi opcjami

list_usb_devices: true
log_level: debug

w logu dodatku zobaczysz coś takiego

[18:36:14] INFO: Setting mode to netserver...
[18:36:14] INFO: Connected USB devices:
Bus 001 Device 005: ID 0b05:17cb ASUSTek Computer, Inc. Broadcom BCM20702A0 Bluetooth
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 002: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS578 SATA 6Gb/s
Bus 001 Device 003: ID 8087:0aa7 Intel Corp. Wireless-AC 3168 Bluetooth
Bus 001 Device 002: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 011: ID 10af:0001 Liebert Corp. PowerSure PSA UPS
[18:36:14] INFO: Generating /etc/nut/upsd.users...

VID znajdujesz tak

PID to jest ta kolejna liczba po dwukropku (ale wtedy VID też jest konieczne)

No przecież dopisałem to wraz z obrazkami.
To zwyczajne VID i PID urządzeń USB.
Możesz też wywołać dmesg bezpośrednio po podpięciu sprzetu i będziesz miał w logu systemowym wylistowane na końcu to co właśnie podpiąłeś.

Jeśli znasz faktycznych producentów to nawet można to “na sucho” wykopać z bazy VID i PID urządzeń USB
https://usb-ids.gowdy.us/read/UD

obstawiam, że CyberPower UPS UT1050EG to VID 0764, a PID sobie wyczytasz z logów (byłoby fajnie dodać go do bazy jeśli ma jakiś ID którego nie ma)
https://usb-ids.gowdy.us/read/UD/0764

a Green Cell ma najprawdopodobniej kradzione ID 0001:0000

też można dodać do bazy (chociaż to bez sensu, bo producent nie powinien tak poważnie łamać specyfikacji USB…)

OK, będę próbował :slight_smile:

Nie rozumiem do czego potrzebny jest PID ? , skoro do konfiguracji użyję VID.

Po to żebym mógł go zgłosić do bazy danych…
W sumie sam możesz zgłosić, ale mam tam konto i zgłosiłem już dziesiątki urządzeń…
Ta baza jest wykorzystywana w niemal każdej dystrybucji linuxa…

Jasne.

Spróbowałem podanego przykładu dla dwóch UPS. Jednak nie działa. Zrobiłem to w ten sposób:

Nie wiem czy port w obu przypadkach ma być “auto”.
I pozycja:
desc = czy ma to być jakaś konkretna nazwa ?

Będzie lepiej gdy zaczniesz korzystać z wklejania w trybie YAML

same screenshoty to męka dla nas, nie jestem w stanie tego analizować z samych obrazków…

Jeśli podajesz VID to mają być 4 cyfry hex (sam VID bez PID), a desc to twój prywatny opis (nie jest obowiązkowy) i bodajże name z małej litery (po to jest desc żebyś mógł pisać co chcesz)

Nie pomyślałem o tym, ale już się poprawiam.

To w tym przypadku będzie: ID 0001:0000 - 0001 ?

users:
  - actions: []
    instcmds:
      - all
    password: U23tgW@#!@4Rg
    username: user1
devices:
  - name: Cyberpower
    driver: usbhid-ups
    port: auto
    config:
      - desc = "Cyberpower"
      - vendorid = 0764
  - name: Greencell
    driver: blazer_usb
    port: auto
    config:
      - desc = "Greencell"
      - vendorid = 0001:0000
mode: netserver
shutdown_host: false
list_usb_devices: true

Na moje oko to powinno być jakoś tak (kolejność list w YAMLu jest bez znaczenia, więc zmieniłem tak by to było zdatne do czytania przez ludzi)

users:
  - username: user1
    password: U23tgW@#!@4Rg
    actions: []
    instcmds:
      - all

devices:
  - name: cyberpower
    driver: usbhid-ups
    port: auto
    config:
      - desc = "Cyberpower"
      - vendorid = 0764
  - name: greencell
    driver: blazer_usb
    port: auto
    config:
      - desc = "Greencell"
      - vendorid = 0001
mode: netserver
shutdown_host: false
list_usb_devices: true

PS to super-trudne hasło po publikacji w internecie traci swoje walory
wprawdzie haveibeenpwned ma zostać wycofany z użycia w dodatkach na korzyść kontroli przez Supervisora, ale ten dodatek wciąż samodzielnie sprawdza łamalność haseł


A w kwestii działania dodatku, to musisz mieć podpięte oba UPSy, bo obsługa błędów jest zwalona - przetestowałem to w tej chwili testując twoją konfigurację - nie działa jeśli którykolwiek ze skonfigurowanych UPSów nie jest fizycznie podpięty…

Więc chyba lepiej odpalić drugą instancję na innym porcie, bo skoro utrata łączności z jednym z UPSów może potencjalnie wywrócić dodatek, który ma obsługiwać oba, to słabo to widzę (no ale podłącz i sprawdź czy wystartuje bez problemu i czy się wywróci jeśli odepniesz jeden z nich, sam w tej chwili nie mam 2 UPSów w jednym miejscu, więc nawet nie mam jak zrobić głębszych testów).

Więc jeśłi będzie się wywracać gdy podłączysz oba to dodaj sobie repozytorium do sklepu
https://github.com/hassio-addons/repository/
to powinno spowodować dwukrotne wylistowanie Dodatków Community

w ten banalny sposób zainstalujesz sobie dwa dodatki NUT


oczywiście w jednym z nich musisz zmienić port na inny.
Każdy wtedy konfigurujesz inaczej dla pojedynczego UPSa

Ok, dzięki za pomoc, znajdę później chwilę, to potestuję.

Edit:

Myślę, że jest wszystko dobrze. Konfiguracja wystartowała bez problemów. Oba UPSy pokazują dane.
Po odpięciu jednego z nich, drugi nadal jest aktywny. Po ponownym podpięciu trzeba uruchomić ponownie dodatek NUT i nadal są dane z obu UPSów.

Poniżej logi.

s6-rc: info: service base-addon-banner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service base-addon-timezone: starting
s6-rc: info: service base-addon-log-level: starting
s6-rc: info: service fix-attrs successfully started
[09:45:26] INFO: Configuring timezone (Europe/Warsaw)...
s6-rc: info: service base-addon-log-level successfully started
s6-rc: info: service base-addon-timezone successfully started
s6-rc: info: service legacy-cont-init: starting
cont-init: info: running /etc/cont-init.d/nut.sh
[09:45:27] INFO: Setting mode to netserver...
[09:45:27] INFO: Connected USB devices:
Bus 002 Device 004: ID 12d1:1003 Huawei Technologies Co., Ltd. E220 HSDPA Modem / E230/E270/E870 HSDPA/HSUPA Modem
Bus 002 Device 009: ID 0001:0000 Fry's Electronics MEC0003
Bus 002 Device 002: ID 0438:7900 Advanced Micro Devices, Inc. Root Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 006: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 001 Device 002: ID 0438:7900 Advanced Micro Devices, Inc. Root Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 066: ID 0764:0501 Cyber Power System, Inc. CP1500 AVR UPS
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[09:45:28] INFO: Generating /etc/nut/upsd.users...
[09:45:28] INFO: Configuring user: user1
[09:45:29] INFO: Password is NOT in the Have I Been Pwned database! Nice!
[09:45:29] INFO: Configuring Device named cyberpower...
[09:45:30] INFO: Configuring Device named greencell...
[09:45:30] INFO: Starting the UPS drivers...
Using subdriver: CyberPower HID 0.6
Network UPS Tools - Generic HID driver 0.47 (2.8.0)
USB communication driver (libusb 1.0) 0.43
Please note that this driver is deprecated and will not receive
new development. If it works for managing your devices - fine,
but if you are running it to try setting up a new device, please
consider the newer nutdrv_qx instead, which should handle all 'Qx'
protocol variants for NUT. (Please also report if your device works
with this driver, but nutdrv_qx would not actually support it with
any subdriver!)
Supported UPS detected with megatec protocol
Vendor information unavailable
No values provided for battery high/low voltages in ups.conf
Using 'guestimation' (low: 20.800000, high: 26.000000)!
Battery runtime will not be calculated (runtimecal not set)
Network UPS Tools - UPS driver controller 2.8.0
cont-init: info: /etc/cont-init.d/nut.sh exited 0
cont-init: info: running /etc/cont-init.d/nutclient.sh
cont-init: info: /etc/cont-init.d/nutclient.sh exited 0
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
services-up: info: copying legacy longrun upsd (no readiness notification)
services-up: info: copying legacy longrun upsmon (no readiness notification)
s6-rc: info: service legacy-services successfully started
[09:45:33] INFO: Starting the UPS information server...
   0.000000	fopen /run/nut/upsd.pid: No such file or directory
   0.000050	Could not find PID file '/run/nut/upsd.pid' to see if previous upsd instance is already running!
   0.001006	[D1] debug level is '1'
   0.001186	listening on 0.0.0.0 port 3493
   0.001543	Connected to UPS [greencell]: blazer_usb-greencell
   0.002037	Connected to UPS [cyberpower]: usbhid-ups-cyberpower
   0.003081	Running as foreground process, not saving a PID file
[09:45:33] INFO: Starting the UPS monitor and shutdown controller...
   0.000000	fopen /run/nut/upsmon.pid: No such file or directory
   0.000059	Could not find PID file to see if previous upsmon instance is already running!
   0.000302	Using power down flag file /etc/killpower
   0.000440	UPS: cyberpower@localhost (primary) (power value 1)
   0.000478	UPS: greencell@localhost (primary) (power value 1)
   0.000501	[D1] debug level is '1'
   0.000538	[D1] debug level is '1'
   0.000588	Warning: running as one big root process by request (upsmon -p)
   0.000690	[D1] Saving PID 486 into /run/nut/upsmon.pid
Init SSL without certificate database
   0.005549	[D1] Trying to connect to UPS [cyberpower@localhost]
   0.026073	User upsmonmaster@127.0.0.1 logged into UPS [cyberpower]
   0.007197	[D1] Logged into UPS cyberpower@localhost
   0.007486	[D1] Trying to connect to UPS [greencell@localhost]
   0.027129	User upsmonmaster@127.0.0.1 logged into UPS [greencell]
   0.008228	[D1] Logged into UPS greencell@localhost

EDIT 2:

Niestety, nie jest dobrze, po odłączeniu tego starszego UPSa, konfiguracja się wysypała. Nie mam do niego dostępu. Uruchomienie ponowne dodatku nic nie daje.

Więc zrobiłem drugim sposobem. Dodalem repozytorium do sklepu
https://github.com/hassio-addons/repository/.

Pierwszy dodatek NUT skonfigurowałem w stary sposób i UPS CyberPower działa.

Nie mogę skonfigurować drugiego dodatku NUT. Nie wiem jaki port wpisać do konfigurtacji NUTA ?.
Czy dane username i password muszą być inne ?

Mam taka konfigurację i nie mogę dodać urządzenia. Dodatek NUT po chwili się wyłącza.
Myślę, że coś jest nie tak z portem.

users:
  - actions: []
    instcmds:
      - all
    password: Art232323
    username: user2
devices:
  - config: []
    driver: blazer-ups
    name: greencell
    port: "3491"
mode: netserver
shutdown_host: "false"

Inny port choćby większy o 1 od domyślnego (port jest w miarę obojętny, ale musisz panować nad portami w swojej instalacji, by nie były w konfliktach), to wynika z zasady prostej jak drut - pod tym samym IP nie możesz mieć kilku serwerów na tym samym porcie.
Na obrazku wcale nieb wpisałeś portu.

I chyba inny user, nie wiem - sprawdź, drugi UPS mam od lat w innej lokalizacji i tylko raz odpalałem oba na próbę, w dodatku tak jak napisałem wcześniej oba w jednym dodatku - dopiero wczoraj się dowiedziałem co się dzieje jak się odpali konfigurację bez sprzętu.

A w kwestii sterownika - sprawdzałeś czy tylko blazer-usb jest OK?
w logu masz propozycję

nutdrv_qx

Wcześniej ten UPS działał właśnie pod tym sterownikiem (blazer-usb).

gdzie miałbym wpisać nr portu ?

wpisuje go konfiguracji yaml Nuta i w zakładce sieć ( poniżej yaml).

User jest inny, jest user1 i user2.

Ślepy jestem :upside_down_face: