Select Git revision
sensors.go 4.26 KiB
package main
import (
hue "github.com/collinux/gohue"
log "github.com/golang/glog"
"github.com/prometheus/client_golang/prometheus"
)
type sensorCollector struct {
bridge *hue.Bridge
ignoreTypes []string
sensorValue *prometheus.GaugeVec
sensorLastUpdated *prometheus.GaugeVec
sensorOn *prometheus.GaugeVec
sensorBattery *prometheus.GaugeVec
sensorReachable *prometheus.GaugeVec
}
var variableSensorLabelNames = []string{
"name",
"type",
"model_id",
"manufacturer_name",
"product_name",
"unique_id",
}
func contains(a []string, x string) bool {
for _, n := range a {
if x == n {
return true
}
}
return false
}
// NewSensorCollector Create a new Hue collector for sensors
func NewSensorCollector(namespace string, bridge *hue.Bridge, ignoreTypes []string) prometheus.Collector {
c := sensorCollector{
bridge: bridge,
ignoreTypes: ignoreTypes,
sensorValue: prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: namespace,
Subsystem: "sensor",
Name: "value",
Help: "Sensor values",
},
variableSensorLabelNames,
),
sensorBattery: prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: namespace,
Subsystem: "sensor",
Name: "battery",
Help: "Sensor battery levels (%)",
},
variableSensorLabelNames,
),
sensorLastUpdated: prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: namespace,
Subsystem: "sensor",
Name: "last_updated",
Help: "Sensor last updated time",
},
variableSensorLabelNames,
),
sensorOn: prometheus.NewGaugeVec(
prometheus.GaugeOpts{