pac3100-exporter/exporter/exporter.go

86 lines
3.0 KiB
Go

package exporter
import (
"git.entr0py.de/garionion/pac3100-exporter/scraper"
"github.com/prometheus/client_golang/prometheus"
)
type Exporter struct {
Voltage *prometheus.GaugeVec
Current *prometheus.GaugeVec
ApparantPower *prometheus.GaugeVec
ActivePower *prometheus.GaugeVec
Frequency *prometheus.GaugeVec
}
func New() Exporter {
var exporter Exporter
exporter.Voltage = prometheus.NewGaugeVec(prometheus.GaugeOpts{
Namespace: "siemens",
Subsystem: "pac3100",
Name: "voltage",
Help: "Voltage in V",
}, []string{"device", "phases"})
exporter.Current = prometheus.NewGaugeVec(prometheus.GaugeOpts{
Namespace: "siemens",
Subsystem: "pac3100",
Name: "current",
Help: "Current in A",
}, []string{"device", "phase"})
exporter.ApparantPower = prometheus.NewGaugeVec(prometheus.GaugeOpts{
Namespace: "siemens",
Subsystem: "pac3100",
Name: "apparent_power",
Help: "Apparent Power in VA",
}, []string{"device", "phase"})
exporter.ActivePower = prometheus.NewGaugeVec(prometheus.GaugeOpts{
Namespace: "siemens",
Subsystem: "pac3100",
Name: "active_power",
Help: "Active Power in W",
}, []string{"device", "phase"})
exporter.Frequency = prometheus.NewGaugeVec(prometheus.GaugeOpts{
Namespace: "siemens",
Subsystem: "pac3100",
Name: "frequency",
Help: "Frequency in Hz",
}, []string{"device"})
prometheus.MustRegister(exporter.Voltage)
prometheus.MustRegister(exporter.Current)
prometheus.MustRegister(exporter.ApparantPower)
prometheus.MustRegister(exporter.ActivePower)
prometheus.MustRegister(exporter.Frequency)
return exporter
}
func (e Exporter) SetMeasurements(measurement scraper.Measurements, deviceName string) {
e.Voltage.WithLabelValues(deviceName, "A_N").Set(float64(measurement.VoltageAN))
e.Voltage.WithLabelValues(deviceName, "B_N").Set(float64(measurement.VoltageBN))
e.Voltage.WithLabelValues(deviceName, "C_N").Set(float64(measurement.VoltageCN))
e.Voltage.WithLabelValues(deviceName, "A_B").Set(float64(measurement.VoltageAB))
e.Voltage.WithLabelValues(deviceName, "B_C").Set(float64(measurement.VoltageBC))
e.Voltage.WithLabelValues(deviceName, "C_A").Set(float64(measurement.VoltageCA))
e.Current.WithLabelValues(deviceName, "A").Set(float64(measurement.CurrentA))
e.Current.WithLabelValues(deviceName, "B").Set(float64(measurement.CurrentB))
e.Current.WithLabelValues(deviceName, "C").Set(float64(measurement.CurrentC))
e.ApparantPower.WithLabelValues(deviceName, "A").Set(float64(measurement.ApparantPowerA))
e.ApparantPower.WithLabelValues(deviceName, "B").Set(float64(measurement.ApparantPowerB))
e.ApparantPower.WithLabelValues(deviceName, "C").Set(float64(measurement.ApparantPowerC))
e.ActivePower.WithLabelValues(deviceName, "A").Set(float64(measurement.ActivePowerA))
e.ActivePower.WithLabelValues(deviceName, "B").Set(float64(measurement.ActivePowerB))
e.ActivePower.WithLabelValues(deviceName, "C").Set(float64(measurement.ActivePowerC))
e.Frequency.WithLabelValues(deviceName).Set(float64(measurement.Frequency))
}