去除sqllite3依赖

This commit is contained in:
fish 2019-12-11 13:15:50 +08:00
parent 68ad6e1fee
commit 4c9068c191
4 changed files with 142 additions and 139 deletions

View File

@ -77,6 +77,7 @@ var iconurl = conf.ICONURL
// 获取天气 // 获取天气
func get_weather() { func get_weather() {
result, _ := http.Get("https://api.caiyunapp.com/v2/TAkhjf8d1nlSlspN/113.960256,22.541454/realtime.json") result, _ := http.Get("https://api.caiyunapp.com/v2/TAkhjf8d1nlSlspN/113.960256,22.541454/realtime.json")
body, _ := ioutil.ReadAll(result.Body) body, _ := ioutil.ReadAll(result.Body)
log.Println(string(body)) log.Println(string(body))
@ -103,54 +104,55 @@ func get_weather() {
case "HAZE": case "HAZE":
icon = iconurl + "HAZE.png" icon = iconurl + "HAZE.png"
} }
insert_db(data, icon) log.Println("icon:", icon)
// insert_db(data, icon)
} }
func insert_db(data Weather, icon string) { // func insert_db(data Weather, icon string) {
stmt, _ := db.Prepare(`INSERT INTO weather ( // stmt, _ := db.Prepare(`INSERT INTO weather (
skycon, // skycon,
icon_url, // icon_url,
o3, // o3,
co, // co,
so2, // so2,
no2, // no2,
temperature, // temperature,
humidity, // humidity,
pm25, // pm25,
pm10, // pm10,
cloudrate, // cloudrate,
aqi, // aqi,
dswrf, // dswrf,
visibility, // visibility,
ultraviolet_desc, // ultraviolet_desc,
pres, // pres,
precipitation_nearest_distance, // precipitation_nearest_distance,
precipitation_nearest_intensity, // precipitation_nearest_intensity,
precipitation_local_intensity, // precipitation_local_intensity,
comfort_desc, // comfort_desc,
wind_direction, // wind_direction,
wind_speed) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`) // wind_speed) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`)
stmt.Exec( // stmt.Exec(
data.RESULT.SKYCON, // data.RESULT.SKYCON,
icon, // icon,
data.RESULT.O3, // data.RESULT.O3,
data.RESULT.CO, // data.RESULT.CO,
data.RESULT.SO2, // data.RESULT.SO2,
data.RESULT.NO2, // data.RESULT.NO2,
data.RESULT.TEMPERATURE, // data.RESULT.TEMPERATURE,
data.RESULT.HUMIDITY, // data.RESULT.HUMIDITY,
data.RESULT.PM25, // data.RESULT.PM25,
data.RESULT.PM10, // data.RESULT.PM10,
data.RESULT.CLOUDRATE, // data.RESULT.CLOUDRATE,
data.RESULT.AQI, // data.RESULT.AQI,
data.RESULT.DSWRF, // data.RESULT.DSWRF,
data.RESULT.VISIBILITY, // data.RESULT.VISIBILITY,
data.RESULT.ULTRAVIOLET.DESC, // data.RESULT.ULTRAVIOLET.DESC,
data.RESULT.PRES, // data.RESULT.PRES,
data.RESULT.PERCIPITATION.NEAREST.DISTANCE, // data.RESULT.PERCIPITATION.NEAREST.DISTANCE,
data.RESULT.PERCIPITATION.NEAREST.INTENSITY, // data.RESULT.PERCIPITATION.NEAREST.INTENSITY,
data.RESULT.PERCIPITATION.LOCAL.INTENSITY, // data.RESULT.PERCIPITATION.LOCAL.INTENSITY,
data.RESULT.COMFORT.DESC, // data.RESULT.COMFORT.DESC,
data.RESULT.WIND.DIRECTION, // data.RESULT.WIND.DIRECTION,
data.RESULT.WIND.SPEED) // data.RESULT.WIND.SPEED)
} // }

View File

