api supli

duszek
Posts: 81
Joined: Sat Nov 26, 2022 6:03 am

Post

robię taki przykładowy link np

https://svr82.supla.org/api/v2.4.0/chan ... ement-logs

532 - numer kanału

https://svr82.supla.org/api/v2.4.0/chan ... logs/klucz

Też nie działa jak ma to wygladać ......
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Jakiej metody używasz ? Jakie parametry przekazujesz ?
SUPLA.... Nareszcie w domu.
duszek
Posts: 81
Joined: Sat Nov 26, 2022 6:03 am

Post

Chce pobrać dane z licznika impulsów o informacji ile w miesiącu zużyłem kw oraz jaki to koszt oraz takie informacje za jeden dzień ostatni …..
bo tylko mogę wyciągnąć z linku bezpośredniego informacje jak dałem w 1 poście ….. nie wiem jakiej metodę wykozystac ….
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Musisz użyć metody GET. Jako parametry musisz podać timestamp daty początkowej i w drugim żądaniu timestamp daty końcowej.
Limitujesz każde żądanie do jednego rekordu.

curl -X 'GET' \
'https://svrX.supla.org/api/v2.4.0/channels/Y/measurement-logs?afterTimestamp=Z&order=DESC&limit=1&offset=0' \
-H 'accept: application/json' \
-H 'Authorization: Bearer EFG'

Pod X podstawiasz numer serwera
Pod Y id kanału
Pod Z timestamp
Pod EFG token

Takie zapytanie zwraca jeden pomiar z historii. Nowszy odejmujesz od starszego i wiesz ile zużyłeś za dany okres.

Tak swoją drogą to te przykłady requestów generują Ci się same z poziomu dokumentacji API.
SUPLA.... Nareszcie w domu.
User avatar
Lector
Posts: 2471
Joined: Fri Nov 17, 2017 2:26 pm
Location: Poznań
Has thanked: 13 times
Been thanked: 25 times

Post

pzygmunt wrote: Mon Feb 20, 2023 7:17 pm Musisz użyć metody GET. Jako parametry musisz podać timestamp daty początkowej i w drugim żądaniu timestamp daty końcowej.
Limitujesz każde żądanie do jednego rekordu.

curl -X 'GET' \
'https://svrX.supla.org/api/v2.4.0/channels/Y/measurement-logs?afterTimestamp=Z&order=DESC&limit=1&offset=0' \
-H 'accept: application/json' \
-H 'Authorization: Bearer EFG'

Pod X podstawiasz numer serwera
Pod Y id kanału
Pod Z timestamp
Pod EFG token

Takie zapytanie zwraca jeden pomiar z historii. Nowszy odejmujesz od starszego i wiesz ile zużyłeś za dany okres.

Tak swoją drogą to te przykłady requestów generują Ci się same z poziomu dokumentacji API.
Skąd wziąć token?
Wcześniej w API było inaczej i miałem. Teraz potrzebuje na nowo i za chiny ludowe nie widzę.
viewtopic.php?t=14291
Niespełniony automatyk. :mrgreen:
https://3d-lamp.photos/
https://pool.lector.top/
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Konto -> Bezpieczeństwo -> Osobiste tokeny dostępowe
SUPLA.... Nareszcie w domu.
cinas
Posts: 650
Joined: Sun Aug 14, 2022 6:59 am
Location: Kaczory
Has thanked: 3 times
Been thanked: 7 times

Post

Chce dodać automatyczne pobieranie danych z liczników do arkuszy google
GPT coś podpowiada ale nie czyta , mam błąd

Code: Select all

  function licznikSupla() {

  var token = "Tu_token=";
  var licznikID = 15955;
  var url = "https://svrxx.supla.org/api/v2.3/channels";

  var options = {
    method: "get",
    headers: {
      Authorization: "Bearer " + token
    }
  };

  var response = UrlFetchApp.fetch(url, options);
  var data = JSON.parse(response.getContentText());

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  for (var i = 0; i < data.length; i++) {

    if (data[i].id == licznikID) {

      var energia = data[i].state.total_forward_energy;

      sheet.appendRow([
        new Date(),
        energia
      ]);

      break;
    }
  }
}

Mam odpowiedź
TypeError: Cannot read properties of undefined (reading 'total_forward_energy')
Jak powinno wyglądać zapytanie ?
cinas
Posts: 650
Joined: Sun Aug 14, 2022 6:59 am
Location: Kaczory
Has thanked: 3 times
Been thanked: 7 times

Post

Już działa czytanie z Mew 01

Code: Select all

function suplaEnergy() {

  var token = "token=";
  var channelId = "15955";

var url = "https://svrxx.supla.org/api/v2.3.0/channels/" + channelId + "?include=state";

  var options = {
    method: "get",
    headers: {
      Authorization: "Bearer " + token
    }
  };

  var response = UrlFetchApp.fetch(url, options);
  var data = JSON.parse(response.getContentText());

  var phases = data.state.phases;

  var totalEnergy =
      phases[0].totalForwardActiveEnergy +
      phases[1].totalForwardActiveEnergy +
      phases[2].totalForwardActiveEnergy;

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  sheet.appendRow([
    new Date(),
    totalEnergy
  ]);
}

Return to “Ogólna dyskusja”