Добрый день.
Требуется разработчик для разработки программы управления резистивной нагрузкой и сбора показаний с счетчик с использованием оборудования wiren board.
Оборудование в проекте 2 датчика температуры и освещенности, 3 счетчика электроэнергии производства wiren, реле на 8 выходов wiren.
Здравствуйте, вам в каком виде проект нужен?
В виде программы для wiren board 6, какие есть варианты?
Вам именно программа управления визуальная нужна? Есть бесплатные сервисы, которые ставятся прямо на wb, есть платный но очень крутой за 15-16 тыс - iridium. Платный на много гибче и работает наверное со всеми существующими интерфейсами, что дает возможность расширения возможностей на будущее
Немного конкретики в желаниях бы
Можете написать в Телеграмм или ватсап +79207228899, или на почту a.tishin@exp365.ru - если конечно удобно
Более конкретное ТЗ нужно. Вот, посмотрите - как описывают желания:
Желательна визуализация
Управление 8 реле по условиям:
DO1 - управление по времени (к примеру включится в 09 часов выключится в 01 час ночи.
DO2 - управление по времени (к примеру включится в 09 часов выключится в 01 час ночи.
DO3 - управление по времени (к примеру включится в 09 часов выключится в 01 час ночи.
DO4 - управление по времени (к примеру включится в 09 часов выключится в 01 час ночи.
DO5 - управление наружным освещением по датчику освещения и времени.
DO6 - управление по времени (к примеру включится в 09 часов выключится в 01 час ночи.
DO7 - управление кондиционерами по времени и двум датчикам температуры снаружи и внутри
DO8 - управление тепловыми завесами по времени и двум датчикам температуры снаружи и внутри
Сбор информации с счетчиков Wiren Board
В проекте 2-4 счетчика по 4 канала трехфазного измерения, необходимо хранить и выводить как визуализация данные с счетчиков в форме графиков или таблиц.
Сбор информации с 1-2 счетчиков воды через сухой контакт и соответствующее устройство wiren.
Управление особыми режимами
Режим аудит - включение на определенный срок каналов реле на определенный временной промежуток без участия программы
Режим 24 часа - отключение временных условий для всех реле.
Пользовательский интерфейс
Доступ по wi-fi и ethernet к пользовательскому и администраторскому интерфейсу. Желательна мобильная версия интерфейса.
Три уровня пользователей
Администратор - полный доступ
Инженер - доступ к настройкам режимов времени, порогов температур и просмотру информации о потребленной электроэнергии
Пользователь - включение и отключение режима АУДИТ.
Что есть из оборудования в комплекте:
- Wiren Board 6 HW 6.7.2
- [WB-MSW v.3] - 2 шт
- [WB-MAP12E] - 2 шт
- [WB-MAP3E] - 1 шт
- [WB-UPS v.2] - 1 шт
- [WBIO-DO-R10A-8]- 1 шт
- [WB-MCM8] - 1 шт
Посмотрите в Примеры правил — Wiren Board
И в форме графиков и таблиц умеет интерфейс “из коробки”
https://wirenboard.com/wiki/Веб-интерфейс_Wiren_Board#History_.28.D0.98.D1.81.D1.82.D0.BE.D1.80.D0.B8.D1.8F_.D0.BF.D0.BE.D0.BA.D0.B0.D0.B7.D0.B0.D0.BD.D0.B8.D0.B9.29
Это надо дописывать
Веб-интерфейс есть, доступ и через wi-fi и ethernet.
Тут сложнее, хотя ограничение прав есть:
https://wirenboard.com/wiki/Веб-интерфейс_Wiren_Board#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0_.D0.B0.D0.B2.D1.82.D0.BE.D1.80.D0.B8.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.BD.D0.BE.D0.B3.D0.BE_.D0.B4.D0.BE.D1.81.D1.82.D1.83.D0.BF.D0.B0_.D0.BA_.D0.B2.D0.B5.D0.B1-.D0.B8.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D1.83_.D0.BA.D0.BE.D0.BD.D1.82.D1.80.D0.BE.D0.BB.D0.BB.D0.B5.D1.80.D0.B0
но требует для разграничения возможности просмотра данных - весьма серьезной доработки.
Прошу подсказать, возможно ли в указанном примере в расписание параметры интервалов вносить через виджеты (виртуальные устройства) ?
Да, можно. “Расписание” - это по сути простое крон-правило, его аргументом может быть переменная с датой-временем.
Посмотрите (например) как я сделал (особеность - событие срабатывает даже если на его начало контроллер был выключен) тут:
Подскажите есть код основанный на примере из вики, но он не работает:
Цитата
var hon = “wb-1/ON-H”;
var mon = “wb-1/ON-M”;
var hoff = “wb-1/OFF-H”;
var moff = “wb-1/OFF-M”;
(function() {
Schedules.registerSchedule({
“name” : “signboard”, // вывеска
“autoUpdate” : “1m”,
“intervals” : [
[ hon, mon, hoff, moff ], // в UTC, 15:30 - 23:30 MSK
]
});
Schedules.initSchedules();
// Вывеска и фасадное освещение
defineRule(“signboardOnOff”, {
when: function() {
return dev._schedules.signboard || true;
},
then: function (newValue, devName, cellName) {
log(“signboardOnOff newValue={}, devName={}, cellName={}”, newValue, devName, cellName);
var on = dev._schedules.signboard; //
dev["wb-gpio/EXT1_K5"] = on;
}
});
})()
И возможно ли в приведенном примере устанавливать интервалы постоянные включение (пример) утром 9-20 и выключение уже ночью в 1-30 ?
Добрый вечер (надеюсь у вас он добрый в отличие от меня)!
При перезагрузке приведенный пример с расписанием выдает ошибки, у вас есть то что работает сразу и хорошо?
Объявить забыли:
global.__proto__.Schedules = {};
Спасибо. А есть какая либо функция имитирующая реле времени суточное, так как передача значений от виртуального прибора к расписанию происходит единожды и после этого согласно Лога он не меняет расписание. Т.е. изменить расписание в течении дня без перезагрузки скрипта не получается.
Для того чтобы “поменять” нужно правило удалить и “пересоздать”.
То есть при изменении значения (в соответствующем правиле) приверяется наличие правила, если отсуствует создается, если присутствует - удаляется и тоже создается.
В понедельник скорее смогу набросать пример.
Спасибо Вам!
Пример скриптика для работы с правилами:
var cronRuleNum = null;
//Создадим виртуальное устройство для датавремени:
defineVirtualDevice("timer_control", {
title: "TimerControl", //
cells: {
CronString : { //Просто текстовое поле
type : "text",
value : "5 * * * *",
readonly: false,
},
}
});
//И правило, срабатывающее на изменения поля CronString
defineRule("CronStrngChanged", {
whenChanged: "timer_control/CronString",
then: function (newValue, devName, cellName) {
log.info("CronStrngChanged", newValue)
if (cronRuleNum) {//Если правило уже есть - отключим
log.info("MakeCron disable", cronRuleNum)
disableRule(cronRuleNum)
}
MakeCron(newValue)
}
});
//Однократно запустим функцию для начального создания правила.
log.info(dev["timer_control"]["CronString"])
MakeCron(dev["timer_control"]["CronString"])
function MakeCron (CronString){
log.info("MakeCron enter", CronString)
//Правило с кроном - создадим, присвоим идентификатор правила переменной.
cronRuleNum = defineRule("CronRule", {
when: cron(CronString),
then: function (newValue, devName, cellName) {
log.info("CronRule executed")//Тут и вызывается то, что хотим запустить с помощью cron
}
});
log.info("MakeCron after", cronRuleNum)
}
Ну естественно это просто демонстрация. Возможно надо разделить поля ввода на часы-минуты и “собирать” строку для crod в правиле.