Страница 4 из 5
Re: Помогите с программированием формулы!
Добавлено: Ср май 27, 2015 10:47 am
Controer
LutsenkoDenis писал(а):что-то я уже совсем ничего не понимаю

(
Можешь сделать экспорт класса с методами и прислать, чтобы я на своей машине смог протестить?
При сохранении кода ругается на 1 строку:
Parse error: syntax error, unexpected '<' in C:\_majordomo\htdocs/cached/febe0f66cb34e4e4e8dee10912abaf09.php on line 1
1 <?php
Re: Помогите с программированием формулы!
Добавлено: Ср май 27, 2015 10:52 am
LutsenkoDenis

lol
Re: Помогите с программированием формулы!
Добавлено: Ср май 27, 2015 11:08 am
Controer
Controer писал(а):LutsenkoDenis писал(а):что-то я уже совсем ничего не понимаю

(
Можешь сделать экспорт класса с методами и прислать, чтобы я на своей машине смог протестить?
При сохранении кода ругается на 1 строку:
Parse error: syntax error, unexpected '<' in C:\_majordomo\htdocs/cached/febe0f66cb34e4e4e8dee10912abaf09.php on line 1
1 <?php
Re: Помогите с программированием формулы!
Добавлено: Ср май 27, 2015 1:53 pm
LutsenkoDenis
Ну значит вот так:
Код: Выделить всё
/**
* Вычисляем скорость ветра по импульсам
* @param double|int $newImpulseValue Новое значение импульса
* @param double|int $oldImpulseValue Предыдущее значение импульса
* @return double|int
*/
function GetWindSpeedByImpulse($newImpulseValue, $oldImpulseValue)
{
$secPerImpulse = 10; // приходят каждые 10 секунд
$impulseToWindSpeedCoeff = 0.33; //коэффициент перерасчета импульсов в скорость ветра
$windSpeed = (($newImpulseValue - $oldImpulseValue) * $impulseToWindSpeedCoeff) / $secPerImpulse;
return $windSpeed;
}
/**
* Возвращает ID заначения
* @param mixed $objectID ID объекта
* @param mixed $propertyID ID свойства объекта
* @return int
*/
function GetPropertyValueID($objectID, $propertyID)
{
$propertyValueArr = SQLSelectOne("SELECT *
FROM pvalues
WHERE PROPERTY_ID = '" . $propertyID . "'
AND OBJECT_ID = '" . $objectID . "'");
$propertyValueID = isset($propertyValueArr["ID"]) ? $propertyValueArr["ID"] : -1;
return (int)$propertyValueID;
}
/**
* Возвращает предыдущее значение свойства объекта
* @param mixed $propertyValueID ID свойства
* @return mixed
*/
function GetPrevPropertyValue($propertyValueID)
{
$history = SQLSelect("SELECT h.VALUE
FROM phistory h
WHERE h.VALUE_ID = '". $propertyValueID . "'
AND h.ID = (select max(ID)-1
from phistory h2
where h2.VALUE_ID = h.VALUE_ID
)");
$prevHistoryValue = isset($history[0]["VALUE"]) ? $history[0]["VALUE"] : null;
return $prevHistoryValue;
}
// название объекта
const objectName = "ESP8266009c7f19";
// название свойства объекта
const propertyName = "counter";
// получаем объект
$obj = getObject(objectName);
// получаем ID свойства объекта
$propertyID = $obj->getPropertyByName(propertyName, $obj->class_id, $obj->id);
// получаем ID значения свойства
$propertyValueID = GetPropertyValueID($obj->id, $propertyID);
// если получили -1, то ID не найден. Пишем сообщение об ошибке.
if ($propertyValueID != -1)
{
// текущее значение свойства
$counterCurrValue = $obj->getProperty(propertyName);
// предыдущее значение свойства
$counterPrevValue = GetPrevPropertyValue($propertyValueID);
// получаем скорость ветра
$windSpeed = GetWindSpeedByImpulse($counterCurrValue, $counterPrevValue);
// записываем значение скорости ветра в свойство windspeed
$obj->setProperty("windspeed", $windSpeed);
// отладочное сообщение, если не нужно можно удалить
$message = "Объект: " . objectName . "<br />Свойство объекта: " . propertyName . "<br />Текущее значение свойства: " . $counterCurrValue;
$message .= "<br />Предыдущее значение свойства: " . $counterPrevValue;
$message .= "<br />Скорость ветра: " . $windSpeed;
echo $message;
}
else
{
echo "Не найдено ID свойства объекта";
}
Re: Помогите с программированием формулы!
Добавлено: Ср май 27, 2015 2:16 pm
layet
Как-то слишком сложно. Обращаться к параметрам нужно в методе wind_check. Там они будут доступны.
Обращаться так: $params['OLD_VALUE'] и $params['NEW_VALUE']
Re: Помогите с программированием формулы!
Добавлено: Ср май 27, 2015 2:32 pm
LutsenkoDenis
я не знал что можно обращаться из метода $params['OLD_VALUE'].
У меня работает так как я написал.
Re: Помогите с программированием формулы!
Добавлено: Чт май 28, 2015 6:42 am
Controer
Ну вот доигрался, загрузил код в метод расчета скорости и завис мой MoDO.
Грузиться, открываешь браузер и долго грузиться стартовая страница MoDO. Процессор загружен на 100 процентов.Комп висит. Появляется такая ошибка
Fatal error: Maximum execution time of 60 seconds exceeded in C:\_majordomo\htdocs\lib\mysql.class.php on line 147
Что делать? Как найти и исправить эту строку.
Какая вообще процедура восстановление базы. В папке \htdocs\backup есть папки с датами. В папке 3 подпапки сms, text, sounds и один текстовый файл db_terminal. Куда копировать эти файлы?
Re: Помогите с программированием формулы!
Добавлено: Чт май 28, 2015 9:10 am
LutsenkoDenis
ну... можно удалить метод из базы например, если дело в нем.
Через phpmyadmin
upd: Изменил у себя значение свойства, метод отработал, ничего не зависло. Скорее всего не из-за него.
Re: Помогите с программированием формулы!
Добавлено: Пт май 29, 2015 9:55 pm
Controer
LutsenkoDenis писал(а):Ну значит вот так:
Код: Выделить всё
/**
* Вычисляем скорость ветра по импульсам
* @param double|int $newImpulseValue Новое значение импульса
* @param double|int $oldImpulseValue Предыдущее значение импульса
* @return double|int
*/
function GetWindSpeedByImpulse($newImpulseValue, $oldImpulseValue)
{
$secPerImpulse = 10; // приходят каждые 10 секунд
$impulseToWindSpeedCoeff = 0.33; //коэффициент перерасчета импульсов в скорость ветра
$windSpeed = (($newImpulseValue - $oldImpulseValue) * $impulseToWindSpeedCoeff) / $secPerImpulse;
return $windSpeed;
}
/**
* Возвращает ID заначения
* @param mixed $objectID ID объекта
* @param mixed $propertyID ID свойства объекта
* @return int
*/
function GetPropertyValueID($objectID, $propertyID)
{
$propertyValueArr = SQLSelectOne("SELECT *
FROM pvalues
WHERE PROPERTY_ID = '" . $propertyID . "'
AND OBJECT_ID = '" . $objectID . "'");
$propertyValueID = isset($propertyValueArr["ID"]) ? $propertyValueArr["ID"] : -1;
return (int)$propertyValueID;
}
/**
* Возвращает предыдущее значение свойства объекта
* @param mixed $propertyValueID ID свойства
* @return mixed
*/
function GetPrevPropertyValue($propertyValueID)
{
$history = SQLSelect("SELECT h.VALUE
FROM phistory h
WHERE h.VALUE_ID = '". $propertyValueID . "'
AND h.ID = (select max(ID)-1
from phistory h2
where h2.VALUE_ID = h.VALUE_ID
)");
$prevHistoryValue = isset($history[0]["VALUE"]) ? $history[0]["VALUE"] : null;
return $prevHistoryValue;
}
// название объекта
const objectName = "ESP8266009c7f19";
// название свойства объекта
const propertyName = "counter";
// получаем объект
$obj = getObject(objectName);
// получаем ID свойства объекта
$propertyID = $obj->getPropertyByName(propertyName, $obj->class_id, $obj->id);
// получаем ID значения свойства
$propertyValueID = GetPropertyValueID($obj->id, $propertyID);
// если получили -1, то ID не найден. Пишем сообщение об ошибке.
if ($propertyValueID != -1)
{
// текущее значение свойства
$counterCurrValue = $obj->getProperty(propertyName);
// предыдущее значение свойства
$counterPrevValue = GetPrevPropertyValue($propertyValueID);
// получаем скорость ветра
$windSpeed = GetWindSpeedByImpulse($counterCurrValue, $counterPrevValue);
// записываем значение скорости ветра в свойство windspeed
$obj->setProperty("windspeed", $windSpeed);
// отладочное сообщение, если не нужно можно удалить
$message = "Объект: " . objectName . "<br />Свойство объекта: " . propertyName . "<br />Текущее значение свойства: " . $counterCurrValue;
$message .= "<br />Предыдущее значение свойства: " . $counterPrevValue;
$message .= "<br />Скорость ветра: " . $windSpeed;
echo $message;
}
else
{
echo "Не найдено ID свойства объекта";
}
Переустановил базу заново, записал в метод ваш скрипт, все,равно считает не правильно.
.
Re: Помогите с программированием формулы!
Добавлено: Пт май 29, 2015 10:01 pm
Controer
LutsenkoDenis писал(а):я не знал что можно обращаться из метода $params['OLD_VALUE'].
У меня работает так как я написал.
Куда вставлять $params['OLD_VALUE'], можете пример написать?
Получается надо делать так?
// получаем значение свойства counter
$counter['OLD_VALUE']=$this->getProperty("counter");
$counter['NEW_VALUE']=$this->getProperty("counter");
// вычисляем скороcть ветра
$windspeed = (($counter['NEW_VALUE'] - $counter['OLD_VALUE']) * 0.33) / 10;
// записываем значение скорости ветра в свойство wind_speed
$this->setProperty("windspeed", $windspeed);