Не работаетют методы onNewMinute и Hour

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

massol
Сообщения: 8
Зарегистрирован: Вт окт 13, 2020 3:30 pm
Благодарил (а): 0
Поблагодарили: 0

Не работаетют методы onNewMinute и Hour

Сообщение massol » Вт окт 13, 2020 3:37 pm

Ничего не происходит в автоматическом режиме. Если запускать с сайта, то работает.
Ubuntu 18.04 php7.2 nginx
В логах вот такое раз в минуту

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

127.0.0.1 - - [13/Oct/2020:15:11:00 +0300] "GET /api.php/method/ClockChime.onNewMinute?raiseEvent=1&m_c_s%5B0%5D=ClockChime.onNewMinute.d751713988987e9331980363e24189ce&no_session=1 HTTP/1.1" 404 95 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:32.0) Gecko/20100101 Firefox/32.0"
massol
Сообщения: 8
Зарегистрирован: Вт окт 13, 2020 3:30 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Не работаетют методы onNewMinute и Hour

Сообщение massol » Ср окт 14, 2020 8:43 am

Немного разобрал вызовы в cycle_main:
При вызове метода вызывается функция raiseEvent, та в свою очередь вызывает функцию callMethodSafe и в ней есть такой блок

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

 
 if (IsSet($_SERVER['REQUEST_URI']) && ($_SERVER['REQUEST_URI'] != '') && !$raiseEvent && count($call_stack)>1) {
            $result = $this->callMethod($name, $params);
        } else {
           $result = callAPI('/api/method/' . urlencode($this->object_title . '.' . $name), 'GET', $params);
       }
И вот тут срабатывает else, потому что $_SERVER['REQUEST_URI'] почему то пустой. Если принудительно запустить callMethod, то все нормально. Что делает callAPI я так и не понял, но она не работает как надо, сервер отдает 404.
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 816 раз

Re: Не работаетют методы onNewMinute и Hour

Сообщение tarasfrompir » Ср окт 14, 2020 9:09 am

massol писал(а):
Ср окт 14, 2020 8:43 am
Немного разобрал вызовы в cycle_main:
При вызове метода вызывается функция raiseEvent, та в свою очередь вызывает функцию callMethodSafe и в ней есть такой блок

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

 
 if (IsSet($_SERVER['REQUEST_URI']) && ($_SERVER['REQUEST_URI'] != '') && !$raiseEvent && count($call_stack)>1) {
            $result = $this->callMethod($name, $params);
        } else {
           $result = callAPI('/api/method/' . urlencode($this->object_title . '.' . $name), 'GET', $params);
       }
И вот тут срабатывает else, потому что $_SERVER['REQUEST_URI'] почему то пустой. Если принудительно запустить callMethod, то все нормально. Что делает callAPI я так и не понял, но она не работает как надо, сервер отдает 404.
в альче фчера внесли измениения -хотя у вас певого такая трабала...
Спасибо нам ПОМОЖЕТ..!
massol
Сообщения: 8
Зарегистрирован: Вт окт 13, 2020 3:30 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Не работаетют методы onNewMinute и Hour

Сообщение massol » Ср окт 14, 2020 10:42 am

Спасибо за ответ, обновился, но проблема осталась. Подскажите, насколько критично будет заменить вызов callAPI на callMethod?
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 816 раз

Re: Не работаетют методы onNewMinute и Hour

Сообщение tarasfrompir » Ср окт 14, 2020 11:49 am

massol писал(а):
Ср окт 14, 2020 10:42 am
Спасибо за ответ, обновился, но проблема осталась. Подскажите, насколько критично будет заменить вызов callAPI на callMethod?
А не допущена ли где ошибка в оннеминут?? пропробуйте все свое стереть и посмотреть ...
Спасибо нам ПОМОЖЕТ..!
massol
Сообщения: 8
Зарегистрирован: Вт окт 13, 2020 3:30 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Не работаетют методы onNewMinute и Hour

Сообщение massol » Ср окт 14, 2020 11:58 am

У меня так с "нуля", только поставил. Но даже пустой метод не отрабатывает.
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 816 раз

Re: Не работаетют методы onNewMinute и Hour

Сообщение tarasfrompir » Ср окт 14, 2020 12:06 pm

massol писал(а):
Ср окт 14, 2020 11:58 am
У меня так с "нуля", только поставил. Но даже пустой метод не отрабатывает.
давай сюда текст под спойлер
Спасибо нам ПОМОЖЕТ..!
massol
Сообщения: 8
Зарегистрирован: Вт окт 13, 2020 3:30 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Не работаетют методы onNewMinute и Hour

Сообщение massol » Ср окт 14, 2020 12:26 pm

Метод стандартный, я не менял
СпойлерПоказать
$h=(int)date('G',time());
$m=date('i',time());

if (isWeekDay()) {

}


if (($h>=8) && getGlobal('clockChimeEnabled')) {
if ($m=="00") {
say(timeNow(),1);
}
}


setGlobal('timeNow',date('H:i'));

