Middle-connector

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Middle-connector

Сообщение Alex » Ср фев 19, 2014 2:14 pm

Middle-connector это промежуточный слой между объектами М и js. Работает в обе стороны — транслирует текущие значения свойств объектов в js и изменяет значения свойств в М из js. А также вызывает скрипты М из js. Т.е полный фарш.

Позволяет работать с js объектами, processing-программами, 3D canvas и т. д. Т. е. со всем ПО, которое не имеет никакого представления об объектах в М.

Установка
--------------

Создать папку и поместить в неё файлы из архива

…/htdocs/middle

Вызов
---------

object_js = new middle_connector('object_mdm.method_mdm', 'label', 2000, 1);

, где 2000 — обновление раз в 2 секунды, 1 — кол-во знаков после запятой.

Получение значений:
---------------

object_js.value; - числовое значение
object_js.valueStr - строковое
object_js.valupdated; - время


Отправка:
--------

object_js.objectToSend = 'object_mdm'; // метод - 'update', значение - 'v'
object_js.valToSend = 200;
object_js.SendData();

или

object_js.objectToSend = 'object_mdm';
object_js.methodToSend = 'method_mdm';
object_js.valueToSend = 'value_mdm';
object_js.valToSend = 200;
object_js.MultiSendData();

запуск скрипта

object_js.scriptToSend = 'set_color_red';
object_js.SendScript();


Чтобы использовать во вкладках М
----------------------------

В файле

\htdocs\templates\application.html

дописать

<script language="javascript" type="text/javascript" src="/middle/middle_object.js"></script>
<script language="javascript" type="text/javascript" src="/middle/middle_connector.js"></script>
Вложения
middle13.zip
(2.3 КБ) 326 скачиваний
alexg31
Сообщения: 18
Зарегистрирован: Вт июн 18, 2013 10:16 am
Благодарил (а): 0
Поблагодарили: 0

Re: Middle-connector

Сообщение alexg31 » Пт май 30, 2014 7:32 pm

Alex, никак не могу запустить код

Код: Выделить всё

<head>
<script language="javascript" type="text/javascript" src="/middle/middle_object.js"></script>
<script language="javascript" type="text/javascript" src="/middle/middle_connector.js"></script>
<script type="text/javascript">
temper = new middle_connector('Bedroom_li1.Status', 'bbb1', 2000, 1);
alert (temper.value);
</script>
</head>
по алерту выдает пустое значение.
denis
Сообщения: 284
Зарегистрирован: Сб ноя 24, 2012 11:47 am
Благодарил (а): 28 раз
Поблагодарили: 28 раз

Re: Middle-connector

Сообщение denis » Ср июл 23, 2014 3:57 pm

Alex, тоже что-то не совладать с коннекторами.
Есть объект.свойство Window_South.StateText (текст - "Закрыто")
создаю в меню пункт, тип html в него вставляю код

Код: Выделить всё

<head>
<script type="text/javascript">
my_var = new middle_connector('Window_South.StateText', 'bbb1', 2000, 1);
alert (my_var.valueStr);
</script>
</head>
в результате пустое окно alert.
что не так делаю? в application.html нужны строки добавил.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Middle-connector

Сообщение Alex » Чт июл 24, 2014 6:48 am

Вот пример работающего кода, взятого прямо из системы.

Код: Выделить всё


<script language="javascript" type="text/javascript" src="/middle/middle_object.js"></script>
<script language="javascript" type="text/javascript" src="/middle/middle_connector.js"></script>


<script type="text/javascript">

cycle_test_value = new middle_connector('testOnNewMinute.value', '', 9000, 0);


function show9s()    {
    $("#cycle_value").html(cycle_test_value.valueStr);
}

$(document).ready(function(){
    setInterval('show9s()', 9000);
});

</script>



...



<font size="2" color="lightgray" face="Arial"><span id="cycle_value"><b>OK</b></span></font>
denis
Сообщения: 284
Зарегистрирован: Сб ноя 24, 2012 11:47 am
Благодарил (а): 28 раз
Поблагодарили: 28 раз

Re: Middle-connector

Сообщение denis » Чт июл 24, 2014 8:12 am

