... | ... | @@ -92,21 +92,7 @@ $ cd arduino-meteorolog |
|
|
```
|
|
|
Daqui em diante será assumido que você está dentro desta pasta ao executar os comandos `make`.
|
|
|
|
|
|
### 2. Prepare o ambiente de execução
|
|
|
|
|
|
* Instale ferramentas de sistema (apenas para Linux baseado em Debian):
|
|
|
```
|
|
|
$ make apt-install
|
|
|
```
|
|
|
|
|
|
* Instale o ambiente Python:
|
|
|
```
|
|
|
$ make setup
|
|
|
```
|
|
|
|
|
|
Para maiores detalhes, ou em caso de algum erro, consulte a wiki [prepare-venv](prepare-venv).
|
|
|
|
|
|
### 3. Configure o arquivo `settings.yaml`
|
|
|
### 2. Configure o arquivo `settings.yaml`
|
|
|
|
|
|
Presente na pasta raiz do projeto, esse arquivo contém todas as configurações necessárias para uso de todos os softwares inclusos no projeto.
|
|
|
|
... | ... | @@ -116,97 +102,51 @@ Em resumo, certifique-se de revisar pelo menos os seguintes intens: |
|
|
| --------------------- | -------------------------------------------------------------- |
|
|
|
| `SERVER/API_POST_URL` | Substitua `BID` pelo ID da sua placa conforme cadastrada em |
|
|
|
| | [dados.cta.if.ufrgs.br/emm](http://dados.cta.if.ufrgs.br/emm). |
|
|
|
| `LOGGER/INTERVAL` | Intervalo de tempo entre as execuções do logger. |
|
|
|
| `LOGGER/SENSORS` | Sensores cuja leitura será solicitada pelo logger. |
|
|
|
| `LOGGER/INTERVAL` | Intervalo de tempo entre as execuções do logger. |
|
|
|
| `ARDUINO/SERIAL_PORT` | Lista de uma ou mais portas seriais para tentar conexão. |
|
|
|
| `ARDUINO/BOARD_MODEL` | Modelo da placa Arduino de acordo com $ ino list-models |
|
|
|
|
|
|
Para maiores detalhes consulte a wiki [configure-settings](configure-settings).
|
|
|
|
|
|
### 4. Instale o firmware
|
|
|
|
|
|
Existem duas alternativas para alcançar esse objetivo.
|
|
|
|
|
|
#### 1ª Opção) IDE do Arduino
|
|
|
|
|
|
* Dentro da pasta meteorolog, abra o arquivo [meteorolog.ino](meteorolog/meteorolog.ino) utilizando a [IDE do Arduino](https://www.arduino.cc/en/Main/Software).
|
|
|
|
|
|
* Selecione a sua placa correta no menu "Tools" > "Board".
|
|
|
* Por exemplo: `Arduino Uno`, ou `Arduino Duemilanove`, etc.
|
|
|
|
|
|
* Selecione a porta USB na qual a placa está conectada, no menu "Tools" > "Port".
|
|
|
* Por exemplo, `/dev/ttyACMx` ou `/dev/ttyUSBx` (onde "x" é um número).
|
|
|
### 3. Instalação completa
|
|
|
|
|
|
* Clique no botão ![(-->)](http://cta.if.ufrgs.br/attachments/1725/arduino_upload_button_cut.png) para compilar o código e enviá-lo para a placa.
|
|
|
Tendo a placa placa conectada na porta USB conforme em `settings.yaml`, usuários de Linux baseado em Debian (ex: *Ubuntu*, *Mint*, *Debian*, etc) poderão realizar a instalação completa com o único comando:
|
|
|
|
|
|
* Se tudo deu certo (nenhuma menssagem de erro), abra o Monitor Serial no botão ![de lupa](http://cta.if.ufrgs.br/attachments/1726/serial-monitor-button-cut.JPG) para iniciar uma seção de comunicação com a placa.
|
|
|
* Ver wiki [serial-commands](serial-commands) para saber os comandos possíveis.
|
|
|
|
|
|
#### 2ª Opção) Linha de comando
|
|
|
|
|
|
* Certifique-se de ter a ferramenta [Ino Tool](inotool.org) disponível no sistema (precisa apenas uma vez):
|
|
|
```
|
|
|
$ make install-ino
|
|
|
```
|
|
|
|
|
|
* Edite o arquivo `logger/ino.ini` para configurar a porta serial e o modelo da placa (execute `$ ino list-models` para ver os modelos suportados).
|
|
|
|
|
|
* Compile e faça upload com:
|
|
|
```
|
|
|
$ make bu
|
|
|
```
|
|
|
|
|
|
Para maiores detalhes, ou em caso de erros, ver a wiki [terminal-build](terminal-build).
|
|
|
|
|
|
### 5. Execute o logger
|
|
|
|
|
|
Tendo o firmware instalado na placa, você pode partir para aquisição de dados utilizando o logger:
|
|
|
```
|
|
|
$ make run-logger
|
|
|
$ make install
|
|
|
```
|
|
|
Esse comando dará início à execução do logger, que consiste na repetição das seguintes operações:
|
|
|
|
|
|
1. Faz a leitura dos dados pela porta serial;
|
|
|
1. Valida os dados, ignorando leituras inválidas (sensor não encontrado, etc);
|
|
|
1. Decide se a data utilizada será do sistema ou do relógio `RTC_DS1307` presente da placa (preferível);
|
|
|
1. Salva a leitura atual em um arquivo local;
|
|
|
1. Tenta enviar a leitura para o servidor. Caso falhe, salva localmente e tenta de novo na próxima iteração.
|
|
|
> ATENÇÃO: A instalação pode levar alguns minutos.
|
|
|
|
|
|
> OBS: Cancele a execução com CTRL + C.
|
|
|
Em resumo, este comando fará o seguinte:
|
|
|
* Instalará as ferramentas necessárias no sistema (requer senha de root);
|
|
|
* Compilará e fará upload do firmware para a placa;
|
|
|
* Criará um daemon (processo de background) para o logger;
|
|
|
|
|
|
Por padrão os dados serão salvos dentro da pasta `data`, no arquivo `datalog.csv`.
|
|
|
|
|
|
### 6. Crie o daemon do logger
|
|
|
Se tudo deu certo, a última menssagem recebida deverá ser:
|
|
|
|
|
|
```
|
|
|
$ make deploy-logger
|
|
|
[meteorologger process is running on the background]
|
|
|
```
|
|
|
|
|
|
Um daemon é um processo que fica rodando em background e que em geral é programado para iniciar junto com o sistema operacional. Assim, basta ligar a máquina para que o logger seja iniciado automaticamente.
|
|
|
Para maiores detalhes, ou em caso de algum erro, consulte a wiki [instalation-breakdown](instalation-breakdown).
|
|
|
|
|
|
* Para acompanhar o estado atual da execução do daemon, execute:
|
|
|
```
|
|
|
$ make tail-logger
|
|
|
```
|
|
|
que simplemente monitora o arquivo `logs/execution.log`.
|
|
|
### 4. Monitore os dados
|
|
|
|
|
|
* Para desativar completamente o daemon, execute:
|
|
|
```
|
|
|
$ make undeploy-logger
|
|
|
```
|
|
|
* Monitore a execução do logger em background com:
|
|
|
```
|
|
|
$ make tail-log
|
|
|
```
|
|
|
|
|
|
* Usuários avançados podem utilizar a ferramenta `supervisorctl` para gerenciar os processos cadastrados no **supervisor** com grande versatilidade.
|
|
|
* OBS: O nome do processo gerado pelo deploy é `meteorologger`.
|
|
|
* Exemplo:
|
|
|
* Monitore a coleta de dados (salvos na pasta `arduino-meteorolog/data/`) com:
|
|
|
```
|
|
|
$ make tail-data
|
|
|
```
|
|
|
|
|
|
* Monitore o progresso da coleta de dados em um gráfico (requer `Gnuplot`) com:
|
|
|
```
|
|
|
$ make plot-data col=<C>
|
|
|
```
|
|
|
$ sudo supervisorctl
|
|
|
supervisor> avail
|
|
|
...
|
|
|
meteorologger in use auto 999:999
|
|
|
...
|
|
|
supervisor> status meteorologger
|
|
|
meteorologger RUNNING pid 8436, uptime 2:24:34
|
|
|
supervisor> restart meteorologger
|
|
|
meteorologger: stopped
|
|
|
meteorologger: started
|
|
|
``` |
|
|
\ No newline at end of file |
|
|
onde `<C>` deve ser o número da coluna que será plotada no eixo y.
|
|
|
|