Программирование слайдера.

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

Модератор: immortal

Ответить
gans
Сообщения: 37
Зарегистрирован: Вс янв 06, 2013 2:57 pm
Благодарил (а): 15 раз
Поблагодарили: 3 раза

Программирование слайдера.

Сообщение gans » Пн июл 07, 2014 9:21 am

Помогите чайнику в программирование. Имеем слайдер от 1 до 60 с шагом пять, при изменении положения он записывает свойства в kotel.tempKotel и запускает сценарий climatKontrol
Код сценария:

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

$now=getGlobal("kotel.tempKotel");
if ($now==0) { 
 getURL("http://192.168.253.212/command?3=GAZ0");
 }
 if ($now==5) { 
  getURL("http://192.168.253.212/command?3=GAZ5");
 }
 if ($now==10) { 
 getURL("http://192.168.253.212/command?3=GAZ10");
 }
 if ($now==15) { 
 getURL("http://192.168.253.212/command?3=GAZ15");
 }
 if ($now==20) { 
 getURL("http://192.168.253.212/command?3=GAZ20");
 }
 if ($now==25) { 
  getURL("http://192.168.253.212/command?3=GAZ25");
 }
 if ($now==30) { 
 getURL("http://192.168.253.212/command?3=GAZ30");
 }
 if ($now==35) { 
 getURL("http://192.168.253.212/command?3=GAZ35");
 }
 if ($now==40) { 
 getURL("http://192.168.253.212/command?3=GAZ40");
 }
 if ($now==45) { 
  getURL("http://192.168.253.212/command?3=GAZ45");
 }
 if ($now==50) { 
 getURL("http://192.168.253.212/command?3=GAZ50");
 }
 if ($now==55) { 
 getURL("http://192.168.253.212/command?3=GAZ55");
 }
 if ($now==60) { 
  getURL("http://192.168.253.212/command?3=GAZ60");
 }
Все это работает очень плохо. Может три раза отработать и перестать реагировать а если через пару часов дернуть слайдер может опять послать пару команд и опять отвалится. Помогите оптимизировать код или может есть другой вариант решения моей задачи. Спасибо.
PAV
Сообщения: 968
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 71 раз
Поблагодарили: 95 раз

Re: Программирование слайдера.

Сообщение PAV » Пн июл 07, 2014 9:57 am

Вот честно, логичнее сделать как-то так:
$now=getGlobal("kotel.tempKotel");
$cmdUrl = "http://192.168.253.212/command?3=" . $now;
getURL($cmdUrl,0);


вместо всех этих строк.
И я бы не в сценарий загнал бы все это, а в метод котла statusChanged
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: Программирование слайдера.

Сообщение LutsenkoDenis » Пн июл 07, 2014 12:19 pm

На сколько я понял, в первом примере берётся температура котла и дальше идёт обращение к урлу в зависимости от температуры с интервалом в 5 градусов.

В Вашем примере, также берется температура котла и с ней идёт обращение к урлу, но без учёта интервала в 5 граусов.

А что произойдет, если температура котла будет больше 60-ти градусов?
В смысле так и нужно, чтобы ничего не вызывалось после температуры более 60-ти градусов?

В остальном согласен - вынести всё в метод.
Я бы еще вынес IP адрес в настройки какие-нибудь. Чтобы не менять IP в коде если он изменится.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
PAV
Сообщения: 968
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 71 раз
Поблагодарили: 95 раз

Re: Программирование слайдера.

Сообщение PAV » Пн июл 07, 2014 12:48 pm

<b>Имеем слайдер от 1 до 60 с шагом пять</b> Не может быть температура kotel.tempKotel не кратна пяти.

С кодом я не вижу проблем, поставьте в конце проверку say($cmdUrl) и смотрите отправляет ли. Поставьте такую же проверку в ардуино, смотрите получает ли. Поставьте проверку доступности ардуины по пингу IP

У меня вызов, для примера, выглядит так:

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

$value=$this->getProperty("brightness");
$arip = gg("Arduino.IP");
$cmdUrl = "http://". $arip. "/command?1," . $value;
getURL($cmdUrl,0);
//say ($value);
 
gans
Сообщения: 37
Зарегистрирован: Вс янв 06, 2013 2:57 pm
Благодарил (а): 15 раз
Поблагодарили: 3 раза

Re: Программирование слайдера.

Сообщение gans » Пн июл 07, 2014 7:08 pm

Огромное спасибо! Сделал все в методе вот так:

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

$now=getGlobal("kotel.tempKotel");
$cmdUrl = "http://192.168.253.212/command?3=GAZ" . $now;
getURL($cmdUrl,0); 
И стало все отлично отрабатывать. Только вот при добавлении в конце say($cmdUrl); почемуто виснет апач. Так с вашей помощью что нибудь да соорудим. ;)
Ответить