Добрый день! Можно ли настроить WBMZ4-BATTERY так, чтобы при переходе на питание от аккумулятора он обеспечивал энергией только контроллер WirenBoard версии 7.3, без подачи питания на выходы Vout и 5Vout? GSM-модуль не используется. У меня подключено много внешних модулей, которые получают питание через шину RS-485 (питается через Vout), поэтому важно избежать их питания от аккумулятора.
Интересует возможность аппаратного или программного отключения этих выходов. Если это возможно, подскажите, как правильно реализовать такую настройку, и как это может повлиять на работу самого контроллера. Заранее спасибо!
Добрый день.
Да, можно, описать отключение V_out и +5V при переходе на питание от АКБ.
Естественно - если нагрузка подключенная к клеммам в пределах нагрузочной способности модуля WBMZ. Если она выше - то использовать эти клеммы нецелесообразно.
Какой расчетный ток потребляется?
Расчетный ток потребителей в разы превышает нагрузочную способность модуля WBMZ. Я понял - rules просто не успеет сработать. Однако стоит и внешний ИБП. У внешнего ИБП с нагрузкой все в порядке, он способен питать всю систему порядка 4 х часов. Но, порой и этого времени недостаточно, так работают у нас эл сети. Вот и хотелось, чтобы когда уже все ляжет - WirenBoard продолжал работать.
Да, может (есть вероятность) и не успеть.
Советую в таком случае питать то, чему не нужно непрерывное питание - прямо от БП.
Может кто помочь, есть у кого отработанный код (рулес)? ИБП 12 Вольт.
Логика примерно такая:
*** >= 21 В: считаем, что питание пришло в норму (24 В) от БП, сбрасываем таймер и включаем выход V_OUT.
*** (12 В … 13 В): работаем от аккумулятора (ИБП), если таймер не запущен — запускаем (3 часа). По истечении этого времени отключаем выход V_OUT.
*** < 11.5 В: немедленно отключаем V_OUT, потому что напряжение критически низкое.
*** нужно учесть повторное включение выключение ИБП
вот тут есть инструмент - сможете сами накидать себе правило
http://yaabutorin.temp.swtest.ru/editor
При выключении (в тч рулисом) Vout - WBIO-DO-SSR-8 будет продолжать работать от контроллера?
Есть какой-нибудь негатив или подводные камни, когда контроллер будет работать, а внешние устройства подключенные через Vout временно будут отключены (пока работает ИБП, нет 220 В в доме)? Ну не сработают реле (норм открытые) на открытие гаражных ворот - так двигатель ворот и так будет обесточен (работают при замкнутом реле) . Не буду знать температуру для работы реле электр теплого пола, так полы и так будут обесточены (норм открытые реле). Чего я могу не учесть?
Контроллер “понимает”, что устройства временно недоступны, чтобы избежать перегрузки сети или ошибок?
GPT предложил (устройства на /dev/ttyRS485-1 и /dev/ttyMOD1 - их мне и нужно временно перестать опрашивать) след код:
// Пороговые значения напряжения
var MIN_VOLTAGE = 12; // Минимальное напряжение (12 В)
var MAX_VOLTAGE = 22; // Максимальное напряжение (22 В)
// Переменная для хранения текущего состояния опроса
var pollingEnabled = true;
// Правило для управления опросом устройств на интерфейсах RS-485 и MOD1
defineRule("control_polling_based_on_vin", {
when: cron("@every 5s"), // Проверяем напряжение каждые 5 секунд
then: function () {
var voltage = parseFloat(dev["power_status/Vin"]); // Читаем напряжение из Vin
if (voltage < MIN_VOLTAGE && pollingEnabled) { // Если напряжение ниже 12 В и опрос ещё включён
log("Voltage is below " + MIN_VOLTAGE + "V (" + voltage.toFixed(2) + "V). Disabling polling...");
// Отключаем все устройства на /dev/ttyRS485-1
runShellCommand("wb-mqtt-confed set -o modbus:ttyRS485-1 enabled false");
// Отключаем все устройства на /dev/ttyMOD1
runShellCommand("wb-mqtt-confed set -o modbus:ttyMOD1 enabled false");
pollingEnabled = false; // Обновляем состояние
} else if (voltage > MAX_VOLTAGE && !pollingEnabled) { // Если напряжение выше 22 В и опрос отключён
log("Voltage is above " + MAX_VOLTAGE + "V (" + voltage.toFixed(2) + "V). Enabling polling...");
// Включаем все устройства на /dev/ttyRS485-1
runShellCommand("wb-mqtt-confed set -o modbus:ttyRS485-1 enabled true");
// Включаем все устройства на /dev/ttyMOD1
runShellCommand("wb-mqtt-confed set -o modbus:ttyMOD1 enabled true");
pollingEnabled = true; // Обновляем состояние
} else {
log("Voltage is within non-critical range (" + voltage.toFixed(2) + "V). No changes to polling.");
}
}
});
насколько помню - “when: cron(”@every 5s"), // Проверяем напряжение каждые 5 секунд" точно не прокатит.
Может кто помочь в написании верного кода?
GPT предложил изменить на:
// Пороговые значения напряжения
var MIN_VOLTAGE = 12; // Минимальное напряжение (12 В)
var MAX_VOLTAGE = 22; // Максимальное напряжение (22 В)
// Переменная для хранения текущего состояния опроса
var pollingEnabled = true;
// Правило для управления опросом устройств на интерфейсах RS-485 и MOD1
defineRule("control_polling_based_on_vin", {
whenChanged: "power_status/Vin", // Подписка на изменения значения напряжения
then: function (newValue) {
var voltage = parseFloat(newValue); // Читаем новое значение напряжения
if (voltage < MIN_VOLTAGE && pollingEnabled) { // Если напряжение ниже 12 В и опрос ещё включён
log("Voltage is below " + MIN_VOLTAGE + "V (" + voltage.toFixed(2) + "V). Disabling polling...");
// Отключаем все устройства на /dev/ttyRS485-1
runShellCommand("wb-mqtt-confed set -o modbus:ttyRS485-1 enabled false");
// Отключаем все устройства на /dev/ttyMOD1
runShellCommand("wb-mqtt-confed set -o modbus:ttyMOD1 enabled false");
pollingEnabled = false; // Обновляем состояние
} else if (voltage > MAX_VOLTAGE && !pollingEnabled) { // Если напряжение выше 22 В и опрос отключён
log("Voltage is above " + MAX_VOLTAGE + "V (" + voltage.toFixed(2) + "V). Enabling polling...");
// Включаем все устройства на /dev/ttyRS485-1
runShellCommand("wb-mqtt-confed set -o modbus:ttyRS485-1 enabled true");
// Включаем все устройства на /dev/ttyMOD1
runShellCommand("wb-mqtt-confed set -o modbus:ttyMOD1 enabled true");
pollingEnabled = true; // Обновляем состояние
} else {
log("Voltage is within non-critical range (" + voltage.toFixed(2) + "V). No changes to polling.");
}
}
});
Может кто за вознаграждение помочь?
Да, будет. Питание на WBIO программно не отключается.
Нет, кроме сообщений в лог о недоступности устройства.
Да, это описано в GitHub - wirenboard/wb-mqtt-serial: Wiren Board MQTT serial protocol driver
Я правильно понял, что в моем случае, в рулисе проще сделать выключение Vout и это будет норм, чем выключать опрос устройств на интерфейсах /dev/ttyRS485-1 и dev/ttyMOD1?
Выключение опроса - никак не повлияет на потребление устройст. Ну, на несколько процентов уменьшит, конечно. Но не выключит.
Не знаю как в Вашем ИБП, но очень нередко они имеют контроль уровня заряда.
При достижении установленного порога, скажем, процентов 10, умеет извещать питаемое устройство о критически низком уровне заряда. И тогда уже питаемое устройство принимает решение - снизить потребление, корректно остановиться или еще что-то (например, запустить генератор).
Не подскажите что-то из бюджетных и надежных, чтобы WB мог читать уровень заряда?
Написал и проверил (работает для моего случая) код:
var TITLE = "Правило выключения выходов V_OUT и 5V_OUT при падении напряжения"
var VIN_ADDR = "power_status/Vin" // Текущее напряжение питания WirenBoard
var V_OUT = "wb-gpio/V_OUT" // Состояние выхода питания V_OUT - питание устройств по шине RS-485 (модули и реле)
var V5_OUT = "wb-gpio/5V_OUT" // Состояние выхода питания V_5 - питание устройств по WARE (датчики температуры)
/**
* Включает или выключает выходы в зависимости от напряжения питания.
*
* - Если напряжение менее или равно 10 В, выходы выключаются.
* - Если напряжение больше или равно 22 В, выходы включаются.
* - В промежутке между 10 и 22 В ничего не происходит.
*
* vin - Текущее напряжение питания.
*/
defineRule(TITLE, {
whenChanged: VIN_ADDR,
then: function(vin) {
if (vin <= 10) { // Выключаем выходы при низком напряжении
dev[V_OUT] = false;
dev[V5_OUT] = false;
} else if (vin >= 22) { // Включаем выходы при напряжении выше 22 Вольт
dev[V_OUT] = true;
dev[V5_OUT] = true;
}
}
});
Ну, отлично. Судя по коду - работать будет. И гистерезис между значениями есть - не будет зря переключаться.
Теперь думаю, стоит ли мне устанавливать WBMZ4-BATTERY (уже куплен)? Устройство автоматически включается при снижении напряжения ниже 11 В. Получается, что оно и ИБП будут работать одновременно при напряжении, начиная с уровня ниже 11 В. Вопрос: даст ли это какое-либо преимущество в моём случае (рулисе)? На каком-то этапе оба устройства будут одновременно обеспечивать питание вплоть до 10 В (как предусмотрено в рулисе), пока рулис не отключит Vout.
Возможно ли настроить автоматику срабатывания WBMZ4-BATTERY так, чтобы она включалась при напряжении ниже 10 В?
P.S. После пропажи основного питания мой ИБП сначала выдаёт 11,2 В (из-за высокой нагрузки), затем быстро просаживается до 10,5 В и продолжает работать несколько часов, постепенно теряя напряжение до 9 В, после чего выключается.
От цели зависит, в общем. У меня, напрмер, WBMZ - это уже последний источник, на котором контроллер работает после источщения основного ИБП.
Нет, этот порог - аппаратный и не настраивается.