Перейти до змісту

HIVE*.XML: налаштування вулика

Конфігурація вулика зберігається у /setting/<hive>.xml. Базове ім'я <hive> задається атрибутом hive1, hive2 тощо в mset.xml; розширення .xml додається автоматично.

Апаратно залежні значення

Не копіюйте секцію scales з іншого пристрою. Контакти плати й калібрувальні значення залежать від апаратної версії та конкретного комплекту датчиків ваги. Помилкові значення можуть спотворити вимірювання або зробити їх недоступними.

Дивіться правила безпечного редагування.

Автоматичне переписування

Після читання файла пристрій може зберегти його заново:

  • відсутній або пошкоджений файл створюється з доступного поточного стану;
  • відсутні hive, thermometer або schedule вмикають нормалізацію;
  • відсутній атрибут у наявній секції scales або thermometer замінюється резервним значенням і вмикає нормалізацію;
  • scales, booster і range_alarmer як цілі секції необов'язкові;
  • під час нормалізації записуються також секції booster, range_alarmer, thermometer і schedule, навіть якщо частини з них не було у вихідному файлі.

hive

Поле Призначення Обов'язковість Допустимі значення / межі Початкове значення Якщо не задано Рівень
hive_name Внутрішня назва вулика Необов'язкове Рядок; для сумісності рекомендовано до 8 ASCII-символів Ім'я з mset.xml, наприклад hive1 hive_<індекс>; файл позначається для переписування ADVANCED
bus_number Номер вулика у внутрішній шині Необов'язкове Ціле число; межі не перевіряються Індекс екземпляра, для першого 0 Індекс екземпляра; файл позначається для переписування SERVICE
main_device Ознака головного пристрою з локальними апаратними датчиками Необов'язкове true, false true у новоствореному файлі Екземпляр не стає головним; сам пропуск не вмикає переписування SERVICE

Підтримка підлеглих пристроїв є застарілою. Значення main_device="false" приймається під час завантаження, але після збереження атрибут стає main_device="true". Не використовуйте false як стабільну конфігурацію.

scales

Якщо секції немає повністю, об'єкт ваг не створюється і вимірювання ваги вимкнене. Якщо секція є, кожне пропущене або некоректне поле замінюється резервним значенням, після чого весь файл може бути переписаний.

Поле Призначення Обов'язковість Допустимі значення / межі Початкове значення Якщо не задано Рівень
pin_hc711_data GPIO даних HX711 Обов'язкове в наявній секції GPIO конкретної плати Секція автоматично не створюється; апаратно залежне Контакт конкретної плати; файл переписується SERVICE
pin_hc711_clk GPIO тактування HX711 Обов'язкове в наявній секції GPIO конкретної плати Секція автоматично не створюється; апаратно залежне Контакт конкретної плати; файл переписується SERVICE
gain Режим підсилення HX711 Обов'язкове в наявній секції Значення режиму підсилення HX711 Канал A, підсилення 128 Канал A, підсилення 128; файл переписується SERVICE
zero_calibrate_measurement Сире значення АЦП для нульового навантаження Обов'язкове в наявній секції Знакове 32-бітне ціле Апаратно залежне Резервне значення -486050; файл переписується SERVICE
weight_calibrate_measurement Сире значення АЦП з еталонною вагою Обов'язкове в наявній секції Знакове 32-бітне ціле Апаратно залежне Резервне значення -498030; файл переписується SERVICE
calibrate_weight Маса еталона калібрування Обов'язкове в наявній секції Грами; додатне ціле, автоматичної перевірки меж немає Апаратно залежне 500 г; файл переписується USER
start_weight Тара, яку віднімають із результату Обов'язкове в наявній секції Грами; рекомендовано від -100000 до 100000, автоматичної перевірки меж немає Апаратно залежне 0 г; файл переписується USER
source_weight Фільтр, результат якого використовується як основна вага Обов'язкове в наявній секції 1 — immediate; 2 — stable; 3 — calibration Секція автоматично не створюється 1; файл переписується. Інші значення під час виконання трактуються як 1 SERVICE
normal_pecision Параметр точності швидкого фільтра Обов'язкове в наявній секції Число з рухомою комою; межі не перевіряються Секція автоматично не створюється 0.5; файл переписується SERVICE
normal_desired_deviation Бажане відхилення швидкого фільтра Обов'язкове в наявній секції Число з рухомою комою; межі не перевіряються Секція автоматично не створюється 10; файл переписується SERVICE
stable_pecision Параметр точності стабільного фільтра Обов'язкове в наявній секції Число з рухомою комою; межі не перевіряються Секція автоматично не створюється 0.35; файл переписується SERVICE
stable_desired_deviation Бажане відхилення стабільного фільтра Обов'язкове в наявній секції Число з рухомою комою; межі не перевіряються Секція автоматично не створюється 5; файл переписується SERVICE
calibrate_pecision Параметр точності калібрувального фільтра Обов'язкове в наявній секції Число з рухомою комою; межі не перевіряються Секція автоматично не створюється 0.25; файл переписується SERVICE
calibrate_desired_deviation Бажане відхилення калібрувального фільтра Обов'язкове в наявній секції Число з рухомою комою; межі не перевіряються Секція автоматично не створюється 3; файл переписується SERVICE
median_window Розмір вікна медіанного фільтра Обов'язкове в наявній секції 3–100; поза межами замінюється Секція автоматично не створюється 100; файл переписується SERVICE

