Skip to content
Snippets Groups Projects
main.go 1.24 KiB
Newer Older
Jonas Leder's avatar
Jonas Leder committed
package main

import (
	"os"
Jonas Leder's avatar
Jonas Leder committed
	"time"
Jonas Leder's avatar
Jonas Leder committed

	_ "github.com/joho/godotenv/autoload"
	"jonasled.dev/jonasled/ems-esp-logger/database"
Jonas Leder's avatar
Jonas Leder committed
	"jonasled.dev/jonasled/ems-esp-logger/log"
	"jonasled.dev/jonasled/ems-esp-logger/messageworker"
Jonas Leder's avatar
Jonas Leder committed
	"jonasled.dev/jonasled/ems-esp-logger/mqttclient"
Jonas Leder's avatar
Jonas Leder committed
	"jonasled.dev/jonasled/ems-esp-logger/mqttserver"
Jonas Leder's avatar
Jonas Leder committed
	"jonasled.dev/jonasled/ems-esp-logger/queue"
Jonas Leder's avatar
Jonas Leder committed
	"jonasled.dev/jonasled/ems-esp-logger/server"
Jonas Leder's avatar
Jonas Leder committed
)

func main() {
Jonas Leder's avatar
Jonas Leder committed
	log.Init()
Jonas Leder's avatar
Jonas Leder committed
	queue.Init()
	if (os.Getenv("OUTPUT_DATABSE") != "" && os.Getenv("CLIENT_USE_SERVER") != "true") || os.Getenv("LOGGER_SERVER") == "true" {
		if os.Getenv("LOGGER_SERVER") != "true" {
			database.CreateInstance()
		}
Jonas Leder's avatar
Jonas Leder committed
	if os.Getenv("MQTT_SERVER_ENABLED") == "true" {
		log.Log.Info("Starting embedded MQTT server")
		mqttserver.Start()
	}

	if os.Getenv("LOGGER_CLIENT") != "false" && os.Getenv("LOGGER_SERVER") != "true" {
		mqttclient.Init()
		go messageworker.RunClient()
		for {
			time.Sleep(time.Second) // reduce CPU usage by adding a short sleep here instead of a empty for loop
		}
Jonas Leder's avatar
Jonas Leder committed
	}
Jonas Leder's avatar
Jonas Leder committed
	if os.Getenv("LOGGER_SERVER") == "true" {
		server.Init()
		go messageworker.RunServer()
Jonas Leder's avatar
Jonas Leder committed
		server.Run()
	} else {
		log.Log.Fatal("Either LOGGER_CLIENT or LOGGER_SERVER has to be enabled in config")
	}