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

View File

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

11
main.go
View File

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

View File

@ -24,7 +24,7 @@ func gw_router() {
router.Use(cors.Default())
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("/feedback", get_pj_api)
v1.GET("/totalWater", sb_api)
@ -929,48 +929,48 @@ type WEATHER struct {
}
// 获取天气情况api
func gw_weather_api(c *gin.Context) {
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")
var data WEATHER
rows.Next()
rows.Scan(
&data.SKYCON,
&data.ICON_URL,
&data.O3,
&data.CO,
&data.SO2,
&data.NO2,
&data.TEMPERATURE,
&data.HUMIDITY,
&data.PM25,
&data.PM10,
&data.CLOUDRATE,
&data.AQI,
&data.DSWRF,
&data.VISIBILITY,
&data.ULTRAVIOLET_DESC,
&data.PRES,
&data.COMFORT_DESC,
&data.WIND_DIRECTION,
&data.WIND_SPEED)
rows.Close()
var sum float32
var toinitdata float32 = 0.0
var data_buf = make(map[string]interface{})
for _, i := range conf.DEVICES_LIST {
if i[2] == "yunhorn_kq_c_v1" {
sum++
for k, j := range DEVICEDATAS.DATA[i[2]+"_"+i[3]].DATA {
if j != nil {
data_buf[k] = toinitdata
data_buf[k] = (data_buf[k].(float32) + j.(float32)) / sum
}
}
}
}
data.TEMPERATURE_INDOOR = data_buf["温度"]
data.HUMIDITY_INDOOR = data_buf["湿度"]
DEVICEDATAS.RUnlock()
c.JSON(http.StatusOK, gin.H{"status": http.StatusOK, "data": data})
}
// func gw_weather_api(c *gin.Context) {
// 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")
// var data WEATHER
// rows.Next()
// rows.Scan(
// &data.SKYCON,
// &data.ICON_URL,
// &data.O3,
// &data.CO,
// &data.SO2,
// &data.NO2,
// &data.TEMPERATURE,
// &data.HUMIDITY,
// &data.PM25,
// &data.PM10,
// &data.CLOUDRATE,
// &data.AQI,
// &data.DSWRF,
// &data.VISIBILITY,
// &data.ULTRAVIOLET_DESC,
// &data.PRES,
// &data.COMFORT_DESC,
// &data.WIND_DIRECTION,
// &data.WIND_SPEED)
// rows.Close()
// var sum float32
// var toinitdata float32 = 0.0
// var data_buf = make(map[string]interface{})
// for _, i := range conf.DEVICES_LIST {
// if i[2] == "yunhorn_kq_c_v1" {
// sum++
// for k, j := range DEVICEDATAS.DATA[i[2]+"_"+i[3]].DATA {
// if j != nil {
// data_buf[k] = toinitdata
// data_buf[k] = (data_buf[k].(float32) + j.(float32)) / sum
// }
// }
// }
// }
// data.TEMPERATURE_INDOOR = data_buf["温度"]
// data.HUMIDITY_INDOOR = data_buf["湿度"]
// DEVICEDATAS.RUnlock()
// c.JSON(http.StatusOK, gin.H{"status": http.StatusOK, "data": data})
// }