Logo Logo ru
  • iRidi Pro
    Основные компоненты
    • Приложение i3 Pro
    • iRidi Pro Server
    • iRidi Studio
    • iRidium studio v. 1.3.8 (устаревшая версия)
    Java Script в iRidi
    • Руководство
    • Справочник
    • Примеры
    • JS драйвера
    другие
    • Личный Кабинет
    • iRidium Cloud
    • iRidium Transfer
    • Push-уведомления
    • Лучшая практика
    Лицензирование
    • Лицензирование и передача проекта
    • Оффлайн-лицензирование
    • Активация iRidi Pro Server
  • Продукты
    i3 lite
    • Приложение i3 lite
    • Регистрация и лицензирование
    • Сервер
    • Модули
    KNX Home Server
    • Приложение i3 KNX
    • KNX Home Server
    BUS77 HOME SERVER
    • Приложения Bus77 Home и Bus77 Lite
    • Bus77 Home Server
    Решения
    • BYOD - решение для гостиниц
    • Портал жителя - решение для МКД
    iRidi SCADA
    • iRidi SCADA
  • Bus77
    НАСТРОЙКА BUS77
    • Основы Bus77
    • Приложения Bus77 Home и Bus77 Lite
    • Работа с драйвером Bus77 в iRidi Studio
    • Настройка шины Bus77 в iRidi Studio
    ПРОТОКОЛ BUS77
    • Характеристики CAN (Bus77)
    • Описание протокола
    • Исходники на GitHub
    ОБОРУДОВАНИЕ BUS77
    • Каталог Bus77 Pro
    • Каталог Bus77 Lite
  • Поддерживаемое оборудование
    Драйверы
    • Список драйверов
    • ProAV драйвера
    • AV & Custom Systems
    • JS драйвера
    • Сторонние драйвера и фриланс
    Протоколы и интерфейсы
    • Голосовое управление
    • 1-Wire
    • BACnet IP
    • Bus77
    • KNX
    • KNX IP BAOS
    • Weinzierl kBerry
    • Microsoft Exchange
    • Modbus
    • MQTT
    • NFC
    • ODBC
    • Onvif
    • SIP
    • SNMP
    • Wake On Lan
    • Z-Wave
    • ZigBee
    Производители
    • AMX
    • AVCiT
    • Beckhoff ADS
    • Biamp Tesira
    • Bluesound
    • Casambi
    • BSS Harman
    • Clipsal
    • ControlArt 7Port
    • Crestron
    • DigiBird
    • Domintell
    • Duotecno
    • EIDE
    • EPSNET
    • Global Cache
    • HDL Buspro
    • Helvar
    • IEAST
    • INELS BUS
    • INELS Wireless
    • Intesis
    • Kleger
    • Kramer VIA
    • Kramer 3000
    • Larnitech
    • Legrand Netatmo
    • LG TV
    • Lutron
    • Lutron Homeworks QS
    • MyHome
    • Nest
    • Novastar
    • Panasоnic PTZ
    • Philips Dynalite
    • PJLink
    • Satel
    • SamsungTV
    • Sonos
    • Somfy
    • SpinetiX
    • Televic Conference
    • TIS
    • Tion
    • URRI
    • Velbus
    • Velocio
    • Vinteo
    • WyreStorm
    • WiiM
    • Xicato
    • Yamaha
    • ZONT
    • Z-Wave.me
    Протестированное оборудование
    • Панель HDL S57
    • Панель HDL S10
    • SIP-домофон
    • Akuvox
    • Arlight
    • Divus
    • QBic TD-1050 PRO
    • QBic TD-1060 Slim
    • QBic TD-1070
    • Sigur
    • Uni-Ubi
    • Velocio
  • Оборудование iRidi

    Серверы
    • HS Сервер
    • ProAV Control Processor Basic
    • ProAV Control Processor Advanced
    • Спецификация контроллеров UMC
    • Настройка контроллера UMC C2
    • Настройка контроллера UMC C3
    • Настройка контроллера HDL IntelliCenter 2 (UMC C4)
    Модули расширения
    • I-PX-RS1
    • I-PX-RS4
    • I-PX-IR3
    KNX
    • KNX Home Server
    • KNX IP Interface
    Панели управления
    • iRidium Panel 7
    • Touch Panel P3
    • Touch Panel P6
    • Touch Panel P8
    • Touch Panel P10
    • Tabletop Touch Panel 10
    • AV Remote Control
    ОБОРУДОВАНИЕ BUS77
    • Каталог Bus77 Pro
    • Каталог Bus77 Lite
    • Differences
