mirror of
https://github.com/house-of-vanity/lywsd03mmc_exporter.git
synced 2025-07-07 07:14:09 +00:00
Added logging
This commit is contained in:
committed by
GitHub
parent
f0f2ff4aa5
commit
5f39a8b6ae
@ -2,9 +2,16 @@
|
|||||||
|
|
||||||
import time
|
import time
|
||||||
import argparse
|
import argparse
|
||||||
|
import logging
|
||||||
from prometheus_client import start_http_server, Gauge, Enum
|
from prometheus_client import start_http_server, Gauge, Enum
|
||||||
from bluepy import btle
|
from bluepy import btle
|
||||||
|
|
||||||
|
logging.basicConfig(
|
||||||
|
level=logging.INFO,
|
||||||
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
||||||
|
datefmt='%d-%m-%Y %H:%M:%S')
|
||||||
|
|
||||||
|
log = logging.getLogger('LYWSD03MMC-exporter')
|
||||||
|
|
||||||
class XiaoMiTemp(btle.DefaultDelegate):
|
class XiaoMiTemp(btle.DefaultDelegate):
|
||||||
def __init__(self, mac, location, temp, humid, batt):
|
def __init__(self, mac, location, temp, humid, batt):
|
||||||
@ -26,6 +33,7 @@ class AppMetrics:
|
|||||||
def __init__(self, devices, polling_interval_seconds=180):
|
def __init__(self, devices, polling_interval_seconds=180):
|
||||||
self.polling_interval_seconds = polling_interval_seconds
|
self.polling_interval_seconds = polling_interval_seconds
|
||||||
self.devices = devices
|
self.devices = devices
|
||||||
|
self.fetch_count = int(0)
|
||||||
# Metrics scheme
|
# Metrics scheme
|
||||||
self.temperature = Gauge("lywsd03mmc_temp", "Current temperature", ['mac', 'location'])
|
self.temperature = Gauge("lywsd03mmc_temp", "Current temperature", ['mac', 'location'])
|
||||||
self.humidity = Gauge("lywsd03mmc_humid", "Current humidity", ['mac', 'location'])
|
self.humidity = Gauge("lywsd03mmc_humid", "Current humidity", ['mac', 'location'])
|
||||||
@ -39,7 +47,10 @@ class AppMetrics:
|
|||||||
time.sleep(self.polling_interval_seconds)
|
time.sleep(self.polling_interval_seconds)
|
||||||
|
|
||||||
def fetch(self):
|
def fetch(self):
|
||||||
|
self.fetch_count += 1
|
||||||
|
log.info(f"Fetch loop started. Iteration {self.fetch_count}")
|
||||||
for mac, location in self.devices:
|
for mac, location in self.devices:
|
||||||
|
log.info(f"Fetching '{mac}' ({location})")
|
||||||
p = btle.Peripheral()
|
p = btle.Peripheral()
|
||||||
p.setDelegate(XiaoMiTemp(mac, location, self.temperature, self.humidity, self.battery))
|
p.setDelegate(XiaoMiTemp(mac, location, self.temperature, self.humidity, self.battery))
|
||||||
|
|
||||||
@ -48,8 +59,10 @@ class AppMetrics:
|
|||||||
try:
|
try:
|
||||||
p.connect(mac)
|
p.connect(mac)
|
||||||
p.waitForNotifications(15.0)
|
p.waitForNotifications(15.0)
|
||||||
|
log.info(f"Fetched '{mac}' ({location}). Attempt {attempt}.")
|
||||||
break
|
break
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
log.info(f"Failed to fetch '{mac}' ({location}). Attempt {attempt}.")
|
||||||
pass
|
pass
|
||||||
finally:
|
finally:
|
||||||
p.disconnect()
|
p.disconnect()
|
||||||
|
Reference in New Issue
Block a user