====== Опис роботи модуля RM ====== ==== Розробка Jooby ==== * [[https://github.com/jooby-dev/jooby-docs|Документація повідомлень]] * [[https://github.com/jooby-dev/jooby-codec|Енкодери/декодери повідомлень]] * [[https://jooby-dev.github.io/jooby-gui/|Графічний інтерфейс енкодерів/декодерів (Демо)]] * [[https://github.com/jooby-dev|API для взаємодії з пристроями Jooby. Інша документація]] [[https://github.com/jooby-dev/jooby-docs/blob/main/docs/analog/commands/readme.md|Приклади команд та параметрів]] ===== Початок роботи ===== Для коректного встановлення модуля в NS необхідно знати заводські параметри модуля (вони доступні в специфікації): * Метод активації в мережі LoraWAN — **ABP** [[https://wiki.jooby.eu/uk/lorawan_spec_device_activation#:~:text=Edit-,ABP%20%2D%20Activation%20By%20Personalization,-%E2%80%9CActivation%20by%20Personalization|(Активація через персоналізацію)]] або **OTAA** [[https://wiki.jooby.eu/uk/lorawan_spec_device_activation#:~:text=Edit-,OTAA%20%2D%20Over%2DThe%2DAir%20Activation%20join%20procedure,-The%20join%20procedure|(Активація через ефір)]] * Ключі **APPSKEY[16]**, **NETSKEY[16]** — **ABP** або **APPKEY[16]** — **OTAA** ===== Час та дата ===== Час радіомодуля та сервера має бути синхронізований. Необхідно коригувати час модуля, коли він надходить від сервера. Допустиме відхилення — не більше 30 секунд. [[https://github.com/jooby-dev/jooby-docs/blob/main/docs/analog/basics.md#device-time-management|Керування часом пристрою]] Час передається як 4-байтний лічильник. Це час у секундах, починаючи з 2000 року. Час модуля має бути синхронізований із часом сервера. Час можна встановити за допомогою команд: **SET_TIME** та **CORRECT_TIME**. Команда **SET_TIME** призначена для початкового встановлення часу та для коригувань понад +/-128 секунд. Коригування часу назад може призвести до втрати погодинних даних. Надалі сервер повинен коригувати час модуля, якщо він відхиляється від часу сервера. Рекомендоване допустиме відхилення часу — не більше 30 секунд; якщо воно перевищене, час коригується за допомогою команди **CORRECT_TIME**. ===== Батарея ===== Раз на добу модуль вимірює параметри батареї: напругу батареї без навантаження та напругу батареї під навантаженням резистора (150 Ом для модулів на WLE). Ці дані та розраховане значення внутрішнього опору також передаються раз на добу. На основі результатів вимірювань можливо запустити процес депасивації батареї. У цьому випадку реєструється подія **DEPASS_DONE**. ===== Датчик магнітного поля ===== У модулі встановлено датчик магнітного поля. Цей датчик використовується для надсилання поточного значення лічильника імпульсів на сервер. У разі короткочасного магнітного впливу (більше 2 сек і менше 20 сек) на сервер будуть надіслані дані поточного лічильника імпульсів **GET_CURRENT**. {{:en:rdc:devices:7.jpg?direct&300|}} ===== Активація/Деактивація ===== * [[uk:rdc:devices:rm_4pi_installation|Встановлення. Активація]] Модуль активується після підключення розгалужувача **Jooby Splitter 1x4PU/1x2PU** до порту модуля. Лічильник імпульсів у модулі опитується безперервно. Активація означає, що модуль починає передавати фрейми даних через радіоканал. При виникненні подій **INSERT** та **ACTIVATE** модуль надішле фрейми **NEW_EVENT**, що містять події **INSERT** та **ACTIVATE**, а також відповідні мітки часу подій. Фрейм **NEW_EVENT** також міститиме повідомлення **CURRENT** із поточними даними лічильника імпульсів. Якщо **Jooby Splitter 1x4PU/1x2PU** від’єднано від модуля, модуль буде деактивовано через 30 секунд. Фрейм **NEW_EVENT** буде надіслано на мережевий сервер (NS) із подіями **REMOVE** та **DEACTIVATE** разом із даними **CURRENT**. Час події передається як частина даних події. ===== Дані про споживання ===== Після активації модуль регулярно надсилає дані про споживання. За замовчуванням модуль передає погодинні дані про споживання з інтервалом близько 4 годин + псевдовипадкова складова від 0 до 17 хвилин. Частоту надсилання даних можна змінити, але період не може бути меншим за 10 хвилин і більшим за 36 годин. Ви можете встановити тип даних, що передаються. Можна передавати поточні, погодинні, добові дані. Також можливо передавати погодинні та добові дані одночасно (в одному фреймі). Для вибору типу даних використовуйте параметр 5 (Type of data to be output). Погодинні дані зберігаються в архіві, максимальна глибина архіву — 6 місяців. Добові дані про споживання також зберігаються в архіві, максимальна глибина — 2 роки. Глибина архівів не змінюється програмно. ===== Абсолютні дані ===== Пристрій підтримує режим [[https://github.com/jooby-dev/jooby-docs/blob/main/docs/analog/parameter-types.md#absolute-data|Absolute data]] (Абсолютних даних). У режимі Absolute data ви можете вказати реальні значення показників лічильника. Перш за все, необхідно налаштувати та увімкнути Absolute Data на модулі за допомогою команд: Приклад: * **Налаштування абсолютних даних** — ''030a17000028c28200000b072f''. Ця команда налаштовує абсолютні дані з наступними полями: "id": 23, "value": 2823, "meterValue": 10434, "pulseCoefficient": 10 ''id'' — ID параметра ''value'' — Значення лічильника на модулі. Ви можете отримати його командою 070052, або модуль надішле його після подій активації/деактивації. ''meterValue'' — Реальне значення показників на модулі, помножене на pulseCoefficient. У цьому прикладі лічильник має показники 104,34 кубічних метрів. ''pulseCoefficient'' — Коефіцієнт імпульсу лічильника. Якщо коефіцієнт імпульсу лічильника становить 0,01, то це значення має бути 10, якщо 0,1 — значення має бути 100. * **Після налаштування необхідно увімкнути Absolute Data командою** — ''030218014d'' У відповідь ви отримаєте ''0302170142'' — що означає «Absolute Data» увімкнено. Наприклад, модуль отримав 3 імпульси. За допомогою команди ''1f0f0045'' можна отримати поточні Absolute Data. У відповідь прийде ''1803018a161f0f040182c551d0''. Поточне значення лічильника модуля [[https://github.com/jooby-dev/jooby-docs/blob/main/docs/analog/commands/GetCurrentMC.md#response|"CurrentMC"]] "value": 2826, "index": 1 та абсолютні дані [[https://github.com/jooby-dev/jooby-docs/blob/main/docs/analog/commands/GetExAbsCurrentMC.md|"ExAbsCurrentMC"]] "pulseCoefficient": 10, "value": 10437, "index": 1 Тут ми бачимо показники лічильника 10437. Це означає 104,37 кубічних метрів. Модуль надсилає Absolute Data згідно з [[https://github.com/jooby-dev/jooby-docs/blob/main/docs/analog/parameter-types.md#reporting-data-interval|Reporting Data Interval]] (Інтервалом звітування даних). ===== Події ===== [[https://github.com/jooby-dev/jooby-docs/blob/main/docs/analog/basics.md#device-events|Події пристрою]] Усі події записуються в архів. Ємність архіву — не менше 256 подій і не більше 512 подій. У журналі подій фіксується час події, ID події та порядковий номер **LAST_EVENT**. Номер події збільшується з кожним записом. Номер події передається на сервер за допомогою команди **LAST_EVENTS**, яка додається до кожного фрейму UPLINK, надісланого без запиту. Пріоритету для повідомлень в архіві немає. Події записуються циклічно. Архіви можна запитувати від найновіших до найстаріших або за певний час. ===== Команди ===== Існує 2 типи напрямку команд: * ''downlink'' — запит (надсилається від сервера до пристрою) * ''uplink'' — відповідь або подія (надсилається від пристрою до сервера) [[https://github.com/jooby-dev/jooby-docs/tree/main/docs/analog/commands#downlink-commands|Команди Downlink]] \\ [[https://github.com/jooby-dev/jooby-docs/tree/main/docs/analog/commands#uplink-commands|Команди Uplink]] ===== Типи параметрів ===== [[https://github.com/jooby-dev/jooby-docs/blob/main/docs/analog/parameter-types.md#parameter-types|Опис типів параметрів]]