Необходим разработчик для реализации проекта на Wiren Board

Добрый день.
Требуется разработчик для разработки программы управления резистивной нагрузкой и сбора показаний с счетчик с использованием оборудования 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 к пользовательскому и администраторскому интерфейсу. Желательна мобильная версия интерфейса.
Три уровня пользователей
Администратор - полный доступ
Инженер - доступ к настройкам режимов времени, порогов температур и просмотру информации о потребленной электроэнергии
Пользователь - включение и отключение режима АУДИТ.

Что есть из оборудования в комплекте:

  1. Wiren Board 6 HW 6.7.2
  2. [WB-MSW v.3] - 2 шт
  3. [WB-MAP12E] - 2 шт
  4. [WB-MAP3E] - 1 шт
  5. [WB-UPS v.2] - 1 шт
  6. [WBIO-DO-R10A-8]- 1 шт
  7. [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
но требует для разграничения возможности просмотра данных - весьма серьезной доработки.

Цитата
Посмотрите в https://wirenboard.com/wiki/Rule_Examples#.D0.A1.D0.BB.D0.BE.D0.B6.D0.BD.D1.8B.D0.B5_.D0.BF.D1.80.D0.B0.D0.B2.D0.B8.D0.BB.D0.B0_.D1.81_.D1.80.D0.B0.D1.81.D0.BF.D0.B8.D1.81.D0.B0.D0.BD.D0.B8.D1.8F.D0.BC.D0.B8

Прошу подсказать, возможно ли в указанном примере в расписание параметры интервалов вносить через виджеты (виртуальные устройства) ?

Да, можно. “Расписание” - это по сути простое крон-правило, его аргументом может быть переменная с датой-временем.
Посмотрите (например) как я сделал (особеность - событие срабатывает даже если на его начало контроллер был выключен) тут:

Подскажите есть код основанный на примере из вики, но он не работает:

Цитата
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 в правиле.