Fibaro - odczyt danych JSON ze strony cloud.supla.org

  • 6 Odpowiedzi
  • 3939 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

Fibaro - odczyt danych JSON ze strony cloud.supla.org
« dnia: 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"}
*

Offline viperlodz

  • Moderator Globalny
  • ***** 838
  • 23
  • Nazwa i wersja ID: HC3 / HC2/ HC3L / Yubii
Odp: Fibaro - odczyt danych JSON ze strony cloud.supla.org
« Odpowiedź #1 dnia: 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
   

Odp: Fibaro - odczyt danych JSON ze strony cloud.supla.org
« Odpowiedź #2 dnia: 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'}
*

Offline viperlodz

  • Moderator Globalny
  • ***** 838
  • 23
  • Nazwa i wersja ID: HC3 / HC2/ HC3L / Yubii
Odp: Fibaro - odczyt danych JSON ze strony cloud.supla.org
« Odpowiedź #3 dnia: 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ć.
Odp: Fibaro - odczyt danych JSON ze strony cloud.supla.org
« Odpowiedź #4 dnia: 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.
*

Offline viperlodz

  • Moderator Globalny
  • ***** 838
  • 23
  • Nazwa i wersja ID: HC3 / HC2/ HC3L / Yubii
Odp: Fibaro - odczyt danych JSON ze strony cloud.supla.org
« Odpowiedź #5 dnia: 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"}
Odp: Fibaro - odczyt danych JSON ze strony cloud.supla.org
« Odpowiedź #6 dnia: 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)