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 {
|
||||
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)
|
||||
|
|
|
@ -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++ {
|
||||
|
|
Loading…
Reference in New Issue