/
createjson.go
94 lines (76 loc) · 2.29 KB
/
createjson.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
86
87
88
89
90
91
92
93
94
package main
import (
"database/sql"
"encoding/json"
"flag"
"fmt"
"io/ioutil"
"log"
"os/user"
)
import _ "github.com/go-sql-driver/mysql"
type data struct {
Timestamp int
Value float32
}
func writeFile(d []data, name string) {
var j []byte
j, err := json.Marshal(d)
if err != nil {
log.Fatal(err)
return
}
if err := ioutil.WriteFile(name, j, 0644); err != nil {
log.Fatal(err)
}
}
func main() {
var insert_time int
var temp_bmp085, tmp_dth22, pressure, p_sea, humidity float32
u, _ := user.Current()
user := flag.String("user", u.Username, "user for connect to database")
pass := flag.String("password", "", "password for the user")
prot := "tcp"
host := flag.String("host", "localhost", "hostname")
port := flag.Int("port", 3306, "MySQL port")
dbname := flag.String("database", "sensoren", "name of the database")
flag.Parse()
netAddr := fmt.Sprintf("%s(%s:%d)", prot, *host, *port)
dsn := fmt.Sprintf("%s:%s@%s/%s?timeout=30s&strict=true&parseTime=true", *user, *pass, netAddr, *dbname)
db, err := sql.Open("mysql", dsn)
if err != nil {
panic(err.Error()) // Just for example purpose. You should use proper error handling instead of panic
}
defer db.Close()
// Prepare statement for reading data
stmt, err := db.Prepare("SELECT UNIX_TIMESTAMP(insert_time), temp_bmp085, tmp_dth22, pressure, p_sea, humidity FROM test WHERE insert_time > ?")
if err != nil {
log.Fatal(err)
}
defer stmt.Close()
rows, err := stmt.Query("2012-10-10 22:30:05")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
var j_temp_bmp085, j_tmp_dth22, j_pressure, j_p_sea, j_humidity []data
for rows.Next() {
err := rows.Scan(&insert_time, &temp_bmp085, &tmp_dth22, &pressure, &p_sea, &humidity)
if err != nil {
log.Fatal(err)
}
j_temp_bmp085 = append(j_temp_bmp085, data{insert_time, temp_bmp085})
j_tmp_dth22 = append(j_tmp_dth22, data{insert_time, tmp_dth22})
j_pressure = append(j_pressure, data{insert_time, pressure})
j_p_sea = append(j_p_sea, data{insert_time, p_sea})
j_humidity = append(j_humidity, data{insert_time, humidity})
}
if err = rows.Err(); err != nil {
log.Fatal(err)
}
writeFile(j_temp_bmp085, "temp_bmp085")
writeFile(j_tmp_dth22, "tmp_dth22")
writeFile(j_pressure, "pressure")
writeFile(j_p_sea, "p_sea")
writeFile(j_humidity, "humidity")
}