$homeStatus=date('H:i');
if (getGlobal('NobodyHomeMode.active')) {
$homeStatus.=' Дома никого';
} else {
$homeStatus.=' Дома кто-то есть';
}

$homeStatus.=' '.getGlobal('Security.stateDetails');
$homeStatus.=' '.getGlobal('System.stateDetails');
$homeStatus.=' '.getGlobal('Communication.stateDetails');
setGlobal('HomeStatus',$homeStatus);

if (timeBetween(getGlobal('SunRiseTime'),getGlobal('SunSetTime')) && getGlobal('isDark')=="1") {
setGlobal("isDark",0);
callMethod('DarknessMode.deactivate');
} elseif (!timeBetween(getGlobal('SunRiseTime'),getGlobal('SunSetTime')) && getGlobal('isDark')!="1") {
setGlobal("isDark",1);
callMethod('DarknessMode.activate');
}

if (timeIs(getGlobal('SunRiseTime'))) {
say('Всходит солнце');
}
if (timeIs(getGlobal('SunSetTime'))) {
say('Солнце заходит',2);
}

if (timeIs("23:30") && (gg("EconomMode.active")!="1") && (gg("NobodyHomeMode.active")=="1")) {
say("Похоже никого нет сегодня, можно сэкономить немного.");
callMethod('EconomMode.activate');
}

if (timeIs('20:00')) {
callMethod('NightMode.activate');
} elseif (timeIs('08:00')) {
callMethod('NightMode.deactivate');
}

if (timeIs("03:00")) {
runScript("systemMaintenance");
}

if (gg('ThisComputer.AlarmStatus') && timeIs(gg('ThisComputer.AlarmTime'))) {
runScript('MorningAlarm');
}
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 816 раз

Re: Не работаетют методы onNewMinute и Hour

Сообщение tarasfrompir » Ср окт 14, 2020 2:49 pm

massol писал(а):
Ср окт 14, 2020 12:26 pm
Метод стандартный, я не менял
СпойлерПоказать
$h=(int)date('G',time());
$m=date('i',time());

if (isWeekDay()) {

}


if (($h>=8) && getGlobal('clockChimeEnabled')) {
if ($m=="00") {
say(timeNow(),1);
}
}


setGlobal('timeNow',date('H:i'));

$homeStatus=date('H:i');
if (getGlobal('NobodyHomeMode.active')) {
$homeStatus.=' Дома никого';
} else {
$homeStatus.=' Дома кто-то есть';
}

$homeStatus.=' '.getGlobal('Security.stateDetails');
$homeStatus.=' '.getGlobal('System.stateDetails');
$homeStatus.=' '.getGlobal('Communication.stateDetails');
setGlobal('HomeStatus',$homeStatus);

if (timeBetween(getGlobal('SunRiseTime'),getGlobal('SunSetTime')) && getGlobal('isDark')=="1") {
setGlobal("isDark",0);
callMethod('DarknessMode.deactivate');
} elseif (!timeBetween(getGlobal('SunRiseTime'),getGlobal('SunSetTime')) && getGlobal('isDark')!="1") {
setGlobal("isDark",1);
callMethod('DarknessMode.activate');
}

if (timeIs(getGlobal('SunRiseTime'))) {
say('Всходит солнце');
}
if (timeIs(getGlobal('SunSetTime'))) {
say('Солнце заходит',2);
}

if (timeIs("23:30") && (gg("EconomMode.active")!="1") && (gg("NobodyHomeMode.active")=="1")) {
say("Похоже никого нет сегодня, можно сэкономить немного.");
callMethod('EconomMode.activate');
}

if (timeIs('20:00')) {
callMethod('NightMode.activate');
} elseif (timeIs('08:00')) {
callMethod('NightMode.deactivate');
}

if (timeIs("03:00")) {
runScript("systemMaintenance");
}

if (gg('ThisComputer.AlarmStatus') && timeIs(gg('ThisComputer.AlarmTime'))) {
runScript('MorningAlarm');
}
даже хз
Спасибо нам ПОМОЖЕТ..!
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 317 раз
Поблагодарили: 466 раз

Re: Не работаетют методы onNewMinute и Hour

Сообщение Logrus » Ср окт 14, 2020 7:10 pm

massol писал(а):
Ср окт 14, 2020 8:43 am
Немного разобрал вызовы в cycle_main:
При вызове метода вызывается функция raiseEvent, та в свою очередь вызывает функцию callMethodSafe и в ней есть такой блок

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

 
 if (IsSet($_SERVER['REQUEST_URI']) && ($_SERVER['REQUEST_URI'] != '') && !$raiseEvent && count($call_stack)>1) {
            $result = $this->callMethod($name, $params);
        } else {
           $result = callAPI('/api/method/' . urlencode($this->object_title . '.' . $name), 'GET', $params);
       }
И вот тут срабатывает else, потому что $_SERVER['REQUEST_URI'] почему то пустой. Если принудительно запустить callMethod, то все нормально. Что делает callAPI я так и не понял, но она не работает как надо, сервер отдает 404.
на энджин икс проблема с апи вместо апи.пхп описана неоднократно
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Ответить