Спасибо! Заработало! (с) )))
PAV
Сообщения: 949
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 68 раз
Поблагодарили: 94 раза

Re: Middle-connector

Сообщение PAV » Ср ноя 26, 2014 1:46 pm

А у меня что-то никак не работает.
Вот так -

Код: Выделить всё

http://127.0.0.1/middle/getdata.php?p=sensorTemp12.temp 
Выдает значение.
А вот так нет, если создать файл test.html со следующим содержимым

Код: Выделить всё

<script language="javascript" type="text/javascript" src="/middle/middle_object.js"></script>
<script language="javascript" type="text/javascript" src="/middle/middle_connector.js"></script>


<script type="text/javascript">
my_var = new middle_connector('sensorTemp12.temp', 'bbb1', 2000, 1);
alert (my_var.valueStr);

</script>
Что не так может быть?
Как вообще проверить работоспособность скрипта?
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Middle-connector

Сообщение nick7zmail » Сб окт 17, 2015 5:14 pm

Alex писал(а): object_js = new middle_connector('object_mdm.method_mdm', 'label', 2000, 1);
Alex, помоги понять работу middle_connector'а.
1) 2000-это интервал в 2 сек. Если я выставляю этот параметр, мне далее в скрипте не нужно его снова вызывать, он сам раз в 2 сек будет запрашивать значение?
2) что за параметр "label"? Зачем он? Это имя свойства к которому запрос? Или что?
3) object_mdm.method_mdm - не обязательно метод должен быть? Если я хочу запросить свойство, я могу вызвать obj_mdm.value, при этом при запуске на выполнение

Код: Выделить всё

object_js.objectToSend = 'obj_mdm';
object_js.methodToSend = 'method_mdm';
object_js.MultiSendData(); 
метод method_mdm все равно отрабатывает. Зачем тогда запись вида object_mdm.method_mdm? В место нее можно использовать просто object_mdm? (не пробовал еще)
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Middle-connector

Сообщение olehs » Сб окт 17, 2015 5:38 pm

PAV писал(а): Что не так может быть?
Как вообще проверить работоспособность скрипта?
Запросы выполняются асинхронно, потому сразу после создания middle_connector значение не получишь. Между

Код: Выделить всё

my_var = new middle_connector('sensorTemp12.temp', 'bbb1', 2000, 1); 
и

Код: Выделить всё

alert (my_var.valueStr); 
нужно сделать задержку или получать значение по какому-то другому событию (как в примере Алекса)
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Middle-connector

Сообщение Alex » Сб окт 17, 2015 9:53 pm

1) 2000-это интервал в 2 сек. Если я выставляю этот параметр, мне далее в скрипте не нужно его снова вызывать, он сам раз в 2 сек будет запрашивать значение?
Совершенно верно
2) что за параметр "label"? Зачем он? Это имя свойства к которому запрос? Или что?
Рудимент и никак не используется, если я правильно помню
3) object_mdm.method_mdm - не обязательно метод должен быть? Если я хочу запросить свойство, я могу вызвать obj_mdm.value, при этом при запуске на выполнение
Там два варианта: либо

метод - 'update', значение - 'v'

либо полное описание что и куда посылается

object_js.objectToSend = 'object_mdm';
object_js.methodToSend = 'method_mdm';
object_js.valueToSend = 'value_mdm';
object_js.valToSend = 200;
object_js.MultiSendData();
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Middle-connector

Сообщение nick7zmail » Сб окт 17, 2015 10:01 pm

Alex писал(а):
1) 2000-это интервал в 2 сек. Если я выставляю этот параметр, мне далее в скрипте не нужно его снова вызывать, он сам раз в 2 сек будет запрашивать значение?
Совершенно верно
Если скрипт запускается сам, и обновляет свойство сам, зачем тогда кусок кода, который перезаписывает это же свойство еще раз?
Alex писал(а):Вот пример работающего кода, взятого прямо из системы.

Код: Выделить всё

...
function show9s()    {
    $("#cycle_value").html(cycle_test_value.valueStr);
}

$(document).ready(function(){
    setInterval('show9s()', 9000);
});
...
 
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить