PVmonitor PVMterminal odczyt z json

Witam
Mam PVMterminal który wystawia plik json z którego odczytuje wartości do HA.
JSON wygląda mniej wiecej tak:
image
Z tego pliku wyciągam 27 wartości do encji w HA.
Zrobiłem to tak:

  - platform: rest
    resource: http://192.168.0.137/public
    name: sofar44_status
    value_template: "{{ value_json['rs485'] ['emetersread'] [0] ['em_Status']}}"
  - platform: rest
    resource: http://192.168.0.137/public
    name: sofar44_P_gen
    value_template: "{{ value_json['rs485'] ['emetersread'] [0] ['em_P gen']}}"
    unit_of_measurement: W
  - platform: rest
    resource: http://192.168.0.137/public
    name: sofar44_en_gen_day
    value_template: "{{ value_json['rs485'] ['emetersread'] [0] ['em_En day gen']}}"
    unit_of_measurement: kWh
    device_class: energy
    state_class: total_increasing

Problem: co jakiś czas tracę niektóre odczyty i encja wtedy jest niedostępna
image
Kiedy ilość odczytywanych danych zmniejszyłem z 27 do 9 jest dużo lepiej.
Pytanie: Jak odczytywać wartości z json tak aby nie było problemów z dostępnością encji?

1 polubienie

Zobacz tutaj może coś pomoże
Lan Kontroler v2.5 - Integracja z Home Assistant - #26 przez rakon.

Podejrzewam, że PVMterminal może nie być przystosowany do takiego spamowania i dlatego tak się dzieje. Ja sobie to zrobiłem w NodeRed i mam jedno zapytanie, a nie 27 czy 9 jak Ty.

możesz wrzucić na forum flow do PVMterminala?

Jeśli dochodzi do “spamowania” (co zapewne można sprawdzić w logach, ewentualnie podwyższając poziom logowania), to znaczy, że platforma integracji jest źle napisana i należałoby założyć issue.

Muszę najpierw wrócić do domu :wink:

Nie mam pewności, ale z tego co widzę, to nie żadna integracja, a zwykłe wyciąganie danych z http. Może wystarczyłoby tak przerobić to, żeby raz zaczytywać stronę i tylko rozdzielać odpowiednie komponenty na poszczególne encje. Ale ja tylko gdybam, to nie moja działka.

1 polubienie

pozwolę sobie przypomnieć o przesłanie flow :slight_smile:

flows-pvterminal.json (15,8 KB)

Dane pobieram lokalnej sieci z pvterminala co 15 sekund jako UTF -8 string. Nastepnie zamieniam w pobranym tekscie spacje na znak podkreślenia , potem zamieniam na json. Dalej wyłuskuje interesujca mnie wartość z jsona i przesyłam do wczesniej utworzonej encji numerycznej. The end.

Przepraszam, czasem praca mnie wykańcza :wink:
pvterminal.json (4,8 KB)

1 polubienie

Działa bardzo ładnie:


zwraca dane w postaci json z którymi potem możemy robić co chcemy

{ "info":{
   "api":1,
   "hst":"pvmterminal.local",
   "myip":"xxx.xxx.xxx.xxx",
   "pvsno":"xxxxxxxx",
   "pvver":"1.27",
   "pvmmi":"54248",
   "pvme":"91836",
   "pvrst":"1",
   "pvstrt":"2023-04-13 19:57:23",
   "pvrnt":"00d 00:11:20",
   "s_bh1750":"0",
   "s_bmp180t":"0.00",
   "s_bmp180p":"0"
   },
"rs485":{
   "emetersread":[]
   },
"pulse":{
   "empulseread":[]
   },
"sum":{
   "emsumread":[]
   },
"18b20":{
   "ds18b20read":
[{"s_ds18b20nr":"0","s_ds18b20a":"e13c01a816599e28","s_ds18b20n":"Piwnica","s_ds18b20i":"0","s_ds18b20p":"0","s_ds18b20c":"0.00","s_ds18b20v":"0.00","s_ds18b20t":"01:00:00","s_ds18b20e":"264","s_ds18b20ec":"56"}]
},
"switch":{
   "swlocal":[{"nr":"SW0","rnm":"                                               ","rmtctl":"0","ron":"0","rtm":"1970-01-01 01:00:00"},{"nr":"SW1","rnm":"                                               ","rmtctl":"0","ron":"0","rtm":"1970-01-01 01:00:00"},{"nr":"SW2","rnm":"                                               ","rmtctl":"0","ron":"0","rtm":"1970-01-01 01:00:00"},{"nr":"SW3","rnm":"                                               ","rmtctl":"0","ron":"0","rtm":"1970-01-01 01:00:00"},{"nr":"SW4","rnm":"                                               ","rmtctl":"0","ron":"0","rtm":"1970-01-01 01:00:00"},{"nr":"SW5","rnm":"                                               ","rmtctl":"0","ron":"0","rtm":"1970-01-01 01:00:00"}],"swrmt":[],"analog":[],"lua":[{"nr":"0","luam":""},{"nr":"1","luam":""}]}}

trzeba tylko pamiętać by była włączona opcja ww administracji PVMterminala:

1 polubienie