Страница 1 из 1
Передача данных в несколько объектов одним запрсом
Добавлено: Чт май 21, 2015 10:11 pm
Sail
Добрый день.
ардуино передает показания разных датчиков в большом количестве.
Возможно ли передать в запросе данные сразу двум или более объектам сразу, например:
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
Re: Передача данных в несколько объектов одним запрсом
Добавлено: Пт май 22, 2015 8:42 am
AHgpeu
по логике программирования нет. переменные затрут сами себя. можно передавать хоть миллион (утрирую, есть ограничения на длину $_GET) параметров, но с РАЗНЫМИ именами.
но можно одновременно (ну почти) в цикле отправить несколько одинаковых запросов на сервер
Re: Передача данных в несколько объектов одним запрсом
Добавлено: Пт май 22, 2015 10:24 am
sergejey
одним запросом можно вызвать сценарий или метод, а в нём уже раскидать параметры по разным свойствам разных объетков
например:
/objects/?script=myScript¶m1=value1¶m2=value2¶m3=values
в самом коде сценария myScript использовать значения $params['param1'], $params['param2'], $params['param3'] по своему усмотрению.
Re: Передача данных в несколько объектов одним запрсом
Добавлено: Пт май 22, 2015 3:54 pm
Sail
sergejey писал(а):одним запросом можно вызвать сценарий или метод, а в нём уже раскидать параметры по разным свойствам разных объетков
например:
/objects/?script=myScript¶m1=value1¶m2=value2¶m3=values
в самом коде сценария myScript использовать значения $params['param1'], $params['param2'], $params['param3'] по своему усмотрению.
Интересная идея, благодарю.
А с циклом есть одна проблема: при наличии сервера соединение происходит почти мгновенно и все быстренько отправляется а вот если сервер выключить то время ожидания подключения да еще и в цикле практически вешает ардуино.
Re: Передача данных в несколько объектов одним запрсом
Добавлено: Сб май 23, 2015 6:48 am
Alex
То, чего вы хотите уже давно реализовано и лежит на форуме.
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();
}