Ability to configure serial path
This commit is contained in:
parent
ed67cac11c
commit
545897211e
6
main.go
6
main.go
|
@ -38,6 +38,7 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Conf struct {
|
type Conf struct {
|
||||||
|
SerialAddress string `yaml:"serial_address"`
|
||||||
Port int `yaml:"port"`
|
Port int `yaml:"port"`
|
||||||
SslCertificate string `yaml:"ssl_certificate"`
|
SslCertificate string `yaml:"ssl_certificate"`
|
||||||
SslPrivatekey string `yaml:"ssl_privatekey"`
|
SslPrivatekey string `yaml:"ssl_privatekey"`
|
||||||
|
@ -276,6 +277,7 @@ func parseConfigFile() {
|
||||||
// Write the default configuration to $HOME/.config/enervent-ctrl/configuration.yaml
|
// Write the default configuration to $HOME/.config/enervent-ctrl/configuration.yaml
|
||||||
func initDefaultConfig(confpath string) {
|
func initDefaultConfig(confpath string) {
|
||||||
config = Conf{
|
config = Conf{
|
||||||
|
"/dev/ttyS0",
|
||||||
8888,
|
8888,
|
||||||
confpath + "/certificate.pem",
|
confpath + "/certificate.pem",
|
||||||
confpath + "/privatekey.pem",
|
confpath + "/privatekey.pem",
|
||||||
|
@ -311,6 +313,7 @@ func configure() {
|
||||||
passwflag := flag.String("password", config.Password, "Password for HTTP Basic Authentication")
|
passwflag := flag.String("password", config.Password, "Password for HTTP Basic Authentication")
|
||||||
promflag := flag.Bool("enable-metrics", config.EnableMetrics, "Enable the built-in Prometheus exporter")
|
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")
|
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
|
// TODO: log file flag
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
config.Debug = *debugflag
|
config.Debug = *debugflag
|
||||||
|
@ -322,6 +325,7 @@ func configure() {
|
||||||
config.Password = *passwflag
|
config.Password = *passwflag
|
||||||
config.EnableMetrics = *promflag
|
config.EnableMetrics = *promflag
|
||||||
config.LogFile = *logflag
|
config.LogFile = *logflag
|
||||||
|
config.SerialAddress = *serialflag
|
||||||
usernamehash = sha256.Sum256([]byte(config.Username))
|
usernamehash = sha256.Sum256([]byte(config.Username))
|
||||||
passwordhash = sha256.Sum256([]byte(config.Password))
|
passwordhash = sha256.Sum256([]byte(config.Password))
|
||||||
if len(config.LogFile) != 0 {
|
if len(config.LogFile) != 0 {
|
||||||
|
@ -354,7 +358,7 @@ func configure() {
|
||||||
func main() {
|
func main() {
|
||||||
log.Println("enervent-ctrl version", version)
|
log.Println("enervent-ctrl version", version)
|
||||||
configure()
|
configure()
|
||||||
device = *pingvin.New(config.Debug)
|
device = *pingvin.New(config.SerialAddress, config.Debug)
|
||||||
device.Update()
|
device.Update()
|
||||||
go device.Monitor(config.Interval)
|
go device.Monitor(config.Interval)
|
||||||
serve(&config.SslCertificate, &config.SslPrivatekey)
|
serve(&config.SslCertificate, &config.SslPrivatekey)
|
||||||
|
|
|
@ -183,7 +183,7 @@ func readCsvLines(file string) [][]string {
|
||||||
|
|
||||||
// Create modbus.Handler, store it in p.handler,
|
// Create modbus.Handler, store it in p.handler,
|
||||||
// connect the handler and create p.modbusclient (modbus.Client)
|
// 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
|
// TODO: read configuration from file, hardcoded for now
|
||||||
p.handler = modbus.NewRTUClientHandler("/dev/ttyS0")
|
p.handler = modbus.NewRTUClientHandler("/dev/ttyS0")
|
||||||
p.handler.BaudRate = 19200
|
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
|
// 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 := Pingvin{}
|
||||||
pingvin.Debug.dbg = debug
|
pingvin.Debug.dbg = debug
|
||||||
pingvin.buslock = &sync.Mutex{}
|
pingvin.buslock = &sync.Mutex{}
|
||||||
pingvin.createModbusClient()
|
pingvin.createModbusClient(serial)
|
||||||
log.Println("Parsing coil data...")
|
log.Println("Parsing coil data...")
|
||||||
coilData := readCsvLines("coils.csv")
|
coilData := readCsvLines("coils.csv")
|
||||||
for i := 0; i < len(coilData); i++ {
|
for i := 0; i < len(coilData); i++ {
|
||||||
|
|
Loading…
Reference in New Issue