Страница 1 из 1

создание строки для передачи на удаленный webserver

Добавлено: 10 июл 2018, 10:33
leaner
Начал делать новый проект для дачи
и вот дошел до момента передачи данных на удаленный сервер.
Строка должна выглядеть вот так:

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

"GET /objects/?script=espdata&idesp=ESP826600182272&hostname=ESP00182272&dhtt1=15.2&dhth1=61.2&bmpt=16.7&bmpp=754.91&dsw1=14.5&uptime=1444200&errconn=41&wanip=192.168.2.119&freemem=33696&ver=0.1.1_19:37:43_30.04.2018&vdd=940&rssi=-73 HTTP/1.1" 200 203 "-" "ESP8266"
создал блок сложения строки (во вложении и проект )

при компиляцмм получаем смущает одно... лишние символы в строке передачи

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

if (_SVFC1needSend) {
if (_SVFC1needSend) {
Udp.beginPacket( _destIp1, 80);
if(_SVFC1needSend) {
_SVFC1needSend = 0;
 Udp.write (1);
 Udp.print (1);
 Udp.write (2);
 Udp.print (((String(""GET /objects/?script=espdata&idesp=ESP826600182290&hostname=ESP00182290")) + (String("&dsw1=")) + (_gtv1) + (String("&dsw2=")) + (_gtv2) + (String("&dsw2=")) + (_gtv3) + (String("&bmpp=")) + (_gtv6) + (String("&pol=")) + (_gtv5) + (String("&chA=")) + (_gtv4) + (String("""))));
 Udp.write (3);
 Udp.print (134208981);
 Udp.write (4);
}
Udp.endPacket();
Как правильно формировать строку для передачи?
Проверить пока нечем, все комплектующшие пока едет

создание строки для передачи на удаленный webserver

Добавлено: 10 июл 2018, 10:47
Berserker
Была такая же проблема пришлось ручками редактировать, блок сложения больше 10 входов почему-то не захотел работать. Складывал в строку просто print и последний делал println

создание строки для передачи на удаленный webserver

Добавлено: 10 июл 2018, 11:00
Cancertanly
ну так вы из константы на первом входе сложения уберите лишние символы
[spoiler]
2018-07-10 (4).png
[/spoiler]

создание строки для передачи на удаленный webserver

Добавлено: 10 июл 2018, 11:21
НовыйUser
Есть тема "баг двойных кавычек" )

создание строки для передачи на удаленный webserver

Добавлено: 10 июл 2018, 11:27
Sancho
Berserker писал(а): 10 июл 2018, 10:47Была такая же проблема пришлось ручками редактировать, блок сложения больше 10 входов почему-то не захотел работать. Складывал в строку просто print и последний делал println
Думаю, дело не в количестве переменных, а в количестве символов, т.е. размере буфера UART.
Для лечения подобного в I2C "лечил" библиотеку.

создание строки для передачи на удаленный webserver

Добавлено: 11 июл 2018, 06:00
Berserker
Sancho писал(а): 10 июл 2018, 11:27
Berserker писал(а): 10 июл 2018, 10:47Была такая же проблема пришлось ручками редактировать, блок сложения больше 10 входов почему-то не захотел работать. Складывал в строку просто print и последний делал println
Думаю, дело не в количестве переменных, а в количестве символов, т.е. размере буфера UART.
Для лечения подобного в I2C "лечил" библиотеку.
Хорошо бы тогда это описать в хелпе, а то сделал и получил фигню - расстройство, если не знаешь основ программирования.

создание строки для передачи на удаленный webserver

Добавлено: 11 июл 2018, 08:58
grin-mpx
Проблемы начинаются еще на этапе создания страниц и переменных на сервере. Я тоже столкнулся с подобным. Сейчас стараюсь
максимально сокращать имена переменных , там где к примеру Ваша строка:
String(""GET /objects/?script=espdata&idesp=ESP826600182290&hostname=ESP00182290
может как минимум выглядеть так:
String(""GET /obj/?script=esd&id=ES800182290&hn=ES00182290
Когда были проблемы с отправкой 8 данных графиков на thingspeak.com, то из-за большой длины я делил отправку на 2 части по 4 значения.
Еще стараюсь не собирать строку непосредственно на (перед) пользовательским блоком, а сначала при сборке на верхней плате записываю в промежуточную переменную, а ее уже подключаю к передаче. Так-же приходилось менять размер буфера, главное не забыть в проекте на плате сделать текстовую сноску, что размер буфера изменен, а то откроешь спустя пол года на другом компе и будешь долго вспоминать почему данные принимаются не полностью :D