diff --git a/prometheus-yoctotemp-exporter b/prometheus-yoctotemp-exporter new file mode 100755 index 0000000..29dd17c --- /dev/null +++ b/prometheus-yoctotemp-exporter @@ -0,0 +1,45 @@ +#!/usr/bin/env python + +from prometheus_client import start_http_server, Gauge +from yoctopuce.yocto_api import YAPI, YRefParam +from yoctopuce.yocto_temperature import YTemperature +import sys + +HTTP_PORT = 9400 +INTERVAL = 5000 +YOCTO_SENSOR_TEMPERATURE = Gauge( + 'yocto_sensor_temperature', + 'Yocto-Temperature sensor temperature value in Celcius' + ) + +if __name__ == '__main__': + # Setup the API to use local USB devices + errmsg = YRefParam() + if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS: + sys.exit("Could not initialize USB: " + errmsg.value) + + # Use first YoctoTemerature sensor found. + sensor = YTemperature.FirstTemperature() + if sensor is None: + sys.exit('Did not find any YoctoTemerature sensor.') + elif sensor.isOnline(): + print("YoctoTemerature sensor is ONLINE.") + else: + sys.exit("I found a sensor but it seems unavailable for some reason. Exiting.") + + # Serve metrics over HTTP. + print("Starting prometheus-yoctotemp-exporter on port", + "{}...".format(HTTP_PORT), end='') + start_http_server(HTTP_PORT) + print(" OK.") + + while sensor.isOnline(): + YOCTO_SENSOR_TEMPERATURE.set(sensor.get_currentValue()) + YAPI.Sleep(INTERVAL) + + sys.stderr.write("YoctoTemperature sensor disappeared for some reason.") + + # Cleanup. + YAPI.FreeAPI() + sys.exit("Cleaned up - Now exiting.") +