Private GIT

Skip to content
Snippets Groups Projects
Select Git revision
1 result Searching

version.py

Blame
  • 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{