meteorolog.py 1.86 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Controlador da estação meteorologica
# Por Rafael Pezzi
#  Centro de Tecnologia Acadêmica - UFRGS
#  http://cta.if.ufrgs.br
#
# Licença: GPL v3
#
# Baseado em projeto de Gilson Giuriatti
#  https://github.com/gilsong/labduino


from pylab import *
import time, serial, datetime

ser = serial.Serial('/dev/ttyUSB0', 115200)
time.sleep(2)

# Log de inicialização da estação
22
meteorologfile = open('meteorolog.log','a')
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
now=datetime.datetime.now()
meteorologfile.write(now.strftime("%Y-%m-%d %H:%M:%S")+" - Iniciando log meteorológico\n")


medida = []
temperatura = []
umidade_ar = []
umidade_solo = []
pressao = []

print "Iniciando Log da Estação Meterológica"

# Loop que realiza as medições
while True:
  try:
    # Temperatura
    ser.write('t')
    t = float(ser.readline().replace('\r\n',''))
  except KeyboardInterrupt:
    break

  try:
    # Umidade do ar
    ser.write('u')
    u_ar = float(ser.readline().replace('\r\n',''))
  except KeyboardInterrupt:
    break

  try:
    # Umidade do solo
    ser.write('s')
    u_s = int(ser.readline().replace('\r\n',''))
  except KeyboardInterrupt:
    break

  try:
    # Luminosidade
    ser.write('l')
    lum = int(ser.readline().replace('\r\n',''))
  except KeyboardInterrupt:
    break

  try:
    # Pressão
    ser.write('p')
    pressao = int(ser.readline().replace('\r\n',''))

    # Registra horário atual
    now=datetime.datetime.now()
 
    # Arquivo de log
    logfile = open('logfile.log','a') # Considere o caminho completo
    print now.strftime("%Y%m%d%H%M%S"),"\t",  t,"\t", u_ar,"\t", u_s, "\t", pressao, "\t", lum
    logfile.write(now.strftime("%Y%m%d%H%M%S")+"\t"+str(t)+"\t"+str(u_ar)+"\t"+str(u_s)+"\t"+str(pressao)+"\t"+str(lum)+'\n')
    logfile.close()
    # Aguarda para iniciar outra medida
    time.sleep(59)
  except KeyboardInterrupt:
    break


ser.close();