# PI Web API

Архив AVEVA PI и FactoryTalk Historian прямо в чате

Историан AVEVA PI и FactoryTalk Historian SE через PI Web API, архив и текущие значения, чтение

## Как агент работает с PI Web API

Шлюз ставится службой на компьютер в сети объекта и обращается к PI Web API по адресу вида https://pi.local/piwebapi. Он читает точки одного PI Data Archive, если вы назовёте сервер, или всех архивов за этим PI Web API, с фильтром по маскам имён. FactoryTalk Historian SE устроен как PI Data Archive и читается так же. Подключение назначается шлюзу на вкладке «Шлюзы».

Шлюз читает архив каждой точки вперёд от места, где остановился, через streamsets/recorded: по 50 точек за запрос и до 1000 значений на точку за страницу, с запасом в минуту, чтобы не потерять событие, которое PI Buffer Subsystem дописал позже. В чтение входит снимок, самое новое событие точки, поэтому значение не пропадает до сжатия архива. После простоя пропущенное дочитывается, но не дальше недели назад.

Все запросы шлюза идут методом GET: пакетный контроллер, каналы и подписки на обновления не используются, потому что требуют POST или WebSocket. Шлюз не ходит через прокси и не следует переадресациям, чтобы не унести учётку на другой хост. Элементы и атрибуты PI AF шлюз не читает: агент находит точку по её имени и описанию.

Вход двумя способами: Basic с логином и паролем, если он включён в AuthenticationMethods, или Windows, то есть Kerberos от служебной учётки шлюза в домене с SPN HTTP/хост. Откат на NTLM шлюз отклоняет. Точки типа Blob не объявляются, значение с флагом Questionable приходит как uncertain, а цифровое состояние читается своим именем.

## Сценарии интеграции

### Текущие значения точек
Агент найдёт точки PI по имени или описанию и покажет снимок значений с единицами, временем и качеством.

### Тренд за период
Агент прочитает архив точки за смену, сутки или неделю и назовёт минимум, максимум, среднее и выходы за диапазон.

### Пропуски в архиве
Агент найдёт точки, которые отдают системные состояния вроде No Data, и покажет, с какого момента данных нет.

### Сравнение линий
Агент сравнит одинаковые точки разных линий или установок за период и покажет, где значения расходятся.

### Сообщение о пороге
В задаче «По событию» агент сообщит, когда значение точки выйдет за порог и продержится заданное время, и когда вернётся в норму.

### Связь с объектом
Агент скажет, когда шлюз пропал со связи и когда вернулся. Пропущенное за перерыв шлюз дочитает из архива PI.

## Как подключить

**Перед подключением**

- PI Web API перед PI Data Archive или FactoryTalk Historian SE
- Доступ с компьютера шлюза к адресу PI Web API
- Учётка с правом чтения точек и их данных
- Для входа Windows: шлюз службой на Windows в домене и SPN HTTP/хост

### Откройте доступ к PI Web API
Компьютеру шлюза нужен доступ к адресу PI Web API вида https://хост/piwebapi. Прокси шлюз не использует, укажите адрес, по которому сервер отвечает напрямую.

### Выберите способ входа
Для Basic включите его в AuthenticationMethods PI Web API. Для Windows шлюз работает службой в домене, а для адреса сервера зарегистрирован SPN HTTP/хост.

### Дайте учётке право чтения
Учётке шлюза нужен доступ на чтение точек PI Data Archive и их данных. Права записи не нужны.

### Доверьте сертификат сервера
Самоподписанный сертификат PI Web API положите на компьютер шлюза в pki/pi_web_api/trusted/ папки данных, файлом .pem или .crt.

## Частые вопросы

### Как подключить PI Web API?
Поставьте шлюз на компьютер в сети объекта и заведите его на вкладке «Шлюзы». В подключении укажите адрес вида https://pi.local/piwebapi и логин с паролем учётки с правом чтения. Если нужен только один PI Data Archive, назовите его; маски имён сузят набор точек.

### Что агент видит в PI Web API?
Точки PI Data Archive с путём \\СЕРВЕР\ТЕГ, единицами и диапазоном, их текущий снимок и архив значений. Плохое значение приходит с кодом системного состояния, например No Data, а значение цифровой точки читается именем состояния.

### Меняет ли агент данные в PI?
Нет. Шлюз отправляет в PI Web API только запросы GET, а пакетный контроллер и прочие пути, через которые доступна запись, не использует. Учётке подключения права записи не нужны.

### Вход Windows не работает. Что проверить?
Шлюз должен работать службой на Windows в домене, а для адреса PI Web API должен быть зарегистрирован SPN HTTP/хост. Указывайте адрес по имени хоста, которое знает контроллер домена: иначе Kerberos не выдаст билет, а откат на NTLM шлюз отклоняет.
