meteorolog issueshttps://git.cta.if.ufrgs.br/emm/meteorolog/-/issues2019-09-18T22:25:20Zhttps://git.cta.if.ufrgs.br/emm/meteorolog/-/issues/8Impossibilidade de envio de muitos dados para serial (via esp) e cartão microSD2019-09-18T22:25:20ZMarina Freitasmarina.freitas@ufrgs.brImpossibilidade de envio de muitos dados para serial (via esp) e cartão microSD
### O obejtivo
Meu objetivo é hackear o sistema de aquisição de dados da emm (exceto envio de dados apra o servidor) para usar em outra pesquisa na qual serão usados 7 DHTs e 1 LDR. As alterações feitas no hardware estão detalhadas ...
### O obejtivo
Meu objetivo é hackear o sistema de aquisição de dados da emm (exceto envio de dados apra o servidor) para usar em outra pesquisa na qual serão usados 7 DHTs e 1 LDR. As alterações feitas no hardware estão detalhadas aqui: http://cta.if.ufrgs.br/issues/481#note-10 . As alterações feitas no meteorolog estão aqui http://cta.if.ufrgs.br/issues/481#O-que-eu-fiz . As alterações feitas no esplogger estão aqui http://cta.if.ufrgs.br/issues/481#Esplogger . Vou descrever abaixo as alterações no espelogger por achar pertinente a este problema:
No arquivo meteorolog.cpp da pasta espelogger alterei as linhas 317-324, onde alterei o nome da variável "sensor_name" e do argumento dentro de "root_sensors". Além disso, adicionei esse código 6 vezes, trocando o nome do "sensor_name" e do argumetno de "root_sensors" (cada DHT recebeu o nome de uma letra, de A a G, e suas variaveis e apelidos também, por isso "ta" é a temperatura do DHT A, "tb" é a temperatura do DHT B, etc).
else if (sensor_name == "ta") {
root_sensors["DHT22_TEMP_A"] = value;
}
else if (sensor_name == "aha") {
root_sensors["DHT22_AH_A"] = value;
}
Os firmwares alterados estão aqui http://cta.if.ufrgs.br/attachments/4595/Firmware_esplogger_meteorolog.zip
Mais detalhes na tarefa: http://cta.if.ufrgs.br/issues/481
### O Problema
Grandes quantidades de dados (mais de 100 bytes) não estão sendo corretamente enviados para a serial (via espe) nem para o cartão microSD.
A partir da décima variável incluida (contando dt) (mais de 100bytes) no comando "meteorolog" ou "arduino read" enviado via esp, a resposta do esp começa a ser errada (até a nona a resposta é correta). Ao invés de responder o valor da variável, o valor da variável anterior é substituída por " " (espaço vazio).
Exemplo:
>[DEBUG] Sending command 'read,dt,l,ta,tb,tc,td,te,tf,tg' to Arduino.
>[INFO] Sucessfully updated 'LOGGER.CONF' (SPIFFS)
>[DEBUG] Reading arduino serial response..
>[INFO] Recieved: '2018-1-15 16:10:36,94.330406,26.500000,26.600000,26.700001,26.299999,26.900000,26.299999,26.799999' (119 bytes)
>[DEBUG] --- JSON created ---
>{}
>[INFO] Attemping upload to server..
>[HTTP] POST...
>[DEBUG] Response:
>[INFO] 122 bytes written at 'DATALOG.TXT'
A resposta foi a esperada, mas ao adicionar mais 1 variável:
>[DEBUG] Sending command 'read,dt,l,ta,tb,tc,td,te,tf,tg,aha' to Arduino.
>[INFO] Sucessfully updated 'LOGGER.CONF' (SPIFFS)
>[DEBUG] Reading arduino serial response..
>[INFO] Recieved: '2018-1-15 16:10:36,94.330406,26.500000,26.600000,26.700001,26.299999,26.900000,26.299999,,' (119 bytes)
>[DEBUG] --- JSON created ---
>{}
>[INFO] Attemping upload to server..
>[HTTP] POST...
>[DEBUG] Response:
>[INFO] 122 bytes written at 'DATALOG.TXT'
No exemplo abaixo isto não fica claro, mas nos testes seguintes os valores passavam a ser substituídos por " " regressivamente. A resposta quando todos as 16 variáveis são chamadas é:
>
Note que o envio do pedido da medida "ahc" foi corretamente recebido, mas a resposta foi " ". A adição de cada nova variável faz com que o valor da variável anterior seja substituído por " ". E assim por diante a cada nova variável adicionada até que todas são comidas ([INFO] Recieved: '2018-1-15 16:10:36,94.330406,,,,,,,,). Um efeito similar ocorre se chamar as medidas "ah" primeiro e as "t" depois.
A resposta para cada DHT separadamente foi correta.
### O que eu tentei fazer
Edições:
* Na linha 1833 do ArduinoJson.h troquei "256" por "1024"
* Na linha 290 do meteorolog.cpp, alterei o tamanho do StaticJsonBuffer, de 500 para 1000.
** Fiz o mesmo nas linhas 201, 233, 261, 290, 403.
** Tentei alterar para 2000 e para 5000, só na linha 290, depois em todas
A resposta permaneceu a mesma em todos os casos (sim, eu lembrei de fazer upload dos novos firmwares).
Marina Freitasmarina.freitas@ufrgs.brMarina Freitasmarina.freitas@ufrgs.br