Logrus

 
<<< Back

Примеры кода

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

  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 функции

Discuss (0) (12)

See also:
2021-01-10 DROP_TABLE
2020-05-07 Телеграмм. Полезное
2019-06-30 Телеграмм. Меню - управление группами ПУ
2019-06-29 Телеграмм. Меню - запуск скриптов (сценариев)
2018-10-21 Настройки громкости
2018-09-25 Телеграмм. pChart
2018-05-02 Класс SOpenClose метод logicAction (по-русски "Входная дверь")
2018-04-05 Шаблон отображения в классе "Users"
2018-12-02 Режим "Никого нет дома"

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

На форуме: Logrus