@ -6,7 +6,7 @@ import (
"log" "log"
"os" "os"
_ "github.com/mattn/go-sqlite3" // _ "github.com/mattn/go-sqlite3"
// "strconv" // "strconv"
"math/rand" "math/rand"
@ -207,7 +207,7 @@ func init() {
DEVICEDATAS.Unlock() DEVICEDATAS.Unlock()
go dbdata_init() // go dbdata_init()
} }
@ -216,47 +216,45 @@ var traffic_data Traffic
var satisfaction_data Satisfaction var satisfaction_data Satisfaction
// 初始化评价数据和人流量数据 // 初始化评价数据和人流量数据
func dbdata_init() { // func dbdata_init() {
rows, err := db.Query("SELECT good, bad FROM satisfaction order by id DESC limit 1") // rows, err := db.Query("SELECT good, bad FROM satisfaction order by id DESC limit 1")
if err != nil { // if err != nil {
good = 1 // good = 1
bad = 0 // bad = 0
} else { // } else {
rows.Next() // rows.Next()
rows.Scan(&good, &bad) // rows.Scan(&good, &bad)
rows.Close() // rows.Close()
} // }
//在原本没有db文件的情况下调用 会报错 // //在原本没有db文件的情况下调用 会报错
// rows.Close() // // rows.Close()
rows, err = db.Query("SELECT traffic FROM traffic t where datetime(t.create_time) > datetime('now','start of day','-1 day') order by id DESC limit 1 ") // rows, err = db.Query("SELECT traffic FROM traffic t where datetime(t.create_time) > datetime('now','start of day','-1 day') order by id DESC limit 1 ")
if err != nil { // if err != nil {
traffic_data.TRAFFIC = 0 // traffic_data.TRAFFIC = 0
} else { // } else {
rows.Next() // rows.Next()
rows.Scan(&traffic_data.TRAFFIC) // rows.Scan(&traffic_data.TRAFFIC)
rows.Close() // rows.Close()
} // }
//在原本没有db文件的情况下调用 会报错 // }
// rows.Close()
}
// 定时更新评价数据和人流数据 // 定时更新评价数据和人流数据
func savedata_cron() { // func savedata_cron() {
T := time.Now().Format("2006-01-02") // T := time.Now().Format("2006-01-02")
stmt, err := db.Prepare("UPDATE satisfaction set good=?, bad=? ,create_time=? where id=(SELECT max(id) FROM satisfaction)") // stmt, err := db.Prepare("UPDATE satisfaction set good=?, bad=? ,create_time=? where id=(SELECT max(id) FROM satisfaction)")
check(err) // check(err)
stmt.Exec(&good, &bad, &T) // stmt.Exec(&good, &bad, &T)
stmt, err = db.Prepare("UPDATE traffic set traffic=?, create_time=? where id=(SELECT max(id) FROM traffic)") // stmt, err = db.Prepare("UPDATE traffic set traffic=?, create_time=? where id=(SELECT max(id) FROM traffic)")
check(err) // check(err)
stmt.Exec(&traffic_data.TRAFFIC, &T) // stmt.Exec(&traffic_data.TRAFFIC, &T)
} // }
// 每天0点插入一条数据 // 每天0点插入一条数据
//TODO 刚好有人流量数据 //TODO 刚好有人流量数据
func insertdata() { // func insertdata() {
T := time.Now().Format("2006-01-02") // T := time.Now().Format("2006-01-02")
stmt, _ := db.Prepare(`INSERT INTO traffic (traffic, create_time) values (?, ?)`) // stmt, _ := db.Prepare(`INSERT INTO traffic (traffic, create_time) values (?, ?)`)
stmt.Exec(&traffic_data.TRAFFIC, &T) // stmt.Exec(&traffic_data.TRAFFIC, &T)
traffic_data.TRAFFIC = 0 // traffic_data.TRAFFIC = 0
} // }

11
main.go
View File

