Forum użytkowników automatyki budynkowej

Z-wave => Fibaro - urządzenia wirtualne, pluginy => Wątek zaczęty przez: Gabriel w Grudzień 13, 2020, 04:24:48 pm

Tytuł: Fibaro - odczyt danych JSON ze strony cloud.supla.org
Wiadomość wysłana przez: Gabriel w Grudzień 13, 2020, 04:24:48 pm
Witam, zbudowałem układ oparty o ESP8266 do odczytu licznika zużycia gazu w domu, powiązałem z kontem na Supli i wszystko działa jak należy.
Chciałbym jednak móc odczytać aktualny stan licznika w aplikacji Fibaro przez stworzenie VD i zapisywanie zwróconych wartości JSON ze strony Supli do etykiety.
Jednak tutaj mam dość spory problem. Przeszukałem już chyba wszystkie dostępne źródła w internecie i nie znalazłem odpowiedzi jak coś takiego stworzyć.
Czy komuś udało to uruchomić i mógłby podzielić się wiedzą, lub wie jak za pomocą VD uzyskać odczyt JSON wydobyć dany parametr (konkretnie : "calculatedValue" ) i zapisać go do etykiety ?

Dodam że poprzez Scenę jestem w stanie odczytać JSON ale nie potrafię tego uczynić przy pomocy VD.

Podaję kod LUA SCENY :

local http = net.HTTPClient()
    local url="https://svr48.supla.org/direct/XX/XXXXXXXXXXXXXX/read"

    http:request(url, {
        options = {
          method='GET',
      headers = {['Accept']='application/json'}
        },
           success =  function (response) fibaro:debug (response.data)  end,
           error  =  function (err) fibaro: debug ("Error:"  .. err)  end
      });

Otrzymuję wtedy :

[DEBUG] 16:19:57: {"connected":true,"totalCost":14356.64,"pricePerUnit":1.37,"impulsesPerUnit":10,"counter":104793,"calculatedValue":10479.3,"currency":"PLN","unit":"m\u00b3"}
Tytuł: Odp: Fibaro - odczyt danych JSON ze strony cloud.supla.org
Wiadomość wysłana przez: viperlodz w Grudzień 15, 2020, 04:26:53 pm
Musisz pobrać jsona i później odnieść się do konkretnej wartości.

Pzykładowo
    -- get table
    response ,status, errorCode = HC2:GET("/api/panels/drenchers")
    jsonTable = json.decode(response)

local test;
test = jsonTable.rainDelay --tutaj akurat pobieramy info o ile jest opoznione nawadnianie w Fibaro
   

Tytuł: Odp: Fibaro - odczyt danych JSON ze strony cloud.supla.org
Wiadomość wysłana przez: Gabriel w Grudzień 16, 2020, 05:52:04 pm
Dzięki za odpowiedź.
Mam jeszcze pytanie w jaki sposób wysłać żądanie do strony aby ta odpowiedziała mi w JSONie. Zwykłe zapytanie zwraca wartości w stronie html.

Próbuję wstawić taki kawałek kodu do tego celu ale to nie działa :

http:request(url, {
        options = {
          method='GET',
      headers = {['Accept']='application/json'}
Tytuł: Odp: Fibaro - odczyt danych JSON ze strony cloud.supla.org
Wiadomość wysłana przez: viperlodz w Grudzień 16, 2020, 11:34:43 pm
To serwer zwraca nam informacje w danym formacie i nie jest to zależne od nas. Chyba, że w api możemy to wybrać.
Tytuł: Odp: Fibaro - odczyt danych JSON ze strony cloud.supla.org
Wiadomość wysłana przez: Gabriel w Grudzień 17, 2020, 04:37:00 pm
Zamieszczam screen ze strony. Chodzi o wysłanie nagłówka z zapytaniem JSON aby uzyskać odpowiedź JSON a nie HTML.
Tytuł: Odp: Fibaro - odczyt danych JSON ze strony cloud.supla.org
Wiadomość wysłana przez: viperlodz w Grudzień 18, 2020, 09:25:01 am
Przecież w tym pierwszym kodzie co wstawiłeś masz dane json. Więc trzeba tylko wykorzystać z tego przykładowego kodu co podałem drugą część.

To jest json:
DEBUG] 16:19:57: {"connected":true,"totalCost":14356.64,"pricePerUnit":1.37,"impulsesPerUnit":10,"counter":104793,"calculatedValue":10479.3,"currency":"PLN","unit":"m\u00b3"}
Tytuł: Odp: Fibaro - odczyt danych JSON ze strony cloud.supla.org
Wiadomość wysłana przez: Gabriel w Grudzień 18, 2020, 07:05:12 pm
Przecież w tym pierwszym kodzie co wstawiłeś masz dane json. Więc trzeba tylko wykorzystać z tego przykładowego kodu co podałem drugą część.

Tak ale kod ten nie działa gdy wstawię go jako VD, działa tylko w przypadku Sceny w HC2.
O to co otrzymuję w oknie Debugera po wgraniu tego kodu jako VD :

[ERROR] 19:02:09: line 2: attempt to index global 'net' (a nil value)