Ajout du monitoring de l'humidite du sol

This commit is contained in:
pimouss 2016-06-01 19:16:21 +02:00
parent cfe297612b
commit 0d83871ec0
4 changed files with 116 additions and 0 deletions

View File

@ -0,0 +1,25 @@
package controllers
import (
"github.com/astaxie/beego"
"git.kingpenguin.tk/chteufleur/datahouse.git/models/soilMoisture"
)
type AddSoilMoistController struct {
beego.Controller
}
func (c *AddSoilMoistController) Get() {
macArduino := c.GetString(soilMoisture.MacModuleWifiArduino)
pinArduino := c.GetString(soilMoisture.PinArduino)
valeurCapteur, _ := c.GetInt(soilMoisture.ValeurCapteur)
soilMoisture.AddData(pinArduino, macArduino, int64(valeurCapteur))
cpt := soilMoisture.GetCapteurByAdresse(macArduino, pinArduino)
if cpt == nil || cpt.Id == 0 {
soilMoisture.AddCapteur(macArduino, pinArduino)
}
c.Ctx.Output.Body([]byte(""))
}

View File

@ -0,0 +1,89 @@
package soilMoisture
import (
"github.com/astaxie/beego/logs"
"github.com/astaxie/beego/orm"
"git.kingpenguin.tk/chteufleur/datahouse.git/models/database"
"git.kingpenguin.tk/chteufleur/datahouse.git/models/utils"
"git.kingpenguin.tk/chteufleur/datahouse.git/models/variables"
"time"
)
const (
MacModuleWifiArduino = "MAC"
PinArduino = "PIN"
ValeurCapteur = "VAL"
)
var (
_, timezoneOffset = time.Now().Zone()
log = logs.NewLogger(10000)
)
func init() {
log.SetLogger(variables.LogType, variables.LogParams)
orm.RegisterModel(new(SoilMoistureTable),new(CapteurSoilMoistureTable))
orm.DefaultRowsLimit = 4500
}
//——————————————————————————————————————————————————————————————————————————————
// SoilMoistureTable
//——————————————————————————————————————————————————————————————————————————————
type SoilMoistureTable struct {
Id int64
HorodateGMT time.Time `orm:"auto_now;type(datetime)"`
CapteurPin string // Pin Arduino
MacId string // Id Bac à Fleur
ValeurCapteur int64
}
func AddData(pinCapteur string, macId string, valeur int64) {
log.Info("Add soilMoisture {BacMac: %s, pinArduino: %s, valeur: %d}", macId, pinCapteur, valeur)
o := orm.NewOrm()
o.Using(database.Alias)
ti := new(SoilMoistureTable)
ti.CapteurPin = pinCapteur
ti.ValeurCapteur = valeur
ti.MacId = macId
o.Insert(ti)
}
//——————————————————————————————————————————————————————————————————————————————
// CapteurSoilMoistureTable
//——————————————————————————————————————————————————————————————————————————————
type CapteurSoilMoistureTable struct {
Id int64
MacArduino string
PinArduino string
Description string
}
func GetCapteurByAdresse(mac string, pin string) *CapteurSoilMoistureTable {
o := orm.NewOrm()
o.Using(database.Alias)
ret := new(CapteurSoilMoistureTable)
var maps []orm.Params
_, err := o.QueryTable(new(CapteurSoilMoistureTable)).Filter("MacArduino", mac).Filter("PinArduino", pin).Values(&maps)
if err == nil {
for _, m := range maps {
ret.Id = utils.GetInt(m, "Id")
ret.MacArduino = utils.GetString(m, "MacArduino")
ret.PinArduino = utils.GetString(m, "PinArduino")
ret.Description = utils.GetString(m, "Description")
break
}
}
return ret
}
func AddCapteur(mac string, pin string) {
o := orm.NewOrm()
o.Using(database.Alias)
_, _ = o.Insert(&CapteurSoilMoistureTable{MacArduino: mac, PinArduino: pin})
}

View File

@ -24,6 +24,7 @@ var (
AddTempRoute = "/add/temp/" + sensorMacRegex + "/:val([0-9]+)"
AddRelayRoute = "/add/relay/" + sensorMacRegex
TeleinfoAddRoute = "/teleinfo/add"
AddSoilMoistRoute = "/add/soil" /* Route for soil moisture sensors*/
ViewTempRoute = "/view/temp"
ViewRelaysRoute = "/view/relay"

View File

@ -12,6 +12,7 @@ func init() {
beego.Router(variables.AddTempRoute, &controllers.AddTempController{})
beego.Router(variables.AddRelayRoute, &controllers.AddRelayController{})
beego.Router(variables.TeleinfoAddRoute, &controllers.AddTeleinfoController{})
beego.Router(variables.AddSoilMoistRoute, &controllers.AddSoilMoistController{})
beego.Router(variables.ViewTempRoute, &controllers.ViewTempController{})
beego.Router(variables.ViewRelaysRoute, &controllers.ViewRelayController{})