Передача данных в несколько объектов одним запрсом

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

Модератор: immortal

Ответить
Sail
Сообщения: 8
Зарегистрирован: Ср фев 27, 2013 9:31 pm
Благодарил (а): 0
Поблагодарили: 0

Передача данных в несколько объектов одним запрсом

Сообщение Sail » Чт май 21, 2015 10:11 pm

Добрый день.
ардуино передает показания разных датчиков в большом количестве.
Возможно ли передать в запросе данные сразу двум или более объектам сразу, например:
192.168.1.100/objects/?object=temp1&op=m&m=tempChange&enabled=1&value=22&
object=temp2&op=m&m=tempChange&enabled=1&value=23
Аватара пользователя
AHgpeu
Сообщения: 117
Зарегистрирован: Чт мар 12, 2015 11:46 am
Благодарил (а): 26 раз
Поблагодарили: 16 раз

Re: Передача данных в несколько объектов одним запрсом

Сообщение AHgpeu » Пт май 22, 2015 8:42 am

по логике программирования нет. переменные затрут сами себя. можно передавать хоть миллион (утрирую, есть ограничения на длину $_GET) параметров, но с РАЗНЫМИ именами.
но можно одновременно (ну почти) в цикле отправить несколько одинаковых запросов на сервер
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Передача данных в несколько объектов одним запрсом

Сообщение sergejey » Пт май 22, 2015 10:24 am

одним запросом можно вызвать сценарий или метод, а в нём уже раскидать параметры по разным свойствам разных объетков
например:
/objects/?script=myScript&param1=value1&param2=value2&param3=values
в самом коде сценария myScript использовать значения $params['param1'], $params['param2'], $params['param3'] по своему усмотрению.
За это сообщение автора sergejey поблагодарил:
Amarok (Пт май 22, 2015 2:40 pm)
Рейтинг: 1.16%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Sail
Сообщения: 8
Зарегистрирован: Ср фев 27, 2013 9:31 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Передача данных в несколько объектов одним запрсом

Сообщение Sail » Пт май 22, 2015 3:54 pm

sergejey писал(а):одним запросом можно вызвать сценарий или метод, а в нём уже раскидать параметры по разным свойствам разных объетков
например:
/objects/?script=myScript&param1=value1&param2=value2&param3=values
в самом коде сценария myScript использовать значения $params['param1'], $params['param2'], $params['param3'] по своему усмотрению.
Интересная идея, благодарю.

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

Re: Передача данных в несколько объектов одним запрсом

Сообщение Alex » Сб май 23, 2015 6:48 am

То, чего вы хотите уже давно реализовано и лежит на форуме.

http://smartliving.ru/forum/viewtopic.p ... t=70#p4805

Отправка 14-и значений для разных объектов одним пакетом. Сделано потому, что у М беда с обработкой массовых входящих запросов.

Фрагмент кода, который формирует пакет:

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

      if (STT == stt0 && STP == stp0) {
        sprintf(buf, "GET /objects/?object=%s&op=m&m=update&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d HTTP/1.0",
        obj, "u", (int)dUIrms[0], abs(tmpUIrms[0]), 
        "p1", (int)dPWR[1], abs(tmpPwr[1]), "p2", (int)dPWR[2], abs(tmpPwr[2]), "p3", (int)dPWR[3], abs(tmpPwr[3]),
        "p4", (int)dPWR[4], abs(tmpPwr[4]), "p5", (int)dPWR[5], abs(tmpPwr[5]), "p6", (int)dPWR[6], abs(tmpPwr[6]),
        "p7", (int)dPWR[7], abs(tmpPwr[7]), "p8", (int)dPWR[8], abs(tmpPwr[8]), "p9", (int)dPWR[9], abs(tmpPwr[9]),
        "p10", (int)dPWR[10], abs(tmpPwr[10]), "p11", (int)dPWR[11], abs(tmpPwr[11]),
        "p12", (int)dPWR[12], abs(tmpPwr[12]), "p13", (int)dPWR[13], abs(tmpPwr[13]));
        sendHTTPRequest();
      } 
Ответить