Potrzebny jest TOKEN do naszego konta który generujemy pod adresem https://cloud.supla.org/security/personal-access-tokens
Podajemy jego nazwę i w okienku kanał zaznaczamy odczyt, zapisujemy i kopiujemy ciąg znaków który się pokażę.
Tworzymy skrypt supla.php
Code: Select all
<?php
// TOKEN DO KOMUNIKACJI Z SEREWREM SUPLA
$token = "nasz_token";
// ID TEMPERATURY
$temp = 0000; // podaj swój numer kanału
// KOD DO POBIERANIA DANYCH
$serverUrl = base64_decode(explode('.', $token)[1]);
$ch = curl_init($serverUrl . '/api/v3/channels?include=state');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'accept: application/json',
'Authorization: Bearer ' . $token
));
$data = curl_exec($ch);
$data = json_decode($data, true);
curl_close($ch);
// SPRAWDANIE BŁĘDÓW, JEŚLI SĄ
if (isset($data['error'])) {
$error = $data['error'];
$info = $data['error_description'];
}
if (isset($data['status'])) {
$error = $data['status'];
$info = $data['message'];
}
// FUNKCJA SZUKANIA KANAŁU PO ID
function searchByValue($id, $array) {
foreach ($array as $key => $val) {
if ($val['id'] === $id) {
$resultSet['key'] = $key;
$resultSet['id'] = $val['id'];
return $resultSet;
}
}
return null;
}
// ODCZYT TEMPERATURY JEŚLI NIE MA BŁĘDÓW
if (empty($error)) {
// TABLICA Z DANYMI
// print_r($data); // usuń // na początku linii, aby była bardziej czytelna po uruchomieniu pliku kliknij prawym klawiszem myszy i pokaż źródło
$ID_temp = searchByValue($temp, $data)['key'];
$connect = $data[$ID_temp]['state']['connected'];
if ($connect == true) {
//TA ZMIENNA BĘDZIE NASZĄ AKTUALNĄ TEMPERATURĄ
$temperatura = $data[$ID_temp]['state']['temperature'];
//POKAŻ TEMPERATURĘ
echo $temperatura; // dodaj // na początku linii aby ukryć jeżeli chcesz zobaczy tylko dane z tablicy
} else {
echo "Brak połączenia z urządzeniem.";
}
} else {
// KOMUNIKAT BŁĘDU JEŚLI JEST
echo $info;
}
?>Zmienna $data jest to tablica i można z niej pobrać inne dane.
Po podstawieniu swoich danych i wrzuceniu pliku na serwer z PHP naszym oczom ukaże się aktualna temperatura z wybranego kanału.
