Skip to content

Instantly share code, notes, and snippets.

@blackrez
Created December 16, 2018 18:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save blackrez/7998eaf32f7053cd2488e1067447d66d to your computer and use it in GitHub Desktop.
Save blackrez/7998eaf32f7053cd2488e1067447d66d to your computer and use it in GitHub Desktop.
ds18b20 golang push to prometheus
package main
import (
"fmt"
"time"
"github.com/yryz/ds18b20"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/push"
)
var (
gatewayUrl = "http://push-gateway:9091"
tempGauge = prometheus.NewGauge(prometheus.GaugeOpts{Name: "temperature", Help: "Température en °C"})
)
func publish(temps chan float64) {
var t float64
t = <-temps
fmt.Printf("temperature channel: %.2f°C\n", t)
tempGauge.Set(t)
err := push.Collectors("chambre_bebe_job", push.HostnameGroupingKey(), gatewayUrl, tempGauge)
if err != nil {
fmt.Println("Could not push completion time to Pushgateway:", err)
}
}
func main() {
sensors, err := ds18b20.Sensors()
if err != nil {
panic(err)
}
fmt.Printf("sensor IDs: %v\n", sensors)
for _, sensor := range sensors {
if err == nil {
var temps = make(chan float64, 10)
for {
t, err := ds18b20.Temperature(sensor)
if err != nil {
fmt.Println(err)
}
temps <- t
go publish(temps)
time.Sleep(time.Minute)
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment