Помощь в написании драйвера - шлюза с сетью LON через HTTP SOAP запросы
Здравствуйте!
Мне нужны рекомендации по оптимальной структуре драйвера и примеры по парсингу ответов исходя из формата сообщений.
Исходные данные:
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() у меня пока не дала результата, а как без этого парсить еще не обладаю знаниями...)
Заранее спасибо!
Customer support service by UserEcho