initial commit
This commit is contained in:
71
main.go
Normal file
71
main.go
Normal file
@@ -0,0 +1,71 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"github.com/joho/godotenv"
|
||||
"gopkg.in/yaml.v2"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
BaseUrl string `yaml:"base_url"`
|
||||
MqttUrl string `yaml:"mqtt_url"`
|
||||
MqttDevices []MqttDevice `yaml:"mqtt_devices"`
|
||||
DatasourceDir string `yaml:"datasource_dir"`
|
||||
ServeFromFS bool `yaml:"serve_from_fs"`
|
||||
}
|
||||
|
||||
type MqttDevice struct {
|
||||
Name string `yaml:"name"`
|
||||
Topic string `yaml:"topic"`
|
||||
Type string `yaml:"type"`
|
||||
Tag string `yaml:"tag"`
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
err := godotenv.Load()
|
||||
if err != nil {
|
||||
log.Println("No .env file found, all config coming from system env")
|
||||
}
|
||||
//
|
||||
//dashboardHost := os.Getenv("SENSOR_DASHBOARD_WEB_BASE_URL")
|
||||
//mqttServer := os.Getenv("SENSOR_DASHBOARD_MQTT_SERVER")
|
||||
//mqttTopicsJson := os.Getenv("SENSOR_DASHBOARD_MQTT_TOPICS")
|
||||
//datasourceDir := os.Getenv("SENSOR_DASHBOARD_DATASOURCE_DIR")
|
||||
|
||||
configPath := os.Getenv("SENSOR_DASHBOARD_CONFIG_PATH")
|
||||
if configPath == "" {
|
||||
configPath = "./config.yaml"
|
||||
}
|
||||
f, err := os.Open(configPath)
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
var config Config
|
||||
decoder := yaml.NewDecoder(f)
|
||||
err = decoder.Decode(&config)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
queries := InitDB(config.DatasourceDir)
|
||||
client, _ := InitMqtt(config.MqttUrl, config.MqttDevices, *queries)
|
||||
|
||||
handler, err := Api(*queries, config)
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
log.Println("Starting server on " + config.BaseUrl)
|
||||
log.Fatal(http.ListenAndServe(config.BaseUrl, handler))
|
||||
|
||||
client.Disconnect(250)
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user