Ідентифікатори normal_pecision, stable_pecision і calibrate_pecision містять історичну помилку pecision, яку не можна виправляти в XML.

gain завантажується з файла, але під час збереження завжди встановлюється режим каналу A з підсиленням 128. Не змінюйте його вручну без даних саме для вашого пристрою.

thermometer

Відсутня секція вмикає нормалізацію файла. Значення sensors_count="0" вимикає опитування DS18B20.

Поле Призначення Обов'язковість Допустимі значення / межі Початкове значення Якщо не задано Рівень
pin_onewire GPIO шини 1-Wire Необов'язкове GPIO конкретної плати 4 4; файл переписується SERVICE
sensors_count Кількість датчиків DS18B20 Необов'язкове 0 вимикає датчики; додатне ціле, верхня межа не перевіряється 2 2; файл переписується ADVANCED

schedule

Атрибути TimeSlot0–TimeSlot23 визначають дію для відповідної години. Після 30-ї хвилини вибирається дія наступної години; після 23-ї — TimeSlot0.

Поле Призначення Обов'язковість Допустимі значення / межі Початкове значення Якщо не задано Рівень
TimeSlot0…TimeSlot23 Тип запланованої дії для години 0–23 Усі атрибути необов'язкові, але потрібен щонайменше один слот 2 Ціле число від 0 до 5, див. нижче 5 для годин 0–20; 1 для 21 і 22; 2 для 23 Відсутній слот стає 0. Якщо після читання немає жодного 2, весь розклад скидається до початкового ADVANCED
Значення Дія Рекомендація
0 Немає запланованої дії Можна використовувати для порожнього слота
1 Вимірювання Підтримується
2 Передавання через основний канал Потрібне щонайменше в одному слоті
3 Зарезервовано для передавання через Wi-Fi Не використовувати
4 Зарезервовано для передавання через BLE Не використовувати
5 Щогодинне пробудження для синхронізації Використовується початковим розкладом

Інші цілі числа не відхиляються, але не мають визначеної поведінки. Використовуйте лише значення з таблиці.

Початковий розклад

<schedule
  TimeSlot0="5" TimeSlot1="5" TimeSlot2="5" TimeSlot3="5"
  TimeSlot4="5" TimeSlot5="5" TimeSlot6="5" TimeSlot7="5"
  TimeSlot8="5" TimeSlot9="5" TimeSlot10="5" TimeSlot11="5"
  TimeSlot12="5" TimeSlot13="5" TimeSlot14="5" TimeSlot15="5"
  TimeSlot16="5" TimeSlot17="5" TimeSlot18="5" TimeSlot19="5"
  TimeSlot20="5" TimeSlot21="1" TimeSlot22="1" TimeSlot23="2" />

booster

Секція задає інтервал додаткових пробуджень для перевірки критичних параметрів. Якщо секції немає, під час виконання використовується годинний інтервал; сама відсутність не запускає переписування.

Поле Призначення Обов'язковість Допустимі значення / межі Початкове значення Якщо не задано Рівень
booster_time_sec Інтервал додаткової перевірки Необов'язкове 180, 240, 300, 360, 600, 720, 900, 1200, 1800 або 3600 с 3600 с 3600 с ADVANCED

Значення менше 180 с стає 180, більше 3600 с — 3600. Інші значення в межах діапазону округлюються до найближчого підтримуваного інтервалу зі списку в таблиці.

range_alarmer

