Страница 1 из 2
Включение бойлера при условии...
Добавлено: Пн фев 27, 2017 11:12 pm
annakin
Добрый вечер, ребята что я делаю не так ?
Есть кнопка включения бойлера:
Код: Выделить всё
$status=$this->getProperty("status");
if ($status) {
$this->callMethod('turnOff');
} else {
$this->callMethod('turnOn');
}
Теперь сама проблема:
В Gps_track есть действие когда я вхожу в зону дома и выхожу из зоны дома, нужно включить бойлер но при условии если время вхождения в зону является больше 16:00 если нет то ничего не делаем.
Так вот я создал действия Entering там нужно указать сценарии для его выполнения.
Я создал сценарии и указал его в Entering:
Код: Выделить всё
if (timeBetween(getGlobal('ThisComputer.timeNow'),getGlobal('Boler.TimeOn'))) {
if (getGlobal('Boler.status')) {
setGlobal("Boler.status",0);
callMethod('Boler.switch');
}
} else {
if (!getGlobal('Boler.status')) {
setGlobal("Boler.status",1);
callMethod('Boler.switch');
Но я что-то делаю не так, направьте на путь истинный.
Re: Включение бойлера при условии...
Добавлено: Пн фев 27, 2017 11:32 pm
DimSun75
А что в итоге не работает-то?
и наверное все-таки не timeBetween(getGlobal('ThisComputer.timeNow'),getGlobal('Boler.TimeOn')), а timeAfter(getGlobal('Boler.TimeOn'))
Re: Включение бойлера при условии...
Добавлено: Пн фев 27, 2017 11:47 pm
annakin
DimSun75 писал(а):А что в итоге не работает-то?
и наверное все-таки не timeBetween(getGlobal('ThisComputer.timeNow'),getGlobal('Boler.TimeOn')), а timeAfter(getGlobal('Boler.TimeOn'))
Сделал как вы написали:
Код: Выделить всё
if timeAfter(getGlobal('Boler.TimeOn')) {
if (getGlobal('Boler.status')) {
setGlobal("Boler.status",0);
callMethod('Boler.switch');
}
} else {
if (!getGlobal('Boler.status')) {
setGlobal("Boler.status",1);
callMethod('Boler.switch');
Шас вот что пишет при попытке вручную вызвать сценарии:
Код: Выделить всё
Parse error: syntax error, unexpected 'timeAfter' (T_STRING), expecting '(' in /var/www/modules/scripts/scripts.class.php(139) : eval()'d code on line 1
Re: Включение бойлера при условии...
Добавлено: Вт фев 28, 2017 12:04 am
DimSun75
Скобочку открывающуюся перед timeAfter забыли

Re: Включение бойлера при условии...
Добавлено: Вт фев 28, 2017 9:40 pm
annakin
DimSun75 писал(а):Скобочку открывающуюся перед timeAfter забыли

Друг прости я не силён в ПХП, подскажи где я допустил ошибку с скобками, потому что ругается вот так:
Код: Выделить всё
Parse error: syntax error, unexpected '{' in /var/www/modules/scripts/scripts.class.php(139) : eval()'d code on line 1
Вот код:
Код: Выделить всё
if (timeAfter(getGlobal('Boler.TimeOn')){
if (getGlobal('Boler.status'))
{
setGlobal("Boler.status",0);
callMethod('Boler.switch');
}
else
{
if (!getGlobal('Boler.status')){
setGlobal("Boler.status",1);
callMethod('Boler.switch');
}
}
}
Всё ошибку нашли))
Пасиб земляку Сергею
Re: Включение бойлера при условии...
Добавлено: Вт фев 28, 2017 9:48 pm
DimSun75
Код: Выделить всё
if (timeAfter(getGlobal('Boler.TimeOn'))
{
if (getGlobal('Boler.status'))
{
setGlobal("Boler.status",0);
callMethod('Boler.switch');
}
}
else
{
if (!getGlobal('Boler.status'))
{
setGlobal("Boler.status",1);
callMethod('Boler.switch');
}
}
Re: Включение бойлера при условии...
Добавлено: Вт фев 28, 2017 9:56 pm
DimSun75
А это точно логика, какая нужна? По этому коду получается так: если время больше Boler.TimeOn, тогда если Boler.status==1, то делаем Boler.status=0. А если время меньше Boler.TimeOn, тогда если Boler.status == 0 делаем Boler.status=1. Так должно быть?
Re: Включение бойлера при условии...
Добавлено: Вт фев 28, 2017 10:10 pm
annakin
DimSun75 писал(а):Код: Выделить всё
if (timeAfter(getGlobal('Boler.TimeOn'))
{
if (getGlobal('Boler.status'))
{
setGlobal("Boler.status",0);
callMethod('Boler.switch');
}
}
else
{
if (!getGlobal('Boler.status'))
{
setGlobal("Boler.status",1);
callMethod('Boler.switch');
}
}
Вот правильный код:
Код: Выделить всё
if (timeAfter(getGlobal('Boler.TimeOn')))
{
if (getGlobal('Boler.status')){
setGlobal("Boler.status",0);
callMethod('Boler.switch');
}else{
if (!getGlobal('Boler.status')){
setGlobal("Boler.status",1);
callMethod('Boler.switch');
}
}
}
Шас работает супер, если время ниже указного то Алиса не включит бойлер если выше то включит при условии если я буду в радиусе 500 метров от дома.
Re: Включение бойлера при условии...
Добавлено: Вт фев 28, 2017 10:13 pm
annakin
DimSun75 писал(а):А это точно логика, какая нужна? По этому коду получается так: если время больше Boler.TimeOn, тогда если Boler.status==1, то делаем Boler.status=0. А если время меньше Boler.TimeOn, тогда если Boler.status == 0 делаем Boler.status=1. Так должно быть?
Ну я шас задал время и запустил сценарии и он отработал как положено.
Я только учу ПХП поэтому могу сделать гдето ошибку в Логике ))
Re: Включение бойлера при условии...
Добавлено: Вт фев 28, 2017 10:15 pm
DimSun75
annakin писал(а):
Вот правильный код:
Код: Выделить всё
if (timeAfter(getGlobal('Boler.TimeOn')))
{
if (getGlobal('Boler.status')){
setGlobal("Boler.status",0);
callMethod('Boler.switch');
}else{
if (!getGlobal('Boler.status')){
setGlobal("Boler.status",1);
callMethod('Boler.switch');
}
}
}
Шас работает супер, если время ниже указного то Алиса не включит бойлер если выше то включит при условии если я буду в радиусе 500 метров от дома.
Хм, сдается мне, что если время ниже указанного, и бойлер включен (ну так сложилось), то Алиса его выключит. При какой значении Boler.status бойлер включен?