Ability to configure serial path

This commit is contained in:
Jarno Rankinen 2023-03-20 20:29:00 +02:00
parent ed67cac11c
commit 545897211e
2 changed files with 8 additions and 4 deletions

View File

@ -38,6 +38,7 @@ var (
)
type Conf struct {
SerialAddress string `yaml:"serial_address"`
Port int `yaml:"port"`
SslCertificate string `yaml:"ssl_certificate"`
SslPrivatekey string `yaml:"ssl_privatekey"`
@ -276,6 +277,7 @@ func parseConfigFile() {
// Write the default configuration to $HOME/.config/enervent-ctrl/configuration.yaml
func initDefaultConfig(confpath string) {
config = Conf{
"/dev/ttyS0",
8888,
confpath + "/certificate.pem",
confpath + "/privatekey.pem",
@ -311,6 +313,7 @@ func configure() {
passwflag := flag.String("password", config.Password, "Password for HTTP Basic Authentication")
promflag := flag.Bool("enable-metrics", config.EnableMetrics, "Enable the built-in Prometheus exporter")
logflag := flag.String("logfile", config.LogFile, "Path to log file. Default is empty string, log to stdout")
serialflag := flag.String("serial", config.SerialAddress, "Path to serial console for RS-485 connection. Defaults to /dev/ttyS0")
// TODO: log file flag
flag.Parse()
config.Debug = *debugflag
@ -322,6 +325,7 @@ func configure() {
config.Password = *passwflag
config.EnableMetrics = *promflag
config.LogFile = *logflag
config.SerialAddress = *serialflag
usernamehash = sha256.Sum256([]byte(config.Username))
passwordhash = sha256.Sum256([]byte(config.Password))
if len(config.LogFile) != 0 {
@ -354,7 +358,7 @@ func configure() {
func main() {
log.Println("enervent-ctrl version", version)
configure()
device = *pingvin.New(config.Debug)
device = *pingvin.New(config.SerialAddress, config.Debug)
device.Update()
go device.Monitor(config.Interval)
serve(&config.SslCertificate, &config.SslPrivatekey)

View File

@ -183,7 +183,7 @@ func readCsvLines(file string) [][]string {
// Create modbus.Handler, store it in p.handler,
// connect the handler and create p.modbusclient (modbus.Client)
func (p *Pingvin) createModbusClient() {
func (p *Pingvin) createModbusClient(serial string) {
// TODO: read configuration from file, hardcoded for now
p.handler = modbus.NewRTUClientHandler("/dev/ttyS0")
p.handler.BaudRate = 19200
@ -613,11 +613,11 @@ func (p *Pingvin) Collect(ch chan<- prometheus.Metric) {
}
// create a Pingvin struct, read coils and registers from CSVs
func New(debug bool) *Pingvin {
func New(serial string, debug bool) *Pingvin {
pingvin := Pingvin{}
pingvin.Debug.dbg = debug
pingvin.buslock = &sync.Mutex{}
pingvin.createModbusClient()
pingvin.createModbusClient(serial)
log.Println("Parsing coil data...")
coilData := readCsvLines("coils.csv")
for i := 0; i < len(coilData); i++ {