// Interactive house diagram — hover/click a room to see scenarios const House = () => { const rooms = { kitchen: { name: "Кухня", x: 10, y: 8, w: 38, h: 36, icon: "drop", scenarios: [ { icon: "drop", text: "Датчик протечки под мойкой → перекрыть кран" }, { icon: "valve", text: "Контроль состояния крана воды" }, { icon: "switch", text: "Проходные выключатели: светом можно управлять у входа и в столовой зоне" }, { icon: "zap", text: "Авто-выключение приборов по сценарию «ушёл»" }, ], }, bath: { name: "Санузел", x: 50, y: 8, w: 22, h: 36, icon: "drop", scenarios: [ { icon: "drop", text: "Датчики протечки в углах за унитазом и ванной" }, { icon: "humid", text: "Включение вентилятора при влажности > 70%" }, { icon: "bulb", text: "Ночной свет по датчику движения" }, ], }, living: { name: "Гостиная", x: 10, y: 46, w: 38, h: 46, icon: "thermo", scenarios: [ { icon: "thermo", text: "Климат +22°: автоматическое отопление зимой" }, { icon: "bulb", text: "Свет по сценариям «утро / вечер / кино»" }, { icon: "mic", text: "Голос: «Алиса, добрый вечер» — свет + музыка" }, ], }, bedroom: { name: "Спальня", x: 74, y: 8, w: 22, h: 50, icon: "moon", scenarios: [ { icon: "moon", text: "Сценарий «ночь»: климат тише, свет выключен" }, { icon: "shield", text: "Охрана периметра при включении сна" }, { icon: "sun", text: "Рассвет: плавно включается торшер" }, ], }, hall: { name: "Прихожая", x: 50, y: 74, w: 22, h: 18, icon: "door", scenarios: [ { icon: "door", text: "Датчик открытия двери → отправить уведомление" }, { icon: "key", text: "Сценарий «ушёл»: проверка света, климата, окон" }, { icon: "motion", text: "Движение → свет в коридоре на 60 секунд" }, ], }, balcony: { name: "Балкон / Двор", x: 74, y: 60, w: 22, h: 32, icon: "sprout", scenarios: [ { icon: "sprout", text: "Автополив домашних цветов и теплицы" }, { icon: "thermo", text: "Контроль температуры на улице и в теплице" }, { icon: "fan", text: "Открытие вентиляционных створок при перегреве" }, ], }, server: { name: "Сервер", x: 50, y: 46, w: 22, h: 26, icon: "cloud-off", scenarios: [ { icon: "cloud-off", text: "Локальный сервер — работает без интернета" }, { icon: "wifi-off", text: "Все сценарии остаются доступны при сбое сети" }, { icon: "mic", text: "Локальное голосовое управление" }, ], }, }; const [active, setActive] = React.useState("living"); const room = rooms[active]; return (
Карта дома

Наведите на комнату.
Посмотрите, что умеет.

В каждой комнате — свой набор датчиков и сценариев. Они работают связанно: протечка на кухне перекрывает воду во всём доме, движение в прихожей включает свет именно там, где нужно.

Сценарии · {room.name}
{room.scenarios.map((s, i) => (
{s.text}
))}
{/* outer wall */} {Object.entries(rooms).map(([key, r]) => { const isActive = key === active; return ( setActive(key)} onClick={() => setActive(key)} style={{ cursor: "pointer" }}> {r.name} {/* sensor dot */} {isActive && ( )} ); })}
Активная зона {room.name}
); }; window.House = House;