@ -98,6 +98,8 @@ func main() {
} }
}) })
go ClearLog()
c.AddFunc("0, *, *, *, *, *", func() { c.AddFunc("0, *, *, *, *, *", func() {
ClearLog() ClearLog()
}) })
@ -114,8 +116,8 @@ func main() {
} }
}) })
c.AddFunc("0, */10, *, *, *, *", savedata_cron) // c.AddFunc("0, */10, *, *, *, *", savedata_cron)
c.AddFunc("0, 0, 0, *, *, *", insertdata) // c.AddFunc("0, 0, 0, *, *, *", insertdata)
c.AddFunc("0, 0, *, *, *, *", get_weather) c.AddFunc("0, 0, *, *, *, *", get_weather)
//定时更新today字段当前日期 //定时更新today字段当前日期
c.AddFunc("0, *, *, *, *, *", func() { c.AddFunc("0, *, *, *, *, *", func() {
@ -161,7 +163,7 @@ func check(err error) {
} }
func GetAllFile(pathname string) error { func GetAllFile(pathname string) error {
// log.Println("begin for folder ", pathname) log.Println("begin for folder ", pathname)
rd, err := ioutil.ReadDir(pathname) rd, err := ioutil.ReadDir(pathname)
sep := string(os.PathSeparator) sep := string(os.PathSeparator)
@ -193,7 +195,7 @@ func GetAllFile(pathname string) error {
} }
} }
GetAllFile(pathname + fi.Name() + sep) GetAllFile(pathname + sep + fi.Name() + sep)
} else { } else {
//RECORD_LOG_RETENTION_TIME conf //RECORD_LOG_RETENTION_TIME conf
// var duration = nowtime.Sub(loraNode.(LoraNode).TIME).Seconds() // var duration = nowtime.Sub(loraNode.(LoraNode).TIME).Seconds()
@ -215,6 +217,7 @@ func GetAllFile(pathname string) error {
} }
func ClearLog() { func ClearLog() {
folder := conf.RECORD_LOG_PATH folder := conf.RECORD_LOG_PATH
log.Println("logfile task begin ", folder) log.Println("logfile task begin ", folder)
if folder != "" && conf.RECORD_LOG_RETENTION_TIME > 0 { if folder != "" && conf.RECORD_LOG_RETENTION_TIME > 0 {

View File

@ -24,7 +24,7 @@ func gw_router() {
router.Use(cors.Default()) router.Use(cors.Default())
v1 := router.Group("/api/v1") v1 := router.Group("/api/v1")
{ {
v1.GET("/weather", gw_weather_api) // v1.GET("/weather", gw_weather_api)
v1.POST("/renliu", get_renliu_api) v1.POST("/renliu", get_renliu_api)
v1.POST("/feedback", get_pj_api) v1.POST("/feedback", get_pj_api)
v1.GET("/totalWater", sb_api) v1.GET("/totalWater", sb_api)
@ -929,48 +929,48 @@ type WEATHER struct {
} }
// 获取天气情况api // 获取天气情况api
func gw_weather_api(c *gin.Context) { // func gw_weather_api(c *gin.Context) {
DEVICEDATAS.RLock() // DEVICEDATAS.RLock()
rows, _ := db.Query("SELECT skycon, icon_url, o3, co, so2, no2, temperature, humidity, pm25, pm10, cloudrate, aqi, dswrf, visibility, ultraviolet_desc, pres, comfort_desc, wind_direction, wind_speed FROM weather order by id DESC limit 1") // rows, _ := db.Query("SELECT skycon, icon_url, o3, co, so2, no2, temperature, humidity, pm25, pm10, cloudrate, aqi, dswrf, visibility, ultraviolet_desc, pres, comfort_desc, wind_direction, wind_speed FROM weather order by id DESC limit 1")
var data WEATHER // var data WEATHER
rows.Next() // rows.Next()
rows.Scan( // rows.Scan(
&data.SKYCON, // &data.SKYCON,
&data.ICON_URL, // &data.ICON_URL,
&data.O3, // &data.O3,
&data.CO, // &data.CO,
&data.SO2, // &data.SO2,
&data.NO2, // &data.NO2,
&data.TEMPERATURE, // &data.TEMPERATURE,
&data.HUMIDITY, // &data.HUMIDITY,
&data.PM25, // &data.PM25,
&data.PM10, // &data.PM10,
&data.CLOUDRATE, // &data.CLOUDRATE,
&data.AQI, // &data.AQI,
&data.DSWRF, // &data.DSWRF,
&data.VISIBILITY, // &data.VISIBILITY,
&data.ULTRAVIOLET_DESC, // &data.ULTRAVIOLET_DESC,
&data.PRES, // &data.PRES,
&data.COMFORT_DESC, // &data.COMFORT_DESC,
&data.WIND_DIRECTION, // &data.WIND_DIRECTION,
&data.WIND_SPEED) // &data.WIND_SPEED)
rows.Close() // rows.Close()
var sum float32 // var sum float32
var toinitdata float32 = 0.0 // var toinitdata float32 = 0.0
var data_buf = make(map[string]interface{}) // var data_buf = make(map[string]interface{})
for _, i := range conf.DEVICES_LIST { // for _, i := range conf.DEVICES_LIST {
if i[2] == "yunhorn_kq_c_v1" { // if i[2] == "yunhorn_kq_c_v1" {
sum++ // sum++
for k, j := range DEVICEDATAS.DATA[i[2]+"_"+i[3]].DATA { // for k, j := range DEVICEDATAS.DATA[i[2]+"_"+i[3]].DATA {
if j != nil { // if j != nil {
data_buf[k] = toinitdata // data_buf[k] = toinitdata
data_buf[k] = (data_buf[k].(float32) + j.(float32)) / sum // data_buf[k] = (data_buf[k].(float32) + j.(float32)) / sum
} // }
} // }
} // }
} // }
data.TEMPERATURE_INDOOR = data_buf["温度"] // data.TEMPERATURE_INDOOR = data_buf["温度"]
data.HUMIDITY_INDOOR = data_buf["湿度"] // data.HUMIDITY_INDOOR = data_buf["湿度"]
DEVICEDATAS.RUnlock() // DEVICEDATAS.RUnlock()
c.JSON(http.StatusOK, gin.H{"status": http.StatusOK, "data": data}) // c.JSON(http.StatusOK, gin.H{"status": http.StatusOK, "data": data})
} // }