Служба технической поддержки рассматривает каждую новую тему. До окончания проверки тема не видна пользователям форума.

+1

Помощь в написании драйвера - шлюза с сетью LON через HTTP SOAP запросы

Roman Fatykov 4 months ago in Tips and Tricks 0

Здравствуйте!

Мне нужны рекомендации по оптимальной структуре драйвера и примеры по парсингу ответов исходя из формата сообщений.

Исходные данные:


1. Нужен двусторонный обмен сообщениями с сетью Lon через шлюз - SmarServer2.0 (SS, в дальнейшем) посредством SOAP запросов. Опытными тестами мне удалось сформировать правильные HTTP пакеты и получить ответ от SS о состоянии запрашиваемой перменной.

2. В сети Lon обращение идет к перменным, входным и выходным. Т.е команду на включение канала мы отправляем на входную перменную, проверяем, что команда прошла по ответу. А фидбек смотрим по выходной переменной (Вот тут не знаю как правильно сделать - проверять фидбек после отправки команды или сделать службу по приёмке сообщений от SS с информацией о измененных переменных, там можно настроить отсылку сообщений на внешний сервер)

3. Обращение в сеть лон осуществляется по определенному адресу, но в моем проекте канал один, в строке запроса меняются только контроллеры и переменные в них. Пример адреса переменной: Buzharovo/Channel 1/SA2_CU3_Alpha/Virtual Functional Block/nviSvet2VnROsnov - первое выделенное - это имя контроллера, второе - перменная, nvi - означает, что входная

4. Пример скрипта с успешной связью с SS, через драйвер Custom HTTP (TCP), и ответ. 

SOAP Request exmpl.js
SOAP Response exmpl.txt


5. В примере выше запрашиваемая переменная имеет два поля Value и Switch. Но тут она используется только на включение канала и может быть либо (0.0 0) либо (100.0 1) в данном случае можно без склейки просто задавать нужные значения и отправлять. Но у меня еще есть переменные структурированные в которых лежат несколько значений (шесть) температур и есть необходимость передавать по одному значению, если меняется уставка. Есть два варианта передачи 1. формировать пакет из нового значения и указывать имя поля в структурированной переменной. 2. Формировать сообщение с новым значением и вставкой текущих значений других полей и целиком передавать обновленное значение структурированной перменной



Понимаю что запрос очень сложный, но у меня пока совсем мало знаний в JS и нужна начальная помощь в организации структуры драйвера, работы с каналами и фидбеками. И хотя бы на примере одного запроса алгоритм составления запроса исходя из имени контроллера и переменной в нём (Или оптимальнее в GUI драйвера создать переменную уже состоящую из двух частей - имени контроллера и перменной в нём) и парсинга ответа (Попытка исползовать метод XML() у меня пока не дала результата, а как без этого парсить еще не обладаю знаниями...)


Заранее спасибо! 



+1
Under review

iRidium Server + ИБП

Alexandr Zakharov 5 months ago in Tips and Tricks updated by Aleksandr Romanov (CTO) 5 months ago 1

Есть ли опыт мониторинга состояния источников бесперебойного питания? Какие ИБП можете посоветовать?
Я так понимаю, что большинство бесперебойников поддерживают мониторинг по протоколу UART (через USB или RS-232). Кто из производителей предоставляет API для сторонних разработок?

+1
Answered

Колесико-установка времени, даты, чего чего угодно

Виктор 7 months ago in Tips and Tricks updated by Владимир Давыдов 6 months ago 24

Здравствуйте! 

Никак не пойму, как лучше реализовать интерфейс установки даты или времени. Без клавиатуры, конечно. 

Напрашивается колесико вверх/вниз. Может, уже есть подобная реализация, где её можно найти?

+1
Under review

метод DELETE в AV HTTP не планируется?

Vyacheslav Shorin 7 months ago in Tips and Tricks updated by Vladimir Ovchinnikov 5 months ago 7

а то в одном API наткнулся. используется для удаления записей

+1
Declined

таблица символов

Дмитрий Марков 1 year ago in Tips and Tricks updated 11 months ago 5

Предлагаю сделать в редакторе таблицу символов по всем шрифтам, в которых есть пиктограммы. А то приходиться перебирать все известные и не известные шрифты и в итоге подходящего символа не находишь или он все таки есть в каком то шрифте...

+1
Answered

Удаленное управление с 3g

dmitrymalov 2 years ago in Tips and Tricks updated by Aleksandr Romanov (CTO) 8 months ago 10

Доброго дня !!

Подскажите пожалуйста, могу ли я подключиться к iridium server  через (интернет) удаленно,

в случае если нет возможности узнать или получить внешний ip адрес?