Сайт iRidium mobile
Содержание
    Инструменты‌
    • Сведения о странице
    • Постоянная ссылка
    • Версия для печати
    • Спецстраницы
    • Связанные правки
    • Ссылки сюда
    Login / Create Account
    Материал из for iRidium developers
    Перейти к: навигация, поиск
    Эта страница является переводом страницы Demo schedule edit. Перевод выполнен на 100%.

    Содержание

    • 1 Редактирование расписания на панели управления
      • 1.1 Описание демо-проекта
      • 1.2 Настройка серверного проекта
      • 1.3 Настройка панельного проекта
      • 1.4 Тестирование системы

    Редактирование расписания на панели управления


    Расписание хранится в памяти сервера. Требуется изменять параметры расписания на экране смартфона или планшета. Для этого у платформы iRidium имеется решение.


    Описание демо-проекта


    Скачать демо-проект

    На экране панели размещены:

    • список событий Event list,
    • поле для вывода имени события Name,
    • индикатор состояния и переключатель Enabled,
    • два поля для вывода даты и времени начала и окончания события (Start и Finish),
    • два поля для ввода новых даты и времени Enter new date-time,
    • кнопка Update.


    Schedule edit01(2).png

    Список событий содержит в себе все события из расписания сервера. Пользователь может выбрать любое событие из списка, и данные этого события появятся в полях справа от списка.

    Пользователь вводит новые данные в поля Enter new date-time, переключателем Enabled выбирает состояние события (активно/неактивно) и затем нажимает кнопку Update. После этого новые данные отправляются в сервер, расписание обновляется и при успешном результате обновлённая информация о расписании возвращается в панель.

    Архив демо-проекта содержит два готовых проекта:

    • проект для сервера (файл Schedule_edit.sirpz)
    • проект для панели (файл Schedule_edit.irpz).

    Настройка серверного проекта


    1 Добавьте виртуальный канал EventData_to_server и виртуальный тег EventData_from_server.

    Schedule edit02.png

    2 Добавьте события в расписание:

    Schedule edit022.png

    3 Добавьте скрипт:

    var schedule = IR.GetScheduler("Schedule 1");
    // creating a string with schedule data
    var EventChanger = function() { 
       // writing schedule data in virtual tag
       this.Write = function(in_events) {
          var EventBuff = [];
          for(var i in in_events) {  
             EventBuff.push({
                "name": in_events[i].Name,
                "end": in_events[i].End,
                "start": in_events[i].Start,
                "enable": in_events[i].enable
             }); 
          }         
          IR.SetVariable("Server.Tags.EventData_from_server", JSON.Stringify(EventBuff));   
       }   
       // reading schedule data in virtual tag 
       this.Read = function(in_schedule, in_NewData) { 
          var data = JSON.Parse(in_NewData);
          var newData = JSON.Parse(data.join()); 
          EventEdit = in_schedule.GetEvent(newData.name);
          EventEdit.Start = newData.start;
          EventEdit.End = newData.end; 
          EventEdit.Enabled = newData.enable;
          EventEdit.Done();  // event update  */
       }  
    }
     
    var EventsObj = new EventChanger();
    // getting schedule data at server start
    IR.AddListener(IR.EVENT_START,0,function() {
      schedule = IR.GetScheduler("Schedule 1");
      EventsObj.Write(schedule.GetEvents());        
    });
     
    // getting new data from panel
    IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(in_sName, in_sValue) {
       var newData = in_sValue.split(',');
       EventsObj.Read(schedule, newData);
       EventsObj.Write(schedule.GetEvents()); 
    });
     
    // subscribing for tag changes
    IR.SubscribeTagChange("Server.Channels.EventData_to_server");

    Подробное описание JS методов работы с серверными сценариями и расписанием по ссылке.

    4 Сохраните проект.


    Настройка панельного проекта


    1 Добавьте драйвер iRidium Server. В параметре Source Project укажите сохранённый файл серверного проекта, в параметре Host - IP-адрес сервера.

    Schedule edit03.png

    2 Нажмите кнопку Sync With Server Project.

    Sync with server project first.png

    3 Добавьте графические элементы на поле экрана:

    Schedule edit04(2).png

    4 Добавьте скрипт:

    var Server = IR.GetDevice("iRidium Server");
    var ListBox = IR.GetItem("Page 1").GetItem("ListBox");
    var EventNameField = IR.GetItem("Page 1").GetItem("EventName");
    var EventStartField = IR.GetItem("Page 1").GetItem("EventStart");
    var EventFinishField = IR.GetItem("Page 1").GetItem("EventFinish");
    var EventStartFieldEdit = IR.GetItem("Page 1").GetItem("EventStartEdit");
    var EventFinishFieldEdit = IR.GetItem("Page 1").GetItem("EventFinishEdit");
    var UpdateButton = IR.GetItem("Page 1").GetItem("UpdateBtn");
    var Lamp = IR.GetItem("Page 1").GetItem("Lamp");
    var Switch = IR.GetItem("Page 1").GetItem("Switch");
    var EventsObj;
     
    // processing incoming and outgoing values for the server
    var EventChanger = function(in_list, in_server) {
       this.list = in_list;    //  link to GUI list with items and data    
       // read event data from virtual tag in JSON format and fill the list with items
       this.Read = function(in_ChannelName, in_Value) {  
          if (in_ChannelName == "EventData_from_server") {        
             this.events = JSON.Parse(in_Value);
             this.list.Clear();
             for (var event in this.events) {
                this.list.AddItem(null, {
                   "Item 1":
                   {          
                      Text: this.events[event].name
                   }
                }); 
             }   
             fill(0);   
          }
       }
       // write new date-times of event in virtual tag 
       this.Write = function(eventName, startNewTime, finishNewTime, enableEvent) {
          var newEventsData = {
                "name": eventName,
                "start": startNewTime,
                "end": finishNewTime,
                "enable": enableEvent
          };
          Server.Set("EventData_to_server", JSON.Stringify(newEventsData));
       }
     
       // populating the first item in the list
       IR.AddListener(IR.EVENT_ITEM_SELECT, ListBox, function(item, subitem) {
         fill(item);
       }, this);
     
       IR.AddListener(IR.EVENT_TAG_CHANGE, in_server, this.Read, this);
    }
     
    IR.AddListener(IR.EVENT_START,0,function() {
      EventsObj = new EventChanger(ListBox, Server);
    }); 
     
    // filling fields with data                                         
    function fill(index) { 
       var event = EventsObj.events[index]; 
       var startTime = new Date(event.start * 1000);
       var finishTime = new Date(event.end * 1000);
       var enableState = event.enable;
     
       EventNameField.Text = event.name;
       EventStartField.Text = startTime;
       EventFinishField.Text = finishTime;
       EventStartFieldEdit.Text = startTime;
       EventFinishFieldEdit.Text = finishTime;
       Lamp.Value = enableState;
       Switch.Value = enableState;
    }  
     
    // sending new data to server
    IR.AddListener(IR.EVENT_ITEM_PRESS, UpdateButton, function() {
       var eventName = EventNameField.Text;
       var startNewTime = Math.floor(new Date(EventStartFieldEdit.Text) / 1000);
       var finishNewTime = Math.floor(new Date(EventFinishFieldEdit.Text) / 1000);
       var enableEvent = Switch.Value; 
          if (startNewTime > 0 && finishNewTime > 0)
             EventsObj.Write(eventName, startNewTime, finishNewTime, enableEvent); 
          else 
             IR.Log("invalid date")
    });

    Тестирование системы

    Вы можете запустить серверный и панельный проекты на обычном компьютере. Серверный проект можно загрузить в iRidium server для Windows c помощью iRidium transfer. Панельный проект запускается в эмуляторе.

    Источник — «https://dev.iridi.com/index.php?title=Demo_schedule_edit/ru&oldid=110426»
    О нас
    Компания
    Команда
    История
    Философия
    Награды
    Партнерство
    Наши партнеры
    Партнерские программы
    Подать заявку на партнерство
    Продукты
    iRidium pro
    iRidium lite
    iRidium gate
    iRidium server
    Загрузки
    iRidium pro
    iRidium lite
    Другие версии
    Маркетинговые материалы
    Поддержка
    Онлайн курсы/Видео
    Рекомендуемое оборудование
    Другие версии
    iRidium pro
    Документация
    FAQ
    Форум
    iRidium lite
    Документация
    Форум
    Проекты
    Типовые проекты
    Умные здания
    Умные дома
    Специальные решения
    Найти дилера
    Новости
    Youtube
    Twitter
    VK
    Logo
    contact@iridi.com
    +7 (499) 322-73-29

    Политика конфиденциальности