Секція необов'язкова. Якщо її немає, пороговий аларм не ініціалізується. Якщо alarm="false" або атрибут alarm відсутній, межі не читаються й фонове завдання алармів не запускається.

Поле Призначення Обов'язковість Допустимі значення / межі Початкове значення Якщо не задано Рівень
alarm Увімкнення порогових алармів Необов'язкове true, false false false USER
T1_min Нижня межа T1 Необов'язкове Число з рухомою комою, °C; автоматичної перевірки фізичних меж і порядку min/max немає -500 °C у новоствореному файлі За alarm="true" обмеження знизу відсутнє ADVANCED
T1_max Верхня межа T1 Необов'язкове Число з рухомою комою, °C; автоматичної перевірки фізичних меж і порядку min/max немає 500 °C у новоствореному файлі За alarm="true" обмеження зверху відсутнє ADVANCED
T2_min Нижня межа T2 Необов'язкове Число з рухомою комою, °C; автоматичної перевірки фізичних меж і порядку min/max немає -500 °C у новоствореному файлі За alarm="true" обмеження знизу відсутнє ADVANCED
T2_max Верхня межа T2 Необов'язкове Число з рухомою комою, °C; автоматичної перевірки фізичних меж і порядку min/max немає 500 °C у новоствореному файлі За alarm="true" обмеження зверху відсутнє ADVANCED
Humidity_min Нижня межа вологості Необов'язкове Число з рухомою комою, %; автоматичної перевірки фізичних меж і порядку min/max немає -20 % у новоствореному файлі За alarm="true" обмеження знизу відсутнє ADVANCED
Humidity_max Верхня межа вологості Необов'язкове Число з рухомою комою, %; автоматичної перевірки фізичних меж і порядку min/max немає 200 % у новоствореному файлі За alarm="true" обмеження зверху відсутнє ADVANCED

Для кожного джерела T1, T2 або вологості достатньо задати одну межу. Якщо не задано жодної межі конкретного джерела, воно не додається до перевірки. Порядок _min і _max автоматично не перевіряється.

Приклад односторонніх алармів

У цьому прикладі T1 контролюється лише зверху, T2 — лише знизу, а вологість не контролюється:

<range_alarmer alarm="true" T1_max="45.0" T2_min="-10.0" />

Загальну частоту SMS і підтвердження PIR-алармів задають alarm_sms_sec_interval, alarm_by_changes_count та alarm_by_long_state у mset.xml.

Структурний приклад без ваг

Такий файл використовує початковий розклад, два датчики температури та вимкнені порогові аларми. Секції scales немає, тому ваги не створюються.

<settings>
  <hive hive_name="hive1" bus_number="0" main_device="true" />
  <booster booster_time_sec="3600" />
  <range_alarmer alarm="false"
                 T1_max="500" T1_min="-500"
                 T2_max="500" T2_min="-500"
                 Humidity_max="200" Humidity_min="-20" />
  <thermometer pin_onewire="4" sensors_count="2" />
  <schedule
    TimeSlot0="5" TimeSlot1="5" TimeSlot2="5" TimeSlot3="5"
    TimeSlot4="5" TimeSlot5="5" TimeSlot6="5" TimeSlot7="5"
    TimeSlot8="5" TimeSlot9="5" TimeSlot10="5" TimeSlot11="5"
    TimeSlot12="5" TimeSlot13="5" TimeSlot14="5" TimeSlot15="5"
    TimeSlot16="5" TimeSlot17="5" TimeSlot18="5" TimeSlot19="5"
    TimeSlot20="5" TimeSlot21="1" TimeSlot22="1" TimeSlot23="2" />
</settings>

Повна секція ваг

Нижче наведено структурний приклад із резервними значеннями лише для архівної довідки. Не встановлюйте його на пристрій: калібрувальні значення й контакти мають бути взяті з резервної копії саме цього пристрою або створені штатним калібруванням.

<scales pin_hc711_data="27" pin_hc711_clk="26" gain="0"
        zero_calibrate_measurement="-486050"
        weight_calibrate_measurement="-498030"
        calibrate_weight="500" start_weight="0" source_weight="1"
        normal_pecision="0.5" normal_desired_deviation="10"
        stable_pecision="0.35" stable_desired_deviation="5"
        calibrate_pecision="0.25" calibrate_desired_deviation="3"
        median_window="100" />

GPIO 27 і 26 є лише прикладом для одного пристрою та не є універсальними. Використовуйте значення з резервної копії саме вашого пристрою.