Files
luftfeuchtigkeitsdings/main.go
2026-03-09 01:26:52 +01:00

72 lines
1.5 KiB
Go

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)
}