Kontrola UPS w Supla

User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

Wymyśliłem sobie kontrolę UPS'a w Supla. Urządzenie podpięte jest po kablu USB do mojego Dell'a wyse na którym jest zainstalowany Debian, tam aktualizuje sie co minutę plik w formacie json. Tak wyglądają dane :

Code: Select all

{
  "APC": "001,027,0655",
  "DATE": "2026-02-18 13:05:14 +0100",
  "HOSTNAME": "wyse",
  "VERSION": "3.14.14 (31 May 2016) debian",
  "UPSNAME": "APC_UPS",
  "CABLE": "USB Cable",
  "DRIVER": "USB UPS Driver",
  "UPSMODE": "Stand Alone",
  "STARTTIME": "2026-02-18 12:39:57 +0100",
  "MODEL": "Smart-UPS 1000",
  "STATUS": "ONLINE",
  "BCHARGE": "100.0 Percent",
  "TIMELEFT": "159.0 Minutes",
  "MBATTCHG": "5 Percent",
  "MINTIMEL": "3 Minutes",
  "MAXTIME": "0 Seconds",
  "ALARMDEL": "30 Seconds",
  "BATTV": "27.1 Volts",
  "NUMXFERS": "0",
  "TONBATT": "0 Seconds",
  "CUMONBATT": "0 Seconds",
  "XOFFBATT": "N/A",
  "STATFLAG": "0x05000008",
  "MANDATE": "2016-02-17",
  "SERIALNO": "3S1607X01716",
  "NOMBATTV": "24.0 Volts",
  "FIRMWARE": "UPS 15.1 / ID=18",
  "END APC": "2026-02-18 13:06:01 +0100"



Jak tego użyć w pliku yaml konfiguracji sd4linux ?
Napisałem coś takiego ale coś nie gra :

Code: Select all


channels:
  - type: GeneralPurposeMeasurementParsed #
    name: BCHARGE
    initial_caption: BCHARGE
    default_value_precision: 1
    default_unit_after_value: "%"
    source:
      type: File
      file: "/home/wyse/APC_UPS/ups.json"
      expiration_time_sec: 1200
    pareser:
      type: Json
      name: p1
    value: "BCHARGE"

Zapewne z wartości trzeba usunąć jednostkę Percent tylko jak ?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

shimano73 wrote: Wed Feb 18, 2026 12:41 pm
Zamiast Source: File, ustaw na Cmd z następującą komendą:

Code: Select all

jq -r '.BCHARGE | split(" ")[0]' plik.json
To da wartość 100.0, która możesz załadować Parserem Simple
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

klew wrote: Wed Feb 18, 2026 1:35 pm
shimano73 wrote: Wed Feb 18, 2026 12:41 pm
Zamiast Source: File, ustaw na Cmd z następującą komendą:

Code: Select all

jq -r '.BCHARGE | split(" ")[0]' plik.json
To da wartość 100.0, która możesz załadować Parserem Simple
Zmieniłem json'a teraz tworzy się bez jednostek np "BCHARGE": 100.0, razem z czatemGPT próbuję to ogarnąć ale nie dajemy rady
sekcja kanały wygląda tak

Code: Select all


channels:
  - type: GeneralPurposeMeasurementParsed
    name: "UPS Battery"
    function: GENERAL_PURPOSE_MEASUREMENT

    value:
      type: cmd
      command: jq -r '.BCHARGE' /home/wyse/APC_UPS/ups.json
      refresh_interval_ms: 60000

    parser:
      type: float
      match: "([0-9.]+)"



ale cały czas mam bład

Code: Select all

wyse@wyse:~/APC_UPS$ sudo systemctl status supla-ups.service
× supla-ups.service - Supla UPS
     Loaded: loaded (/etc/systemd/system/supla-ups.service; disabled; preset: enabled)
     Active: failed (Result: exit-code) since Wed 2026-02-18 15:21:42 CET; 4min 37s ago
   Duration: 37ms
    Process: 5932 ExecStart=/home/wyse/supla-device/extras/examples/linux/build/supla-device-linux -c /home/wyse/APC_UPS/supla-ups.yaml (code=exited, status>
   Main PID: 5932 (code=exited, status=1/FAILURE)
        CPU: 28ms

lut 18 15:21:42 wyse supla-device-linux[5932]: ERR[15:21:42.329] Guid/auth file YAML error: bad file: /home/wyse/APC_UPS/guid_auth.yaml
lut 18 15:21:42 wyse supla-device-linux[5932]: INF[15:21:42.330] Read write config: config file missing, starting with empty database
lut 18 15:21:42 wyse supla-device-linux[5932]: INF[15:21:42.331]  *** Starting supla-device ***
lut 18 15:21:42 wyse supla-device-linux[5932]: INF[15:21:42.331] Using config file /home/wyse/APC_UPS/supla-ups.yaml
lut 18 15:21:42 wyse supla-device-linux[5932]: ERR[15:21:42.331] Config: parser used without source
lut 18 15:21:42 wyse supla-device-linux[5932]: ERR[15:21:42.331] Adding parser failed
lut 18 15:21:42 wyse supla-device-linux[5932]: ERR[15:21:42.331] Config: parsing channel 0 failed
lut 18 15:21:42 wyse supla-device-linux[5932]: ERR[15:21:42.331] Loading channels failed. Exit
lut 18 15:21:42 wyse systemd[1]: supla-ups.service: Main process exited, code=exited, status=1/FAILURE
lut 18 15:21:42 wyse systemd[1]: supla-ups.service: Failed with result 'exit-code'.


gdzie jest bład ?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Wrzuć do chata cały readme z sd4linux, następnie Twój yaml i logi. Powinien ogarnąć
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

klew wrote: Wed Feb 18, 2026 3:24 pm Wrzuć do chata cały readme z sd4linux, następnie Twój yaml i logi. Powinien ogarnąć
Po cało dziennych zmaganiach z czatemGPT , on doszedł do takich wniosków

Code: Select all


W tej konkretnej binarce:

GeneralPurposeMeasurementParsed

działa WYŁĄCZNIE jako:

value -> parser


a NIE jako:

source -> parser


Dlatego:

gdy nie ma value → dostajesz „missing value”

gdy jest value: Cmd → dostajesz „parser used without source”

To wygląda jak niespójność w implementacji tej wersji.

🎯 Wniosek techniczny

Ta binarka z:

extras/examples/linux/build


ma niekompletną implementację Parsed + Cmd + File.

I dlatego każda kombinacja:

Cmd

File

parser

value

source

wpada w inny konflikt walidatora.

To nie jest już kwestia YAML.
To jest kwestia kodu w tej wersji.

Czy ma racje ?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Nie, bzdury pisze.
Jutro dam znać jak to zrobić
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Wrzuciłem małą poprawkę do parsowania JSON-a, aby sobie radził z takimi przypadkami "100.0 PERCENT". Także zaktualizuj sobie repo supla-device.

Poza tym, wrzuciłem temat do chata (zgodnie ze swoją wczesniejszą instrukcją) i wygenerował mi config za pierwszym razem :P

Code: Select all

channels:
  - type: GeneralPurposeMeasurementParsed
    initial_caption: "UPS battery"
    value: BCHARGE
    multiplier: 1
    default_unit_after_value: "%"
    default_value_precision: 1

    parser:
      type: Json
      refresh_time_ms: 10000

    source:
      type: File
      file: "/home/user/source.json"
      expiration_time_sec: 1200
Dostaosuj sobie ścieżkę do pliku.

W logu masz jeszcze taki problem:

Code: Select all

ERR[15:21:42.329] Guid/auth file YAML error: bad file: /home/wyse/APC_UPS/guid_auth.yaml
INF[15:21:42.330] Read write config: config file missing, starting with empty database
To ma prawo się pojawić przy pierwszym uruchomieniu, ale jeśli występuje w kolejnych, to znaczy, że aplikacja nie ma dostępu do tej lokalizacji na dysku i nie może tam pisać do pliku.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

No i super , działa , dzięki bardzo. Mam jeszcze pytanie czy w sd4linux można ustawić funkcje kanału binarnego bo czatgpt pisze że nie ? Czy tym razem też sie myli ?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

shimano73 wrote: Thu Feb 19, 2026 11:41 pm No i super , działa , dzięki bardzo. Mam jeszcze pytanie czy w sd4linux można ustawić funkcje kanału binarnego bo czatgpt pisze że nie ? Czy tym razem też sie myli ?
A readme czytałeś? ;)
Jest binary
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

klew wrote: Fri Feb 20, 2026 6:15 am
shimano73 wrote: Thu Feb 19, 2026 11:41 pm No i super , działa , dzięki bardzo. Mam jeszcze pytanie czy w sd4linux można ustawić funkcje kanału binarnego bo czatgpt pisze że nie ? Czy tym razem też sie myli ?
A readme czytałeś? ;)
Jest binary
Krzysztofie źle mnie zrozumiałeś albo ja źle opisałem problem ;) . Chodziło mi oto aby w yaml dla typu kanału BinaryParsed przypisać funkcję "czujnik binarny" bo z automatu ustawia się na : brak (wyłaczony ) - żółty kafelek
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)

Return to “Supla-device dla Linuxa (sd4linux)”