// HivePage.jsx — full-page hive detail (CP-7 inline view) function findHiveFallback(hiveId) { const all = Object.values((DATA && DATA.hives) || {}).flat(); const row = all.find((item) => item.id === hiveId) || all[0] || null; if (!row) return null; return { id: row.id, name: `Улей ${row.id}`, zone_id: row.zone_id || null, status: row.state || "ok", activity_per_min: row.departures_per_min || null, gate_status: row.gate_status || null, gate_device_id: row.gate_device_id || "C771-3308-1100", }; } function HivePage({ onClose, hiveId }) { const [tab, setTab] = React.useState("telemetry"); const [gateHive, setGateHive] = React.useState(null); const [gateDeviceStatus, setGateDeviceStatus] = React.useState("ok"); const HiveGateControl = window.HiveGateControl; const TelemetryChart = window.TelemetryChart; const resolvedHiveId = hiveId || "B-06"; React.useEffect(() => { let cancelled = false; async function load() { let hive = null; try { hive = await Keeper.api.hive(resolvedHiveId); } catch (_) { hive = findHiveFallback(resolvedHiveId); } if (cancelled) return; setGateHive(hive); if (!hive?.gate_device_id) return; try { const gateDevice = await Keeper.api.device(hive.gate_device_id); if (!cancelled) setGateDeviceStatus(gateDevice?.status || "ok"); } catch (_) { if (!cancelled) setGateDeviceStatus(hive?.status || "ok"); } } load(); return () => { cancelled = true; }; }, [resolvedHiveId]); return (
Улей B-09
Зона AB1 · 6 станция · колония 41 дн. · обновлено 14:38
Активность
74/мин
▼ 18 % за 3 дня
Темп. в улье
22,1°C
норма 21–25
Влажность
68%
норма
Возраст колонии
41дн.
→ замена 12 фев
{tab==="telemetry" && ( <>
{/* [TASK_START:T007] */} {TelemetryChart ? ( ) : (
Компонент графика не загружен
)} {/* [TASK_COMPLETE:T007] */}

Леток · задвижка

ОткрытаРасписание: 06:00–11:00, 18:00–21:00
АвторежимСледовать расписанию опыления
Активность падает 3-й день. Возраст колонии — 41 день. Запланируйте замену до 12 февраля.
{/* [TASK_START:T008] */} {HiveGateControl && gateHive?.gate_device_id && (
)} {/* [TASK_COMPLETE:T008] */} )} {tab==="history" && (

Журнал событий

Активность ниже нормы 3-й час
Снижение активности на 18 %
Калибровка датчика активности · П. Сидоров
Установка колонии · М. Кузьмин
OTA v3.0.2 на задвижке
)} {tab==="commands" && (

Последние команды

ВремяДействиеКемСтатус
14:18Открыть задвижкуавто (правило)Выполнено
11:00Закрыть задвижкуавто (расписание)Выполнено
06:00Открыть задвижкуавто (расписание)Выполнено
9 фев 22:14Калибровка датчикаП. СидоровВыполнено
)} {tab==="config" && (

Конфигурация устройства

ID задвижкиE990-1213-AA5C
Прошивкаv3.0.2 (стабильная)
СвязьRSSI −68 dBm · 2,1 КБ/ч
Батарея71 % · ~84 дн.
Расписание опыления06:00–11:00, 18:00–21:00 (по умолч.)
Установлено14 янв 2026 · М. Кузьмин
)}
); } window.HivePage = HivePage;