DivanX10

<<< Назад

Блог чайника. Блокировка ночного режима.

Блог чайника для чайника. Уверен на 100%, что опытные и мудрые мажороводы сделали это по своему, но нет такой статьи, как вариант "Блокировка ночного режима" или что-то подобное. Блокировка ночного режима для меня оказалась очень удобной фишкой. Она позволяет мне не менять временной промежуток ночного режима и блокировать ночной режим, если я не попадаю во временной промежуток.

Мне в голову пришла такая идея "Блокировка ночного режима" и спонтанно, все благодаря этой теме Как реализовать 3 состояния для одного выключателя.... Казалось бы, что это легко настроить, да и вообще странный метод, но оказалось не так и все легко, но зато я для себя узнал много интересного. Узнал как настраивать восход и закат солнца, как работает вызов метода при изменении свойства объекта. Для меня это опыт и знание в копилку. Итак, расскажу о своем варианте и как он настраивается.

Как это работает?
1) Если я дома до включения "ночного режима" - "ночной режим" включается по заданному времени и переводит систему в режим "Дома спят"
2) Если я дома (н-р время 01:00) после указанного времени (допустим установил время 23:00 или 00:00) на включение Ночного режима - после активации "Кто-то дома" снимается блокировка "ночного режима", включается "ночной режим" и переводит систему в режим "Дома спят"
3) Если я дома после окончания "ночного режима" - "ночной режим" выключается по заданному времени и переводит систему в режим "Я дома"
4) Если меня дома нет, то включается блокировка "ночного режима" и при наступлении ночного режима (начало или конец) - ночной режим не включится, система по прежнему будет находиться в режиме "Дома никого нет"
5) Если я ушел до того, как выключится ночной режим - "ночной режим" выключается и включается блокировка "ночного режима", таким образом при выключении "ночного режима" система не переведет из режима "Дома никого нет" в режим "Я дома". Система будет по прежнему находиться в режиме "Дома никого нет". Установленное время для "Ночного режима" не сбрасывается и остается таким, каким я его задал.

Общий вид меню

Настройка объекта BLE_GalaxyS7

В роли смарт ключа у меня выступает телефон, сделал привязку по bluetooth

В методе Found, объекта BLE_GalaxyS7 я собрал такой код, который активирует DivanHomeMode и снимет блокировку ночного режима

В методе Lost, объекта BLE_GalaxyS7 я собрал такой код, который деактивирует DivanHomeMode и ставит блокировку ночного режима

Ниже я создал привязку метода к свойству, это пример для понимания как работает привязка метода к свойству и как это настраивается.

Создал метод setOnline в классе BluetoothDevices, здесь создается привязка метода к свойству. Так при изменении значения в свойстве запускается метод. set это глагол для метода чтобы не было путаницы со свойством объекта Online, в итоге получается
1) Online - свойство
2) setOnline - метод

В настройках свойства Online я привязал метод setOnline к свойству Online

В методе setOnline (использую глагол set для метода setOnline, свойства Online), объекта BLE_GalaxyS7 я настроил запуск методов Found и Lost при изменении в свойстве BLE_GalaxyS7.online значения 1 или 0

Настройка объекта NightMode

Создал свойство Mode в объекте NightMode, где
1) Значение 2 - если я дома и время ночного режима истекло, то блокировка ночного режима выключена
2) Значение 3 - если я не дома, то блокировка ночного режима включена

Я использую эти методы в объекте NightMode

В методе activate, объекта NightMode добавил код, который запустит метод activate если у свойства NightMode.Mode стоит значение 2 (Значение 2 означает, что блокировка ночного режима выключена). Запуск метода activate переведет DivanHomeMode в статус Divan спит и сообщит мне, что ночной режим включен.

В методе deactivate, объекта NightMode добавил код, который разрешает запускать метод deactivate, если в свойстве Mode стоит значение 2.
1) Если я еще дома, а время ночного режима истекло, то включится режим Я дома и сообщит, что ночной режим выключен
2) Если я ушел из дома до истечения ночного режима, то ночной режим выключится и заблокируется, установится значение 3 и метод deactivate не запустится, что не позволит повторно запустить метод deactivate, когда истечет время ночного режима.

Настройка объекта DivanHomeMode

Я использую эти методы в объекте DivanHomeMode.

В методе activate, объекта DivanHomeMode добавил код, который активирует ночной режим, если я пришел в промежутке времени с 00:00 до 09:00.

В методе deactivate, объекта DivanHomeMode добавил код, который, при уходе из дома, запустит метод deactivate ночного режима.

В методе modeChanged, объекта DivanHomeMode добавил код, который, при изменении значении в свойстве active, сообщает: Я дома\Не дома\Я сплю.

Настройка Ночного режима в Меню управления

Общий вид настройки Ночного режима в Меню управления.

1) Создал блок выключатель ночного режима, там будут значения 0 и 1.
2) Создал блок radiobox и назвал "Блокировка ночного режима" и привязал к свойству Mode. Здесь будут значения 2 и 3.
Значение 2 - разблокировка ночного режима выключена
Значение 3 - блокировка ночного режима включена

На этом настройка закончена.

Обсуждение (0) (1)

Смотрите так же:
26.03.2020 Дизайн сцена "Вид на землю"
26.03.2020 Дизайн сцена "Оранжевый бриз"
14.03.2020 Дизайн сцена для управления кондиционером
01.03.2020 Создаем сцену для пылесоса Xiaomi Mi Robot Vacuum
27.10.2019 Пылесос Xiaomi Mi Robot Vacuum
21.10.2019 Блог чайника. Простое устройство. Выключатель.
12.10.2019 Blockly. Вариант 2 - Адаптивный "Ночной режим"
12.10.2019 Blockly. Вариант 1 - Если я ушел из дома, а "Ночной режим" еще не выключен
11.10.2019 Blockly. Режим "Кто-то дома" | "Дома никого нет" | "Дома спят"
08.10.2019 Blockly. Рабочий/выходной/отпуск - немного укоротил сборку кода в блоках
07.10.2019 Blockly. Создаем сценарии рабочий/выходной/отпуск для нестандартного рабочего графика
12.10.2019 Blockly. Мои блоки - месяц
12.10.2019 Blockly. Мои блоки - дни недели

Москва, Россия