будильник. Не срабатывает проверка AlarmOn.

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
LampGraph
Сообщения: 6
Зарегистрирован: Пт янв 17, 2014 8:02 pm
Откуда: Абакан
Благодарил (а): 0
Поблагодарили: 0

будильник. Не срабатывает проверка AlarmOn.

Сообщение LampGraph » Пт янв 17, 2014 8:14 pm

Привет!
запилил будильник как у всех, пример взял отсюда:

Проблема в проверке свойства AlarmOn в обработчике метода onNewMinute
//будильник

Код: Выделить всё

$objects=getObjectsByClass("AlarmClock");
foreach($objects as $obj) { // переберем все будильники в системе
  if (getGlobal($obj['TITLE'].".AlarmOn") && timeIs(getGlobal($obj['TITLE'].".AlarmTime"))){ //если будильник включен и время совпало
    callMethod($obj['TITLE'].".AlarmRun"); // выполним метод будильника
  }
}
если делаем так:

Код: Выделить всё

 if (timeIs(getGlobal($obj['TITLE'].".AlarmTime"))){ //если будильник включен и время совпало
будильник срабатывает. Отсюда делаю вывод что проблема в получении значения свойства AlarmOn.

X-Ray показывает все верно:
LaGAlarm.AlarmOn 1

в чем может быть проблема?
Профиль в Connect
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: будильник. Не срабатывает проверка AlarmOn.

Сообщение sergejey » Пт янв 17, 2014 8:46 pm

Сходу вроде всё верно... Можно попробовать чуть ниже добавить такую проверку, чтобы в случае проблемы со срабатывание в логе сохранилось значение AlarmOn на тот момент:

if (!getGlobal($obj['TITLE'].".AlarmOn") && timeIs(getGlobal($obj['TITLE'].".AlarmTime"))){ //если будильник включен и время совпало
say(($obj['TITLE'].".AlarmOn: ".getGlobal($obj['TITLE'].".AlarmOn")); //время пришло но будильник не сработал
}

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
LampGraph
Сообщения: 6
Зарегистрирован: Пт янв 17, 2014 8:02 pm
Откуда: Абакан
Благодарил (а): 0
Поблагодарили: 0

Re: будильник. Не срабатывает проверка AlarmOn.

Сообщение LampGraph » Сб янв 18, 2014 5:11 am

Лог:
10:06 Alice: LaGAlarm.AlarmOn:

Получается Алиса не может прочитать свойство AlarmOn и думает что оно пустое?
Щас гляну что в базе лежит.
LampGraph
Сообщения: 6
Зарегистрирован: Пт янв 17, 2014 8:02 pm
Откуда: Абакан
Благодарил (а): 0
Поблагодарили: 0

Re: будильник. Не срабатывает проверка AlarmOn.

Сообщение LampGraph » Сб янв 18, 2014 5:13 am

Кстати, как в базе через админку посмотреть?
LampGraph
Сообщения: 6
Зарегистрирован: Пт янв 17, 2014 8:02 pm
Откуда: Абакан
Благодарил (а): 0
Поблагодарили: 0

Re: будильник. Не срабатывает проверка AlarmOn.

Сообщение LampGraph » Сб янв 18, 2014 5:30 am

Проблема решена!!!
Подумал что часть кода набирал с клавы, а часть копировал с форума, возможно где-то буква "о" и "o" перепутались или другой косяк с раскладкой или кодировкой... Еще со времен первого знакомства с PHP помню такую гадость когда с виду одинаковые переменные на самом деле могут быть разными... особенно если не весь код набран собственноручно.
В общем создал новое свойство AlarmOnOff, его имя потом скопировал в код и все заработало.

10:23 Alice: С добрым утром!
10:23 Alice: 10 часов 23 минут

теперь код выглядит так:

Код: Выделить всё

//будильник
$objects=getObjectsByClass("AlarmClock");
foreach($objects as $obj) { // переберем все будильники в системе
  if (getGlobal($obj['TITLE'].".AlarmOnOff") && timeIs(getGlobal($obj['TITLE'].".AlarmTime"))){ //если будильник включен и время совпало
    callMethod($obj['TITLE'].".AlarmRun"); // выполним метод будильника
  }
}
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: будильник. Не срабатывает проверка AlarmOn.

Сообщение nick7zmail » Чт сен 04, 2014 5:04 am

Приветствую. Столкнулся с проблемой выполнения методов. Проверка 100% проходит, а callMethod запускаться не хочет даже из скрипта вручную, другие запускаются норм, что я неправильно делаю?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: будильник. Не срабатывает проверка AlarmOn.

Сообщение nick7zmail » Чт сен 04, 2014 9:34 am

nick7zmail писал(а):Приветствую. Столкнулся с проблемой выполнения методов. Проверка 100% проходит, а callMethod запускаться не хочет даже из скрипта вручную, другие запускаются норм, что я неправильно делаю?
Прошу прощения, все заработало, проблема была аналогичная. Метод набрал с клавы - все ок стало, появилась другая проблема. В обьектах теперь показывает 2 метода AlarmRun, они разные (с разным кодом) но в редактировании объекта только один. Как удалить второй?
Вложения
Методы.jpg
Методы.jpg (25.98 КБ) 7196 просмотров
Обьект.jpg
Обьект.jpg (6.96 КБ) 7196 просмотров
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить