From 4415fe04c11eef4e00fb037ae679e49d04081df1 Mon Sep 17 00:00:00 2001 From: Javier Date: Sat, 26 Jan 2019 01:18:03 +0100 Subject: use logging module --- weahome.py | 46 +++++++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/weahome.py b/weahome.py index 8404305..acd1d2d 100755 --- a/weahome.py +++ b/weahome.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -import sys, math, datetime, struct, atexit +import sys, math, datetime, logging, struct, atexit from enum import Enum from argparse import ArgumentParser from functools import partial @@ -33,13 +33,9 @@ MANUFACTURER_CHAR = '00002a29-0000-1000-8000-00805f9b34fb' MAX_SENSORS = 16 -parser = ArgumentParser(description="Weather@home") -parser.add_argument("--sync", "-s", action='store_true', help="Sync time") -args = parser.parse_args() - DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() -mainloop = GObject.MainLoop() +log = logging.getLogger(__name__) def _get_bluez_objects(): obj_manager = bus.get_object(BLUEZ_SERVICE_NAME, '/') @@ -294,7 +290,7 @@ class WeahomeDevice: elif data_type == 2: self._process_sensor_data_2(offset, data[1:]) else: - print(" unknown sensor data type: ", data_type) + log.warn(" unknown sensor data type: %s", data_type) if last_packet: changed_sensors = [s for s in range(offset, offset+4) if self.sensors[s].online] self.new_reading.notify(sender=self, sensors=changed_sensors) @@ -318,7 +314,7 @@ class WeahomeDevice: def _write_settings(self, settings): data = settings.pack() - print(" new settings=", data) + log.debug(" new settings=%s", data) self._write_char(SETTINGS_CHAR, data) def _char_changed_cb(self, uuid, iface, changed_props, invalidated_props): @@ -342,14 +338,14 @@ class WeahomeDevice: elif uuid == SETTINGS_CHAR: self._process_settings_data(bytes(value)) else: - print(" unknown notif:", uuid) + log.warn(" unknown notif: %s", uuid) def _char_notify_start_cb(self, uuid): - #print("Notification set for {0}".format(uuid)) + log.debug("Notification set for {0}".format(uuid)) pass def _char_notify_error_cb(self, uuid, error): - print("Error while setting notification for {0}: {1}".format(uuid, error)) + log.warn("Error while setting notification for {0}: {1}".format(uuid, error)) def _device_changed_cb(self, iface, changed_props, invalidated_props): if iface != BLUEZ_DEVICE_IFACE: @@ -506,6 +502,14 @@ def print_sensor(device, sensor): if sensor.has_weather: print(" weather = {0}".format(sensor.weather)) +def disconnect_all_devices(): + print("Disconnecting devices") + for device in devices: + if device.connected: + device.disconnect() + +# Example client program: + def _connected_changed_cb(sender): name = sender.name connected = sender.connected @@ -524,17 +528,21 @@ def _new_reading_cb(sender, sensors): def _settings_changed_cb(sender): settings = sender.settings - print("{0} Settings: status={1} datetime={2} moon_phase={3} position={4},{5} sun={6},{7} moon={8},{9}".format(sender.name, settings.status, settings.datetime, settings.moon_phase, settings.latitude, settings.longitude, settings.sun_rise, settings.sun_set, settings.moon_rise, settings.moon_set)) - -def disconnect_all_devices(): - print("Disconnecting devices") - for device in devices: - if device.connected: - device.disconnect() + log.info("{0} Settings: status={1} datetime={2} moon_phase={3} position={4},{5} sun={6},{7} moon={8},{9}".format(sender.name, settings.status, settings.datetime, settings.moon_phase, settings.latitude, settings.longitude, settings.sun_rise, settings.sun_set, settings.moon_rise, settings.moon_set)) if __name__ == '__main__': + parser = ArgumentParser(description="Weather@home") + parser.add_argument("--sync", "-s", action='store_true', help="Sync time") + parser.add_argument("--verbose", "-v", action='store_true', help="Verbose log") + args = parser.parse_args() + + mainloop = GObject.MainLoop() + + if args.verbose: + logging.basicConfig(level=logging.DEBUG) + devices = scan_for_weahome_devices() - print("Found {0} weather@home devices: {1}".format(len(devices), [dev.name for dev in devices])) + log.info("Found {0} weather@home devices: {1}".format(len(devices), [dev.name for dev in devices])) atexit.register(disconnect_all_devices) -- cgit v1.2.3