diff --git a/openpdu_example.yaml b/openpdu_example.yaml new file mode 100644 index 0000000..165e98c --- /dev/null +++ b/openpdu_example.yaml @@ -0,0 +1,58 @@ +display: + h: 32 + rotated: false + swaptopbottom: false + type: ssd1306 + w: 128 +hostname: openpdu-rack1 + +mqtt: + cliendid: openpdu-main + host: 192.168.1.230 + password: "" + port: "1883" + prefix: openpdu-main + schema: tcp + username: "" + +ups: + host: 192.168.1.132 + name: ups + password: slave + username: monuser +boards: + 2306c7db-9d2e-4f55-8944-6a5a8b75a4a3: + type: dummy + inverted: false + channelCount: 4 + channels: + 4976c508-1f63-4894-a859-cc5bd555b3c1: + num: 0 + name: autonomo + startValue: false + c0a4d271-2b75-41c0-8b05-86c5ca0b3e94: + num: 1 + name: fenomeno + startValue: false + 4d0b384f-6bcb-4eca-a803-ebea90c2a434: + num: 2 + name: ecomeno + startValue: false + acb5e9d5-959c-4427-a850-17c262b96c16: + num: 3 + name: ripopolo + startValue: false +outlets: + 0fca047e-0e7f-4cee-83a8-2086ee306faf: + num: 0 + channelID: 4976c508-1f63-4894-a859-cc5bd555b3c1 + 6b36abdc-dc8d-424a-997d-ffb59642c749: + num: 1 + channelID: 4d0b384f-6bcb-4eca-a803-ebea90c2a434 + e14f53ba-8b53-4327-a1c7-10cf148d6c42: + num: 2 + channelID: c0a4d271-2b75-41c0-8b05-86c5ca0b3e94 + 1e66a9b5-54fe-4e0e-b34f-4d96b58f2111: + num: 3 + channelID: acb5e9d5-959c-4427-a850-17c262b96c16 + diff --git a/src/mqtt.go b/src/mqtt.go index ebcdb5c..155b752 100644 --- a/src/mqtt.go +++ b/src/mqtt.go @@ -10,13 +10,13 @@ import ( var MQTTclient MQTT.Client func init() { - viper.SetDefault("MqttCliendID", "OpenPDU") // max 23 chars - viper.SetDefault("MqttPrefix", "openpdu") // max 23 chars - viper.SetDefault("MqttSchema", "tcp") - viper.SetDefault("MqttHost", "localhost") - viper.SetDefault("MqttPort", "1883") - viper.SetDefault("MqttUsername", "") - viper.SetDefault("MqttPassword", "") + viper.SetDefault("Mqtt.CliendID", "OpenPDU") // max 23 chars + viper.SetDefault("Mqtt.Prefix", "openpdu") // max 23 chars + viper.SetDefault("Mqtt.Schema", "tcp") + viper.SetDefault("Mqtt.Host", "localhost") + viper.SetDefault("Mqtt.Port", "1883") + viper.SetDefault("Mqtt.Username", "") + viper.SetDefault("Mqtt.Password", "") // MQTT.ERROR = log.New(os.Stdout, "[ERROR] ", 0) // MQTT.CRITICAL = log.New(os.Stdout, "[CRIT] ", 0) @@ -30,16 +30,16 @@ func init() { // https://girishjoshi.io/post/golang-paho-mqtt/ func mqttLoop() { - uri := viper.GetString("MqttSchema") + "://" + viper.GetString("MqttHost") + ":" + viper.GetString("MqttPort") + uri := viper.GetString("Mqtt.Schema") + "://" + viper.GetString("Mqtt.Host") + ":" + viper.GetString("Mqtt.Port") opts := MQTT.NewClientOptions().AddBroker(uri) - opts.SetClientID(viper.GetString("MqttCliendID")) + opts.SetClientID(viper.GetString("Mqtt.CliendID")) - if username := viper.GetString("MqttUsername"); username != "" { + if username := viper.GetString("Mqtt.Username"); username != "" { opts.SetUsername(username) } - if password := viper.GetString("MqttPassword"); password != "" { + if password := viper.GetString("Mqtt.Password"); password != "" { opts.SetPassword(password) } @@ -80,6 +80,6 @@ func MQTTreconfigure() { func MQTTpublish(topic string, value string) { if MQTTclient.IsConnected() { - MQTTclient.Publish(viper.GetString("MqttPrefix")+"/"+topic, 0, false, value) + MQTTclient.Publish(viper.GetString("Mqtt.Prefix")+"/"+topic, 0, false, value) } } diff --git a/src/mqtt_ui.go b/src/mqtt_ui.go index cb5c511..4bd5ff7 100644 --- a/src/mqtt_ui.go +++ b/src/mqtt_ui.go @@ -8,13 +8,13 @@ import ( ) func mqttPage(ctx *macaron.Context) { - ctx.Data["schema"] = viper.GetString("MqttSchema") - ctx.Data["host"] = viper.GetString("MqttHost") - ctx.Data["port"] = viper.GetString("MqttPort") - ctx.Data["clientid"] = viper.GetString("MqttCliendID") - ctx.Data["prefix"] = viper.GetString("MqttPrefix") - ctx.Data["username"] = viper.GetString("MqttUsername") - ctx.Data["password"] = viper.GetString("MqttPassword") + ctx.Data["schema"] = viper.GetString("Mqtt.Schema") + ctx.Data["host"] = viper.GetString("Mqtt.Host") + ctx.Data["port"] = viper.GetString("Mqtt.Port") + ctx.Data["clientid"] = viper.GetString("Mqtt.CliendID") + ctx.Data["prefix"] = viper.GetString("Mqtt.Prefix") + ctx.Data["username"] = viper.GetString("Mqtt.Username") + ctx.Data["password"] = viper.GetString("Mqtt.Password") ctx.Data["schemas"] = []string{"tcp", "ssl", "ws"} ctx.HTML(200, "mqtt") @@ -43,12 +43,12 @@ func mqttPost(ctx *macaron.Context, f MQTTPostForm) { return } - viper.Set("MqttHost", strings.ToLower(strings.TrimSpace(f.Host))) - viper.Set("MqttPort", strings.ToLower(strings.TrimSpace(f.Port))) - viper.Set("MqttCliendID", strings.TrimSpace(f.ClientID)) - viper.Set("MqttPrefix", strings.TrimSpace(f.Prefix)) - viper.Set("MqttUsername", strings.TrimSpace(f.Username)) - viper.Set("MqttPassword", f.Password) + viper.Set("Mqtt.Host", strings.ToLower(strings.TrimSpace(f.Host))) + viper.Set("Mqtt.Port", strings.ToLower(strings.TrimSpace(f.Port))) + viper.Set("Mqtt.CliendID", strings.TrimSpace(f.ClientID)) + viper.Set("Mqtt.Prefix", strings.TrimSpace(f.Prefix)) + viper.Set("Mqtt.Username", strings.TrimSpace(f.Username)) + viper.Set("Mqtt.Password", f.Password) viper.WriteConfig() diff --git a/src/ups.go b/src/ups.go index 6a7c38e..0502708 100644 --- a/src/ups.go +++ b/src/ups.go @@ -10,10 +10,10 @@ var ups nut.UPS var upsVars map[string]nut.Variable func init() { - viper.SetDefault("UpsHost", "localhost") - viper.SetDefault("UpsName", "ups") - viper.SetDefault("UpsUsername", "") - viper.SetDefault("UpsPassword", "") + viper.SetDefault("Ups.Host", "localhost") + viper.SetDefault("Ups.Name", "ups") + viper.SetDefault("Ups.Username", "") + viper.SetDefault("Ups.Password", "") } func UpsConnect() { @@ -21,16 +21,16 @@ func UpsConnect() { var connectErr, authenticationError error var u nut.UPS - upsClient, connectErr = nut.Connect(viper.GetString("UpsHost")) + upsClient, connectErr = nut.Connect(viper.GetString("Ups.Host")) if connectErr != nil { logErr(connectErr.Error()) return } - if username = viper.GetString("UpsUsername"); username == "" { + if username = viper.GetString("Ups.Username"); username == "" { return } - if password = viper.GetString("UpsPassword"); password == "" { + if password = viper.GetString("Ups.Password"); password == "" { return } @@ -47,7 +47,7 @@ func UpsConnect() { } for _, u = range upsList { - if u.Name == viper.GetString("UpsName") { + if u.Name == viper.GetString("Ups.Name") { ups = u logNotice("UPS connected") UpsReadVars() diff --git a/src/ups_ui.go b/src/ups_ui.go index 1c686fb..41006fc 100644 --- a/src/ups_ui.go +++ b/src/ups_ui.go @@ -8,10 +8,10 @@ import ( ) func upsPage(ctx *macaron.Context) { - ctx.Data["host"] = viper.GetString("UpsHost") - ctx.Data["upsname"] = viper.GetString("UpsName") - ctx.Data["username"] = viper.GetString("UpsUsername") - ctx.Data["password"] = viper.GetString("UpsPassword") + ctx.Data["host"] = viper.GetString("Ups.Host") + ctx.Data["upsname"] = viper.GetString("Ups.Name") + ctx.Data["username"] = viper.GetString("Ups.Username") + ctx.Data["password"] = viper.GetString("Ups.Password") // if ups == nil { // ctx.Data["serverstatus"] = "Disconnected" @@ -38,10 +38,10 @@ type UPSPostForm struct { } func upsPost(ctx *macaron.Context, f UPSPostForm) { - viper.Set("UpsHost", strings.ToLower(strings.TrimSpace(f.Host))) - viper.Set("UpsName", strings.TrimSpace(f.UpsName)) - viper.Set("UpsUsername", strings.TrimSpace(f.Username)) - viper.Set("UpsPassword", f.Password) + viper.Set("Ups.Host", strings.ToLower(strings.TrimSpace(f.Host))) + viper.Set("Ups.Name", strings.TrimSpace(f.UpsName)) + viper.Set("Ups.Username", strings.TrimSpace(f.Username)) + viper.Set("Ups.Password", f.Password) viper.WriteConfig() UpsReconfigure()