Wiki SDR SA PRO
Зони тривоги й дії за тривогою
PRO Зони тривоги — рядки нагляду й охорони таблиці частот: із порогом рівня й утриманням, видимі на спектрі, із краями, які можна тягнути мишею. Дії за тривогою — те, що програма робить, коли тривога сталась: каже голосом, грає сирену, знімає вікно, запускає вашу програму, надсилає тривогу на вашу адресу (webhook). Усе це живе на вкладці Сканер, у списку Таблиця частот: N; усі дії типово вимкнені. Самі правила тривог, журнал подій і запис IQ описано на сторінці Таблиця частот і тривоги; webhook, MQTT і локальний REST — на сторінці Webhook, MQTT і локальний REST.
Поріг і утримання в рядку 0.9.57
У розгорнутому рядку таблиці з видом нагляд чи охорона є два поля. У рядка з видом підпис їх не видно: підпис тривог не здіймає.
- Поріг, дБ над полицею
- Тривога лише на сигнал, рівень якого не нижчий за стільки децибелів над місцевою полицею шуму. Від 0 до 200; нуль або порожнє поле — без умови. Це не dBm: такий рівень несе список сигналів. Поріг, якщо він є, стоїть і в згорнутому рядку таблиці, наприклад
≥12 дБ. - Утримання, с
- Тривога лише тоді, коли сигнал видно не менше стількох секунд. Від 0 до 3600; нуль або порожнє поле — одразу.
Текст застосовується клавішею Enter або виходом із поля; Esc повертає, як було. Значення поза межами не приймається: поле повертається до чинного, а в групі над списком червоним сказано Не прийнято — … з причиною.
Як це судиться
- Щоогляду. Сигнал, що умов ще не виконав, тривоги не дає й судиться знову в наступному огляді — аж доки про нього не було тривоги.
- Рівень — той самий, що в клітинці Рівень рядка: медіана по останніх влученнях; у рядка-каналу — потужність каналу над полицею. Рядок без рівня порога не долає.
- Утримання — час від першого виявлення рядка до його останнього влучання. Це не безперервна присутність: сигнал, що зник і повернувся тим самим рядком, лічиться від першої появи. На мить тривоги рядок мусить бути в стані «сигнал є» й у нинішньому огляді.
- Що в зоні. Сигнал лежить у зоні, коли центр його рядка лежить у її межах — із допуском у пів біна або 1 ppm частоти, що більше. Широкий сигнал із центром поза зоною до неї не належить, хоч би й заходив у неї краєм.
- Кілька рядків. Рядок без умов спрацьовує самим накриттям. Де частоту накривають кілька рядків одного виду, досить одного, чиї умови виконано.
- Охорона й далі не каже про сигнал, клас якому дає рядок-підпис: див. Тривоги.
- Тривога на типи умов не має: порогу й утриманню підлягають лише нагляд і охорона.
- Тривога про рядок одна. Сигнал, що після тривоги впав нижче порога, її не знімає; знову піднявшись, другої не дає.
Рядок Тривоги у згортці «Наскільки списку вірити» вкладки «Сканер» каже, скільки рядків мають поріг чи утримання: ; з порогом рівня над полицею чи утриманням — N.
Зони на спектрі 0.9.57
Кожен рядок нагляду й охорони — смуга на всю висоту поля спектра: жовта — нагляд, червона — охорона. Зони їдуть разом зі спектром, коли вид тягнуть чи масштабують. На водоспаді їх немає.
- Табличка вгорі зліва в зоні каже: вид · назва · поріг · утримання, наприклад
нагляд · Wi-Fi · ≥12 дБ · 5 с. Поріг і утримання стоять лише тоді, коли вони не нульові. Ширину таблички обмежує ширина зони (але вона не вужча за 24 пікселі): у вузької зони текст обрізано. - Вимикач Зони на спектрі — у групі Таблиця частот. Типово ввімкнений, зберігається між запусками. Це лише вигляд: сховані зони судяться так само.
- Зон на спектрі — не більше 200, у порядку таблиці; скільки не вмістилось, каже напис ще зон: N у кутку. На суд тривог це не впливає.
Зона й миша
- Край зони
- На кожному краї — смужка завширшки 7 пікселів, що бере мишу. Тягніть її, щоб змінити одну межу; край не заходить за протилежний.
- Табличка
- За неї зону тягнуть цілком: обидві межі разом, ширина та сама.
- Подвійний клік по табличці
- На вкладці Сканер перемикає на Таблиця частот: N, розгортає рядок цієї зони й прокручує список до нього. Саму вкладку він не відкриває: якщо в бічній панелі стоїть інша, перейдіть на неї (Ctrl+5).
- Таблиця приймає нові межі, щойно кнопку відпущено; доти рухається лише зона на екрані.
- Межі, яких таблиця не приймає (наприклад, ділянка стала вужчою за крок каналів), не діють: зона повертається на місце, а в групі Таблиця частот сказано Не прийнято — ….
- Зміна меж починає лічбу зайнятості цієї ділянки наново.
- Точність тягання — піксель екрана. Точні межі задають поля Ділянка, МГц.
- Решта поля прозора для миші: клік поза ручками лишається настройкою, подвійний клік — скиданням виду, правий клік — меню спектра.
Зона нагляду з меню спектра
Правий клік по спектру → Зона нагляду з виділення. У кінець таблиці стає новий рядок із назвою новий і видом нагляд, без порога й утримання; на вкладці «Сканер» його розгорнуто, а поверх спектра сказано Зона нагляду … МГц — у таблиці частот «Сканера». Коли у вікні кілька станцій, рядок іде в таблицю тієї станції, по спектру якої клацнули: клік робить її активною 0.9.58.
Попри назву, ділянку пункт бере не з пунктирного виділення на спектрі, а з оглядової лінійки — ту саму, що й кнопка Додати. Щоб зона лягла на вужчу смугу, потягніть її краї або виправте поля Ділянка, МГц.
Обмін таблицею: JSON 0.9.57
Файлом JSON діляться колекціями зон і підписів або тримають кілька таблиць на вибір. Кнопки — у групі Таблиця частот, поруч із кнопками CSV.
- З файлу JSON…
- Додає рядки до наявних. Ті самі назва й межі вдруге не беруться: рядок, що вже є, лишається як був, навіть якщо у файлі в нього інші поріг чи вид. Файл, у якому є хоч одна помилка, не дає жодного рядка: «…»: …. Жодного рядка не додано. Якщо всі нові рядки разом із наявними не вміщаються у 2000, не додається жоден.
- У файл JSON…
- Записує всю таблицю. Активна, коли таблиця не порожня.
- Формат — той самий, що у власного файлу таблиці
table.json:{"schema": 2, "rows": […]}. Поля рядка:name,kind,f0,f1,w0,w1,step,role,priority,comment,min_db,hold_s. Частоти, ширини й крок — у герцах. - Файл схеми 1 (записаний до 0.9.57) читається: поля
min_dbіhold_sу ньому нульові. Файл новішої схеми не читається. - Невідоме поле — помилка, а не тихе відкидання. Число в лапках — не число.
- Записаний файл — UTF-8; читається й файл із позначкою порядку байтів.
- CSV теж несе поріг і утримання — стовпці
min_dbіhold_s; див. Формат CSV.
Дії за тривогою 0.9.57
Дії стоять у групі Таблиця частот, у згортці Дії за тривогою. Вона типово згорнута й між запусками цього не пам’ятає; число в дужках біля заголовка каже, скільки дій увімкнено. Звук Windows, журнал подій і запис IQ — окремі вимикачі над згорткою: див. Звук, журнал подій і запис IQ.
- Дій п’ять: голос, сирена, знімок вікна, запуск програми й webhook 0.9.58 — HTTP POST із тривогою на вашу адресу. Публікацію в брокер MQTT вмикають окремо, у згортці «Наскільки списку вірити» (див. MQTT).
- Кожна дія типово вимкнена; вимикачі, шляхи, адреса webhook і аргументи зберігаються між запусками.
- Дії спрацьовують лише на нову тривогу. Для запису з файлу й демонстраційного сигналу тривог, а отже й дій, немає.
- Жодна дія не зупиняє список: те, що не вдалося, сказано словами (див. нижче).
Голосом
Вимикач Голосом. Фразу каже двигун мовлення Windows (SAPI або WinRT); двигун запускається на першу фразу. Голос говорить один раз на огляд, хоч скільки тривог у ньому: про першу — і скільки ще, наприклад: «Тривога 3: нагляд, Wi-Fi 2.4, 2437 мегагерц, 23 децибел над полицею. І ще 2.» Тривогу пошуку відеоканалів голос так і називає: «відео». Доки голос не договорив, нова фраза не починається: вона пропускається й лічиться.
Задум щодо мови такий: мова інтерфейсу, а без голосу для неї — англійська, і рядок під вимикачами каже — англійською: голосу для мови інтерфейсу у Windows немає.
Збірки 0.9.57 і 0.9.58 роблять це грубіше. Мову голосу вони беруть із мовних налаштувань Windows, а не з меню мови програми, і перевірка наявності голосу завжди відповідає «немає». Тому, коли в налаштуваннях Windows мова не англійська, фраза завжди англійська, навіть коли голос вашої мови встановлено, і рядок під вимикачами каже те саме. Коли в них англійська, голос англійський, а фраза йде мовою інтерфейсу: з українським інтерфейсом англійський голос читає український текст.
Немає голосу зовсім — дія каже чому: голосу немає: у Windows не знайдено жодного двигуна мовлення або голосу немає: двигун мовлення не запустився (…).
Сирена
Вимикач Сирена з файлу WAV, поруч — поле шляху й кнопка Вибрати… (активні, коли вимикач увімкнено). Файл грає один раз на огляд із тривогами. Доки він грає, знову не починається. Лише WAV. Відмови:
- файл сирени не вибрано;
- файл сирени не знайдено: …;
- файл сирени не читається — потрібен WAV: ….
Знімок вікна
Вимикач Знімок вікна. Один PNG усього вікна на огляд із тривогами — той самий знімок, що за клавішею F9. Файл іде в підтеку alarms теки знімків програми: Зображення\SDR SA PRO\alarms. Теку програма створює сама. Ім’я — місцевий час до секунди: sdrsa-РРРРММДД-ГГХХСС.png; два знімки за одну секунду не затирають один одного. Що файлу не записано, сказано словами: знімок: ….
Коли у вікні кілька станцій, «Сканер» кожної знімає вікно на свої тривоги 0.9.58. На знімку — усе вікно з усіма станціями, і йде він у ту саму теку.
Запустити програму
Вимикач Запустити програму, поруч — поле шляху й кнопка Вибрати… (пропонує .exe, .bat, .cmd); нижче — поле Аргументи. Запускається лише те, що ви самі вказали; типово — нічого.
- На кожну тривогу — окремий процес, не більше 8 за огляд; решта лічиться пропущеною: пропущено запусків: N (стеля 8 за огляд).
- Параметри тривоги йдуть лише в аргументах. Змінних середовища з ними програма не додає.
- На кінець процесу програма не чекає й виходу його не читає.
- Шлях не вказано — програму для запуску не вказано; запуск відмовив — запуск не вдався: ….
Типові аргументи — {mhz} {level} {time} {reason} {name}. Підстановки:
| Підстановка | Що в ній | Приклад |
|---|---|---|
{mhz} | Центр рядка, МГц, три знаки | 2437.000 |
{f_lo_mhz}, {f_hi_mhz} | Нижній і верхній край рядка, МГц, три знаки | 2427.000 |
{width_khz} | Ширина рядка, кГц, один знак | 20000.0 |
{level} | Рівень у дБ над місцевою полицею, один знак; порожньо — рівня немає | 23.4 |
{time} | Час виміру, у якому рядок уперше підпав під правило, UTC | 2026-11-01T10:40:00Z |
{reason} | Причина: guard, watch, kind або video | watch |
{name}, {kind} | Клас за таблицею: назва й тип ділянки | Wi-Fi |
{number} | Порядковий номер тривоги від початку списку, з одиниці | 3 |
{channel} | Номер каналу; 0 — рядок не канал | 0 |
- Рядок аргументів ділиться за пробілами; лапки навколо цілого аргументу тримають пробіли разом і знімаються, а лапки всередині слова лишаються текстом і пробілів не тримають; зворотні скісні риски шляхів лишаються. Незакрита лапка — поділ просто за пробілами.
- Підстановка йде після поділу: назва з пробілами лишається одним аргументом, а порожній рівень — порожнім аргументом на своєму місці.
- Невідома підстановка лишається як є, текстом. Перелік підстановок видно під полем, коли вимикач увімкнено.
- Стандарту відео (PAL чи NTSC) серед підстановок немає; його несе поле
videoу тілі webhook.
Проба
Кнопка Проба активна, коли ввімкнено голос, сирену або webhook. Вона без тривоги каже пробну фразу, якщо ввімкнено голос («Проба голосу тривоги. Сканер каже так.», а коли фраза йде англійською — «Alarm voice test. This is how the scanner speaks.»), грає файл сирени, якщо ввімкнено сирену, і шле на адресу webhook подію test, якщо ввімкнено його 0.9.58 (див. Проба й лічильники). Знімка не робить і програми не запускає.
Що з діями вийшло
Під вимикачами всередині згортки стоїть рядок із лічильниками від запуску програми, останнім зробленим і відмовами, наприклад:
Дії за тривогою: голос — 4 (пропущено 1), сирена — 4, знімків — 4, запусків — 6 (пропущено 1, не вдалось 0). Останнє: голос · сирена · знімок … · запущено 2.
Дужки біля запусків стоять, лише коли щось пропущено чи не вдалось; у «Останнє» знімок названо шляхом до файлу, а відмови стоять у кінці рядка. З увімкненим webhook у рядку є ще webhook — N, а остання його відмова — webhook: … у кінці (див. Проба й лічильники).
Коли хоч одна дія ввімкнена, рядок Дії у згортці «Наскільки списку вірити» каже які й додає відмови — його видно й тоді, коли згортка дій закрита.
Де це зберігається
- Поріг, утримання й межі зон — у таблиці частот, файл
table.json. - Вимикач зон, вимикачі дій, шляхи сирени й програми, аргументи, адреса webhook — у файлі
settings.json. - Обидва файли лежать у теці
scannerтеки даних SDR SA PRO; для програми, встановленої з пакета, цеДокументи\SDR SA PRO\scanner. На станції, що не головна, — уscanner\stations\<станція>: зони й дії в кожної станції свої. Див. Що зберігається між запусками і «Сканер» на кількох станціях. - Знімки за тривогою лежать окремо:
Зображення\SDR SA PRO\alarms. - Стан згортки дій не зберігається.
Межі
- Поріг — у дБ над місцевою полицею, не в dBm: таблиця калібрування до рівнів «Сканера» не доходить.
- Поріг на осі рівнів не малюється: зона — смуга на всю висоту поля, і тягнути її можна лише вздовж частот.
- Спершу сигнал мусить стати рядком списку: правило появи (див. Як рядок з’являється і зникає) діє до порога й утримання, тож тривога не приходить раніше за нього.
- Частота рядка й зони — така, якою її показує сам приймач: похибки його опорного генератора «Сканер» не знає.
- Клас у
{name}і в голосі — мітка частоти з таблиці, а не розпізнаний вид сигналу. - Голос і сирена — один раз на огляд, знімок — один на огляд, програма — до 8 запусків на огляд, webhook — до 8 запитів на огляд.
- Для запису з файлу й демонстраційного сигналу тривог і дій немає.