Если да то будьте любезны напишите как)

+1
Under review

iRidium для Modbus

Алексей Рябошапко 7 years ago in Tips and Tricks updated by Aleksandr Romanov (CTO) 2 years ago 4
Оборудование Modbus ТСP
Тип Feedback: Input Register
Можно ли в 16-ти битах передавать 16 дискретных сигналов?
Существуют инструменты для расшифровки значений каждого из 16бит?
Например, от оборудования получено значение Input Register - число 3. В двоичной системе это число будет выглядить как 0011.  Таким образом первый и второй биты имеют лог. 1.           
Вопрос состоит в том, можно ли состояние  графического элемента привязывать к отдельному биту а не к значению регистра.
+1
Answered

Управление яркостью экрана в режиме скринсейвера

Ekaterina (head of support) 4 years ago in Tips and Tricks updated by Aleksandr Romanov (CTO) 2 years ago 8

При показе и скрытии встроенного скринсейвера iRidium на iPad, можно менять яркость экрана, чтобы при включенном скринсейвере его светимость была минимальна. возможность управления яркостью есть только на iOS.


Включите опцию Скринсейвер в настройках проекта, выберите страницу-скринсейвер (например, можно поставить черную страницу, которая выполняет при нажатии команду PrevPage(). Команда нужна, чтобы при нажатии на скринсейвер он закрывался и показывал ранее открытые страницы и окна.


Создайте скрипт, добавьте в него команды управления скринсейвером:

// имя страницы скринсейвера
var scr_page = IR.GetItem("main");
// если страница появилась, уменьшим яркость экрана
IR.AddListener(IR.EVENT_ITEM_SHOW, scr_page,function()
{
IR.SetVariable("System.Display.Bright", 10)
});
// если страницу скрыли, увеличим яркость
IR.AddListener(IR.EVENT_ITEM_HIDE, scr_page,function()
{
IR.SetVariable("System.Display.Bright", 80)
});
// если приложение свернули, увеличим яркость
IR.AddListener(IR.EVENT_APP_ENTER_BACKGROUND, 0, function()
{
IR.SetVariable("System.Display.Bright", 80)
});
// если приложение развернули, увеличим яркость
IR.AddListener(IR.EVENT_APP_ENTER_FOREGROUND, 0, function()
{
IR.SetVariable("System.Display.Bright", 80)
});

+1

Русификация даты и дня недели

Ekaterina (head of support) 4 years ago in Tips and Tricks updated by Tatiana Kiselyova (expert) 1 month ago 3

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

function ru_date_time ()
{
var item = IR.GetItem("_Main room").GetItem("Item 1"); // item with date
var itemD = IR.GetItem("_Main room").GetItem("Item 2"); // item with day of week

var month = IR.GetVariable("System.Date.Month");
var dayofweek = IR.GetVariable("System.Date.DayOfWeek");

function set_month(cur_month) {
item.Text = IR.GetVariable("System.Date.Day")+" "+cur_month+" "+IR.GetVariable("System.Date.Year");
}

function set_dayofweek(day) {
itemD.Text = day;
}

switch(month)
{
case 1: set_month("января"); break;
case 2: set_month("февраля"); break;
case 3: set_month("марта"); break;
case 4: set_month("апреля"); break;
case 5: set_month("мая"); break;
case 6: set_month("июня"); break;
case 7: set_month("июля"); break;
case 8: set_month("августа"); break;
case 9: set_month("сентября"); break;
case 10: set_month("октября"); break;
case 11: set_month("ноября"); break;
case 12: set_month("декабря"); break;
}

switch(dayofweek)
{
case 0: set_dayofweek("воскресенье"); break;
case 1: set_dayofweek("понедельник"); break;
case 2: set_dayofweek("вторник"); break;
case 3: set_dayofweek("среда"); break;
case 4: set_dayofweek("четверг"); break;
case 5: set_dayofweek("пятница"); break;
case 6: set_dayofweek("суббота"); break;
}
} ru_date_time(); IR.SetInterval(600000, ru_date_time)

в 3 и 4 строках скрипта укажите графические элементы, которые должны отображать время и дату. К этим элементам не нужно привязывать системные токены напрямую.

0
Answered

Через BYOD панель не подключается к серверу в режиме Cloud Gate

Ivan Potapov 1 month ago in Tips and Tricks updated by Aleksandr Romanov (CTO) 1 month ago 3

Создаю BYOD объект, проекты для сервера и панели настроены на Cloud, проекты загружены в облако, захожу через QR код, а панель сервер не видит.

Если те же проекты загрузить в обычный проект, не BYOD, поменять в сервере объект, а в панели зайти через логин/пароль, то через Cloud все работает!