API для IoT устройств

Публичный доступ предоставляется только для устройств, у которых включён режим открытого доступа. Данные можно получать через HTTP GET запросы к API. Теперь используется id устройства, единый как для внутреннего, так и для внешнего использования.

Получение последних N точек данных устройства

Пример запроса:
https://app.viziot.com/api/v1/public/devices/0df8cb24-3e2b-4046-8464-dac756e70922/points/10

Ответ: JSON:

{"status":200,"type":"OK","data":[{"dt":1742457275000,","num":{"f1":34,"f2":235.5,"f3":2.89,"f4":630,"f5":6759300,"f6":30.13,},"str":{}}, ...]}

Получение данных за период по Unix timestamp

Пример запроса:
https://app.viziot.com/api/v1/public/devices/0df8cb24-3e2b-4046-8464-dac756e70922/points/1742456275000/1742457275000

Ответ: JSON:

{"status":200,"type":"OK","data":[{"num":{"f1":34,"f2":234,"f3":2.88,"f4":624,"f5":6759096,"f6":30.92,},"dt":1742456285000,"str":{}}, ... ]}

Тип данных «point»

JavaScript пример

async function getLastPoints(id, count) {
    const url = \`https://app.viziot.com/api/v1/public/devices/\${id}/points/\${count}\`;
    try {
        const response = await fetch(url);
        const data = await response.json();

        switch (data.type) {
            case 'OK':
                console.log('Последние точки:', data.data);
                break;
            case 'ERROR':
                console.error('Ошибка:', data.description);
                break;
            default:
                console.warn('Неизвестный формат ответа:', data);
        }
    } catch (err) {
        console.error('Ошибка запроса:', err);
    }
}

async function getPointsByPeriod(id, ts, te) {
    const url = \`https://app.viziot.com/api/v1/public/devices/\${id}/points/\${ts}/\${te}\`;
    try {
        const response = await fetch(url);
        const data = await response.json();

        switch (data.type) {
            case 'OK':
                console.log('Точки за период:', data.data);
                break;
            case 'ERROR':
                console.error('Ошибка:', data.description);
                break;
            default:
                console.warn('Неизвестный формат ответа:', data);
        }
    } catch (err) {
        console.error('Ошибка запроса:', err);
    }
}

// Пример использования:
const deviceId = "0df8cb24-3e2b-4046-8464-dac756e70922";

getLastPoints(deviceId, 10);

const ts = Math.floor(Date.now()/1000) - 24*60*60;
const te = Math.floor(Date.now()/1000);
getPointsByPeriod(deviceId, ts, te);