Python-библиотека для работы с API считывателей SAUK
Библиотека SAUK_API для управления RFID-считывателем SAUK через его WEB-API по Ethernet или Wi-Fi. Даёт удобные методы для всех функций прибора: конфигурация RFID, инвентаризация меток, сеть, периферия, параметры идентификации, таблица доступа, дата и время.
Содержание
1Обзор, установка и инициализация
Библиотека — тонкая обёртка над HTTP Web-API прибора: каждый метод соответствует запросу API (см. документ «API для HTTP через Wi-Fi и Ethernet»). Все методы возвращают результат в формате JSON (Python-объект) или None в случае ошибки.
1.1Установка
Библиотеке нужна зависимость requests:
pip install requests
1.2Инициализация
Создайте объект, указав адрес прибора в сети (base_url):
from sauk_api import SAUK_API sauk = SAUK_API(base_url="http://192.168.10.1")
Далее методы объекта sauk вызывают соответствующие функции прибора. Изменяющие настройки запросы могут требовать учётных данных (указаны в паспорте прибора).
1.3Основные возможности
- Управление RFID-конфигурацией
- Инвентаризация меток
- Системные команды
- Настройка сети (Wi-Fi / Ethernet)
- Конфигурация периферии
- Параметры идентификации меток
- Работа с таблицей доступа
- Управление датой и временем
2Конфигурация RFID
| Метод | Назначение |
|---|---|
get_rfid_config() | Получить текущую конфигурацию RFID |
enable_infinite_inventory(bool) | Включить/выключить непрерывное сканирование |
set_antenna_power(ant, power) | Мощность указанной антенны |
set_frequency_settings(start, space, quantity) | Частотный план (первый канал, шаг, число каналов) |
set_min_hold_ms(ms) | Минимальное время активации от HOLD-триггера |
# Получить текущую конфигурацию RFID
config = sauk.get_rfid_config()
print("Current RFID Config:", config)
# Включить непрерывное сканирование
sauk.enable_infinite_inventory(True)
# Мощность для антенны 1
sauk.set_antenna_power(1, 23)
# Частотный план
sauk.set_frequency_settings(start=866300, space=60, quantity=3)
# Время удержания триггера
sauk.set_min_hold_ms(5000) Рабочие частоты (Россия)
Для России разрешён фиксированный набор каналов 866,3 / 866,9 / 867,5 МГц. Прибор автоматически приводит set_frequency_settings(...) к этой сетке: недопустимое значение start округляется до ближайшего разрешённого канала, а число каналов ограничивается краем диапазона.
3Инвентаризация меток
| Метод | Назначение |
|---|---|
inventory_once() | Однократное сканирование, возвращает список меток |
get_tag_list() | Список меток из таблицы идентификации |
clear_tag_list() | Очистить таблицу идентификации |
# Однократное сканирование
tags = sauk.inventory_once()
print("Scanned Tags:", tags)
# Список меток из таблицы идентификации
tag_list = sauk.get_tag_list()
print("Tag List:", tag_list)
# Очистить таблицу идентификации
sauk.clear_tag_list() 4Системные команды
| Метод | Назначение |
|---|---|
reboot_device() | Перезагрузить прибор |
get_version() | Версия прошивки и информация о приборе |
beep_device() | Звуковой сигнал (идентификация прибора) |
get_message_log() | Системный журнал событий |
logout() | Завершить сеанс аутентификации |
# Перезагрузить прибор
sauk.reboot_device()
# Версия прошивки
version = sauk.get_version()
print("Firmware Version:", version)
# Звуковой сигнал
sauk.beep_device()
# Системный журнал
log = sauk.get_message_log()
print("System Log:", log)
# Завершить сеанс
sauk.logout() 5Сеть (Wi-Fi / Ethernet)
| Метод | Назначение |
|---|---|
scan_wifi_networks() | Поиск доступных Wi-Fi сетей |
connect_wifi(ssid, password) | Подключиться к Wi-Fi сети |
get_network_info() | Текущая конфигурация сети |
enable_wifi_access_point(bool) | Управление точкой доступа |
# Поиск доступных Wi-Fi сетей
networks = sauk.scan_wifi_networks()
print("Available Networks:", networks)
# Подключиться к Wi-Fi сети
sauk.connect_wifi("my_ssid", "my_password")
# Информация о сети
net_info = sauk.get_network_info()
print("Network Info:", net_info)
# Активировать точку доступа
sauk.enable_wifi_access_point(True) 6Конфигурация периферии
| Метод | Назначение |
|---|---|
get_periphery_config() | Текущая конфигурация периферии |
set_relay_config(n, enable, timer) | Настройка реле (номер, включение, время удержания) |
set_wiegand_config(n, enable, type_, shift_bytes, source) | Настройка интерфейса Wiegand |
set_temperature_calibration(delta) | Калибровка температурного датчика |
# Текущая конфигурация периферии
periphery_config = sauk.get_periphery_config()
print("Periphery Config:", periphery_config)
# Настроить реле
sauk.set_relay_config(1, enable=True, timer=5000)
# Настроить интерфейс Wiegand
sauk.set_wiegand_config(1, enable=True, type_=26, shift_bytes=1, source=1)
# Калибровка температурного датчика
sauk.set_temperature_calibration(-2) 7Параметры идентификации меток
| Метод | Назначение |
|---|---|
get_tag_identity_config() | Текущие параметры идентификации |
set_valid_time(ms) | Время «сна» метки перед повторным чтением |
set_hold_time(ms) | Время удержания метки в таблице |
set_rssi_filter(value, enable) | Фильтр по уровню сигнала RSSI |
set_epc_filter(n, epc, enable) | EPC-фильтр (номер, значение, включение) |
set_access_password(password) | Пароль доступа к меткам |
set_notification_uart(...) | Настройка уведомлений по UART (формат, поля, keep-alive) |
set_notification_ip(ip, port, timeout, enable) | Настройка уведомлений по сети (сокет/HTTP) |
# Текущие параметры идентификации
tag_identity = sauk.get_tag_identity_config()
print("Tag Identity Config:", tag_identity)
# Время сна метки
sauk.set_valid_time(10000)
# Время удержания в таблице
sauk.set_hold_time(30000)
# Фильтр по RSSI
sauk.set_rssi_filter(-70, enable=True)
# Фильтр по EPC
sauk.set_epc_filter(1, "E2003411B8020114A418C2AE", enable=True)
# Пароль доступа
sauk.set_access_password(0x12345678)
# Уведомления по UART
sauk.set_notification_uart(
enable=True,
speed=9600,
json_format=1,
add_prefix="PRE",
add_suffix="SUF",
add_crlf=True,
add_epcl=True,
add_epc=True,
add_tidl=True,
add_tid=True,
add_ant=True,
add_rssi=True,
notify_alive=True
)
# Уведомления по сети (IP)
sauk.set_notification_ip("192.168.10.100", 5000, timeout=2000, enable=True) 8Таблица доступа
| Метод | Назначение |
|---|---|
get_access_table() | Получить полную таблицу доступа |
modify_access_table(...) | Добавить/изменить запись таблицы доступа |
get_access_table_part(start, end) | Получить часть таблицы (диапазон записей) |
# Полная таблица доступа
access_table = sauk.get_access_table()
print("Access Table:", access_table)
# Добавить запись
sauk.modify_access_table(
epc="E2003411B8020114A418C2AE",
name="Device1",
group=1,
access=1,
keya="FFFFFFFFFFFF",
keyb="FFFFFFFFFFFF"
)
# Часть таблицы
part_table = sauk.get_access_table_part(start=0, end=10)
print("Access Table Part:", part_table) 9Дата и время
| Метод | Назначение |
|---|---|
get_datetime() | Получить текущее время прибора |
set_datetime(day, month, year, hour, minute, second) | Установить системное время |
# Текущее время
current_time = sauk.get_datetime()
print("Current Time:", current_time)
# Установить время (день, месяц, год, час, минута, секунда)
sauk.set_datetime(1, 1, 2024, 12, 0, 0) 10Примечания
Возвращаемые значения
Все методы возвращают результат в формате JSON (Python-объект) либо None в случае ошибки. Структура ответов соответствует HTTP Web-API прибора — см. документ «API для HTTP через Wi-Fi и Ethernet».
Гибкая настройка
Параметры можно задавать как отдельными методами, так и общими методами set_*_config() с передачей нужных значений. При работе с уведомлениями гибко настраиваются формат данных и дополнительные поля. Для таблицы доступа предусмотрены методы полного и частичного получения данных.