Logrus

<<< Назад

Примеры кода

На форуме часто возникают вопросы что, как, куда, как лучше и правильней.
Полностью расписывать много и лень )))
А краткими примерами самое то!

  1. выполнить что либо (однократно/по условиям и т.д.)
    класс Rooms, метод onNewActivity (у меня у объекта Кухня)
if (timeBetween('06:45', '11:15')) { //если время между
 $last_register = registeredEventTime('morningGreeting'); //узнаем время регистрации евента
 if ($last_register == '-1' || (time() - $last_register) >= 7200) { //если евента нет или время регистрации больше 2 часов
  if (getGlobal('ThisComputer.VolumeLevel') < 65) { //если текущая громкость системы меньше 65
   callMethod('VolumeLevelChanged', array('VALUE'=>65)); //установим громкость 65
  }
  registerEvent('morningGreeting', $this->description, 1); //зарегистрируем евент, название, в детали - описание, срок жизни сутки
  runScript('morningGreeting'); //вызовем скрипт
 }
}
  1. ночной режим (режим темное время суток по такому же принципу, но сложнее со статическим и динамическим "облачность" смещением от времени восхода/заката) на форуме
    т.к. они вызываются из минутного таймера и с темным временем суток есть необходимость в разных параметрах (помещение на южной стороне, на северной, крытый двор, открытая прилегающая территория, etc) то пришлось несколько это дело "оптимизировать", ниже простой пример на "ночном режиме"
    1
    2
    3
$last_register = $this->getProperty('updated');
if ((time() - $last_register) >= 21600) {
 $night = $this->getProperty('active');
 $start = getGlobal('Sets.NightStart');
 $end = getGlobal('Sets.NightEnd');
 if ($night == 0 && timeBetween($start, $end)) {
  callMethodSafe('NightMode.activate'); 
 }
 elseif ($night == 1 && timeBetween($end, $start)) {
  callMethodSafe('NightMode.deactivate'); 
 }
}
  1. Таймеры

пишем в свойство

setTimeout($ot . '_cleaningUpdatedGPS', 'setGlobal("' . $ot . '.updatedGPS", "");', 28800);

вызываем метод

setTimeOut($ot . '_updateTime', 'callMethod("' . $ot . '.setUpdatedGPS");', $newTimeout);

сложный, к методу привязано несколько свойств

//$params['ORIGINAL_OBJECT_TITLE']
//$params['PROPERTY']
//$params['NEW_VALUE']

if ($params['NEW_VALUE'] != 0) {
 setTimeout($params['ORIGINAL_OBJECT_TITLE'] . '_' . $params['PROPERTY'], 'setGlobal("' . $params['ORIGINAL_OBJECT_TITLE'] . '.' . $params['PROPERTY'] . '", 0);', 1800);
}

Полезное:
Примеры синтаксиса кода
БЗ, встроенные в MajorDoMo функции

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

Смотрите так же:
02.12.2019 Charts
30.11.2019 Шаблон поведения. Отправка сообщения на определенный терминал
30.06.2019 Телеграмм. Меню - управление группами ПУ
29.06.2019 Телеграмм. Меню - запуск скриптов (сценариев)
21.10.2018 Настройки громкости
29.09.2018 checkState
25.09.2018 Телеграмм. pChart
24.09.2018 Уход за базой данных
05.08.2018 Управление подсветкой на шлюзе Сяоми
21.06.2018 Каталог ссылок
10.06.2018 Меню
08.07.2018 mail()
04.05.2018 Режим "EnergyTariffMode"
02.05.2018 Класс SOpenClose метод logicAction (по-русски "Входная дверь")
22.04.2018 Программы
19.04.2018 Пользовательские функции
11.04.2018 Шаблон отображения в классе "ExchangeRates"
05.04.2018 Шаблон отображения в классе "Users"
02.12.2018 Режим "Никого нет дома"
25.02.2018 Бэкап и обслуживание системы

Нижний Тагил, Россия

На форуме: Logrus