x=latitude - широта y=longitude - долгота все методы принимают: user_agent, devid, regid, сессию, 'my_x', 'my_y' lang - переключить весь последующий вывод на указанный язык пользователя все методы возвращают: ['status' => self::HTTP_SUCCESS, 'message'=>инфо] или ['status' => ошибка , 'error'=>инфо] * todo отвязать фото от id, чтобы нельзя было получить сканированием все фотографии. Либо не давать фото тем, у кого нет прав Константы: device->status - битовое поле состояний и режима работы устройства DEVICE_STATUS_READY = 1 - OnLine, - иначе OFFLINE DEVICE_STATUS_MONITORING = 4 - режим постоянной передачи координат DEVICE_STATUS_GPS_DISABLED = 8 - на телефоне запрещен GPS (set) DEVICE_STATUS_CONFIRM = 32 - телефон подтвержден DEVICE_STATUS_PING_GPS = 64 - устройству отправлен запрос координат через push? если в течение 5 минут не прийдет ответ, будет переведено в OFFLINE DEVICE_STATUS_CHARGED = 128 - батарея заряжается DEVICE_STATUS_WARNING = 256 - для устройства есть важное уведомление, для получения используйте message->list(warning=1), для сброса: Device->set_permission или Message->mark_as_read device_permission->permissions ( Я = device_permission->slave) DEVICE_ACCESS_GPS = 1 - дать доступ устройству device к моим координатам и отправке мне сообщений(может быть получено на основании членства в приватной группе) DEVICE_ACCESS_NONSTOP = 2 - Удаление прав только родителем или удалением приложения. (не удаляемое) DEVICE_ACCESS_SEND_SMS = 4 - доступ к СМС, если не будет возможности отправить уведомление через интернет, отправить СМС DEVICE_ACCESS_FULL = 8 - дать неограниченный доступ устройству id к моему устройству(прослушка, фото и видео, изменение координат) device_permission->attribute (я его) DEVICE_BAN = 8 - устройство(device_slave) не может отправлять мне(device) сообщения, даже официальное и todo следить за мной даже если мы в общей группе DEVICE_MAIN_SCREEN = 16 - показывать устройство на главном экране device_permission->alarms - битовая маска о чем уведомлять меня(device) о device_slave DEVICE_ALARM_LOW_BATTERY = 4 - батарейка разряжена, onst DEVICE_ALARM_BALANCE = 8; // баланс меньше 10 рублей DEVICE_ALARM_OFFLINE = 16 - Перестал передавать координаты device_place->alarms - битовая маска о чем уведомлять, устанавливается в add_place для каждого места DEVICE_ALARM_FENCE_OUT = 1 - выход за забор DEVICE_ALARM_FENCE_IN = 2 - вход внутрь забора DEVICE_ALARM_BEFORE = 4 - вход/выход произошел до schedule DEVICE_ALARM_AFTER = 8 - вход/выход произошел после schedule device->settings - настройки устройства DEVICE_SETTINGS_GPS = 1 - не получать и не сохранять мои координаты (при получении сервером координат они будут записаны в качестве последнего местонахождения устройства для работы других функций) DEVICE_SETTINGS_ACCESS = 2 - запрет запросов получения прав DEVICE_SETTINGS_MESSAGE = 4 - запрет получения сообщений от посторонних DEVICE_SETTINGS_SOS_SEND = 8 - todo запрет отправки запроса помощи (SOS) посторонним, находящимся поблизости. DEVICE_SETTINGS_SOS_RECEIVE = 16 - todo запрет получения запроса помощи (SOS) от посторонних, находящихся поблизости DEVICE_SETTINGS_RADIO = 32 - todo запрет получения сообщений рации DEVICE_SETTINGS_VOLUME = 64 - запрет включения громкости, когда я в беззвучном режиме DEVICE_SETTINGS_CONTACT = 128 - разрешить использовать мой справочник контактов для сервиса "кто звонил" DEVICE_SETTINGS_TYPING = 256 - todo не получать и не передавать "я набираю текст" DEVICE_SETTINGS_READING = 512 - todo не получать и не передавать "получатель прочитал сообщение" DEVICE_SETTINGS_GPS_ON_PUSH = 1024 - Отправка местоположения только по требованию const DEVICE_SETTINGS_GPS_ON_PLACE = 4096; // Отправка местоположения только по зонам DEVICE_SETTINGS_SLEEP_IN_FENCE = 4096 - Засыпать внутри круглых зон DEVICE_SETTINGS_GPS_ALL = 8192 - сохранять все координаты, включая низкоточные эти права нельзя перезаписать самому пользователю DEVICE_SETTINGS_OFFICIAL = 16384 - Официальный канал, нет ограничений на отправку сообщений. DEVICE_SETTINGS_DISABLED = 32768 - todo запрет запрещать. Телефон ребенка. Устанавливается один раз. GPS_STATUS_OK = 0 - GPS_STATUS_TEST = 1 - GPS_STATUS_HIDDEN = 2 - GPS_STATUS_MOBILE = 3 - HTTP_SUCCESS = 200 - успешно HTTP_CREATED = 201 - объект создан HTTP_NO_CONTENT = 204 - нет данных, ответ на запрос пуст HTTP_MOVED_PERMANENTLY = 301 - переадресация на указанный адрес в поле location HTTP_MOVED_TEMPORARILY = 302 - временная переадресация на указанный адрес в поле location HTTP_SEE_OTHER = 303 - HTTP_NEED_SEND_POST_TO_URL = 303 - HTTP_BAD_REQUEST = 400 - неверный запрос HTTP_UNAUTHORIZED = 401 - требуется авторизация HTTP_PAYMENT_REQUIRED = 402 - необходима оплата HTTP_FORBIDDEN = 403 - недоступно HTTP_NOT_FOUND = 404 - объект не найден HTTP_METHOD_NOT_ALLOWED = 405 - метод неподдерживается или не хватет параметров, в error описание проблемы HTTP_NOT_ENOUGH_DATA = 422 - недостаточно данных для выполнения запроса, список недостающих данных передан в поле inputs HTTP_TOO_MANY_REQUESTS = 429 - Превышен лимит запросов HTTP_PERMISSION_DENIED = 550 - нет прав доступа к данному объекту obj=Device&m=register регистрация устройства пользователю, если такого пользователя нет, он сразу создается использует devid(обязательно), login(м.б.=email), password regid если login не передан, создает уникального пользователя если password не передан, создает уникальный name, phone - устройство img - файл аватарки или ссылка на ранее загруженное темповое изображение ?? какие доп параметры прийдут при регистрации через VK,G+ name phone HTTP_USER_AGENT возвращает установленную сессию + HTTP_SUCCESS + device + user или `error` + HTTP_UNAUTHORIZED obj=Device&m=login авторизация устройства пользователю, если такого пользователя нет, он НЕ создается входные параметры(422): regid, devid, login, password возвращает установленную сессию + HTTP_SUCCESS + device + user или `error` + HTTP_UNAUTHORIZED obj=Device&m=ready проставляет статус готовности устройства и его координаты входные параметры: необязательные параметры: my_x, my_y, my_accuracy, provider, time - время в секундах. На случай передачи старых координат, когда не было интернета. Должны передаваться последовательно, нельзя передать данные более старые, чем последние в базе. info - по аналогии с https://mozilla.github.io/ichnaea/api/geolocate.html {"networks":[{"id":156166157,"LAC":26229,"MCC":250,"MNC":20,"psc":146,"radioType":"lte","ss":-78},...], "wifis":[{"mac":"1c:5f:2b:a1:4f:ac","ss":-44},...]}" info может передаваться в виде zip-файла, содержащего один файл с расширением txt battery - уровень заряда батарейки в % charged - заряжается, если передать battery и не передать charged, - заряд окончен или items="time*, my_x*, my_y*, my_accuracy, provider, info; time, my_x, my_y, my_accuracy, provider, info". Разделитель дробной части - точка, time в виде числа timestamp отправляет PUSH: при входе/выходе за забор: m=alarm_fence_in или alarm_fence_out, device_id, device_name, device_img, x, y, time, place_id, place_name при низком заряде батареи m=alarm_low_battery, device_id, device_name, device_img, x, y, time, battery всем у кого стоит подписка на onLine мониторинг: m=gps, device_id, device_name, device_img, x, y, time возвращает: send_gps = 1 - постоянно передавать координаты, 0 больше координаты не передавать Если вызывать несколько одновременно и чаще чам раз в 5 секунд, каждый следующий будет зависать на 5 секунд. obj=Device&m=push_read проставляет статус прочитано PUSH-у входные параметры: id push-a obj=Device&m=lists получение списка устройств, доступных текущему пользователю для получения отдельного списка используте метод list_* входные параметры: places=1 - добавить информацию об отслеживаемых местах возвращает ['status' => HTTP_SUCCESS, 'our'=>массив устройств моего аккаунта, 'master'=>список устройств, за которыми я могу следить(не включая тех, за кем не слежу, но могу следить на основании общего членства в закрытых группах), 'slave'=>список устройств, которые следят за мной ]; по каждому устройству: id - id name - имя устройства как оно записано у меня. Если у меня нет, то как у него, если нет, то его номер телефона, если ничего нет, то user_agent img - маленькая картинка, если есть key - id контакта в телефоне, если есть places=[.., ..] если в запросе указано places=1 in_fence = 1 для тех мест, внутри которых находится устройство для master и our - места отслеживания того устройства, для slave - места отслеживания моего устройства obj=Device&m=list_our получение списка устройств моего аккаунта, входные параметры: places=1 - добавить информацию об отслеживаемых местах возвращает ['status' => HTTP_SUCCESS,'items'=[...]] по каждому устройству: id - id name - имя устройства как оно записано у меня. Если у меня нет, то как у него, если нет, то его номер телефона, если ничего нет, то user_agent img - маленькая картинка, если есть key - id контакта в телефоне, если есть obj=Device&m=list_master получение списка устройств, за которыми я могу следить входные параметры: group=1 - включить всех тех, за кем я не слежу, но могу следить на основании общего членства в закрытых группах places=1 - добавить информацию об отслеживаемых местах возвращает ['status' => HTTP_SUCCESS,'items'=[...]] по каждому устройству: id - id name - имя устройства как оно записано у меня. Если у меня нет, то как у него, если нет, то его номер телефона, если ничего нет, то user_agent img - маленькая картинка, если есть key - id контакта в телефоне, если есть obj=Device&m=list_slave получение списка устройств, которые следят за мной не показываются устройства, которые могут следить, но не следят входные параметры: places=1 - добавить информацию об отслеживаемых местах моего устройства возвращает ['status' => HTTP_SUCCESS,'items'=[.., ..]] по каждому устройству: id - id name - имя устройства как оно записано у меня. Если у меня нет, то как у него, если нет, то его номер телефона, если ничего нет, то user_agent img - маленькая картинка, если есть key - id контакта в телефоне, если есть places=[.., ..] если в запросе указано places=1 obj=Device&m=list_ban получение списка забаненных мной устройств возвращает: ['status' => HTTP_SUCCESS,'items'=[...]] по каждому устройству: id - id name - имя устройства как оно записано у меня. Если у меня нет, то как у него, если нет, то его номер телефона, если ничего нет, то user_agent img - маленькая картинка, если есть key - id контакта в телефоне, если есть obj=Device&m=get_permission запросить право permissions на управление устройством id входные параметры(422): id или phone, permissions - битовая маска набора прав, если не задано, то DEVICE_ACCESS_GPS name - как называть у меня(необязательно) img - аватарка как показывать у меня(необязательно) если устройство в моем аккунте, то право предоставляется автоматически без подтверждения если мы в одной приватной группе, то право получения координат предоставляется автоматически без подтверждения иначе отправляет PUSH: m=get_permission, device_id, device_name, device_img, permissions=битовое_поле_запрашиваемых_прав в ответ на PUSH устройство должно вызвать m=set_permission&id=device['id'] возвращает: HTTP_SUCCESS + message='Отправлен запрос на предоставление права получения координат' obj=Device&m=set_permission предоставить право permissions на управление устройством id входные параметры(422): id или phone, permissions - битовая маска набора прав, если не задано, то DEVICE_ACCESS_GPS отправляет PUSH: m=set_permission, device_id, device_name, device_img, permissions=битовое_поле_установленных_прав возвращает: HTTP_SUCCESS + message='Доступ предоставлен' obj=Device&m=setting_list Получить список прав доступа, уведомлений и атрибутов устройству id к моему телефону входные параметры: for= device_permission | device | device_place, если не задано, то считается device id - для for=device_permission и device_place place - для for=device_place или id_dp для device_place возвращает: HTTP_SUCCESS или HTTP_NOT_FOUND или HTTP_BAD_REQUEST Права, недоступные для изменения данному устройству не возвращаются. obj=Device&m=set настройка прав доступа, уведомлений и атрибутов устройству id к моему телефону входные параметры: id + имя константы(в любом регистре) из device_permission->permissions = 1|0 или id + имя константы(в любом регистре) из device_permission->attribute = 1|0 или id + имя константы(в любом регистре) из device_permission->alarms = 1|0 или (id + place или id_dp) + имя константы(в любом регистре) из device_permission->alarm_place = 1|0 или имя константы(в любом регистре) из device->permissions = 1|0 констант в запросе может быть несколько если у вас есть полный доступ к другому устройству, вы можете изменить на нем: id + имя константы(в любом регистре) из device->settings, device->period_i, device->period_m, user->sex(0-не указан,1-Женский,2-Мужской) отправляет PUSH: m=set_permission, device_id, device_name, device_img, permissions m=set_settings, device_id, device_name, device_img, settings, period_i, period_m возвращает: HTTP_SUCCESS или HTTP_BAD_REQUEST если ни одна из переданных констант не изменила значение obj=Device&m=get_user_info Возвращается информация о пользователе и всех его устройствах входные параметры: login = name или mail или phone пользователя, если не передано, то информацию о текущем пользователе возвращает: HTTP_SUCCESS, user=[информация о пользователе], devices=[массив устройств переданного аккаунта] ] obj=Device&m=get_info для совместимости, будет удален!!! obj=Device&m=get_movies Возвращается информация о перемещениях устройства входные параметры: id = id устройства или моё from=дата, время. Или секунды. Любой формат доступный для strtotime to=data, время. Или секунды. Любой формат доступный для strtotime если время не задано, то за сегодня. Если сегодня нет, то одни последние координаты add_info - добавить информацию о скорости(v=км/час) и расстоянии(l=м) между точками group_by_place[=расстояние в метрах, по умолчанию 75м] - группировать пребывание в одном месте. возвращает: HTTP_SUCCESS, items=информация о перемещениях устройства: [[time - время x - широта y - долгота, accuracy - точность в метрах, provider - провайдер, который дал координаты, to - время до которого находился в этой точке, указывается при группировке координат по group_by_place или по кол-ву точек l - расстояние в метрах между этой точкой и предыдущей (если задано add_info) v - скорость перемещения в эту точку, км/час (если задано add_info) ],[..]] если за выбранные период информации нет, то HTTP_NO_CONTENT если информации более 100 точек, они прореживаются, удаляются повторные точки. В любом случае, возвращается не более 1000 точек. если не задано group_by_place и устройство длительное время находилось в одной точке, то возвращается время начала и время конца двумя точками если у вас нет прав на получение местоположения устройства, то HTTP_PERMISSION_DENIED obj=Device&m=get Запрос информации и координат Устройства, которые не дали права отдаются без координат входные параметры: id = id1,id2,id3 - список устройств, если список устройств не передан, то о себе если id=slave - возвращается информация обо всех устройствах, которые я отслеживаю phone - альтернатива id (телефон должен быть подтвержден) places=1 - добавить информацию об отслеживаемых местах. Если на устройстве включен режим "засыпать внутри круглых зон", то размер всех круглых зон уменьшается до 300метров возвращает: HTTP_SUCCESS если в запросе одно устройство, возвращается: item=[основная информация об устройстве('id', 'name', 'img'|'imgs'), дополнительно передается: user_name - имя пользователя устройства my_name, my_img - как я назвал это устройство и моя аватарка этого устройства status - см. device->status permissions - см. device_permission->permissions если запрос о другом settings - см. device->permissions, если запрос о себе alarms - см. device_permission->alarms battery - уровень заряда батарейки в % 0..100, не передается, если нет информации более 5 часов location=[ time = время последнего получения координат, x = широта, y = долгота accuracy - точность в метрах provider - провайдер, который дал координаты ] places=[.., ..] если в запросе указано places=1 in_fence = 1 для тех мест, внутри которых находится устройство ] если в запросе более одного устройства, возвращается: items=[[первое устройство], [следующее устройство]] ] отправляет PUSH: Всем отслеживаемым устройствам с выключенным мониторингом отправляю PUSH(m=send_gps) для разового получения текущих координат obj=Device&m=add_place для устройства id добавляет или изменяет место отслеживания входные параметры(422): id - устройство place - id места, должно быть предварительно добавлено в obj=place&m=save или id_dp - id из таблицы device_place (только при редактировании) schedule - когда отслеживать, например 08:00-20:00, или 08:00 для alarms&(4|8) Ведущие нули обязательны! day_of_week - битовая маска дней недели 0-вс, 1-пн, .. 6-сб. 0 или 127 - всегда alarms - &1-выход за забор, &2-вход внутрь забора, &4-до schedule, &8-после schedule для получения списка полей для добавления места отслеживания передайте id_dp=0, id, [place] для получения списка полей для редактирования места отслеживания передайте id_dp отправляет PUSH: m=change_place obj=Device&m=del_place удаляет место отслеживания входные параметры: id - устройство place - id места или id_dp - id из таблицы device_place отправляет PUSH: m=change_place obj=Device&m=get_places для устройства id возвращает места отслеживания Обратите внимание: даже если у вас нет прав на отслеживание, у вас могут быть настроены места, но по ним уведомления присылаться не будут входные параметры: id - устройство, если не передано, возвращает все места в которых отслеживают меня возвращает: items=[[id, in_fence - сейчас находится 0-снаружи забора, 1-внутри забора, schedule - когда отслеживать, например 08:00-20:00, или 08:00 для alarms&(4|8) alarms - &1-выход за забор, &2-вход внутрь забора, &4-до schedule, &8-после schedule day_of_week - битовая маска дней недели 0-вс, 1-пн, .. 6-сб place=[ id - id места name, description, fence = координаты забора [[x1,y1],[x2,y2],..], point_x = центр зоны слежения, point_y = центр зоны слежения, radius = радиус зоны слежения, метров, attribute= &1-Public, ] ] obj=Device&m=get_place для устройства id и места place возвращает информацию о месте отслеживания входные параметры: id - устройство place - id места возвращает: item=[id, in_fence - сейчас находится 0-снаружи забора, 1-внутри забора, schedule - когда отслеживать, например 08:00-20:00, или 08:00 для alarms&(4|8) alarms - &1-выход за забор, &2-вход внутрь забора, &4-до schedule, &8-после schedule day_of_week - битовая маска дней недели 0-вс, 1-пн, .. 6-сб place=[ id - id места name, description, fence = координаты забора [[x1,y1],[x2,y2],..], point_x = центр зоны слежения, point_y = центр зоны слежения, radius = радиус зоны слежения, метров, attribute= &1-Public, ] obj=Device&m=time_in_place Возвращает время нахождения устройств в указанном месте для учета рабочего времени входные параметры: id=список id устройств place - id места from - дата начала, если не указанна, то начало текущего месяца to - дата конца, если не указанна, то до конца месяца round - до скольки знаков округлять каждый день: 0 - до целого, 1-до одного знака после запятой max_work_time=8 - если человек находился в какой-то день больше указанного времени, то в этот день учитывается не более этого значения todo work_time=08:00-17:00 - учитывать только за это время break_duration=1 - обязательный перерыв в часах. Вычитать из ежедневного рабочего времени и добавлять во время перерыва, даже если в это время человек находился на работе возвращает: HTTP_SUCCESS + items[[device=[id,name],t=[8,8,8,2],break=[0.15,0,1,1.2],s=120], [device=[id,name],error='Нет доступа к устройству'], ..] + from + to: t=количество часов нахождения в соответствующий день break=общее время перерывов(время отсутствия на работе) s=общее кол-во часов без учета округления obj=Device&m=get_comming Найти людей(устройства) рядом входные параметры: distance=NN.N км если не переданно, то в пределах 300 метров возвращает: items=[['id', 'name', 'img', 'key' - id контакта в телефоне, если есть 'time'=>время последнего получения координат, 'distance'=расстояние в км ], [...] ] obj=Device&m=alarm разослать уведомления о событии с устройством входные параметры: reason=alarm_sos - на устройстве нажали кнопку SOS alarm_low_battery низкий заряд и невозможность дальнейшего слежения любые другие отправляются в PUSH без изменений my_x,my_y - текущие координаты id=кому через ',', если не передано, то всем кто следит и всем в приватных группах возвращает: HTTP_SUCCESS отправляет PUSH: m=alarm_sos, device_id, device_name, device_img, x, y m=alarm_low_battery, device_id, device_name, device_img, x, y obj=Device&m=preload Предзагрузка файлов Принимает массив с base64 кодированными файлами и их оригинальным именем files=[['name','body'], ['name','body']] где name - оригинальное имя файла body - base64 кодированное тело файла Также файл может быть передан через стандартную передачу файла Сохраняет файл во временную папку и возвращает о нем информацию в виде 'temp' - относительный путь с начальным / к файлу включая его имя 'name' - исходное имя файла 'icon' - иконка файла с относительным путем в зависимости от его типа 'filesize' - размер файла obj=Device&m=unregister устройство выключено. Снимает признак STATUS_READY у устройства. obj=Device&m=save установка параметров текущего или указанного устройства входные параметры(422): для текущего устройства id=текущему device_id или не передается name, phone, status, img, sex(0-не указан, 1-Женский, 2-Мужской) permissions= битовое поле если передан корректный новый номер телефона на него сразу поступит звонок от случайного номера для подтверждения номера телефона, необходимо получить звонок и в течение 5 минут вызвать m=confirm_phone или save с дополнительным параметром code=последние 6 цифр звонившего номера телефона short=1 - если передано, то возвращается id и статус, иначе item=[get_info] для другого устройства: id - установка параметров устройства id. Он должен быть в списке устройств, которыми я управляю name - имя, как его отображать у меня, не влияет на имя на его устройстве img - аватарка у меня, не влияет на аватарку на его устройстве place - id места schedule - когда отслеживать, например 8:00-20:00 чтобы не тратить батарейку по ночам attribute - см. device_permission->attribute alarms=битовая маска список уведомлений: &4-батарейка разряжена, &8-баланс меньше 10 рублей ?todo max_distance_for_get_permission - при каком максимальном удалении устройства в км можно запрашивать права на доступ, по умолчанию 10км ?постоянная передача координат в течение NN минут [15, 30, час, 2, ... 24] возвращает: HTTP_SUCCESS - если установка параметров другому пользователю или HTTP_SUCCESS + message="Изменения сохранены!" + id, если в запросе short или HTTP_SUCCESS + id + message="Изменения сохранены!" + item=[get_info] или HTTP_NOT_ENOUGH_DATA + inputs=[name=code]- если необходимо ввести код подтверждения телефона obj=Device&m=confirm_phone Подтверждение телефона пользователя входные параметры(422): code = код полученный по СМС или последние 6 цифр номера телефона входящего звонка возвращает: HTTP_SUCCESS или HTTP_NOT_FOUND Если подтверждение успешно, со всех ранее подтвержденных номеров снимается подтверждение и номера удаляются obj=Device&m=sound_on Включить звук у устройства пользователя входные параметры: int id = устройства отправляет PUSH: m=sound_on obj=Device&m=test_ping тестовый пинг устройства пользователя int id = один или несколько id устройств через ',' если не передан, пинг текущего устройства array data = [одноуровневый массив, device_id, device_name] array notification =[title, body, icon, click_action] obj=Device&m=del Удалить подписанный на оповещения браузер входные параметры: id - id удаляемого браузера возвращает: HTTP_SUCCESS или HTTP_NO_CONTENT obj=Device&m=subscribe Подписка браузера на Push входные параметры: regid = токен устройства oldid = если изменился токен, старый для замещения До вызова метода пользователь должен быть авторизован на сайте obj=Device&m=unsubscribe Отписка браузера от Push входные параметры: regid = токен устройства До вызова метода пользователь должен быть авторизован на сайте obj=Device&m=subscribe_gps Подписка на Push об изменении координат конкретного устройства входные параметры: id = одно или несколько устройств, координаты которых вы хотите получать в виде Push сообщений в ближайшие duration минут. Вы должны иметь право на получение координат от этих устройств duration = в течение скольки минут оповещать. 0-отписаться. Если не передан, то 10 минут. Максимум 60 минут. todo проверить подписку браузером При изменении координат в течение 10 минут будет отправлен PUSH: m=gps, data=[device_id, device_name, device_img, x, y] obj=Device&m=get_link_counts Счетчики Возвращает: group_count - Количество групп child_count - Количество отслеживаемых устройств