В телеграмме техподдержка отвечает всем. По электронной почте аналогично. Про какую наживку Вы говорите?
Вид для печати
В телеграмме техподдержка отвечает всем. По электронной почте аналогично. Про какую наживку Вы говорите?
По последнему вопросу, опять же 1exan вам уже ответил, большое ему спасибо!
Если нужны данные разных устройств - можно использовать сценарии
Здесь есть несколько вариантов (скрипты во вложении):
Вариант 1: Датчиков ограниченное число - будем пересчитывать среднее в момент изменения значения любого из датчиков
Вариант 2: Датчиков много, среднее значение достаточно считать с заданной периодичностью
В этом случае не будем прописывать каждый датчик в скрипте, а будем выбирать по какому-то признаку:
можно по названию, размещению, метке.
Сценарий можно вызывать по расписанию с нужной периодичностью.
При таком подходе среднее значение доступно в любом месте, можно даже вывести график/отчет средних значений
Если же хотите все делать прямо на экране в точке визуализации, можно и так:
В привязке выберите для каждого датчика значение и состояние канала, например:
inData TE_001.value
inData1 TE_001.value#chstatus
inData2 TE_002.value
inData3 TE_002.value#chstatus
В окне Function поместите скрипт:
let sum = 0;
let n = 0;
if (inData1 == 0) {sum = sum + inData; n = n +1;}
if (inData3 == 0) {sum = sum + inData2; n = n +1;}
if (n>0) return Math.round(sum/n);
return '-';
JavaScript довольно простой язык, стандартный, результат виден сразу.
Наша документация содержит много примеров и даже краткое описание основ JS https://docs.intrascada.com/ru/pg338
Применение скриптов позволяет делать так как нужно вам, а не как замыслил и воплотил разработчик системы 🙂
Спасибо Владимир!
За примеры и особенно за ссылку, https://learn.javascript.ru/ очень дельно, буду вукуривать)))
...я в выходные сам чуток по "кодил" ...хотя и это громко сказано и тем не мене кое что получил)))
Но ваш код однозначно лучше, всё лаконично и почти понятно, обязательно его попробую!Вложение 85866
Вот и вопрос о замысле разработчика.
За собой заметил, что начало напрягать вводить значение/10, значение/100 и при командах обратное.
Мое мнение, что эта базовая вещь должна быть прописана в шаблоне устройства, которое мы настраиваем (простой пример модули Овен)
. И при использования таких же модулей в других проектах мы просто подгружает шаблон, где все уже прописано и не надо на каналах снова писать /10 или /100.
Ну и плюс скрипты уже для изменений других настроек, как раз для "программистов"
Собственно всему виной отсутствие времени и день.
на javasript написаны милиарды строк кода, там вкуривать уже не надо, достаточно задать вопрос ИИ и вот ответдля пользователя остается только адаптировать предложенный вариант и отладить на предмет ошибокЦитата:
Для решения задачи расчета средней температуры с учетом возможного отсутствия данных с некоторых датчиков, можно использовать следующий подход:
Как это работает:Код:// Создаем массив с данными датчиков
// null означает, что датчик не работает
const sensors = [22.5, null, 24.3, 23.1];
// Функция для расчета средней температуры
function calculateAverageTemperature(sensors) {
// Фильтруем массив, оставляя только валидные значения
const validTemperatures = sensors.filter(temp => temp !== null && temp !== undefined);
// Проверяем, есть ли хотя бы один работающий датчик
if (validTemperatures.length === 0) {
throw new Error('Нет работающих датчиков');
}
// Считаем сумму всех валидных температур
const sum = validTemperatures.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
// Вычисляем среднее значение
const average = sum / validTemperatures.length;
return average;
}
try {
const averageTemperature = calculateAverageTemperature(sensors);
console.log(`Средняя температура: ${averageTemperature.toFixed(2)}°C`);
} catch (error) {
console.error(error.message);
}
Массив датчиков содержит значения температур, где null означает нерабочий датчик.
Метод filter удаляет все null и undefined значения, оставляя только валидные температуры.
Метод reduce суммирует все валидные значения.
Деление происходит на количество валидных значений, которое автоматически определяется.
Преимущества такого подхода:
Гибкость: количество датчиков может меняться
Надежность: автоматически игнорирует нерабочие датчики
Ошибка обработки: выбрасывает ошибку, если все датчики не работают
Точность: результат округляется до двух знаков после запятой
Вы можете легко модифицировать этот код, добавив дополнительные проверки или изменяя способ обработки ошибок в зависимости от ваших требований.
Вы совершенно правы. Наши интеграторы используют ИИ для написания нетривиальных скриптов, конечно при наличии базовых знаний js. А некоторые наши разработчики используют ИИ для решения сложных задач по развитию системы. Особенно в этом плане интересен grok.
VladimirIS, это отлично. Осталось решить глобальную проблему по части интегратора или фрилансера. Но вы по данный вопрос просто проигнорировали.
Любое программирование это время, время это деньги. Не вижу интереса тратить свое время, а деньги платить другим. По этому очень интересует вариант раздельного лицензирования, вариант представления каналов как внутренних из собственного кода.
Спасибо capzap за знакомство с умным "пареньком" ))
ИИ, это сила!!!
...но и melky тогда прав в плане "готового продукта" за полтора ляма и последующего времени на "допилы" в купе с ИИ
Согласитесь, если сказано что "уневерсальный" и я его купил, то там должно быть всё, как в МастерСкада или Кодесюс...
И это еще повезёт если есть Ведущий типа Владимера который может послать в нужном направлении, на которое к стати тоже нужно время, а вот с ним всегда на производстве туговато увы!
Спасибо всем парни! Не сердитесь и давайте жить дружно!!!