Здравствуйте. Можно попросить вас написать скрипт для перевода одной величины в другую. К примеру берём освещённость, прибавляем какую-то величину и получаем итог… Вроде простой скрипт… Просто наши это будут делать долго… Редактировать скрипт вообще без проблем. И понимание его есть, а вот написать что-то своё пока что не получается
Вот пример:
//light_conversion.js
var sensor_light = "wb-ms_41/Illuminance"; // CHANGE_ME! устройство-датчик освещенности
defineVirtualDevice("light_conversion", {
title: "conversion",
cells: {
light_as_is: {
type: "text",
value: ""
},
light_converted: {
type: "text",
value: ""
},
},
});
defineRule("convert", { //название правила
whenChanged: sensor_light, //при изменении состояния
then: function (newValue, devName, cellName) { //выполняй следующие действия
newValue = Number(newValue); //Приведем к числу
dev["light_conversion/light_as_is"] = newValue.toString(); //выведем "как есть" приведя к строке
dev["light_conversion/light_converted"] = ((newValue+400)*1.6).toString();//выведем преобразованное как угодно. И выводим приведя к строке
}
});
Но освещенность уже в люксах. Нужен поправочный коэффициент? Его проще стразу в основном скрипте указывать, чтоб не помнить потом где оригинальный а где с поправкой.
Мы измеряем в микромолях на метр (или ещё куча других параметром освещённости). Суть в том, что чтобы перевести из люксов в ту величину, которая нам нужна, надо к значению освещённости в люксах прибавить ещё какую-то величину (60 с небольшим). Если это можно изменить, прибавив это поправочное число в основном скрипте, то подскажите пожалуйста, как это сделать? спасибо
Вот тут:
defineRule("sensor_light change", { //название правила
whenChanged: sensor_light, //При изменении измеренной освещенности - установим значения виртуального устройства.
then: function (newValue, devName, cellName) { //выполняй следующие действия
newValue = Number(newValue); //Приведем к числу
newValue = newValue+60; //Меняем уровень на коэффициент (прибавляем 60)
dev["light_"+grow_box]["Light_measured"] = newValue.toString(); //Записываем в виртуальное устройство
if ((dev["light_"+grow_box]["sunraiseProcess"]==true)||(dev["light_"+grow_box]["dayProcess"]==true)||(dev["light_"+grow_box]["sunsetProcess"]==true)){// если сейчас нужен свет
if (newValue>setPointLight) { // Если текущая освещенность больше уставки
//log.info("light_"+grow_box+"Light_measured BIG",newValue);
if (dev[dimmer_light]>dimmer_zeroValue){
dev[dimmer_light] -= dimmer_increment;
}
} else{ // если меньше
//log.info("light_"+grow_box+"Light_measured LOW",newValue);
if (dev[dimmer_light]<dimmer_maxValue){
dev[dimmer_light] += dimmer_increment;
}
}
dev["light_"+grow_box+"/Lamp power set"] = dev[dimmer_light];
}
}
});
Поменял. Спасибо. Сегодня запускаем одну полку стеллажа. Попробуем автоматику в действии. Сделаю видео, когда весь стеллаж будет готов
Промежуточные итоги такие: рассвет есть, закат есть поддержание освещённости есть. показатели с датчиков отладим по ходу дела, когда всё повесим. Это не проблема. Всё работает и это очень хорошо. Спасибо огромное за помощь. Единственная проблема, на данный момент- это когда закат заканчивается и на управляющие провода драйвера не подаётся напряжение, то светильники светят на 10% и не выключаются полностью. Вот обдумываем решение проблемы
По графику он должен регулироваться с 0. Может быть на выходе остаётся напряжение?
Смотрите в скрипт,
Вот это “нижний” порог диммера. На тот случай если диммирование начинается не с “0”. У вас какое значение там сейчас?
Я отлаживал на MDM, вам имеет смысл сделать “5” например. И какое напряжение на выходе модуля остается?
Надо померить мультиметром при подключенном к выходу модуля светильнике и при отключенном.
Если вход светильника подтягивается к напряжению (при отключении от выхода - светильник загорается) и проблема аппаратная - то возможно решением будет поставить резистор (подобрать, но не меньше 2 Ком!) от выхода модуля к GND.
И проверьте чтоб земля управляющего входа светильника точно и хорошо соединялась с землей контроллера.
Есть документация на используемый диммер?
можно ли поставить пороговое значение 0?
Я думал над этим. Возможно как 1 из решений.
Посмотрел документацию, там упомянут
внутренний потенциометр, может его надо подкрутить чтоб снизить минимальную яркость?
Да, можно.
Замкните входы диммирования между собой.
Если потухнет совсем - значит резистор скорее всего поможет. Если нет - значит надо разбираться с диммером.
По итогу в скрипте стоит 0. Напряжение остаётся, после заката, 0,66В. Возможно это конденсаторы. при замыкании управляющих проводов светильник тухнет. Скорее всего надо, как вы и сказали, резистор. Крутил диммер. Не тухнет. Попробуем в пн резистор. Любой не менее 2Ком?
По идее резистор нам частично “обрежет” максимальную яркость. Это не есть хорошо. Я откинул концы: выход из модуля контроллера=0. Если контакты не замкнуты, то яркость максимальная. Может быть есть вариант с каким-то реле, чтобы не потерять в яркости? Или может быть можно чуть поднять выход с модуля выше 10в?
Значит внутри самого диммера вход подтягивается к питанию.Так в норме де должно быть, собственно.
Нет, резистор не должен повлиять. Модуль все равно выдаст на выходе 10V. Но попробуйте - замкните резистором входы диммер. Если совсем потухнет - хорошо, поможет. Если нет - тогда уже подумаем про реле.
Согласен. В пн попробуем резистор
Кстати, подключаете выводы диммера к клеммам “ignd” и “1”?
Ignd и 3. Я сделал 4 одинаковые полки с 4 разными выходами, чтобы каждой полкой можно было отдельно управлять. Сейчас делаем 3 полку
Попробовал параллельно подключить резистор. Сильно падает яркость светильника и очень не корректно работает автоматика. Не выходит на заданное значение за выставленное время. У нас ещё есть 4 свободных аналоговых выхода. Можем задействовать их для подачи напряжения, к примеру, на реле
А какой номинал у резистора?
Попробовал 2.7 Ком - просаживает на вольт. Должно компенсироваться внутренней подтяжкой диммера.
С выхода модуля на землю (Ignd) модуля?
Да, но выходы напряжения, они не потянут реле.
Если хотите использовать подобную схему - то можно использовать клеммы А1-А4 самого контроллера. Реле (“обмотку”) -подключать между выводом “Vout” и А1-4.
Вообще если используете нестандартные диммеры - может быть использовать другой модуль? MAO4 умеет как PWM(ШИМ) так и аналоговый 0-10В выходы.
2.2Ком
да
Сейчас хотелось бы эффективно решить проблему именно этого стеллажа. В дальнейшем да, можно использовать другой модуль и реле. Пока что других идей у меня нет. Если у вас есть идеи, то с радостью их попробую
А при резисторе в 2,2 - яркость до нуля уменьшается?
Ну и надо попробовать 4,7 соответственно.
если закоротить управляющие провода резистором 2.2Ком, то яркость снижается сильно, но не гаснет. Если подключить параллельно к модулю с проводами, то гаснет, но предельная яркость сильно ниже. При этом при сценарии рассвет срабатывает очень странно. То есть за заданное время освещённость не выходит на заданную
А как это может помочь? не просядет напряжение ещё сильнее?