Использование системы в различных ситуациях, вопросы программирования сценариев.
Модератор: 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 раз
Сообщение
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 раз
-
Контактная информация:
Сообщение
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 раз
Сообщение
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 раза
Сообщение
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); почемуто виснет апач. Так с вашей помощью что нибудь да соорудим.
