From 51e6afb4ca180c89fd4017a093a08919f5400051 Mon Sep 17 00:00:00 2001 From: kwindrem <58538395+kwindrem@users.noreply.github.com> Date: Fri, 24 Jan 2025 22:59:10 -0800 Subject: [PATCH] support the change to QtQuick 2 --- FileSets/PatchSource/PageSettings.qml | 3 - FileSets/PatchSource/PageSettings.qml.patch | 11 +- HelperResources/CommonResources | 14 + blindInstall/SetupHelperVersion | 2 +- changes | 3 + .../velib_python/latest/dbusmonitor.py | 592 ++++++++++++++++ .../velib_python/latest/oldestVersion | 1 + .../velib_python/latest/settingsdevice.py | 118 ++++ velib_python/velib_python/latest/ve_utils.py | 276 ++++++++ velib_python/velib_python/latest/vedbus.py | 650 ++++++++++++++++++ .../velib_python/v3.34/dbusmonitor.py | 554 +++++++++++++++ velib_python/velib_python/v3.34/oldestVersion | 1 + .../velib_python/v3.34/settingsdevice.py | 118 ++++ velib_python/velib_python/v3.34/ve_utils.py | 262 +++++++ velib_python/velib_python/v3.34/vedbus.py | 611 ++++++++++++++++ .../velib_python/v3.41/dbusmonitor.py | 587 ++++++++++++++++ velib_python/velib_python/v3.41/oldestVersion | 1 + .../velib_python/v3.41/settingsdevice.py | 118 ++++ velib_python/velib_python/v3.41/ve_utils.py | 276 ++++++++ velib_python/velib_python/v3.41/vedbus.py | 646 +++++++++++++++++ venus-data-UninstallPackages.tgz | Bin 1141 -> 1141 bytes venus-data.tgz | Bin 234751 -> 284820 bytes version | 2 +- 23 files changed, 4832 insertions(+), 14 deletions(-) create mode 100644 velib_python/velib_python/latest/dbusmonitor.py create mode 100644 velib_python/velib_python/latest/oldestVersion create mode 100644 velib_python/velib_python/latest/settingsdevice.py create mode 100644 velib_python/velib_python/latest/ve_utils.py create mode 100644 velib_python/velib_python/latest/vedbus.py create mode 100644 velib_python/velib_python/v3.34/dbusmonitor.py create mode 100644 velib_python/velib_python/v3.34/oldestVersion create mode 100644 velib_python/velib_python/v3.34/settingsdevice.py create mode 100644 velib_python/velib_python/v3.34/ve_utils.py create mode 100644 velib_python/velib_python/v3.34/vedbus.py create mode 100644 velib_python/velib_python/v3.41/dbusmonitor.py create mode 100644 velib_python/velib_python/v3.41/oldestVersion create mode 100644 velib_python/velib_python/v3.41/settingsdevice.py create mode 100644 velib_python/velib_python/v3.41/ve_utils.py create mode 100644 velib_python/velib_python/v3.41/vedbus.py diff --git a/FileSets/PatchSource/PageSettings.qml b/FileSets/PatchSource/PageSettings.qml index e85d33c..c25179f 100644 --- a/FileSets/PatchSource/PageSettings.qml +++ b/FileSets/PatchSource/PageSettings.qml @@ -1,6 +1,3 @@ -//////// modified to insert PackageManager menu -//////// auto-generated by SetupHelper setup script - import QtQuick 1.1 import com.victron.velib 1.0 import net.connman 0.1 diff --git a/FileSets/PatchSource/PageSettings.qml.patch b/FileSets/PatchSource/PageSettings.qml.patch index 80ec615..7c0cdd9 100644 --- a/FileSets/PatchSource/PageSettings.qml.patch +++ b/FileSets/PatchSource/PageSettings.qml.patch @@ -1,13 +1,6 @@ --- /Users/Kevin/GitHub/SetupHelper.copy/FileSets/PatchSource/PageSettings.qml.orig 2024-05-15 13:06:53 -+++ /Users/Kevin/GitHub/SetupHelper.copy/FileSets/PatchSource/PageSettings.qml 2024-05-15 13:06:53 -@@ -1,3 +1,6 @@ -+//////// modified to insert PackageManager menu -+//////// auto-generated by SetupHelper setup script -+ - import QtQuick 1.1 - import com.victron.velib 1.0 - import net.connman 0.1 -@@ -192,5 +195,11 @@ ++++ /Users/Kevin/GitHub/SetupHelper.copy/FileSets/PatchSource/PageSettings.qml 2025-01-24 22:39:59 +@@ -192,5 +192,11 @@ subpage: Component { PageDebug {} } showAccessLevel: User.AccessService } diff --git a/HelperResources/CommonResources b/HelperResources/CommonResources index 541fe0c..c4c0ed2 100755 --- a/HelperResources/CommonResources +++ b/HelperResources/CommonResources @@ -1536,6 +1536,20 @@ if [ $scriptAction != 'UNINSTALL' ]; then done fi + # create patched files for all qml files for the change to QtQuick 2 + versionStringToNumber "v3.60~18" + if (( $venusVersionNumber >= $versionNumber )); then + logMessage "patching QtQuick 1.1 to QtQuick 2 in all .qml replacements" + for file in ${fileListVersionIndependent[@]}; do + baseName=$( basename "$file" ) + if ! [[ "$baseName" == *.qml ]]; then continue; fi + sourceFile="$versionIndependentFileSet/$baseName" + if ! [ -f "$sourceFile" ]; then continue; fi + if (( $(grep -c "QtQuick 1.1" "$sourceFile") == 0 )); then continue; fi + sed -e 's/QtQuick 1.1/QtQuick 2/' "$sourceFile" > "$tempFileDir/$baseName" + done + fi + # create the forward and reverse patched files # used during the actual install and to test if the patch/reverse patch will succeed # done here so PackageManager knows if this will be possible before starting the install diff --git a/blindInstall/SetupHelperVersion b/blindInstall/SetupHelperVersion index 5dee719..4798d53 100644 --- a/blindInstall/SetupHelperVersion +++ b/blindInstall/SetupHelperVersion @@ -1 +1 @@ -v8.26 +v8.27~1 diff --git a/changes b/changes index 8455943..9666864 100644 --- a/changes +++ b/changes @@ -1,3 +1,6 @@ +v8.27: + support the change to QtQuick 2 first used in v3.60~18 + v8.26: added link to IncludeHelpers so that old packages can find correct file to source diff --git a/velib_python/velib_python/latest/dbusmonitor.py b/velib_python/velib_python/latest/dbusmonitor.py new file mode 100644 index 0000000..46b1dd8 --- /dev/null +++ b/velib_python/velib_python/latest/dbusmonitor.py @@ -0,0 +1,592 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +## @package dbus_vrm +# This code takes care of the D-Bus interface (not all of below is implemented yet): +# - on startup it scans the dbus for services we know. For each known service found, it searches for +# objects/paths we know. Everything we find is stored in items{}, and an event is registered: if a +# value changes weĺl be notified and can pass that on to our owner. For example the vrmLogger. +# we know. +# - after startup, it continues to monitor the dbus: +# 1) when services are added we do the same check on that +# 2) when services are removed, we remove any items that we had that referred to that service +# 3) if an existing services adds paths we update ourselves as well: on init, we make a +# VeDbusItemImport for a non-, or not yet existing objectpaths as well1 +# +# Code is used by the vrmLogger, and also the pubsub code. Both are other modules in the dbus_vrm repo. + +from dbus.mainloop.glib import DBusGMainLoop +from gi.repository import GLib +import dbus +import dbus.service +import inspect +import logging +import argparse +import pprint +import traceback +import os +from collections import defaultdict +from functools import partial + +# our own packages +from ve_utils import exit_on_error, wrap_dbus_value, unwrap_dbus_value, add_name_owner_changed_receiver + +# dbus interface +VE_INTERFACE = "com.victronenergy.BusItem" + +# For lookups where None is a valid result +notfound = object() + +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) +class SystemBus(dbus.bus.BusConnection): + def __new__(cls): + return dbus.bus.BusConnection.__new__(cls, dbus.bus.BusConnection.TYPE_SYSTEM) + +class SessionBus(dbus.bus.BusConnection): + def __new__(cls): + return dbus.bus.BusConnection.__new__(cls, dbus.bus.BusConnection.TYPE_SESSION) + +class MonitoredValue(object): + def __init__(self, value, text, options): + super(MonitoredValue, self).__init__() + self.value = value + self.text = text + self.options = options + + # For legacy code, allow treating this as a tuple/list + def __iter__(self): + return iter((self.value, self.text, self.options)) + +class Service(object): + def __init__(self, id, serviceName, deviceInstance): + super(Service, self).__init__() + self.id = id + self.name = serviceName + self.paths = {} + self._seen = set() + self.deviceInstance = deviceInstance + + # For legacy code, attributes can still be accessed as if keys from a + # dictionary. + def __setitem__(self, key, value): + self.__dict__[key] = value + def __getitem__(self, key): + return self.__dict__[key] + + def set_seen(self, path): + self._seen.add(path) + + def seen(self, path): + return path in self._seen + + @property + def service_class(self): + return '.'.join(self.name.split('.')[:3]) + +class DbusMonitor(object): + ## Constructor + def __init__(self, dbusTree, valueChangedCallback=None, deviceAddedCallback=None, + deviceRemovedCallback=None, namespace="com.victronenergy", ignoreServices=[]): + # valueChangedCallback is the callback that we call when something has changed. + # def value_changed_on_dbus(dbusServiceName, dbusPath, options, changes, deviceInstance): + # in which changes is a tuple with GetText() and GetValue() + self.valueChangedCallback = valueChangedCallback + self.deviceAddedCallback = deviceAddedCallback + self.deviceRemovedCallback = deviceRemovedCallback + self.dbusTree = dbusTree + self.ignoreServices = ignoreServices + + # Lists all tracked services. Stores name, id, device instance, value per path, and whenToLog info + # indexed by service name (eg. com.victronenergy.settings). + self.servicesByName = {} + + # Same values as self.servicesByName, but indexed by service id (eg. :1.30) + self.servicesById = {} + + # Keep track of services by class to speed up calls to get_service_list + self.servicesByClass = defaultdict(list) + + # Keep track of any additional watches placed on items + self.serviceWatches = defaultdict(list) + + # For a PC, connect to the SessionBus + # For a CCGX, connect to the SystemBus + self.dbusConn = SessionBus() if 'DBUS_SESSION_BUS_ADDRESS' in os.environ else SystemBus() + + # subscribe to NameOwnerChange for bus connect / disconnect events. + # NOTE: this is on a different bus then the one above! + standardBus = (dbus.SessionBus() if 'DBUS_SESSION_BUS_ADDRESS' in os.environ \ + else dbus.SystemBus()) + + add_name_owner_changed_receiver(standardBus, self.dbus_name_owner_changed) + + # Subscribe to PropertiesChanged for all services + self.dbusConn.add_signal_receiver(self.handler_value_changes, + dbus_interface='com.victronenergy.BusItem', + signal_name='PropertiesChanged', path_keyword='path', + sender_keyword='senderId') + + # Subscribe to ItemsChanged for all services + self.dbusConn.add_signal_receiver(self.handler_item_changes, + dbus_interface='com.victronenergy.BusItem', + signal_name='ItemsChanged', path='/', + sender_keyword='senderId') + + logger.info('===== Search on dbus for services that we will monitor starting... =====') + serviceNames = self.dbusConn.list_names() + for serviceName in serviceNames: + self.scan_dbus_service(serviceName) + + logger.info('===== Search on dbus for services that we will monitor finished =====') + + @staticmethod + def make_service(serviceId, serviceName, deviceInstance): + """ Override this to use a different kind of service object. """ + return Service(serviceId, serviceName, deviceInstance) + + def make_monitor(self, service, path, value, text, options): + """ Override this to do more things with monitoring. """ + return MonitoredValue(unwrap_dbus_value(value), unwrap_dbus_value(text), options) + + def dbus_name_owner_changed(self, name, oldowner, newowner): + if not name.startswith("com.victronenergy."): + return + + #decouple, and process in main loop + GLib.idle_add(exit_on_error, self._process_name_owner_changed, name, oldowner, newowner) + + def _process_name_owner_changed(self, name, oldowner, newowner): + if newowner != '': + # so we found some new service. Check if we can do something with it. + newdeviceadded = self.scan_dbus_service(name) + if newdeviceadded and self.deviceAddedCallback is not None: + self.deviceAddedCallback(name, self.get_device_instance(name)) + + elif name in self.servicesByName: + # it disappeared, we need to remove it. + logger.info("%s disappeared from the dbus. Removing it from our lists" % name) + service = self.servicesByName[name] + del self.servicesById[service.id] + del self.servicesByName[name] + for watch in self.serviceWatches[name]: + watch.remove() + del self.serviceWatches[name] + self.servicesByClass[service.service_class].remove(service) + if self.deviceRemovedCallback is not None: + self.deviceRemovedCallback(name, service.deviceInstance) + + def scan_dbus_service(self, serviceName): + try: + return self.scan_dbus_service_inner(serviceName) + except: + logger.error("Ignoring %s because of error while scanning:" % (serviceName)) + traceback.print_exc() + return False + + # Errors 'org.freedesktop.DBus.Error.ServiceUnknown' and + # 'org.freedesktop.DBus.Error.Disconnected' seem to happen when the service + # disappears while its being scanned. Which might happen, but is not really + # normal either, so letting them go into the logs. + + # Scans the given dbus service to see if it contains anything interesting for us. If it does, add + # it to our list of monitored D-Bus services. + def scan_dbus_service_inner(self, serviceName): + + # make it a normal string instead of dbus string + serviceName = str(serviceName) + + if (len(self.ignoreServices) != 0 and any(serviceName.startswith(x) for x in self.ignoreServices)): + logger.debug("Ignoring service %s" % serviceName) + return False + + paths = self.dbusTree.get('.'.join(serviceName.split('.')[0:3]), None) + if paths is None: + logger.debug("Ignoring service %s, not in the tree" % serviceName) + return False + + logger.info("Found: %s, scanning and storing items" % serviceName) + serviceId = self.dbusConn.get_name_owner(serviceName) + + # we should never be notified to add a D-Bus service that we already have. If this assertion + # raises, check process_name_owner_changed, and D-Bus workings. + assert serviceName not in self.servicesByName + assert serviceId not in self.servicesById + + # Try to fetch everything with a GetItems, then fall back to older + # methods if that fails + try: + values = self.dbusConn.call_blocking(serviceName, '/', VE_INTERFACE, 'GetItems', '', []) + except dbus.exceptions.DBusException: + logger.info("GetItems failed, trying legacy methods") + else: + return self.scan_dbus_service_getitems_done(serviceName, serviceId, values) + + if serviceName == 'com.victronenergy.settings': + di = 0 + elif serviceName.startswith('com.victronenergy.vecan.'): + di = 0 + else: + try: + di = self.dbusConn.call_blocking(serviceName, + '/DeviceInstance', VE_INTERFACE, 'GetValue', '', []) + except dbus.exceptions.DBusException: + logger.info(" %s was skipped because it has no device instance" % serviceName) + return False # Skip it + else: + di = int(di) + + logger.info(" %s has device instance %s" % (serviceName, di)) + service = self.make_service(serviceId, serviceName, di) + + # Let's try to fetch everything in one go + values = {} + texts = {} + try: + values.update(self.dbusConn.call_blocking(serviceName, '/', VE_INTERFACE, 'GetValue', '', [])) + texts.update(self.dbusConn.call_blocking(serviceName, '/', VE_INTERFACE, 'GetText', '', [])) + except: + pass + + for path, options in paths.items(): + # path will be the D-Bus path: '/Ac/ActiveIn/L1/V' + # options will be a dictionary: {'code': 'V', 'whenToLog': 'onIntervalAlways'} + + # Try to obtain the value we want from our bulk fetch. If we + # cannot find it there, do an individual query. + value = values.get(path[1:], notfound) + if value != notfound: + service.set_seen(path) + text = texts.get(path[1:], notfound) + if value is notfound or text is notfound: + try: + value = self.dbusConn.call_blocking(serviceName, path, VE_INTERFACE, 'GetValue', '', []) + service.set_seen(path) + text = self.dbusConn.call_blocking(serviceName, path, VE_INTERFACE, 'GetText', '', []) + except dbus.exceptions.DBusException as e: + if e.get_dbus_name() in ( + 'org.freedesktop.DBus.Error.ServiceUnknown', + 'org.freedesktop.DBus.Error.Disconnected'): + raise # This exception will be handled below + + # TODO org.freedesktop.DBus.Error.UnknownMethod really + # shouldn't happen but sometimes does. + logger.debug("%s %s does not exist (yet)" % (serviceName, path)) + value = None + text = None + + service.paths[path] = self.make_monitor(service, path, unwrap_dbus_value(value), unwrap_dbus_value(text), options) + + + logger.debug("Finished scanning and storing items for %s" % serviceName) + + # Adjust self at the end of the scan, so we don't have an incomplete set of + # data if an exception occurs during the scan. + self.servicesByName[serviceName] = service + self.servicesById[serviceId] = service + self.servicesByClass[service.service_class].append(service) + + return True + + def scan_dbus_service_getitems_done(self, serviceName, serviceId, values): + # Keeping these exceptions for legacy reasons + if serviceName == 'com.victronenergy.settings': + di = 0 + elif serviceName.startswith('com.victronenergy.vecan.'): + di = 0 + else: + try: + di = values['/DeviceInstance']['Value'] + except KeyError: + logger.info(" %s was skipped because it has no device instance" % serviceName) + return False + else: + di = int(di) + + logger.info(" %s has device instance %s" % (serviceName, di)) + service = self.make_service(serviceId, serviceName, di) + + paths = self.dbusTree.get('.'.join(serviceName.split('.')[0:3]), {}) + for path, options in paths.items(): + item = values.get(path, notfound) + if item is notfound: + service.paths[path] = self.make_monitor(service, path, None, None, options) + else: + service.set_seen(path) + value = item.get('Value', None) + text = item.get('Text', None) + service.paths[path] = self.make_monitor(service, path, unwrap_dbus_value(value), unwrap_dbus_value(text), options) + + self.servicesByName[serviceName] = service + self.servicesById[serviceId] = service + self.servicesByClass[service.service_class].append(service) + return True + + def handler_item_changes(self, items, senderId): + if not isinstance(items, dict): + return + + try: + service = self.servicesById[senderId] + except KeyError: + # senderId isn't there, which means it hasn't been scanned yet. + return + + for path, changes in items.items(): + try: + v = unwrap_dbus_value(changes['Value']) + except (KeyError, TypeError): + continue + + try: + t = changes['Text'] + except KeyError: + t = str(v) + self._handler_value_changes(service, path, v, t) + + def handler_value_changes(self, changes, path, senderId): + # If this properyChange does not involve a value, our work is done. + if 'Value' not in changes: + return + + try: + service = self.servicesById[senderId] + except KeyError: + # senderId isn't there, which means it hasn't been scanned yet. + return + + v = unwrap_dbus_value(changes['Value']) + # Some services don't send Text with their PropertiesChanged events. + try: + t = changes['Text'] + except KeyError: + t = str(v) + self._handler_value_changes(service, path, v, t) + + def _handler_value_changes(self, service, path, value, text): + try: + a = service.paths[path] + except KeyError: + # path isn't there, which means it hasn't been scanned yet. + return + + service.set_seen(path) + + # First update our store to the new value + if a.value == value: + return + + a.value = value + a.text = text + + # And do the rest of the processing in on the mainloop + if self.valueChangedCallback is not None: + GLib.idle_add(exit_on_error, self._execute_value_changes, service.name, path, { + 'Value': value, 'Text': text}, a.options) + + def _execute_value_changes(self, serviceName, objectPath, changes, options): + # double check that the service still exists, as it might have + # disappeared between scheduling-for and executing this function. + if serviceName not in self.servicesByName: + return + + self.valueChangedCallback(serviceName, objectPath, + options, changes, self.get_device_instance(serviceName)) + + # Gets the value for a certain servicename and path + # The default_value is returned when: + # 1. When the service doesn't exist. + # 2. When the path asked for isn't being monitored. + # 3. When the path exists, but has dbus-invalid, ie an empty byte array. + # 4. When the path asked for is being monitored, but doesn't exist for that service. + def get_value(self, serviceName, objectPath, default_value=None): + service = self.servicesByName.get(serviceName, None) + if service is None: + return default_value + + value = service.paths.get(objectPath, None) + if value is None or value.value is None: + return default_value + + return value.value + + # returns if a dbus exists now, by doing a blocking dbus call. + # Typically seen will be sufficient and doesn't need access to the dbus. + def exists(self, serviceName, objectPath): + try: + self.dbusConn.call_blocking(serviceName, objectPath, VE_INTERFACE, 'GetValue', '', []) + return True + except dbus.exceptions.DBusException as e: + return False + + # Returns if there ever was a successful GetValue or valueChanged event. + # Unlike get_value this return True also if the actual value is invalid. + # + # Note: the path might no longer exists anymore, but that doesn't happen in + # practice. If a service really wants to reconfigure itself typically it should + # reconnect to the dbus which causes it to be rescanned and seen will be updated. + # If it is really needed to know if a path still exists, use exists. + def seen(self, serviceName, objectPath): + try: + return self.servicesByName[serviceName].seen(objectPath) + except KeyError: + return False + + # Sets the value for a certain servicename and path, returns the return value of the D-Bus SetValue + # method. If the underlying item does not exist (the service does not exist, or the objectPath was not + # registered) the function will return -1 + def set_value(self, serviceName, objectPath, value): + # Check if the D-Bus object referenced by serviceName and objectPath is registered. There is no + # necessity to do this, but it is in line with previous implementations which kept VeDbusItemImport + # objects for registers items only. + service = self.servicesByName.get(serviceName, None) + if service is None: + return -1 + if objectPath not in service.paths: + return -1 + # We do not catch D-Bus exceptions here, because the previous implementation did not do that either. + return self.dbusConn.call_blocking(serviceName, objectPath, + dbus_interface=VE_INTERFACE, + method='SetValue', signature=None, + args=[wrap_dbus_value(value)]) + + # Similar to set_value, but operates asynchronously + def set_value_async(self, serviceName, objectPath, value, + reply_handler=None, error_handler=None): + service = self.servicesByName.get(serviceName, None) + if service is not None: + if objectPath in service.paths: + self.dbusConn.call_async(serviceName, objectPath, + dbus_interface=VE_INTERFACE, + method='SetValue', signature=None, + args=[wrap_dbus_value(value)], + reply_handler=reply_handler, error_handler=error_handler) + return + + if error_handler is not None: + error_handler(TypeError('Service or path not found, ' + 'service=%s, path=%s' % (serviceName, objectPath))) + + # returns a dictionary, keys are the servicenames, value the instances + # optionally use the classfilter to get only a certain type of services, for + # example com.victronenergy.battery. + def get_service_list(self, classfilter=None): + if classfilter is None: + return { servicename: service.deviceInstance \ + for servicename, service in self.servicesByName.items() } + + if classfilter not in self.servicesByClass: + return {} + + return { service.name: service.deviceInstance \ + for service in self.servicesByClass[classfilter] } + + def get_device_instance(self, serviceName): + return self.servicesByName[serviceName].deviceInstance + + def track_value(self, serviceName, objectPath, callback, *args, **kwargs): + """ A DbusMonitor can watch specific service/path combos for changes + so that it is not fully reliant on the global handler_value_changes + in this class. Additional watches are deleted automatically when + the service disappears from dbus. """ + cb = partial(callback, *args, **kwargs) + + def root_tracker(items): + # Check if objectPath in dict + try: + v = items[objectPath] + _v = unwrap_dbus_value(v['Value']) + except (KeyError, TypeError): + return # not in this dict + + try: + t = v['Text'] + except KeyError: + cb({'Value': _v }) + else: + cb({'Value': _v, 'Text': t}) + + # Track changes on the path, and also on root + self.serviceWatches[serviceName].extend(( + self.dbusConn.add_signal_receiver(cb, + dbus_interface='com.victronenergy.BusItem', + signal_name='PropertiesChanged', + path=objectPath, bus_name=serviceName), + self.dbusConn.add_signal_receiver(root_tracker, + dbus_interface='com.victronenergy.BusItem', + signal_name='ItemsChanged', + path="/", bus_name=serviceName), + )) + + +# ====== ALL CODE BELOW THIS LINE IS PURELY FOR DEVELOPING THIS CLASS ====== + +# Example function that can be used as a starting point to use this code +def value_changed_on_dbus(dbusServiceName, dbusPath, dict, changes, deviceInstance): + logger.debug("0 ----------------") + logger.debug("1 %s%s changed" % (dbusServiceName, dbusPath)) + logger.debug("2 vrm dict : %s" % dict) + logger.debug("3 changes-text: %s" % changes['Text']) + logger.debug("4 changes-value: %s" % changes['Value']) + logger.debug("5 deviceInstance: %s" % deviceInstance) + logger.debug("6 - end") + + +def nameownerchange(a, b): + # used to find memory leaks in dbusmonitor and VeDbusItemImport + import gc + gc.collect() + objects = gc.get_objects() + print (len([o for o in objects if type(o).__name__ == 'VeDbusItemImport'])) + print (len([o for o in objects if type(o).__name__ == 'SignalMatch'])) + print (len(objects)) + + +def print_values(dbusmonitor): + a = dbusmonitor.get_value('wrongservice', '/DbusInvalid', default_value=1000) + b = dbusmonitor.get_value('com.victronenergy.dummyservice.ttyO1', '/NotInTheMonitorList', default_value=1000) + c = dbusmonitor.get_value('com.victronenergy.dummyservice.ttyO1', '/DbusInvalid', default_value=1000) + d = dbusmonitor.get_value('com.victronenergy.dummyservice.ttyO1', '/NonExistingButMonitored', default_value=1000) + + print ("All should be 1000: Wrong Service: %s, NotInTheMonitorList: %s, DbusInvalid: %s, NonExistingButMonitored: %s" % (a, b, c, d)) + return True + +# We have a mainloop, but that is just for developing this code. Normally above class & code is used from +# some other class, such as vrmLogger or the pubsub Implementation. +def main(): + # Init logging + logging.basicConfig(level=logging.DEBUG) + logger.info(__file__ + " is starting up") + + # Have a mainloop, so we can send/receive asynchronous calls to and from dbus + DBusGMainLoop(set_as_default=True) + + import os + import sys + sys.path.insert(1, os.path.join(os.path.dirname(__file__), '../../')) + + dummy = {'code': None, 'whenToLog': 'configChange', 'accessLevel': None} + monitorlist = {'com.victronenergy.dummyservice': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/0/Temperature': dummy, + '/Load/I': dummy, + '/FirmwareVersion': dummy, + '/DbusInvalid': dummy, + '/NonExistingButMonitored': dummy}} + + d = DbusMonitor(monitorlist, value_changed_on_dbus, + deviceAddedCallback=nameownerchange, deviceRemovedCallback=nameownerchange) + + GLib.timeout_add(1000, print_values, d) + + # Start and run the mainloop + logger.info("Starting mainloop, responding on only events") + mainloop = GLib.MainLoop() + mainloop.run() + +if __name__ == "__main__": + main() diff --git a/velib_python/velib_python/latest/oldestVersion b/velib_python/velib_python/latest/oldestVersion new file mode 100644 index 0000000..42a23a2 --- /dev/null +++ b/velib_python/velib_python/latest/oldestVersion @@ -0,0 +1 @@ +v3.50 diff --git a/velib_python/velib_python/latest/settingsdevice.py b/velib_python/velib_python/latest/settingsdevice.py new file mode 100644 index 0000000..a207e8b --- /dev/null +++ b/velib_python/velib_python/latest/settingsdevice.py @@ -0,0 +1,118 @@ +import dbus +import logging +import time +from functools import partial + +# Local imports +from vedbus import VeDbusItemImport + +## Indexes for the setting dictonary. +PATH = 0 +VALUE = 1 +MINIMUM = 2 +MAXIMUM = 3 +SILENT = 4 + +## The Settings Device class. +# Used by python programs, such as the vrm-logger, to read and write settings they +# need to store on disk. And since these settings might be changed from a different +# source, such as the GUI, the program can pass an eventCallback that will be called +# as soon as some setting is changed. +# +# The settings are stored in flash via the com.victronenergy.settings service on dbus. +# See https://github.com/victronenergy/localsettings for more info. +# +# If there are settings in de supportSettings list which are not yet on the dbus, +# and therefore not yet in the xml file, they will be added through the dbus-addSetting +# interface of com.victronenergy.settings. +class SettingsDevice(object): + ## The constructor processes the tree of dbus-items. + # @param bus the system-dbus object + # @param name the dbus-service-name of the settings dbus service, 'com.victronenergy.settings' + # @param supportedSettings dictionary with all setting-names, and their defaultvalue, min, max and whether + # the setting is silent. The 'silent' entry is optional. If set to true, no changes in the setting will + # be logged by localsettings. + # @param eventCallback function that will be called on changes on any of these settings + # @param timeout Maximum interval to wait for localsettings. An exception is thrown at the end of the + # interval if the localsettings D-Bus service has not appeared yet. + def __init__(self, bus, supportedSettings, eventCallback, name='com.victronenergy.settings', timeout=0): + logging.debug("===== Settings device init starting... =====") + self._bus = bus + self._dbus_name = name + self._eventCallback = eventCallback + self._values = {} # stored the values, used to pass the old value along on a setting change + self._settings = {} + + count = 0 + while True: + if 'com.victronenergy.settings' in self._bus.list_names(): + break + if count == timeout: + raise Exception("The settings service com.victronenergy.settings does not exist!") + count += 1 + logging.info('waiting for settings') + time.sleep(1) + + # Add the items. + self.addSettings(supportedSettings) + + logging.debug("===== Settings device init finished =====") + + def addSettings(self, settings): + for setting, options in settings.items(): + silent = len(options) > SILENT and options[SILENT] + busitem = self.addSetting(options[PATH], options[VALUE], + options[MINIMUM], options[MAXIMUM], silent, callback=partial(self.handleChangedSetting, setting)) + self._settings[setting] = busitem + self._values[setting] = busitem.get_value() + + def addSetting(self, path, value, _min, _max, silent=False, callback=None): + busitem = VeDbusItemImport(self._bus, self._dbus_name, path, callback) + if busitem.exists and (value, _min, _max, silent) == busitem._proxy.GetAttributes(): + logging.debug("Setting %s found" % path) + else: + logging.info("Setting %s does not exist yet or must be adjusted" % path) + + # Prepare to add the setting. Most dbus types extend the python + # type so it is only necessary to additionally test for Int64. + if isinstance(value, (int, dbus.Int64)): + itemType = 'i' + elif isinstance(value, float): + itemType = 'f' + else: + itemType = 's' + + # Add the setting + # TODO, make an object that inherits VeDbusItemImport, and complete the D-Bus settingsitem interface + settings_item = VeDbusItemImport(self._bus, self._dbus_name, '/Settings', createsignal=False) + setting_path = path.replace('/Settings/', '', 1) + if silent: + settings_item._proxy.AddSilentSetting('', setting_path, value, itemType, _min, _max) + else: + settings_item._proxy.AddSetting('', setting_path, value, itemType, _min, _max) + + busitem = VeDbusItemImport(self._bus, self._dbus_name, path, callback) + + return busitem + + def handleChangedSetting(self, setting, servicename, path, changes): + oldvalue = self._values[setting] if setting in self._values else None + self._values[setting] = changes['Value'] + + if self._eventCallback is None: + return + + self._eventCallback(setting, oldvalue, changes['Value']) + + def setDefault(self, path): + item = VeDbusItemImport(self._bus, self._dbus_name, path, createsignal=False) + item.set_default() + + def __getitem__(self, setting): + return self._settings[setting].get_value() + + def __setitem__(self, setting, newvalue): + result = self._settings[setting].set_value(newvalue) + if result != 0: + # Trying to make some false change to our own settings? How dumb! + assert False diff --git a/velib_python/velib_python/latest/ve_utils.py b/velib_python/velib_python/latest/ve_utils.py new file mode 100644 index 0000000..f5a2f85 --- /dev/null +++ b/velib_python/velib_python/latest/ve_utils.py @@ -0,0 +1,276 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +import sys +from traceback import print_exc +from os import _exit as os_exit +from os import statvfs +from subprocess import check_output, CalledProcessError +import logging +import dbus +logger = logging.getLogger(__name__) + +VEDBUS_INVALID = dbus.Array([], signature=dbus.Signature('i'), variant_level=1) + +class NoVrmPortalIdError(Exception): + pass + +# Use this function to make sure the code quits on an unexpected exception. Make sure to use it +# when using GLib.idle_add and also GLib.timeout_add. +# Without this, the code will just keep running, since GLib does not stop the mainloop on an +# exception. +# Example: GLib.idle_add(exit_on_error, myfunc, arg1, arg2) +def exit_on_error(func, *args, **kwargs): + try: + return func(*args, **kwargs) + except: + try: + print ('exit_on_error: there was an exception. Printing stacktrace will be tried and then exit') + print_exc() + except: + pass + + # sys.exit() is not used, since that throws an exception, which does not lead to a program + # halt when used in a dbus callback, see connection.py in the Python/Dbus libraries, line 230. + os_exit(1) + + +__vrm_portal_id = None +def get_vrm_portal_id(): + # The original definition of the VRM Portal ID is that it is the mac + # address of the onboard- ethernet port (eth0), stripped from its colons + # (:) and lower case. This may however differ between platforms. On Venus + # the task is therefore deferred to /sbin/get-unique-id so that a + # platform specific method can be easily defined. + # + # If /sbin/get-unique-id does not exist, then use the ethernet address + # of eth0. This also handles the case where velib_python is used as a + # package install on a Raspberry Pi. + # + # On a Linux host where the network interface may not be eth0, you can set + # the VRM_IFACE environment variable to the correct name. + + global __vrm_portal_id + + if __vrm_portal_id: + return __vrm_portal_id + + portal_id = None + + # First try the method that works if we don't have a data partition. This + # will fail when the current user is not root. + try: + portal_id = check_output("/sbin/get-unique-id").decode("utf-8", "ignore").strip() + if not portal_id: + raise NoVrmPortalIdError("get-unique-id returned blank") + __vrm_portal_id = portal_id + return portal_id + except CalledProcessError: + # get-unique-id returned non-zero + raise NoVrmPortalIdError("get-unique-id returned non-zero") + except OSError: + # File doesn't exist, use fallback + pass + + # Fall back to getting our id using a syscall. Assume we are on linux. + # Allow the user to override what interface is used using an environment + # variable. + import fcntl, socket, struct, os + + iface = os.environ.get('VRM_IFACE', 'eth0').encode('ascii') + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + try: + info = fcntl.ioctl(s.fileno(), 0x8927, struct.pack('256s', iface[:15])) + except IOError: + raise NoVrmPortalIdError("ioctl failed for eth0") + + __vrm_portal_id = info[18:24].hex() + return __vrm_portal_id + + +# See VE.Can registers - public.docx for definition of this conversion +def convert_vreg_version_to_readable(version): + def str_to_arr(x, length): + a = [] + for i in range(0, len(x), length): + a.append(x[i:i+length]) + return a + + x = "%x" % version + x = x.upper() + + if len(x) == 5 or len(x) == 3 or len(x) == 1: + x = '0' + x + + a = str_to_arr(x, 2); + + # remove the first 00 if there are three bytes and it is 00 + if len(a) == 3 and a[0] == '00': + a.remove(0); + + # if we have two or three bytes now, and the first character is a 0, remove it + if len(a) >= 2 and a[0][0:1] == '0': + a[0] = a[0][1]; + + result = '' + for item in a: + result += ('.' if result != '' else '') + item + + + result = 'v' + result + + return result + + +def get_free_space(path): + result = -1 + + try: + s = statvfs(path) + result = s.f_frsize * s.f_bavail # Number of free bytes that ordinary users + except Exception as ex: + logger.info("Error while retrieving free space for path %s: %s" % (path, ex)) + + return result + + +def _get_sysfs_machine_name(): + try: + with open('/sys/firmware/devicetree/base/model', 'r') as f: + return f.read().rstrip('\x00') + except IOError: + pass + + return None + +# Returns None if it cannot find a machine name. Otherwise returns the string +# containing the name +def get_machine_name(): + # First try calling the venus utility script + try: + return check_output("/usr/bin/product-name").strip().decode('UTF-8') + except (CalledProcessError, OSError): + pass + + # Fall back to sysfs + name = _get_sysfs_machine_name() + if name is not None: + return name + + # Fall back to venus build machine name + try: + with open('/etc/venus/machine', 'r', encoding='UTF-8') as f: + return f.read().strip() + except IOError: + pass + + return None + + +def get_product_id(): + """ Find the machine ID and return it. """ + + # First try calling the venus utility script + try: + return check_output("/usr/bin/product-id").strip().decode('UTF-8') + except (CalledProcessError, OSError): + pass + + # Fall back machine name mechanism + name = _get_sysfs_machine_name() + return { + 'Color Control GX': 'C001', + 'Venus GX': 'C002', + 'Octo GX': 'C006', + 'EasySolar-II': 'C007', + 'MultiPlus-II': 'C008', + 'Maxi GX': 'C009', + 'Cerbo GX': 'C00A' + }.get(name, 'C003') # C003 is Generic + + +# Returns False if it cannot open the file. Otherwise returns its rstripped contents +def read_file(path): + content = False + + try: + with open(path, 'r') as f: + content = f.read().rstrip() + except Exception as ex: + logger.debug("Error while reading %s: %s" % (path, ex)) + + return content + + +def wrap_dbus_value(value): + if value is None: + return VEDBUS_INVALID + if isinstance(value, float): + return dbus.Double(value, variant_level=1) + if isinstance(value, bool): + return dbus.Boolean(value, variant_level=1) + if isinstance(value, int): + try: + return dbus.Int32(value, variant_level=1) + except OverflowError: + return dbus.Int64(value, variant_level=1) + if isinstance(value, str): + return dbus.String(value, variant_level=1) + if isinstance(value, list): + if len(value) == 0: + # If the list is empty we cannot infer the type of the contents. So assume unsigned integer. + # A (signed) integer is dangerous, because an empty list of signed integers is used to encode + # an invalid value. + return dbus.Array([], signature=dbus.Signature('u'), variant_level=1) + return dbus.Array([wrap_dbus_value(x) for x in value], variant_level=1) + if isinstance(value, dict): + # Wrapping the keys of the dictionary causes D-Bus errors like: + # 'arguments to dbus_message_iter_open_container() were incorrect, + # assertion "(type == DBUS_TYPE_ARRAY && contained_signature && + # *contained_signature == DBUS_DICT_ENTRY_BEGIN_CHAR) || (contained_signature == NULL || + # _dbus_check_is_valid_signature (contained_signature))" failed in file ...' + return dbus.Dictionary({(k, wrap_dbus_value(v)) for k, v in value.items()}, variant_level=1) + return value + + +dbus_int_types = (dbus.Int32, dbus.UInt32, dbus.Byte, dbus.Int16, dbus.UInt16, dbus.UInt32, dbus.Int64, dbus.UInt64) + + +def unwrap_dbus_value(val): + """Converts D-Bus values back to the original type. For example if val is of type DBus.Double, + a float will be returned.""" + if isinstance(val, dbus_int_types): + return int(val) + if isinstance(val, dbus.Double): + return float(val) + if isinstance(val, dbus.Array): + v = [unwrap_dbus_value(x) for x in val] + return None if len(v) == 0 else v + if isinstance(val, (dbus.Signature, dbus.String)): + return str(val) + # Python has no byte type, so we convert to an integer. + if isinstance(val, dbus.Byte): + return int(val) + if isinstance(val, dbus.ByteArray): + return "".join([bytes(x) for x in val]) + if isinstance(val, (list, tuple)): + return [unwrap_dbus_value(x) for x in val] + if isinstance(val, (dbus.Dictionary, dict)): + # Do not unwrap the keys, see comment in wrap_dbus_value + return dict([(x, unwrap_dbus_value(y)) for x, y in val.items()]) + if isinstance(val, dbus.Boolean): + return bool(val) + return val + +# When supported, only name owner changes for the the given namespace are reported. This +# prevents spending cpu time at irrelevant changes, like scripts accessing the bus temporarily. +def add_name_owner_changed_receiver(dbus, name_owner_changed, namespace="com.victronenergy"): + # support for arg0namespace is submitted upstream, but not included at the time of + # writing, Venus OS does support it, so try if it works. + if namespace is None: + dbus.add_signal_receiver(name_owner_changed, signal_name='NameOwnerChanged') + else: + try: + dbus.add_signal_receiver(name_owner_changed, + signal_name='NameOwnerChanged', arg0namespace=namespace) + except TypeError: + dbus.add_signal_receiver(name_owner_changed, signal_name='NameOwnerChanged') diff --git a/velib_python/velib_python/latest/vedbus.py b/velib_python/velib_python/latest/vedbus.py new file mode 100644 index 0000000..7b02e62 --- /dev/null +++ b/velib_python/velib_python/latest/vedbus.py @@ -0,0 +1,650 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import dbus.service +import logging +import traceback +import os +import weakref +from collections import defaultdict +from ve_utils import wrap_dbus_value, unwrap_dbus_value + +# vedbus contains three classes: +# VeDbusItemImport -> use this to read data from the dbus, ie import +# VeDbusItemExport -> use this to export data to the dbus (one value) +# VeDbusService -> use that to create a service and export several values to the dbus + +# Code for VeDbusItemImport is copied from busitem.py and thereafter modified. +# All projects that used busitem.py need to migrate to this package. And some +# projects used to define there own equivalent of VeDbusItemExport. Better to +# use VeDbusItemExport, or even better the VeDbusService class that does it all for you. + +# TODOS +# 1 check for datatypes, it works now, but not sure if all is compliant with +# com.victronenergy.BusItem interface definition. See also the files in +# tests_and_examples. And see 'if type(v) == dbus.Byte:' on line 102. Perhaps +# something similar should also be done in VeDbusBusItemExport? +# 2 Shouldn't VeDbusBusItemExport inherit dbus.service.Object? +# 7 Make hard rules for services exporting data to the D-Bus, in order to make tracking +# changes possible. Does everybody first invalidate its data before leaving the bus? +# And what about before taking one object away from the bus, instead of taking the +# whole service offline? +# They should! And after taking one value away, do we need to know that someone left +# the bus? Or we just keep that value in invalidated for ever? Result is that we can't +# see the difference anymore between an invalidated value and a value that was first on +# the bus and later not anymore. See comments above VeDbusItemImport as well. +# 9 there are probably more todos in the code below. + +# Some thoughts with regards to the data types: +# +# Text from: http://dbus.freedesktop.org/doc/dbus-python/doc/tutorial.html#data-types +# --- +# Variants are represented by setting the variant_level keyword argument in the +# constructor of any D-Bus data type to a value greater than 0 (variant_level 1 +# means a variant containing some other data type, variant_level 2 means a variant +# containing a variant containing some other data type, and so on). If a non-variant +# is passed as an argument but introspection indicates that a variant is expected, +# it'll automatically be wrapped in a variant. +# --- +# +# Also the different dbus datatypes, such as dbus.Int32, and dbus.UInt32 are a subclass +# of Python int. dbus.String is a subclass of Python standard class unicode, etcetera +# +# So all together that explains why we don't need to explicitly convert back and forth +# between the dbus datatypes and the standard python datatypes. Note that all datatypes +# in python are objects. Even an int is an object. + +# The signature of a variant is 'v'. + +# Export ourselves as a D-Bus service. +class VeDbusService(object): + def __init__(self, servicename, bus=None, register=True): + # dict containing the VeDbusItemExport objects, with their path as the key. + self._dbusobjects = {} + self._dbusnodes = {} + self._ratelimiters = [] + self._dbusname = None + self.name = servicename + + # dict containing the onchange callbacks, for each object. Object path is the key + self._onchangecallbacks = {} + + # Connect to session bus whenever present, else use the system bus + self._dbusconn = bus or (dbus.SessionBus() if 'DBUS_SESSION_BUS_ADDRESS' in os.environ else dbus.SystemBus()) + + # make the dbus connection available to outside, could make this a true property instead, but ach.. + self.dbusconn = self._dbusconn + + # Add the root item that will return all items as a tree + self._dbusnodes['/'] = VeDbusRootExport(self._dbusconn, '/', self) + + # Immediately register the service unless requested not to + if register: + logging.warning("USING OUTDATED REGISTRATION METHOD!") + logging.warning("Please set register=False, then call the register method " + "after adding all mandatory paths. See " + "https://github.com/victronenergy/venus/wiki/dbus-api") + self.register() + + def register(self): + # Register ourselves on the dbus, trigger an error if already in use (do_not_queue) + self._dbusname = dbus.service.BusName(self.name, self._dbusconn, do_not_queue=True) + logging.info("registered ourselves on D-Bus as %s" % self.name) + + # To force immediate deregistering of this dbus service and all its object paths, explicitly + # call __del__(). + def __del__(self): + for node in list(self._dbusnodes.values()): + node.__del__() + self._dbusnodes.clear() + for item in list(self._dbusobjects.values()): + item.__del__() + self._dbusobjects.clear() + if self._dbusname: + self._dbusname.__del__() # Forces call to self._bus.release_name(self._name), see source code + self._dbusname = None + + def get_name(self): + return self._dbusname.get_name() + + # @param callbackonchange function that will be called when this value is changed. First parameter will + # be the path of the object, second the new value. This callback should return + # True to accept the change, False to reject it. + def add_path(self, path, value, description="", writeable=False, + onchangecallback=None, gettextcallback=None, valuetype=None, itemtype=None): + + if onchangecallback is not None: + self._onchangecallbacks[path] = onchangecallback + + itemtype = itemtype or VeDbusItemExport + item = itemtype(self._dbusconn, path, value, description, writeable, + self._value_changed, gettextcallback, deletecallback=self._item_deleted, valuetype=valuetype) + + spl = path.split('/') + for i in range(2, len(spl)): + subPath = '/'.join(spl[:i]) + if subPath not in self._dbusnodes and subPath not in self._dbusobjects: + self._dbusnodes[subPath] = VeDbusTreeExport(self._dbusconn, subPath, self) + self._dbusobjects[path] = item + logging.debug('added %s with start value %s. Writeable is %s' % (path, value, writeable)) + return item + + # Add the mandatory paths, as per victron dbus api doc + def add_mandatory_paths(self, processname, processversion, connection, + deviceinstance, productid, productname, firmwareversion, hardwareversion, connected): + self.add_path('/Mgmt/ProcessName', processname) + self.add_path('/Mgmt/ProcessVersion', processversion) + self.add_path('/Mgmt/Connection', connection) + + # Create rest of the mandatory objects + self.add_path('/DeviceInstance', deviceinstance) + self.add_path('/ProductId', productid) + self.add_path('/ProductName', productname) + self.add_path('/FirmwareVersion', firmwareversion) + self.add_path('/HardwareVersion', hardwareversion) + self.add_path('/Connected', connected) + + # Callback function that is called from the VeDbusItemExport objects when a value changes. This function + # maps the change-request to the onchangecallback given to us for this specific path. + def _value_changed(self, path, newvalue): + if path not in self._onchangecallbacks: + return True + + return self._onchangecallbacks[path](path, newvalue) + + def _item_deleted(self, path): + self._dbusobjects.pop(path) + for np in list(self._dbusnodes.keys()): + if np != '/': + for ip in self._dbusobjects: + if ip.startswith(np + '/'): + break + else: + self._dbusnodes[np].__del__() + self._dbusnodes.pop(np) + + def __getitem__(self, path): + return self._dbusobjects[path].local_get_value() + + def __setitem__(self, path, newvalue): + self._dbusobjects[path].local_set_value(newvalue) + + def __delitem__(self, path): + self._dbusobjects[path].__del__() # Invalidates and then removes the object path + assert path not in self._dbusobjects + + def __contains__(self, path): + return path in self._dbusobjects + + def __enter__(self): + l = ServiceContext(self) + self._ratelimiters.append(l) + return l + + def __exit__(self, *exc): + # pop off the top one and flush it. If with statements are nested + # then each exit flushes its own part. + if self._ratelimiters: + self._ratelimiters.pop().flush() + +class ServiceContext(object): + def __init__(self, parent): + self.parent = parent + self.changes = {} + + def __contains__(self, path): + return path in self.parent + + def __getitem__(self, path): + return self.parent[path] + + def __setitem__(self, path, newvalue): + c = self.parent._dbusobjects[path]._local_set_value(newvalue) + if c is not None: + self.changes[path] = c + + def __delitem__(self, path): + if path in self.changes: + del self.changes[path] + del self.parent[path] + + def flush(self): + if self.changes: + self.parent._dbusnodes['/'].ItemsChanged(self.changes) + self.changes.clear() + + def add_path(self, path, value, *args, **kwargs): + self.parent.add_path(path, value, *args, **kwargs) + self.changes[path] = { + 'Value': wrap_dbus_value(value), + 'Text': self.parent._dbusobjects[path].GetText() + } + + def del_tree(self, root): + root = root.rstrip('/') + for p in list(self.parent._dbusobjects.keys()): + if p == root or p.startswith(root + '/'): + self[p] = None + self.parent._dbusobjects[p].__del__() + + def get_name(self): + return self.parent.get_name() + +class TrackerDict(defaultdict): + """ Same as defaultdict, but passes the key to default_factory. """ + def __missing__(self, key): + self[key] = x = self.default_factory(key) + return x + +class VeDbusRootTracker(object): + """ This tracks the root of a dbus path and listens for PropertiesChanged + signals. When a signal arrives, parse it and unpack the key/value changes + into traditional events, then pass it to the original eventCallback + method. """ + def __init__(self, bus, serviceName): + self.importers = defaultdict(weakref.WeakSet) + self.serviceName = serviceName + self._match = bus.get_object(serviceName, '/', introspect=False).connect_to_signal( + "ItemsChanged", weak_functor(self._items_changed_handler)) + + def __del__(self): + self._match.remove() + self._match = None + + def add(self, i): + self.importers[i.path].add(i) + + def _items_changed_handler(self, items): + if not isinstance(items, dict): + return + + for path, changes in items.items(): + try: + v = changes['Value'] + except KeyError: + continue + + try: + t = changes['Text'] + except KeyError: + t = str(unwrap_dbus_value(v)) + + for i in self.importers.get(path, ()): + i._properties_changed_handler({'Value': v, 'Text': t}) + +""" +Importing basics: + - If when we power up, the D-Bus service does not exist, or it does exist and the path does not + yet exist, still subscribe to a signal: as soon as it comes online it will send a signal with its + initial value, which VeDbusItemImport will receive and use to update local cache. And, when set, + call the eventCallback. + - If when we power up, save it + - When using get_value, know that there is no difference between services (or object paths) that don't + exist and paths that are invalid (= empty array, see above). Both will return None. In case you do + really want to know ifa path exists or not, use the exists property. + - When a D-Bus service leaves the D-Bus, it will first invalidate all its values, and send signals + with that update, and only then leave the D-Bus. (or do we need to subscribe to the NameOwnerChanged- + signal!?!) To be discussed and make sure. Not really urgent, since all existing code that uses this + class already subscribes to the NameOwnerChanged signal, and subsequently removes instances of this + class. + +Read when using this class: +Note that when a service leaves that D-Bus without invalidating all its exported objects first, for +example because it is killed, VeDbusItemImport doesn't have a clue. So when using VeDbusItemImport, +make sure to also subscribe to the NamerOwnerChanged signal on bus-level. Or just use dbusmonitor, +because that takes care of all of that for you. +""" +class VeDbusItemImport(object): + def __new__(cls, bus, serviceName, path, eventCallback=None, createsignal=True): + instance = object.__new__(cls) + + # If signal tracking should be done, also add to root tracker + if createsignal: + if "_roots" not in cls.__dict__: + cls._roots = TrackerDict(lambda k: VeDbusRootTracker(bus, k)) + + return instance + + ## Constructor + # @param bus the bus-object (SESSION or SYSTEM). + # @param serviceName the dbus-service-name (string), for example 'com.victronenergy.battery.ttyO1' + # @param path the object-path, for example '/Dc/V' + # @param eventCallback function that you want to be called on a value change + # @param createSignal only set this to False if you use this function to one time read a value. When + # leaving it to True, make sure to also subscribe to the NameOwnerChanged signal + # elsewhere. See also note some 15 lines up. + def __init__(self, bus, serviceName, path, eventCallback=None, createsignal=True): + # TODO: is it necessary to store _serviceName and _path? Isn't it + # stored in the bus_getobjectsomewhere? + self._serviceName = serviceName + self._path = path + self._match = None + # TODO: _proxy is being used in settingsdevice.py, make a getter for that + self._proxy = bus.get_object(serviceName, path, introspect=False) + self.eventCallback = eventCallback + + assert eventCallback is None or createsignal == True + if createsignal: + self._match = self._proxy.connect_to_signal( + "PropertiesChanged", weak_functor(self._properties_changed_handler)) + self._roots[serviceName].add(self) + + # store the current value in _cachedvalue. When it doesn't exists set _cachedvalue to + # None, same as when a value is invalid + self._cachedvalue = None + try: + v = self._proxy.GetValue() + except dbus.exceptions.DBusException: + pass + else: + self._cachedvalue = unwrap_dbus_value(v) + + def __del__(self): + if self._match is not None: + self._match.remove() + self._match = None + self._proxy = None + + def _refreshcachedvalue(self): + self._cachedvalue = unwrap_dbus_value(self._proxy.GetValue()) + + ## Returns the path as a string, for example '/AC/L1/V' + @property + def path(self): + return self._path + + ## Returns the dbus service name as a string, for example com.victronenergy.vebus.ttyO1 + @property + def serviceName(self): + return self._serviceName + + ## Returns the value of the dbus-item. + # the type will be a dbus variant, for example dbus.Int32(0, variant_level=1) + # this is not a property to keep the name consistant with the com.victronenergy.busitem interface + # returns None when the property is invalid + def get_value(self): + return self._cachedvalue + + ## Writes a new value to the dbus-item + def set_value(self, newvalue): + r = self._proxy.SetValue(wrap_dbus_value(newvalue)) + + # instead of just saving the value, go to the dbus and get it. So we have the right type etc. + if r == 0: + self._refreshcachedvalue() + + return r + + ## Resets the item to its default value + def set_default(self): + self._proxy.SetDefault() + self._refreshcachedvalue() + + ## Returns the text representation of the value. + # For example when the value is an enum/int GetText might return the string + # belonging to that enum value. Another example, for a voltage, GetValue + # would return a float, 12.0Volt, and GetText could return 12 VDC. + # + # Note that this depends on how the dbus-producer has implemented this. + def get_text(self): + return self._proxy.GetText() + + ## Returns true of object path exists, and false if it doesn't + @property + def exists(self): + # TODO: do some real check instead of this crazy thing. + r = False + try: + r = self._proxy.GetValue() + r = True + except dbus.exceptions.DBusException: + pass + + return r + + ## callback for the trigger-event. + # @param eventCallback the event-callback-function. + @property + def eventCallback(self): + return self._eventCallback + + @eventCallback.setter + def eventCallback(self, eventCallback): + self._eventCallback = eventCallback + + ## Is called when the value of the imported bus-item changes. + # Stores the new value in our local cache, and calls the eventCallback, if set. + def _properties_changed_handler(self, changes): + if "Value" in changes: + changes['Value'] = unwrap_dbus_value(changes['Value']) + self._cachedvalue = changes['Value'] + if self._eventCallback: + # The reason behind this try/except is to prevent errors silently ending up the an error + # handler in the dbus code. + try: + self._eventCallback(self._serviceName, self._path, changes) + except: + traceback.print_exc() + os._exit(1) # sys.exit() is not used, since that also throws an exception + + +class VeDbusTreeExport(dbus.service.Object): + def __init__(self, bus, objectPath, service): + dbus.service.Object.__init__(self, bus, objectPath) + self._service = service + logging.debug("VeDbusTreeExport %s has been created" % objectPath) + + def __del__(self): + # self._get_path() will raise an exception when retrieved after the call to .remove_from_connection, + # so we need a copy. + path = self._get_path() + if path is None: + return + self.remove_from_connection() + logging.debug("VeDbusTreeExport %s has been removed" % path) + + def _get_path(self): + if len(self._locations) == 0: + return None + return self._locations[0][1] + + def _get_value_handler(self, path, get_text=False): + logging.debug("_get_value_handler called for %s" % path) + r = {} + px = path + if not px.endswith('/'): + px += '/' + for p, item in self._service._dbusobjects.items(): + if p.startswith(px): + v = item.GetText() if get_text else wrap_dbus_value(item.local_get_value()) + r[p[len(px):]] = v + logging.debug(r) + return r + + @dbus.service.method('com.victronenergy.BusItem', out_signature='v') + def GetValue(self): + value = self._get_value_handler(self._get_path()) + return dbus.Dictionary(value, signature=dbus.Signature('sv'), variant_level=1) + + @dbus.service.method('com.victronenergy.BusItem', out_signature='v') + def GetText(self): + return self._get_value_handler(self._get_path(), True) + + def local_get_value(self): + return self._get_value_handler(self.path) + +class VeDbusRootExport(VeDbusTreeExport): + @dbus.service.signal('com.victronenergy.BusItem', signature='a{sa{sv}}') + def ItemsChanged(self, changes): + pass + + @dbus.service.method('com.victronenergy.BusItem', out_signature='a{sa{sv}}') + def GetItems(self): + return { + path: { + 'Value': wrap_dbus_value(item.local_get_value()), + 'Text': item.GetText() } + for path, item in self._service._dbusobjects.items() + } + + +class VeDbusItemExport(dbus.service.Object): + ## Constructor of VeDbusItemExport + # + # Use this object to export (publish), values on the dbus + # Creates the dbus-object under the given dbus-service-name. + # @param bus The dbus object. + # @param objectPath The dbus-object-path. + # @param value Value to initialize ourselves with, defaults to None which means Invalid + # @param description String containing a description. Can be called over the dbus with GetDescription() + # @param writeable what would this do!? :). + # @param callback Function that will be called when someone else changes the value of this VeBusItem + # over the dbus. First parameter passed to callback will be our path, second the new + # value. This callback should return True to accept the change, False to reject it. + def __init__(self, bus, objectPath, value=None, description=None, writeable=False, + onchangecallback=None, gettextcallback=None, deletecallback=None, + valuetype=None): + dbus.service.Object.__init__(self, bus, objectPath) + self._onchangecallback = onchangecallback + self._gettextcallback = gettextcallback + self._value = value + self._description = description + self._writeable = writeable + self._deletecallback = deletecallback + self._type = valuetype + + # To force immediate deregistering of this dbus object, explicitly call __del__(). + def __del__(self): + # self._get_path() will raise an exception when retrieved after the + # call to .remove_from_connection, so we need a copy. + path = self._get_path() + if path == None: + return + if self._deletecallback is not None: + self._deletecallback(path) + self.remove_from_connection() + logging.debug("VeDbusItemExport %s has been removed" % path) + + def _get_path(self): + if len(self._locations) == 0: + return None + return self._locations[0][1] + + ## Sets the value. And in case the value is different from what it was, a signal + # will be emitted to the dbus. This function is to be used in the python code that + # is using this class to export values to the dbus. + # set value to None to indicate that it is Invalid + def local_set_value(self, newvalue): + changes = self._local_set_value(newvalue) + if changes is not None: + self.PropertiesChanged(changes) + + def _local_set_value(self, newvalue): + if self._value == newvalue: + return None + + self._value = newvalue + return { + 'Value': wrap_dbus_value(newvalue), + 'Text': self.GetText() + } + + def local_get_value(self): + return self._value + + # ==== ALL FUNCTIONS BELOW THIS LINE WILL BE CALLED BY OTHER PROCESSES OVER THE DBUS ==== + + ## Dbus exported method SetValue + # Function is called over the D-Bus by other process. It will first check (via callback) if new + # value is accepted. And it is, stores it and emits a changed-signal. + # @param value The new value. + # @return completion-code When successful a 0 is return, and when not a -1 is returned. + @dbus.service.method('com.victronenergy.BusItem', in_signature='v', out_signature='i') + def SetValue(self, newvalue): + if not self._writeable: + return 1 # NOT OK + + newvalue = unwrap_dbus_value(newvalue) + + # If value type is enforced, cast it. If the type can be coerced + # python will do it for us. This allows ints to become floats, + # or bools to become ints. Additionally also allow None, so that + # a path may be invalidated. + if self._type is not None and newvalue is not None: + try: + newvalue = self._type(newvalue) + except (ValueError, TypeError): + return 1 # NOT OK + + if newvalue == self._value: + return 0 # OK + + # call the callback given to us, and check if new value is OK. + if (self._onchangecallback is None or + (self._onchangecallback is not None and self._onchangecallback(self.__dbus_object_path__, newvalue))): + + self.local_set_value(newvalue) + return 0 # OK + + return 2 # NOT OK + + ## Dbus exported method GetDescription + # + # Returns the a description. + # @param language A language code (e.g. ISO 639-1 en-US). + # @param length Lenght of the language string. + # @return description + @dbus.service.method('com.victronenergy.BusItem', in_signature='si', out_signature='s') + def GetDescription(self, language, length): + return self._description if self._description is not None else 'No description given' + + ## Dbus exported method GetValue + # Returns the value. + # @return the value when valid, and otherwise an empty array + @dbus.service.method('com.victronenergy.BusItem', out_signature='v') + def GetValue(self): + return wrap_dbus_value(self._value) + + ## Dbus exported method GetText + # Returns the value as string of the dbus-object-path. + # @return text A text-value. '---' when local value is invalid + @dbus.service.method('com.victronenergy.BusItem', out_signature='s') + def GetText(self): + if self._value is None: + return '---' + + # Default conversion from dbus.Byte will get you a character (so 'T' instead of '84'), so we + # have to convert to int first. Note that if a dbus.Byte turns up here, it must have come from + # the application itself, as all data from the D-Bus should have been unwrapped by now. + if self._gettextcallback is None and type(self._value) == dbus.Byte: + return str(int(self._value)) + + if self._gettextcallback is None and self.__dbus_object_path__ == '/ProductId': + return "0x%X" % self._value + + if self._gettextcallback is None: + return str(self._value) + + return self._gettextcallback(self.__dbus_object_path__, self._value) + + ## The signal that indicates that the value has changed. + # Other processes connected to this BusItem object will have subscribed to the + # event when they want to track our state. + @dbus.service.signal('com.victronenergy.BusItem', signature='a{sv}') + def PropertiesChanged(self, changes): + pass + +## This class behaves like a regular reference to a class method (eg. self.foo), but keeps a weak reference +## to the object which method is to be called. +## Use this object to break circular references. +class weak_functor: + def __init__(self, f): + self._r = weakref.ref(f.__self__) + self._f = weakref.ref(f.__func__) + + def __call__(self, *args, **kargs): + r = self._r() + f = self._f() + if r == None or f == None: + return + f(r, *args, **kargs) diff --git a/velib_python/velib_python/v3.34/dbusmonitor.py b/velib_python/velib_python/v3.34/dbusmonitor.py new file mode 100644 index 0000000..cb2185d --- /dev/null +++ b/velib_python/velib_python/v3.34/dbusmonitor.py @@ -0,0 +1,554 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +## @package dbus_vrm +# This code takes care of the D-Bus interface (not all of below is implemented yet): +# - on startup it scans the dbus for services we know. For each known service found, it searches for +# objects/paths we know. Everything we find is stored in items{}, and an event is registered: if a +# value changes weĺl be notified and can pass that on to our owner. For example the vrmLogger. +# we know. +# - after startup, it continues to monitor the dbus: +# 1) when services are added we do the same check on that +# 2) when services are removed, we remove any items that we had that referred to that service +# 3) if an existing services adds paths we update ourselves as well: on init, we make a +# VeDbusItemImport for a non-, or not yet existing objectpaths as well1 +# +# Code is used by the vrmLogger, and also the pubsub code. Both are other modules in the dbus_vrm repo. + +from dbus.mainloop.glib import DBusGMainLoop +from gi.repository import GLib +import dbus +import dbus.service +import inspect +import logging +import argparse +import pprint +import traceback +import os +from collections import defaultdict +from functools import partial + +# our own packages +from ve_utils import exit_on_error, wrap_dbus_value, unwrap_dbus_value +notfound = object() # For lookups where None is a valid result + +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) +class SystemBus(dbus.bus.BusConnection): + def __new__(cls): + return dbus.bus.BusConnection.__new__(cls, dbus.bus.BusConnection.TYPE_SYSTEM) + +class SessionBus(dbus.bus.BusConnection): + def __new__(cls): + return dbus.bus.BusConnection.__new__(cls, dbus.bus.BusConnection.TYPE_SESSION) + +class MonitoredValue(object): + def __init__(self, value, text, options): + super(MonitoredValue, self).__init__() + self.value = value + self.text = text + self.options = options + + # For legacy code, allow treating this as a tuple/list + def __iter__(self): + return iter((self.value, self.text, self.options)) + +class Service(object): + def __init__(self, id, serviceName, deviceInstance): + super(Service, self).__init__() + self.id = id + self.name = serviceName + self.paths = {} + self._seen = set() + self.deviceInstance = deviceInstance + + # For legacy code, attributes can still be accessed as if keys from a + # dictionary. + def __setitem__(self, key, value): + self.__dict__[key] = value + def __getitem__(self, key): + return self.__dict__[key] + + def set_seen(self, path): + self._seen.add(path) + + def seen(self, path): + return path in self._seen + + @property + def service_class(self): + return '.'.join(self.name.split('.')[:3]) + +class DbusMonitor(object): + ## Constructor + def __init__(self, dbusTree, valueChangedCallback=None, deviceAddedCallback=None, + deviceRemovedCallback=None, namespace="com.victronenergy"): + # valueChangedCallback is the callback that we call when something has changed. + # def value_changed_on_dbus(dbusServiceName, dbusPath, options, changes, deviceInstance): + # in which changes is a tuple with GetText() and GetValue() + self.valueChangedCallback = valueChangedCallback + self.deviceAddedCallback = deviceAddedCallback + self.deviceRemovedCallback = deviceRemovedCallback + self.dbusTree = dbusTree + + # Lists all tracked services. Stores name, id, device instance, value per path, and whenToLog info + # indexed by service name (eg. com.victronenergy.settings). + self.servicesByName = {} + + # Same values as self.servicesByName, but indexed by service id (eg. :1.30) + self.servicesById = {} + + # Keep track of services by class to speed up calls to get_service_list + self.servicesByClass = defaultdict(list) + + # Keep track of any additional watches placed on items + self.serviceWatches = defaultdict(list) + + # For a PC, connect to the SessionBus + # For a CCGX, connect to the SystemBus + self.dbusConn = SessionBus() if 'DBUS_SESSION_BUS_ADDRESS' in os.environ else SystemBus() + + # subscribe to NameOwnerChange for bus connect / disconnect events. + # NOTE: this is on a different bus then the one above! + standardBus = (dbus.SessionBus() if 'DBUS_SESSION_BUS_ADDRESS' in os.environ \ + else dbus.SystemBus()) + + self.add_name_owner_changed_receiver(standardBus, self.dbus_name_owner_changed) + + # Subscribe to PropertiesChanged for all services + self.dbusConn.add_signal_receiver(self.handler_value_changes, + dbus_interface='com.victronenergy.BusItem', + signal_name='PropertiesChanged', path_keyword='path', + sender_keyword='senderId') + + # Subscribe to ItemsChanged for all services + self.dbusConn.add_signal_receiver(self.handler_item_changes, + dbus_interface='com.victronenergy.BusItem', + signal_name='ItemsChanged', path='/', + sender_keyword='senderId') + + logger.info('===== Search on dbus for services that we will monitor starting... =====') + serviceNames = self.dbusConn.list_names() + for serviceName in serviceNames: + self.scan_dbus_service(serviceName) + + logger.info('===== Search on dbus for services that we will monitor finished =====') + + @staticmethod + def make_service(serviceId, serviceName, deviceInstance): + """ Override this to use a different kind of service object. """ + return Service(serviceId, serviceName, deviceInstance) + + def make_monitor(self, service, path, value, text, options): + """ Override this to do more things with monitoring. """ + return MonitoredValue(unwrap_dbus_value(value), unwrap_dbus_value(text), options) + + def dbus_name_owner_changed(self, name, oldowner, newowner): + if not name.startswith("com.victronenergy."): + return + + #decouple, and process in main loop + GLib.idle_add(exit_on_error, self._process_name_owner_changed, name, oldowner, newowner) + + @staticmethod + # When supported, only name owner changes for the the given namespace are reported. This + # prevents spending cpu time at irrelevant changes, like scripts accessing the bus temporarily. + def add_name_owner_changed_receiver(dbus, name_owner_changed, namespace="com.victronenergy"): + # support for arg0namespace is submitted upstream, but not included at the time of + # writing, Venus OS does support it, so try if it works. + if namespace is None: + dbus.add_signal_receiver(name_owner_changed, signal_name='NameOwnerChanged') + else: + try: + dbus.add_signal_receiver(name_owner_changed, + signal_name='NameOwnerChanged', arg0namespace=namespace) + except TypeError: + dbus.add_signal_receiver(name_owner_changed, signal_name='NameOwnerChanged') + + def _process_name_owner_changed(self, name, oldowner, newowner): + if newowner != '': + # so we found some new service. Check if we can do something with it. + newdeviceadded = self.scan_dbus_service(name) + if newdeviceadded and self.deviceAddedCallback is not None: + self.deviceAddedCallback(name, self.get_device_instance(name)) + + elif name in self.servicesByName: + # it disappeared, we need to remove it. + logger.info("%s disappeared from the dbus. Removing it from our lists" % name) + service = self.servicesByName[name] + del self.servicesById[service.id] + del self.servicesByName[name] + for watch in self.serviceWatches[name]: + watch.remove() + del self.serviceWatches[name] + self.servicesByClass[service.service_class].remove(service) + if self.deviceRemovedCallback is not None: + self.deviceRemovedCallback(name, service.deviceInstance) + + def scan_dbus_service(self, serviceName): + try: + return self.scan_dbus_service_inner(serviceName) + except: + logger.error("Ignoring %s because of error while scanning:" % (serviceName)) + traceback.print_exc() + return False + + # Errors 'org.freedesktop.DBus.Error.ServiceUnknown' and + # 'org.freedesktop.DBus.Error.Disconnected' seem to happen when the service + # disappears while its being scanned. Which might happen, but is not really + # normal either, so letting them go into the logs. + + # Scans the given dbus service to see if it contains anything interesting for us. If it does, add + # it to our list of monitored D-Bus services. + def scan_dbus_service_inner(self, serviceName): + + # make it a normal string instead of dbus string + serviceName = str(serviceName) + + paths = self.dbusTree.get('.'.join(serviceName.split('.')[0:3]), None) + if paths is None: + logger.debug("Ignoring service %s, not in the tree" % serviceName) + return False + + logger.info("Found: %s, scanning and storing items" % serviceName) + serviceId = self.dbusConn.get_name_owner(serviceName) + + # we should never be notified to add a D-Bus service that we already have. If this assertion + # raises, check process_name_owner_changed, and D-Bus workings. + assert serviceName not in self.servicesByName + assert serviceId not in self.servicesById + + if serviceName == 'com.victronenergy.settings': + di = 0 + elif serviceName.startswith('com.victronenergy.vecan.'): + di = 0 + else: + try: + di = self.dbusConn.call_blocking(serviceName, + '/DeviceInstance', None, 'GetValue', '', []) + except dbus.exceptions.DBusException: + logger.info(" %s was skipped because it has no device instance" % serviceName) + return False # Skip it + else: + di = int(di) + + logger.info(" %s has device instance %s" % (serviceName, di)) + service = self.make_service(serviceId, serviceName, di) + + # Let's try to fetch everything in one go + values = {} + texts = {} + try: + values.update(self.dbusConn.call_blocking(serviceName, '/', None, 'GetValue', '', [])) + texts.update(self.dbusConn.call_blocking(serviceName, '/', None, 'GetText', '', [])) + except: + pass + + for path, options in paths.items(): + # path will be the D-Bus path: '/Ac/ActiveIn/L1/V' + # options will be a dictionary: {'code': 'V', 'whenToLog': 'onIntervalAlways'} + + # Try to obtain the value we want from our bulk fetch. If we + # cannot find it there, do an individual query. + value = values.get(path[1:], notfound) + if value != notfound: + service.set_seen(path) + text = texts.get(path[1:], notfound) + if value is notfound or text is notfound: + try: + value = self.dbusConn.call_blocking(serviceName, path, None, 'GetValue', '', []) + service.set_seen(path) + text = self.dbusConn.call_blocking(serviceName, path, None, 'GetText', '', []) + except dbus.exceptions.DBusException as e: + if e.get_dbus_name() in ( + 'org.freedesktop.DBus.Error.ServiceUnknown', + 'org.freedesktop.DBus.Error.Disconnected'): + raise # This exception will be handled below + + # TODO org.freedesktop.DBus.Error.UnknownMethod really + # shouldn't happen but sometimes does. + logger.debug("%s %s does not exist (yet)" % (serviceName, path)) + value = None + text = None + + service.paths[path] = self.make_monitor(service, path, unwrap_dbus_value(value), unwrap_dbus_value(text), options) + + + logger.debug("Finished scanning and storing items for %s" % serviceName) + + # Adjust self at the end of the scan, so we don't have an incomplete set of + # data if an exception occurs during the scan. + self.servicesByName[serviceName] = service + self.servicesById[serviceId] = service + self.servicesByClass[service.service_class].append(service) + + return True + + def handler_item_changes(self, items, senderId): + if not isinstance(items, dict): + return + + try: + service = self.servicesById[senderId] + except KeyError: + # senderId isn't there, which means it hasn't been scanned yet. + return + + for path, changes in items.items(): + try: + v = unwrap_dbus_value(changes['Value']) + except (KeyError, TypeError): + continue + + try: + t = changes['Text'] + except KeyError: + t = str(v) + self._handler_value_changes(service, path, v, t) + + def handler_value_changes(self, changes, path, senderId): + # If this properyChange does not involve a value, our work is done. + if 'Value' not in changes: + return + + try: + service = self.servicesById[senderId] + except KeyError: + # senderId isn't there, which means it hasn't been scanned yet. + return + + v = unwrap_dbus_value(changes['Value']) + # Some services don't send Text with their PropertiesChanged events. + try: + t = changes['Text'] + except KeyError: + t = str(v) + self._handler_value_changes(service, path, v, t) + + def _handler_value_changes(self, service, path, value, text): + try: + a = service.paths[path] + except KeyError: + # path isn't there, which means it hasn't been scanned yet. + return + + service.set_seen(path) + + # First update our store to the new value + if a.value == value: + return + + a.value = value + a.text = text + + # And do the rest of the processing in on the mainloop + if self.valueChangedCallback is not None: + GLib.idle_add(exit_on_error, self._execute_value_changes, service.name, path, { + 'Value': value, 'Text': text}, a.options) + + def _execute_value_changes(self, serviceName, objectPath, changes, options): + # double check that the service still exists, as it might have + # disappeared between scheduling-for and executing this function. + if serviceName not in self.servicesByName: + return + + self.valueChangedCallback(serviceName, objectPath, + options, changes, self.get_device_instance(serviceName)) + + # Gets the value for a certain servicename and path + # The default_value is returned when: + # 1. When the service doesn't exist. + # 2. When the path asked for isn't being monitored. + # 3. When the path exists, but has dbus-invalid, ie an empty byte array. + # 4. When the path asked for is being monitored, but doesn't exist for that service. + def get_value(self, serviceName, objectPath, default_value=None): + service = self.servicesByName.get(serviceName, None) + if service is None: + return default_value + + value = service.paths.get(objectPath, None) + if value is None or value.value is None: + return default_value + + return value.value + + # returns if a dbus exists now, by doing a blocking dbus call. + # Typically seen will be sufficient and doesn't need access to the dbus. + def exists(self, serviceName, objectPath): + try: + self.dbusConn.call_blocking(serviceName, objectPath, None, 'GetValue', '', []) + return True + except dbus.exceptions.DBusException as e: + return False + + # Returns if there ever was a successful GetValue or valueChanged event. + # Unlike get_value this return True also if the actual value is invalid. + # + # Note: the path might no longer exists anymore, but that doesn't happen in + # practice. If a service really wants to reconfigure itself typically it should + # reconnect to the dbus which causes it to be rescanned and seen will be updated. + # If it is really needed to know if a path still exists, use exists. + def seen(self, serviceName, objectPath): + try: + return self.servicesByName[serviceName].seen(objectPath) + except KeyError: + return False + + # Sets the value for a certain servicename and path, returns the return value of the D-Bus SetValue + # method. If the underlying item does not exist (the service does not exist, or the objectPath was not + # registered) the function will return -1 + def set_value(self, serviceName, objectPath, value): + # Check if the D-Bus object referenced by serviceName and objectPath is registered. There is no + # necessity to do this, but it is in line with previous implementations which kept VeDbusItemImport + # objects for registers items only. + service = self.servicesByName.get(serviceName, None) + if service is None: + return -1 + if objectPath not in service.paths: + return -1 + # We do not catch D-Bus exceptions here, because the previous implementation did not do that either. + return self.dbusConn.call_blocking(serviceName, objectPath, + dbus_interface='com.victronenergy.BusItem', + method='SetValue', signature=None, + args=[wrap_dbus_value(value)]) + + # Similar to set_value, but operates asynchronously + def set_value_async(self, serviceName, objectPath, value, + reply_handler=None, error_handler=None): + service = self.servicesByName.get(serviceName, None) + if service is not None: + if objectPath in service.paths: + self.dbusConn.call_async(serviceName, objectPath, + dbus_interface='com.victronenergy.BusItem', + method='SetValue', signature=None, + args=[wrap_dbus_value(value)], + reply_handler=reply_handler, error_handler=error_handler) + return + + if error_handler is not None: + error_handler(TypeError('Service or path not found, ' + 'service=%s, path=%s' % (serviceName, objectPath))) + + # returns a dictionary, keys are the servicenames, value the instances + # optionally use the classfilter to get only a certain type of services, for + # example com.victronenergy.battery. + def get_service_list(self, classfilter=None): + if classfilter is None: + return { servicename: service.deviceInstance \ + for servicename, service in self.servicesByName.items() } + + if classfilter not in self.servicesByClass: + return {} + + return { service.name: service.deviceInstance \ + for service in self.servicesByClass[classfilter] } + + def get_device_instance(self, serviceName): + return self.servicesByName[serviceName].deviceInstance + + def track_value(self, serviceName, objectPath, callback, *args, **kwargs): + """ A DbusMonitor can watch specific service/path combos for changes + so that it is not fully reliant on the global handler_value_changes + in this class. Additional watches are deleted automatically when + the service disappears from dbus. """ + cb = partial(callback, *args, **kwargs) + + def root_tracker(items): + # Check if objectPath in dict + try: + v = items[objectPath] + _v = unwrap_dbus_value(v['Value']) + except (KeyError, TypeError): + return # not in this dict + + try: + t = v['Text'] + except KeyError: + cb({'Value': _v }) + else: + cb({'Value': _v, 'Text': t}) + + # Track changes on the path, and also on root + self.serviceWatches[serviceName].extend(( + self.dbusConn.add_signal_receiver(cb, + dbus_interface='com.victronenergy.BusItem', + signal_name='PropertiesChanged', + path=objectPath, bus_name=serviceName), + self.dbusConn.add_signal_receiver(root_tracker, + dbus_interface='com.victronenergy.BusItem', + signal_name='ItemsChanged', + path="/", bus_name=serviceName), + )) + + +# ====== ALL CODE BELOW THIS LINE IS PURELY FOR DEVELOPING THIS CLASS ====== + +# Example function that can be used as a starting point to use this code +def value_changed_on_dbus(dbusServiceName, dbusPath, dict, changes, deviceInstance): + logger.debug("0 ----------------") + logger.debug("1 %s%s changed" % (dbusServiceName, dbusPath)) + logger.debug("2 vrm dict : %s" % dict) + logger.debug("3 changes-text: %s" % changes['Text']) + logger.debug("4 changes-value: %s" % changes['Value']) + logger.debug("5 deviceInstance: %s" % deviceInstance) + logger.debug("6 - end") + + +def nameownerchange(a, b): + # used to find memory leaks in dbusmonitor and VeDbusItemImport + import gc + gc.collect() + objects = gc.get_objects() + print (len([o for o in objects if type(o).__name__ == 'VeDbusItemImport'])) + print (len([o for o in objects if type(o).__name__ == 'SignalMatch'])) + print (len(objects)) + + +def print_values(dbusmonitor): + a = dbusmonitor.get_value('wrongservice', '/DbusInvalid', default_value=1000) + b = dbusmonitor.get_value('com.victronenergy.dummyservice.ttyO1', '/NotInTheMonitorList', default_value=1000) + c = dbusmonitor.get_value('com.victronenergy.dummyservice.ttyO1', '/DbusInvalid', default_value=1000) + d = dbusmonitor.get_value('com.victronenergy.dummyservice.ttyO1', '/NonExistingButMonitored', default_value=1000) + + print ("All should be 1000: Wrong Service: %s, NotInTheMonitorList: %s, DbusInvalid: %s, NonExistingButMonitored: %s" % (a, b, c, d)) + return True + +# We have a mainloop, but that is just for developing this code. Normally above class & code is used from +# some other class, such as vrmLogger or the pubsub Implementation. +def main(): + # Init logging + logging.basicConfig(level=logging.DEBUG) + logger.info(__file__ + " is starting up") + + # Have a mainloop, so we can send/receive asynchronous calls to and from dbus + DBusGMainLoop(set_as_default=True) + + import os + import sys + sys.path.insert(1, os.path.join(os.path.dirname(__file__), '../../')) + + dummy = {'code': None, 'whenToLog': 'configChange', 'accessLevel': None} + monitorlist = {'com.victronenergy.dummyservice': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/0/Temperature': dummy, + '/Load/I': dummy, + '/FirmwareVersion': dummy, + '/DbusInvalid': dummy, + '/NonExistingButMonitored': dummy}} + + d = DbusMonitor(monitorlist, value_changed_on_dbus, + deviceAddedCallback=nameownerchange, deviceRemovedCallback=nameownerchange) + + GLib.timeout_add(1000, print_values, d) + + # Start and run the mainloop + logger.info("Starting mainloop, responding on only events") + mainloop = GLib.MainLoop() + mainloop.run() + +if __name__ == "__main__": + main() diff --git a/velib_python/velib_python/v3.34/oldestVersion b/velib_python/velib_python/v3.34/oldestVersion new file mode 100644 index 0000000..1d17edb --- /dev/null +++ b/velib_python/velib_python/v3.34/oldestVersion @@ -0,0 +1 @@ +v3.10 diff --git a/velib_python/velib_python/v3.34/settingsdevice.py b/velib_python/velib_python/v3.34/settingsdevice.py new file mode 100644 index 0000000..a207e8b --- /dev/null +++ b/velib_python/velib_python/v3.34/settingsdevice.py @@ -0,0 +1,118 @@ +import dbus +import logging +import time +from functools import partial + +# Local imports +from vedbus import VeDbusItemImport + +## Indexes for the setting dictonary. +PATH = 0 +VALUE = 1 +MINIMUM = 2 +MAXIMUM = 3 +SILENT = 4 + +## The Settings Device class. +# Used by python programs, such as the vrm-logger, to read and write settings they +# need to store on disk. And since these settings might be changed from a different +# source, such as the GUI, the program can pass an eventCallback that will be called +# as soon as some setting is changed. +# +# The settings are stored in flash via the com.victronenergy.settings service on dbus. +# See https://github.com/victronenergy/localsettings for more info. +# +# If there are settings in de supportSettings list which are not yet on the dbus, +# and therefore not yet in the xml file, they will be added through the dbus-addSetting +# interface of com.victronenergy.settings. +class SettingsDevice(object): + ## The constructor processes the tree of dbus-items. + # @param bus the system-dbus object + # @param name the dbus-service-name of the settings dbus service, 'com.victronenergy.settings' + # @param supportedSettings dictionary with all setting-names, and their defaultvalue, min, max and whether + # the setting is silent. The 'silent' entry is optional. If set to true, no changes in the setting will + # be logged by localsettings. + # @param eventCallback function that will be called on changes on any of these settings + # @param timeout Maximum interval to wait for localsettings. An exception is thrown at the end of the + # interval if the localsettings D-Bus service has not appeared yet. + def __init__(self, bus, supportedSettings, eventCallback, name='com.victronenergy.settings', timeout=0): + logging.debug("===== Settings device init starting... =====") + self._bus = bus + self._dbus_name = name + self._eventCallback = eventCallback + self._values = {} # stored the values, used to pass the old value along on a setting change + self._settings = {} + + count = 0 + while True: + if 'com.victronenergy.settings' in self._bus.list_names(): + break + if count == timeout: + raise Exception("The settings service com.victronenergy.settings does not exist!") + count += 1 + logging.info('waiting for settings') + time.sleep(1) + + # Add the items. + self.addSettings(supportedSettings) + + logging.debug("===== Settings device init finished =====") + + def addSettings(self, settings): + for setting, options in settings.items(): + silent = len(options) > SILENT and options[SILENT] + busitem = self.addSetting(options[PATH], options[VALUE], + options[MINIMUM], options[MAXIMUM], silent, callback=partial(self.handleChangedSetting, setting)) + self._settings[setting] = busitem + self._values[setting] = busitem.get_value() + + def addSetting(self, path, value, _min, _max, silent=False, callback=None): + busitem = VeDbusItemImport(self._bus, self._dbus_name, path, callback) + if busitem.exists and (value, _min, _max, silent) == busitem._proxy.GetAttributes(): + logging.debug("Setting %s found" % path) + else: + logging.info("Setting %s does not exist yet or must be adjusted" % path) + + # Prepare to add the setting. Most dbus types extend the python + # type so it is only necessary to additionally test for Int64. + if isinstance(value, (int, dbus.Int64)): + itemType = 'i' + elif isinstance(value, float): + itemType = 'f' + else: + itemType = 's' + + # Add the setting + # TODO, make an object that inherits VeDbusItemImport, and complete the D-Bus settingsitem interface + settings_item = VeDbusItemImport(self._bus, self._dbus_name, '/Settings', createsignal=False) + setting_path = path.replace('/Settings/', '', 1) + if silent: + settings_item._proxy.AddSilentSetting('', setting_path, value, itemType, _min, _max) + else: + settings_item._proxy.AddSetting('', setting_path, value, itemType, _min, _max) + + busitem = VeDbusItemImport(self._bus, self._dbus_name, path, callback) + + return busitem + + def handleChangedSetting(self, setting, servicename, path, changes): + oldvalue = self._values[setting] if setting in self._values else None + self._values[setting] = changes['Value'] + + if self._eventCallback is None: + return + + self._eventCallback(setting, oldvalue, changes['Value']) + + def setDefault(self, path): + item = VeDbusItemImport(self._bus, self._dbus_name, path, createsignal=False) + item.set_default() + + def __getitem__(self, setting): + return self._settings[setting].get_value() + + def __setitem__(self, setting, newvalue): + result = self._settings[setting].set_value(newvalue) + if result != 0: + # Trying to make some false change to our own settings? How dumb! + assert False diff --git a/velib_python/velib_python/v3.34/ve_utils.py b/velib_python/velib_python/v3.34/ve_utils.py new file mode 100644 index 0000000..63a915b --- /dev/null +++ b/velib_python/velib_python/v3.34/ve_utils.py @@ -0,0 +1,262 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +import sys +from traceback import print_exc +from os import _exit as os_exit +from os import statvfs +from subprocess import check_output, CalledProcessError +import logging +import dbus +logger = logging.getLogger(__name__) + +VEDBUS_INVALID = dbus.Array([], signature=dbus.Signature('i'), variant_level=1) + +class NoVrmPortalIdError(Exception): + pass + +# Use this function to make sure the code quits on an unexpected exception. Make sure to use it +# when using GLib.idle_add and also GLib.timeout_add. +# Without this, the code will just keep running, since GLib does not stop the mainloop on an +# exception. +# Example: GLib.idle_add(exit_on_error, myfunc, arg1, arg2) +def exit_on_error(func, *args, **kwargs): + try: + return func(*args, **kwargs) + except: + try: + print ('exit_on_error: there was an exception. Printing stacktrace will be tried and then exit') + print_exc() + except: + pass + + # sys.exit() is not used, since that throws an exception, which does not lead to a program + # halt when used in a dbus callback, see connection.py in the Python/Dbus libraries, line 230. + os_exit(1) + + +__vrm_portal_id = None +def get_vrm_portal_id(): + # The original definition of the VRM Portal ID is that it is the mac + # address of the onboard- ethernet port (eth0), stripped from its colons + # (:) and lower case. This may however differ between platforms. On Venus + # the task is therefore deferred to /sbin/get-unique-id so that a + # platform specific method can be easily defined. + # + # If /sbin/get-unique-id does not exist, then use the ethernet address + # of eth0. This also handles the case where velib_python is used as a + # package install on a Raspberry Pi. + # + # On a Linux host where the network interface may not be eth0, you can set + # the VRM_IFACE environment variable to the correct name. + + global __vrm_portal_id + + if __vrm_portal_id: + return __vrm_portal_id + + portal_id = None + + # First try the method that works if we don't have a data partition. This + # will fail when the current user is not root. + try: + portal_id = check_output("/sbin/get-unique-id").decode("utf-8", "ignore").strip() + if not portal_id: + raise NoVrmPortalIdError("get-unique-id returned blank") + __vrm_portal_id = portal_id + return portal_id + except CalledProcessError: + # get-unique-id returned non-zero + raise NoVrmPortalIdError("get-unique-id returned non-zero") + except OSError: + # File doesn't exist, use fallback + pass + + # Fall back to getting our id using a syscall. Assume we are on linux. + # Allow the user to override what interface is used using an environment + # variable. + import fcntl, socket, struct, os + + iface = os.environ.get('VRM_IFACE', 'eth0').encode('ascii') + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + try: + info = fcntl.ioctl(s.fileno(), 0x8927, struct.pack('256s', iface[:15])) + except IOError: + raise NoVrmPortalIdError("ioctl failed for eth0") + + __vrm_portal_id = info[18:24].hex() + return __vrm_portal_id + + +# See VE.Can registers - public.docx for definition of this conversion +def convert_vreg_version_to_readable(version): + def str_to_arr(x, length): + a = [] + for i in range(0, len(x), length): + a.append(x[i:i+length]) + return a + + x = "%x" % version + x = x.upper() + + if len(x) == 5 or len(x) == 3 or len(x) == 1: + x = '0' + x + + a = str_to_arr(x, 2); + + # remove the first 00 if there are three bytes and it is 00 + if len(a) == 3 and a[0] == '00': + a.remove(0); + + # if we have two or three bytes now, and the first character is a 0, remove it + if len(a) >= 2 and a[0][0:1] == '0': + a[0] = a[0][1]; + + result = '' + for item in a: + result += ('.' if result != '' else '') + item + + + result = 'v' + result + + return result + + +def get_free_space(path): + result = -1 + + try: + s = statvfs(path) + result = s.f_frsize * s.f_bavail # Number of free bytes that ordinary users + except Exception as ex: + logger.info("Error while retrieving free space for path %s: %s" % (path, ex)) + + return result + + +def _get_sysfs_machine_name(): + try: + with open('/sys/firmware/devicetree/base/model', 'r') as f: + return f.read().rstrip('\x00') + except IOError: + pass + + return None + +# Returns None if it cannot find a machine name. Otherwise returns the string +# containing the name +def get_machine_name(): + # First try calling the venus utility script + try: + return check_output("/usr/bin/product-name").strip().decode('UTF-8') + except (CalledProcessError, OSError): + pass + + # Fall back to sysfs + name = _get_sysfs_machine_name() + if name is not None: + return name + + # Fall back to venus build machine name + try: + with open('/etc/venus/machine', 'r', encoding='UTF-8') as f: + return f.read().strip() + except IOError: + pass + + return None + + +def get_product_id(): + """ Find the machine ID and return it. """ + + # First try calling the venus utility script + try: + return check_output("/usr/bin/product-id").strip().decode('UTF-8') + except (CalledProcessError, OSError): + pass + + # Fall back machine name mechanism + name = _get_sysfs_machine_name() + return { + 'Color Control GX': 'C001', + 'Venus GX': 'C002', + 'Octo GX': 'C006', + 'EasySolar-II': 'C007', + 'MultiPlus-II': 'C008', + 'Maxi GX': 'C009', + 'Cerbo GX': 'C00A' + }.get(name, 'C003') # C003 is Generic + + +# Returns False if it cannot open the file. Otherwise returns its rstripped contents +def read_file(path): + content = False + + try: + with open(path, 'r') as f: + content = f.read().rstrip() + except Exception as ex: + logger.debug("Error while reading %s: %s" % (path, ex)) + + return content + + +def wrap_dbus_value(value): + if value is None: + return VEDBUS_INVALID + if isinstance(value, float): + return dbus.Double(value, variant_level=1) + if isinstance(value, bool): + return dbus.Boolean(value, variant_level=1) + if isinstance(value, int): + try: + return dbus.Int32(value, variant_level=1) + except OverflowError: + return dbus.Int64(value, variant_level=1) + if isinstance(value, str): + return dbus.String(value, variant_level=1) + if isinstance(value, list): + if len(value) == 0: + # If the list is empty we cannot infer the type of the contents. So assume unsigned integer. + # A (signed) integer is dangerous, because an empty list of signed integers is used to encode + # an invalid value. + return dbus.Array([], signature=dbus.Signature('u'), variant_level=1) + return dbus.Array([wrap_dbus_value(x) for x in value], variant_level=1) + if isinstance(value, dict): + # Wrapping the keys of the dictionary causes D-Bus errors like: + # 'arguments to dbus_message_iter_open_container() were incorrect, + # assertion "(type == DBUS_TYPE_ARRAY && contained_signature && + # *contained_signature == DBUS_DICT_ENTRY_BEGIN_CHAR) || (contained_signature == NULL || + # _dbus_check_is_valid_signature (contained_signature))" failed in file ...' + return dbus.Dictionary({(k, wrap_dbus_value(v)) for k, v in value.items()}, variant_level=1) + return value + + +dbus_int_types = (dbus.Int32, dbus.UInt32, dbus.Byte, dbus.Int16, dbus.UInt16, dbus.UInt32, dbus.Int64, dbus.UInt64) + + +def unwrap_dbus_value(val): + """Converts D-Bus values back to the original type. For example if val is of type DBus.Double, + a float will be returned.""" + if isinstance(val, dbus_int_types): + return int(val) + if isinstance(val, dbus.Double): + return float(val) + if isinstance(val, dbus.Array): + v = [unwrap_dbus_value(x) for x in val] + return None if len(v) == 0 else v + if isinstance(val, (dbus.Signature, dbus.String)): + return str(val) + # Python has no byte type, so we convert to an integer. + if isinstance(val, dbus.Byte): + return int(val) + if isinstance(val, dbus.ByteArray): + return "".join([bytes(x) for x in val]) + if isinstance(val, (list, tuple)): + return [unwrap_dbus_value(x) for x in val] + if isinstance(val, (dbus.Dictionary, dict)): + # Do not unwrap the keys, see comment in wrap_dbus_value + return dict([(x, unwrap_dbus_value(y)) for x, y in val.items()]) + if isinstance(val, dbus.Boolean): + return bool(val) + return val diff --git a/velib_python/velib_python/v3.34/vedbus.py b/velib_python/velib_python/v3.34/vedbus.py new file mode 100644 index 0000000..8c101ea --- /dev/null +++ b/velib_python/velib_python/v3.34/vedbus.py @@ -0,0 +1,611 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import dbus.service +import logging +import traceback +import os +import weakref +from collections import defaultdict +from ve_utils import wrap_dbus_value, unwrap_dbus_value + +# vedbus contains three classes: +# VeDbusItemImport -> use this to read data from the dbus, ie import +# VeDbusItemExport -> use this to export data to the dbus (one value) +# VeDbusService -> use that to create a service and export several values to the dbus + +# Code for VeDbusItemImport is copied from busitem.py and thereafter modified. +# All projects that used busitem.py need to migrate to this package. And some +# projects used to define there own equivalent of VeDbusItemExport. Better to +# use VeDbusItemExport, or even better the VeDbusService class that does it all for you. + +# TODOS +# 1 check for datatypes, it works now, but not sure if all is compliant with +# com.victronenergy.BusItem interface definition. See also the files in +# tests_and_examples. And see 'if type(v) == dbus.Byte:' on line 102. Perhaps +# something similar should also be done in VeDbusBusItemExport? +# 2 Shouldn't VeDbusBusItemExport inherit dbus.service.Object? +# 7 Make hard rules for services exporting data to the D-Bus, in order to make tracking +# changes possible. Does everybody first invalidate its data before leaving the bus? +# And what about before taking one object away from the bus, instead of taking the +# whole service offline? +# They should! And after taking one value away, do we need to know that someone left +# the bus? Or we just keep that value in invalidated for ever? Result is that we can't +# see the difference anymore between an invalidated value and a value that was first on +# the bus and later not anymore. See comments above VeDbusItemImport as well. +# 9 there are probably more todos in the code below. + +# Some thoughts with regards to the data types: +# +# Text from: http://dbus.freedesktop.org/doc/dbus-python/doc/tutorial.html#data-types +# --- +# Variants are represented by setting the variant_level keyword argument in the +# constructor of any D-Bus data type to a value greater than 0 (variant_level 1 +# means a variant containing some other data type, variant_level 2 means a variant +# containing a variant containing some other data type, and so on). If a non-variant +# is passed as an argument but introspection indicates that a variant is expected, +# it'll automatically be wrapped in a variant. +# --- +# +# Also the different dbus datatypes, such as dbus.Int32, and dbus.UInt32 are a subclass +# of Python int. dbus.String is a subclass of Python standard class unicode, etcetera +# +# So all together that explains why we don't need to explicitly convert back and forth +# between the dbus datatypes and the standard python datatypes. Note that all datatypes +# in python are objects. Even an int is an object. + +# The signature of a variant is 'v'. + +# Export ourselves as a D-Bus service. +class VeDbusService(object): + def __init__(self, servicename, bus=None): + # dict containing the VeDbusItemExport objects, with their path as the key. + self._dbusobjects = {} + self._dbusnodes = {} + self._ratelimiters = [] + self._dbusname = None + + # dict containing the onchange callbacks, for each object. Object path is the key + self._onchangecallbacks = {} + + # Connect to session bus whenever present, else use the system bus + self._dbusconn = bus or (dbus.SessionBus() if 'DBUS_SESSION_BUS_ADDRESS' in os.environ else dbus.SystemBus()) + + # make the dbus connection available to outside, could make this a true property instead, but ach.. + self.dbusconn = self._dbusconn + + # Register ourselves on the dbus, trigger an error if already in use (do_not_queue) + self._dbusname = dbus.service.BusName(servicename, self._dbusconn, do_not_queue=True) + + # Add the root item that will return all items as a tree + self._dbusnodes['/'] = VeDbusRootExport(self._dbusconn, '/', self) + + logging.info("registered ourselves on D-Bus as %s" % servicename) + + # To force immediate deregistering of this dbus service and all its object paths, explicitly + # call __del__(). + def __del__(self): + for node in list(self._dbusnodes.values()): + node.__del__() + self._dbusnodes.clear() + for item in list(self._dbusobjects.values()): + item.__del__() + self._dbusobjects.clear() + if self._dbusname: + self._dbusname.__del__() # Forces call to self._bus.release_name(self._name), see source code + self._dbusname = None + + # @param callbackonchange function that will be called when this value is changed. First parameter will + # be the path of the object, second the new value. This callback should return + # True to accept the change, False to reject it. + def add_path(self, path, value, description="", writeable=False, + onchangecallback=None, gettextcallback=None, valuetype=None): + + if onchangecallback is not None: + self._onchangecallbacks[path] = onchangecallback + + item = VeDbusItemExport( + self._dbusconn, path, value, description, writeable, + self._value_changed, gettextcallback, deletecallback=self._item_deleted, valuetype=valuetype) + + spl = path.split('/') + for i in range(2, len(spl)): + subPath = '/'.join(spl[:i]) + if subPath not in self._dbusnodes and subPath not in self._dbusobjects: + self._dbusnodes[subPath] = VeDbusTreeExport(self._dbusconn, subPath, self) + self._dbusobjects[path] = item + logging.debug('added %s with start value %s. Writeable is %s' % (path, value, writeable)) + + # Add the mandatory paths, as per victron dbus api doc + def add_mandatory_paths(self, processname, processversion, connection, + deviceinstance, productid, productname, firmwareversion, hardwareversion, connected): + self.add_path('/Mgmt/ProcessName', processname) + self.add_path('/Mgmt/ProcessVersion', processversion) + self.add_path('/Mgmt/Connection', connection) + + # Create rest of the mandatory objects + self.add_path('/DeviceInstance', deviceinstance) + self.add_path('/ProductId', productid) + self.add_path('/ProductName', productname) + self.add_path('/FirmwareVersion', firmwareversion) + self.add_path('/HardwareVersion', hardwareversion) + self.add_path('/Connected', connected) + + # Callback function that is called from the VeDbusItemExport objects when a value changes. This function + # maps the change-request to the onchangecallback given to us for this specific path. + def _value_changed(self, path, newvalue): + if path not in self._onchangecallbacks: + return True + + return self._onchangecallbacks[path](path, newvalue) + + def _item_deleted(self, path): + self._dbusobjects.pop(path) + for np in list(self._dbusnodes.keys()): + if np != '/': + for ip in self._dbusobjects: + if ip.startswith(np + '/'): + break + else: + self._dbusnodes[np].__del__() + self._dbusnodes.pop(np) + + def __getitem__(self, path): + return self._dbusobjects[path].local_get_value() + + def __setitem__(self, path, newvalue): + self._dbusobjects[path].local_set_value(newvalue) + + def __delitem__(self, path): + self._dbusobjects[path].__del__() # Invalidates and then removes the object path + assert path not in self._dbusobjects + + def __contains__(self, path): + return path in self._dbusobjects + + def __enter__(self): + l = ServiceContext(self) + self._ratelimiters.append(l) + return l + + def __exit__(self, *exc): + # pop off the top one and flush it. If with statements are nested + # then each exit flushes its own part. + if self._ratelimiters: + self._ratelimiters.pop().flush() + +class ServiceContext(object): + def __init__(self, parent): + self.parent = parent + self.changes = {} + + def __getitem__(self, path): + return self.parent[path] + + def __setitem__(self, path, newvalue): + c = self.parent._dbusobjects[path]._local_set_value(newvalue) + if c is not None: + self.changes[path] = c + + def flush(self): + if self.changes: + self.parent._dbusnodes['/'].ItemsChanged(self.changes) + +class TrackerDict(defaultdict): + """ Same as defaultdict, but passes the key to default_factory. """ + def __missing__(self, key): + self[key] = x = self.default_factory(key) + return x + +class VeDbusRootTracker(object): + """ This tracks the root of a dbus path and listens for PropertiesChanged + signals. When a signal arrives, parse it and unpack the key/value changes + into traditional events, then pass it to the original eventCallback + method. """ + def __init__(self, bus, serviceName): + self.importers = defaultdict(weakref.WeakSet) + self.serviceName = serviceName + self._match = bus.get_object(serviceName, '/', introspect=False).connect_to_signal( + "ItemsChanged", weak_functor(self._items_changed_handler)) + + def __del__(self): + self._match.remove() + self._match = None + + def add(self, i): + self.importers[i.path].add(i) + + def _items_changed_handler(self, items): + if not isinstance(items, dict): + return + + for path, changes in items.items(): + try: + v = changes['Value'] + except KeyError: + continue + + try: + t = changes['Text'] + except KeyError: + t = str(unwrap_dbus_value(v)) + + for i in self.importers.get(path, ()): + i._properties_changed_handler({'Value': v, 'Text': t}) + +""" +Importing basics: + - If when we power up, the D-Bus service does not exist, or it does exist and the path does not + yet exist, still subscribe to a signal: as soon as it comes online it will send a signal with its + initial value, which VeDbusItemImport will receive and use to update local cache. And, when set, + call the eventCallback. + - If when we power up, save it + - When using get_value, know that there is no difference between services (or object paths) that don't + exist and paths that are invalid (= empty array, see above). Both will return None. In case you do + really want to know ifa path exists or not, use the exists property. + - When a D-Bus service leaves the D-Bus, it will first invalidate all its values, and send signals + with that update, and only then leave the D-Bus. (or do we need to subscribe to the NameOwnerChanged- + signal!?!) To be discussed and make sure. Not really urgent, since all existing code that uses this + class already subscribes to the NameOwnerChanged signal, and subsequently removes instances of this + class. + +Read when using this class: +Note that when a service leaves that D-Bus without invalidating all its exported objects first, for +example because it is killed, VeDbusItemImport doesn't have a clue. So when using VeDbusItemImport, +make sure to also subscribe to the NamerOwnerChanged signal on bus-level. Or just use dbusmonitor, +because that takes care of all of that for you. +""" +class VeDbusItemImport(object): + def __new__(cls, bus, serviceName, path, eventCallback=None, createsignal=True): + instance = object.__new__(cls) + + # If signal tracking should be done, also add to root tracker + if createsignal: + if "_roots" not in cls.__dict__: + cls._roots = TrackerDict(lambda k: VeDbusRootTracker(bus, k)) + + return instance + + ## Constructor + # @param bus the bus-object (SESSION or SYSTEM). + # @param serviceName the dbus-service-name (string), for example 'com.victronenergy.battery.ttyO1' + # @param path the object-path, for example '/Dc/V' + # @param eventCallback function that you want to be called on a value change + # @param createSignal only set this to False if you use this function to one time read a value. When + # leaving it to True, make sure to also subscribe to the NameOwnerChanged signal + # elsewhere. See also note some 15 lines up. + def __init__(self, bus, serviceName, path, eventCallback=None, createsignal=True): + # TODO: is it necessary to store _serviceName and _path? Isn't it + # stored in the bus_getobjectsomewhere? + self._serviceName = serviceName + self._path = path + self._match = None + # TODO: _proxy is being used in settingsdevice.py, make a getter for that + self._proxy = bus.get_object(serviceName, path, introspect=False) + self.eventCallback = eventCallback + + assert eventCallback is None or createsignal == True + if createsignal: + self._match = self._proxy.connect_to_signal( + "PropertiesChanged", weak_functor(self._properties_changed_handler)) + self._roots[serviceName].add(self) + + # store the current value in _cachedvalue. When it doesn't exists set _cachedvalue to + # None, same as when a value is invalid + self._cachedvalue = None + try: + v = self._proxy.GetValue() + except dbus.exceptions.DBusException: + pass + else: + self._cachedvalue = unwrap_dbus_value(v) + + def __del__(self): + if self._match is not None: + self._match.remove() + self._match = None + self._proxy = None + + def _refreshcachedvalue(self): + self._cachedvalue = unwrap_dbus_value(self._proxy.GetValue()) + + ## Returns the path as a string, for example '/AC/L1/V' + @property + def path(self): + return self._path + + ## Returns the dbus service name as a string, for example com.victronenergy.vebus.ttyO1 + @property + def serviceName(self): + return self._serviceName + + ## Returns the value of the dbus-item. + # the type will be a dbus variant, for example dbus.Int32(0, variant_level=1) + # this is not a property to keep the name consistant with the com.victronenergy.busitem interface + # returns None when the property is invalid + def get_value(self): + return self._cachedvalue + + ## Writes a new value to the dbus-item + def set_value(self, newvalue): + r = self._proxy.SetValue(wrap_dbus_value(newvalue)) + + # instead of just saving the value, go to the dbus and get it. So we have the right type etc. + if r == 0: + self._refreshcachedvalue() + + return r + + ## Resets the item to its default value + def set_default(self): + self._proxy.SetDefault() + self._refreshcachedvalue() + + ## Returns the text representation of the value. + # For example when the value is an enum/int GetText might return the string + # belonging to that enum value. Another example, for a voltage, GetValue + # would return a float, 12.0Volt, and GetText could return 12 VDC. + # + # Note that this depends on how the dbus-producer has implemented this. + def get_text(self): + return self._proxy.GetText() + + ## Returns true of object path exists, and false if it doesn't + @property + def exists(self): + # TODO: do some real check instead of this crazy thing. + r = False + try: + r = self._proxy.GetValue() + r = True + except dbus.exceptions.DBusException: + pass + + return r + + ## callback for the trigger-event. + # @param eventCallback the event-callback-function. + @property + def eventCallback(self): + return self._eventCallback + + @eventCallback.setter + def eventCallback(self, eventCallback): + self._eventCallback = eventCallback + + ## Is called when the value of the imported bus-item changes. + # Stores the new value in our local cache, and calls the eventCallback, if set. + def _properties_changed_handler(self, changes): + if "Value" in changes: + changes['Value'] = unwrap_dbus_value(changes['Value']) + self._cachedvalue = changes['Value'] + if self._eventCallback: + # The reason behind this try/except is to prevent errors silently ending up the an error + # handler in the dbus code. + try: + self._eventCallback(self._serviceName, self._path, changes) + except: + traceback.print_exc() + os._exit(1) # sys.exit() is not used, since that also throws an exception + + +class VeDbusTreeExport(dbus.service.Object): + def __init__(self, bus, objectPath, service): + dbus.service.Object.__init__(self, bus, objectPath) + self._service = service + logging.debug("VeDbusTreeExport %s has been created" % objectPath) + + def __del__(self): + # self._get_path() will raise an exception when retrieved after the call to .remove_from_connection, + # so we need a copy. + path = self._get_path() + if path is None: + return + self.remove_from_connection() + logging.debug("VeDbusTreeExport %s has been removed" % path) + + def _get_path(self): + if len(self._locations) == 0: + return None + return self._locations[0][1] + + def _get_value_handler(self, path, get_text=False): + logging.debug("_get_value_handler called for %s" % path) + r = {} + px = path + if not px.endswith('/'): + px += '/' + for p, item in self._service._dbusobjects.items(): + if p.startswith(px): + v = item.GetText() if get_text else wrap_dbus_value(item.local_get_value()) + r[p[len(px):]] = v + logging.debug(r) + return r + + @dbus.service.method('com.victronenergy.BusItem', out_signature='v') + def GetValue(self): + value = self._get_value_handler(self._get_path()) + return dbus.Dictionary(value, signature=dbus.Signature('sv'), variant_level=1) + + @dbus.service.method('com.victronenergy.BusItem', out_signature='v') + def GetText(self): + return self._get_value_handler(self._get_path(), True) + + def local_get_value(self): + return self._get_value_handler(self.path) + +class VeDbusRootExport(VeDbusTreeExport): + @dbus.service.signal('com.victronenergy.BusItem', signature='a{sa{sv}}') + def ItemsChanged(self, changes): + pass + + @dbus.service.method('com.victronenergy.BusItem', out_signature='a{sa{sv}}') + def GetItems(self): + return { + path: { + 'Value': wrap_dbus_value(item.local_get_value()), + 'Text': item.GetText() } + for path, item in self._service._dbusobjects.items() + } + + +class VeDbusItemExport(dbus.service.Object): + ## Constructor of VeDbusItemExport + # + # Use this object to export (publish), values on the dbus + # Creates the dbus-object under the given dbus-service-name. + # @param bus The dbus object. + # @param objectPath The dbus-object-path. + # @param value Value to initialize ourselves with, defaults to None which means Invalid + # @param description String containing a description. Can be called over the dbus with GetDescription() + # @param writeable what would this do!? :). + # @param callback Function that will be called when someone else changes the value of this VeBusItem + # over the dbus. First parameter passed to callback will be our path, second the new + # value. This callback should return True to accept the change, False to reject it. + def __init__(self, bus, objectPath, value=None, description=None, writeable=False, + onchangecallback=None, gettextcallback=None, deletecallback=None, + valuetype=None): + dbus.service.Object.__init__(self, bus, objectPath) + self._onchangecallback = onchangecallback + self._gettextcallback = gettextcallback + self._value = value + self._description = description + self._writeable = writeable + self._deletecallback = deletecallback + self._type = valuetype + + # To force immediate deregistering of this dbus object, explicitly call __del__(). + def __del__(self): + # self._get_path() will raise an exception when retrieved after the + # call to .remove_from_connection, so we need a copy. + path = self._get_path() + if path == None: + return + if self._deletecallback is not None: + self._deletecallback(path) + self.remove_from_connection() + logging.debug("VeDbusItemExport %s has been removed" % path) + + def _get_path(self): + if len(self._locations) == 0: + return None + return self._locations[0][1] + + ## Sets the value. And in case the value is different from what it was, a signal + # will be emitted to the dbus. This function is to be used in the python code that + # is using this class to export values to the dbus. + # set value to None to indicate that it is Invalid + def local_set_value(self, newvalue): + changes = self._local_set_value(newvalue) + if changes is not None: + self.PropertiesChanged(changes) + + def _local_set_value(self, newvalue): + if self._value == newvalue: + return None + + self._value = newvalue + return { + 'Value': wrap_dbus_value(newvalue), + 'Text': self.GetText() + } + + def local_get_value(self): + return self._value + + # ==== ALL FUNCTIONS BELOW THIS LINE WILL BE CALLED BY OTHER PROCESSES OVER THE DBUS ==== + + ## Dbus exported method SetValue + # Function is called over the D-Bus by other process. It will first check (via callback) if new + # value is accepted. And it is, stores it and emits a changed-signal. + # @param value The new value. + # @return completion-code When successful a 0 is return, and when not a -1 is returned. + @dbus.service.method('com.victronenergy.BusItem', in_signature='v', out_signature='i') + def SetValue(self, newvalue): + if not self._writeable: + return 1 # NOT OK + + newvalue = unwrap_dbus_value(newvalue) + + # If value type is enforced, cast it. If the type can be coerced + # python will do it for us. This allows ints to become floats, + # or bools to become ints. Additionally also allow None, so that + # a path may be invalidated. + if self._type is not None and newvalue is not None: + try: + newvalue = self._type(newvalue) + except (ValueError, TypeError): + return 1 # NOT OK + + if newvalue == self._value: + return 0 # OK + + # call the callback given to us, and check if new value is OK. + if (self._onchangecallback is None or + (self._onchangecallback is not None and self._onchangecallback(self.__dbus_object_path__, newvalue))): + + self.local_set_value(newvalue) + return 0 # OK + + return 2 # NOT OK + + ## Dbus exported method GetDescription + # + # Returns the a description. + # @param language A language code (e.g. ISO 639-1 en-US). + # @param length Lenght of the language string. + # @return description + @dbus.service.method('com.victronenergy.BusItem', in_signature='si', out_signature='s') + def GetDescription(self, language, length): + return self._description if self._description is not None else 'No description given' + + ## Dbus exported method GetValue + # Returns the value. + # @return the value when valid, and otherwise an empty array + @dbus.service.method('com.victronenergy.BusItem', out_signature='v') + def GetValue(self): + return wrap_dbus_value(self._value) + + ## Dbus exported method GetText + # Returns the value as string of the dbus-object-path. + # @return text A text-value. '---' when local value is invalid + @dbus.service.method('com.victronenergy.BusItem', out_signature='s') + def GetText(self): + if self._value is None: + return '---' + + # Default conversion from dbus.Byte will get you a character (so 'T' instead of '84'), so we + # have to convert to int first. Note that if a dbus.Byte turns up here, it must have come from + # the application itself, as all data from the D-Bus should have been unwrapped by now. + if self._gettextcallback is None and type(self._value) == dbus.Byte: + return str(int(self._value)) + + if self._gettextcallback is None and self.__dbus_object_path__ == '/ProductId': + return "0x%X" % self._value + + if self._gettextcallback is None: + return str(self._value) + + return self._gettextcallback(self.__dbus_object_path__, self._value) + + ## The signal that indicates that the value has changed. + # Other processes connected to this BusItem object will have subscribed to the + # event when they want to track our state. + @dbus.service.signal('com.victronenergy.BusItem', signature='a{sv}') + def PropertiesChanged(self, changes): + pass + +## This class behaves like a regular reference to a class method (eg. self.foo), but keeps a weak reference +## to the object which method is to be called. +## Use this object to break circular references. +class weak_functor: + def __init__(self, f): + self._r = weakref.ref(f.__self__) + self._f = weakref.ref(f.__func__) + + def __call__(self, *args, **kargs): + r = self._r() + f = self._f() + if r == None or f == None: + return + f(r, *args, **kargs) diff --git a/velib_python/velib_python/v3.41/dbusmonitor.py b/velib_python/velib_python/v3.41/dbusmonitor.py new file mode 100644 index 0000000..fd25700 --- /dev/null +++ b/velib_python/velib_python/v3.41/dbusmonitor.py @@ -0,0 +1,587 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +## @package dbus_vrm +# This code takes care of the D-Bus interface (not all of below is implemented yet): +# - on startup it scans the dbus for services we know. For each known service found, it searches for +# objects/paths we know. Everything we find is stored in items{}, and an event is registered: if a +# value changes weĺl be notified and can pass that on to our owner. For example the vrmLogger. +# we know. +# - after startup, it continues to monitor the dbus: +# 1) when services are added we do the same check on that +# 2) when services are removed, we remove any items that we had that referred to that service +# 3) if an existing services adds paths we update ourselves as well: on init, we make a +# VeDbusItemImport for a non-, or not yet existing objectpaths as well1 +# +# Code is used by the vrmLogger, and also the pubsub code. Both are other modules in the dbus_vrm repo. + +from dbus.mainloop.glib import DBusGMainLoop +from gi.repository import GLib +import dbus +import dbus.service +import inspect +import logging +import argparse +import pprint +import traceback +import os +from collections import defaultdict +from functools import partial + +# our own packages +from ve_utils import exit_on_error, wrap_dbus_value, unwrap_dbus_value, add_name_owner_changed_receiver +notfound = object() # For lookups where None is a valid result + +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) +class SystemBus(dbus.bus.BusConnection): + def __new__(cls): + return dbus.bus.BusConnection.__new__(cls, dbus.bus.BusConnection.TYPE_SYSTEM) + +class SessionBus(dbus.bus.BusConnection): + def __new__(cls): + return dbus.bus.BusConnection.__new__(cls, dbus.bus.BusConnection.TYPE_SESSION) + +class MonitoredValue(object): + def __init__(self, value, text, options): + super(MonitoredValue, self).__init__() + self.value = value + self.text = text + self.options = options + + # For legacy code, allow treating this as a tuple/list + def __iter__(self): + return iter((self.value, self.text, self.options)) + +class Service(object): + def __init__(self, id, serviceName, deviceInstance): + super(Service, self).__init__() + self.id = id + self.name = serviceName + self.paths = {} + self._seen = set() + self.deviceInstance = deviceInstance + + # For legacy code, attributes can still be accessed as if keys from a + # dictionary. + def __setitem__(self, key, value): + self.__dict__[key] = value + def __getitem__(self, key): + return self.__dict__[key] + + def set_seen(self, path): + self._seen.add(path) + + def seen(self, path): + return path in self._seen + + @property + def service_class(self): + return '.'.join(self.name.split('.')[:3]) + +class DbusMonitor(object): + ## Constructor + def __init__(self, dbusTree, valueChangedCallback=None, deviceAddedCallback=None, + deviceRemovedCallback=None, namespace="com.victronenergy", ignoreServices=[]): + # valueChangedCallback is the callback that we call when something has changed. + # def value_changed_on_dbus(dbusServiceName, dbusPath, options, changes, deviceInstance): + # in which changes is a tuple with GetText() and GetValue() + self.valueChangedCallback = valueChangedCallback + self.deviceAddedCallback = deviceAddedCallback + self.deviceRemovedCallback = deviceRemovedCallback + self.dbusTree = dbusTree + self.ignoreServices = ignoreServices + + # Lists all tracked services. Stores name, id, device instance, value per path, and whenToLog info + # indexed by service name (eg. com.victronenergy.settings). + self.servicesByName = {} + + # Same values as self.servicesByName, but indexed by service id (eg. :1.30) + self.servicesById = {} + + # Keep track of services by class to speed up calls to get_service_list + self.servicesByClass = defaultdict(list) + + # Keep track of any additional watches placed on items + self.serviceWatches = defaultdict(list) + + # For a PC, connect to the SessionBus + # For a CCGX, connect to the SystemBus + self.dbusConn = SessionBus() if 'DBUS_SESSION_BUS_ADDRESS' in os.environ else SystemBus() + + # subscribe to NameOwnerChange for bus connect / disconnect events. + # NOTE: this is on a different bus then the one above! + standardBus = (dbus.SessionBus() if 'DBUS_SESSION_BUS_ADDRESS' in os.environ \ + else dbus.SystemBus()) + + add_name_owner_changed_receiver(standardBus, self.dbus_name_owner_changed) + + # Subscribe to PropertiesChanged for all services + self.dbusConn.add_signal_receiver(self.handler_value_changes, + dbus_interface='com.victronenergy.BusItem', + signal_name='PropertiesChanged', path_keyword='path', + sender_keyword='senderId') + + # Subscribe to ItemsChanged for all services + self.dbusConn.add_signal_receiver(self.handler_item_changes, + dbus_interface='com.victronenergy.BusItem', + signal_name='ItemsChanged', path='/', + sender_keyword='senderId') + + logger.info('===== Search on dbus for services that we will monitor starting... =====') + serviceNames = self.dbusConn.list_names() + for serviceName in serviceNames: + self.scan_dbus_service(serviceName) + + logger.info('===== Search on dbus for services that we will monitor finished =====') + + @staticmethod + def make_service(serviceId, serviceName, deviceInstance): + """ Override this to use a different kind of service object. """ + return Service(serviceId, serviceName, deviceInstance) + + def make_monitor(self, service, path, value, text, options): + """ Override this to do more things with monitoring. """ + return MonitoredValue(unwrap_dbus_value(value), unwrap_dbus_value(text), options) + + def dbus_name_owner_changed(self, name, oldowner, newowner): + if not name.startswith("com.victronenergy."): + return + + #decouple, and process in main loop + GLib.idle_add(exit_on_error, self._process_name_owner_changed, name, oldowner, newowner) + + def _process_name_owner_changed(self, name, oldowner, newowner): + if newowner != '': + # so we found some new service. Check if we can do something with it. + newdeviceadded = self.scan_dbus_service(name) + if newdeviceadded and self.deviceAddedCallback is not None: + self.deviceAddedCallback(name, self.get_device_instance(name)) + + elif name in self.servicesByName: + # it disappeared, we need to remove it. + logger.info("%s disappeared from the dbus. Removing it from our lists" % name) + service = self.servicesByName[name] + del self.servicesById[service.id] + del self.servicesByName[name] + for watch in self.serviceWatches[name]: + watch.remove() + del self.serviceWatches[name] + self.servicesByClass[service.service_class].remove(service) + if self.deviceRemovedCallback is not None: + self.deviceRemovedCallback(name, service.deviceInstance) + + def scan_dbus_service(self, serviceName): + try: + return self.scan_dbus_service_inner(serviceName) + except: + logger.error("Ignoring %s because of error while scanning:" % (serviceName)) + traceback.print_exc() + return False + + # Errors 'org.freedesktop.DBus.Error.ServiceUnknown' and + # 'org.freedesktop.DBus.Error.Disconnected' seem to happen when the service + # disappears while its being scanned. Which might happen, but is not really + # normal either, so letting them go into the logs. + + # Scans the given dbus service to see if it contains anything interesting for us. If it does, add + # it to our list of monitored D-Bus services. + def scan_dbus_service_inner(self, serviceName): + + # make it a normal string instead of dbus string + serviceName = str(serviceName) + + if (len(self.ignoreServices) != 0 and any(serviceName.startswith(x) for x in self.ignoreServices)): + logger.debug("Ignoring service %s" % serviceName) + return False + + paths = self.dbusTree.get('.'.join(serviceName.split('.')[0:3]), None) + if paths is None: + logger.debug("Ignoring service %s, not in the tree" % serviceName) + return False + + logger.info("Found: %s, scanning and storing items" % serviceName) + serviceId = self.dbusConn.get_name_owner(serviceName) + + # we should never be notified to add a D-Bus service that we already have. If this assertion + # raises, check process_name_owner_changed, and D-Bus workings. + assert serviceName not in self.servicesByName + assert serviceId not in self.servicesById + + # Try to fetch everything with a GetItems, then fall back to older + # methods if that fails + try: + values = self.dbusConn.call_blocking(serviceName, '/', None, 'GetItems', '', []) + except dbus.exceptions.DBusException: + logger.info("GetItems failed, trying legacy methods") + else: + return self.scan_dbus_service_getitems_done(serviceName, serviceId, values) + + if serviceName == 'com.victronenergy.settings': + di = 0 + elif serviceName.startswith('com.victronenergy.vecan.'): + di = 0 + else: + try: + di = self.dbusConn.call_blocking(serviceName, + '/DeviceInstance', None, 'GetValue', '', []) + except dbus.exceptions.DBusException: + logger.info(" %s was skipped because it has no device instance" % serviceName) + return False # Skip it + else: + di = int(di) + + logger.info(" %s has device instance %s" % (serviceName, di)) + service = self.make_service(serviceId, serviceName, di) + + # Let's try to fetch everything in one go + values = {} + texts = {} + try: + values.update(self.dbusConn.call_blocking(serviceName, '/', None, 'GetValue', '', [])) + texts.update(self.dbusConn.call_blocking(serviceName, '/', None, 'GetText', '', [])) + except: + pass + + for path, options in paths.items(): + # path will be the D-Bus path: '/Ac/ActiveIn/L1/V' + # options will be a dictionary: {'code': 'V', 'whenToLog': 'onIntervalAlways'} + + # Try to obtain the value we want from our bulk fetch. If we + # cannot find it there, do an individual query. + value = values.get(path[1:], notfound) + if value != notfound: + service.set_seen(path) + text = texts.get(path[1:], notfound) + if value is notfound or text is notfound: + try: + value = self.dbusConn.call_blocking(serviceName, path, None, 'GetValue', '', []) + service.set_seen(path) + text = self.dbusConn.call_blocking(serviceName, path, None, 'GetText', '', []) + except dbus.exceptions.DBusException as e: + if e.get_dbus_name() in ( + 'org.freedesktop.DBus.Error.ServiceUnknown', + 'org.freedesktop.DBus.Error.Disconnected'): + raise # This exception will be handled below + + # TODO org.freedesktop.DBus.Error.UnknownMethod really + # shouldn't happen but sometimes does. + logger.debug("%s %s does not exist (yet)" % (serviceName, path)) + value = None + text = None + + service.paths[path] = self.make_monitor(service, path, unwrap_dbus_value(value), unwrap_dbus_value(text), options) + + + logger.debug("Finished scanning and storing items for %s" % serviceName) + + # Adjust self at the end of the scan, so we don't have an incomplete set of + # data if an exception occurs during the scan. + self.servicesByName[serviceName] = service + self.servicesById[serviceId] = service + self.servicesByClass[service.service_class].append(service) + + return True + + def scan_dbus_service_getitems_done(self, serviceName, serviceId, values): + # Keeping these exceptions for legacy reasons + if serviceName == 'com.victronenergy.settings': + di = 0 + elif serviceName.startswith('com.victronenergy.vecan.'): + di = 0 + else: + try: + di = values['/DeviceInstance']['Value'] + except KeyError: + logger.info(" %s was skipped because it has no device instance" % serviceName) + return False + else: + di = int(di) + + logger.info(" %s has device instance %s" % (serviceName, di)) + service = self.make_service(serviceId, serviceName, di) + + paths = self.dbusTree.get('.'.join(serviceName.split('.')[0:3]), {}) + for path, options in paths.items(): + item = values.get(path, notfound) + if item is notfound: + service.paths[path] = self.make_monitor(service, path, None, None, options) + else: + service.set_seen(path) + value = item.get('Value', None) + text = item.get('Text', None) + service.paths[path] = self.make_monitor(service, path, unwrap_dbus_value(value), unwrap_dbus_value(text), options) + + self.servicesByName[serviceName] = service + self.servicesById[serviceId] = service + self.servicesByClass[service.service_class].append(service) + return True + + def handler_item_changes(self, items, senderId): + if not isinstance(items, dict): + return + + try: + service = self.servicesById[senderId] + except KeyError: + # senderId isn't there, which means it hasn't been scanned yet. + return + + for path, changes in items.items(): + try: + v = unwrap_dbus_value(changes['Value']) + except (KeyError, TypeError): + continue + + try: + t = changes['Text'] + except KeyError: + t = str(v) + self._handler_value_changes(service, path, v, t) + + def handler_value_changes(self, changes, path, senderId): + # If this properyChange does not involve a value, our work is done. + if 'Value' not in changes: + return + + try: + service = self.servicesById[senderId] + except KeyError: + # senderId isn't there, which means it hasn't been scanned yet. + return + + v = unwrap_dbus_value(changes['Value']) + # Some services don't send Text with their PropertiesChanged events. + try: + t = changes['Text'] + except KeyError: + t = str(v) + self._handler_value_changes(service, path, v, t) + + def _handler_value_changes(self, service, path, value, text): + try: + a = service.paths[path] + except KeyError: + # path isn't there, which means it hasn't been scanned yet. + return + + service.set_seen(path) + + # First update our store to the new value + if a.value == value: + return + + a.value = value + a.text = text + + # And do the rest of the processing in on the mainloop + if self.valueChangedCallback is not None: + GLib.idle_add(exit_on_error, self._execute_value_changes, service.name, path, { + 'Value': value, 'Text': text}, a.options) + + def _execute_value_changes(self, serviceName, objectPath, changes, options): + # double check that the service still exists, as it might have + # disappeared between scheduling-for and executing this function. + if serviceName not in self.servicesByName: + return + + self.valueChangedCallback(serviceName, objectPath, + options, changes, self.get_device_instance(serviceName)) + + # Gets the value for a certain servicename and path + # The default_value is returned when: + # 1. When the service doesn't exist. + # 2. When the path asked for isn't being monitored. + # 3. When the path exists, but has dbus-invalid, ie an empty byte array. + # 4. When the path asked for is being monitored, but doesn't exist for that service. + def get_value(self, serviceName, objectPath, default_value=None): + service = self.servicesByName.get(serviceName, None) + if service is None: + return default_value + + value = service.paths.get(objectPath, None) + if value is None or value.value is None: + return default_value + + return value.value + + # returns if a dbus exists now, by doing a blocking dbus call. + # Typically seen will be sufficient and doesn't need access to the dbus. + def exists(self, serviceName, objectPath): + try: + self.dbusConn.call_blocking(serviceName, objectPath, None, 'GetValue', '', []) + return True + except dbus.exceptions.DBusException as e: + return False + + # Returns if there ever was a successful GetValue or valueChanged event. + # Unlike get_value this return True also if the actual value is invalid. + # + # Note: the path might no longer exists anymore, but that doesn't happen in + # practice. If a service really wants to reconfigure itself typically it should + # reconnect to the dbus which causes it to be rescanned and seen will be updated. + # If it is really needed to know if a path still exists, use exists. + def seen(self, serviceName, objectPath): + try: + return self.servicesByName[serviceName].seen(objectPath) + except KeyError: + return False + + # Sets the value for a certain servicename and path, returns the return value of the D-Bus SetValue + # method. If the underlying item does not exist (the service does not exist, or the objectPath was not + # registered) the function will return -1 + def set_value(self, serviceName, objectPath, value): + # Check if the D-Bus object referenced by serviceName and objectPath is registered. There is no + # necessity to do this, but it is in line with previous implementations which kept VeDbusItemImport + # objects for registers items only. + service = self.servicesByName.get(serviceName, None) + if service is None: + return -1 + if objectPath not in service.paths: + return -1 + # We do not catch D-Bus exceptions here, because the previous implementation did not do that either. + return self.dbusConn.call_blocking(serviceName, objectPath, + dbus_interface='com.victronenergy.BusItem', + method='SetValue', signature=None, + args=[wrap_dbus_value(value)]) + + # Similar to set_value, but operates asynchronously + def set_value_async(self, serviceName, objectPath, value, + reply_handler=None, error_handler=None): + service = self.servicesByName.get(serviceName, None) + if service is not None: + if objectPath in service.paths: + self.dbusConn.call_async(serviceName, objectPath, + dbus_interface='com.victronenergy.BusItem', + method='SetValue', signature=None, + args=[wrap_dbus_value(value)], + reply_handler=reply_handler, error_handler=error_handler) + return + + if error_handler is not None: + error_handler(TypeError('Service or path not found, ' + 'service=%s, path=%s' % (serviceName, objectPath))) + + # returns a dictionary, keys are the servicenames, value the instances + # optionally use the classfilter to get only a certain type of services, for + # example com.victronenergy.battery. + def get_service_list(self, classfilter=None): + if classfilter is None: + return { servicename: service.deviceInstance \ + for servicename, service in self.servicesByName.items() } + + if classfilter not in self.servicesByClass: + return {} + + return { service.name: service.deviceInstance \ + for service in self.servicesByClass[classfilter] } + + def get_device_instance(self, serviceName): + return self.servicesByName[serviceName].deviceInstance + + def track_value(self, serviceName, objectPath, callback, *args, **kwargs): + """ A DbusMonitor can watch specific service/path combos for changes + so that it is not fully reliant on the global handler_value_changes + in this class. Additional watches are deleted automatically when + the service disappears from dbus. """ + cb = partial(callback, *args, **kwargs) + + def root_tracker(items): + # Check if objectPath in dict + try: + v = items[objectPath] + _v = unwrap_dbus_value(v['Value']) + except (KeyError, TypeError): + return # not in this dict + + try: + t = v['Text'] + except KeyError: + cb({'Value': _v }) + else: + cb({'Value': _v, 'Text': t}) + + # Track changes on the path, and also on root + self.serviceWatches[serviceName].extend(( + self.dbusConn.add_signal_receiver(cb, + dbus_interface='com.victronenergy.BusItem', + signal_name='PropertiesChanged', + path=objectPath, bus_name=serviceName), + self.dbusConn.add_signal_receiver(root_tracker, + dbus_interface='com.victronenergy.BusItem', + signal_name='ItemsChanged', + path="/", bus_name=serviceName), + )) + + +# ====== ALL CODE BELOW THIS LINE IS PURELY FOR DEVELOPING THIS CLASS ====== + +# Example function that can be used as a starting point to use this code +def value_changed_on_dbus(dbusServiceName, dbusPath, dict, changes, deviceInstance): + logger.debug("0 ----------------") + logger.debug("1 %s%s changed" % (dbusServiceName, dbusPath)) + logger.debug("2 vrm dict : %s" % dict) + logger.debug("3 changes-text: %s" % changes['Text']) + logger.debug("4 changes-value: %s" % changes['Value']) + logger.debug("5 deviceInstance: %s" % deviceInstance) + logger.debug("6 - end") + + +def nameownerchange(a, b): + # used to find memory leaks in dbusmonitor and VeDbusItemImport + import gc + gc.collect() + objects = gc.get_objects() + print (len([o for o in objects if type(o).__name__ == 'VeDbusItemImport'])) + print (len([o for o in objects if type(o).__name__ == 'SignalMatch'])) + print (len(objects)) + + +def print_values(dbusmonitor): + a = dbusmonitor.get_value('wrongservice', '/DbusInvalid', default_value=1000) + b = dbusmonitor.get_value('com.victronenergy.dummyservice.ttyO1', '/NotInTheMonitorList', default_value=1000) + c = dbusmonitor.get_value('com.victronenergy.dummyservice.ttyO1', '/DbusInvalid', default_value=1000) + d = dbusmonitor.get_value('com.victronenergy.dummyservice.ttyO1', '/NonExistingButMonitored', default_value=1000) + + print ("All should be 1000: Wrong Service: %s, NotInTheMonitorList: %s, DbusInvalid: %s, NonExistingButMonitored: %s" % (a, b, c, d)) + return True + +# We have a mainloop, but that is just for developing this code. Normally above class & code is used from +# some other class, such as vrmLogger or the pubsub Implementation. +def main(): + # Init logging + logging.basicConfig(level=logging.DEBUG) + logger.info(__file__ + " is starting up") + + # Have a mainloop, so we can send/receive asynchronous calls to and from dbus + DBusGMainLoop(set_as_default=True) + + import os + import sys + sys.path.insert(1, os.path.join(os.path.dirname(__file__), '../../')) + + dummy = {'code': None, 'whenToLog': 'configChange', 'accessLevel': None} + monitorlist = {'com.victronenergy.dummyservice': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/0/Temperature': dummy, + '/Load/I': dummy, + '/FirmwareVersion': dummy, + '/DbusInvalid': dummy, + '/NonExistingButMonitored': dummy}} + + d = DbusMonitor(monitorlist, value_changed_on_dbus, + deviceAddedCallback=nameownerchange, deviceRemovedCallback=nameownerchange) + + GLib.timeout_add(1000, print_values, d) + + # Start and run the mainloop + logger.info("Starting mainloop, responding on only events") + mainloop = GLib.MainLoop() + mainloop.run() + +if __name__ == "__main__": + main() diff --git a/velib_python/velib_python/v3.41/oldestVersion b/velib_python/velib_python/v3.41/oldestVersion new file mode 100644 index 0000000..c967d38 --- /dev/null +++ b/velib_python/velib_python/v3.41/oldestVersion @@ -0,0 +1 @@ +v3.40 diff --git a/velib_python/velib_python/v3.41/settingsdevice.py b/velib_python/velib_python/v3.41/settingsdevice.py new file mode 100644 index 0000000..a207e8b --- /dev/null +++ b/velib_python/velib_python/v3.41/settingsdevice.py @@ -0,0 +1,118 @@ +import dbus +import logging +import time +from functools import partial + +# Local imports +from vedbus import VeDbusItemImport + +## Indexes for the setting dictonary. +PATH = 0 +VALUE = 1 +MINIMUM = 2 +MAXIMUM = 3 +SILENT = 4 + +## The Settings Device class. +# Used by python programs, such as the vrm-logger, to read and write settings they +# need to store on disk. And since these settings might be changed from a different +# source, such as the GUI, the program can pass an eventCallback that will be called +# as soon as some setting is changed. +# +# The settings are stored in flash via the com.victronenergy.settings service on dbus. +# See https://github.com/victronenergy/localsettings for more info. +# +# If there are settings in de supportSettings list which are not yet on the dbus, +# and therefore not yet in the xml file, they will be added through the dbus-addSetting +# interface of com.victronenergy.settings. +class SettingsDevice(object): + ## The constructor processes the tree of dbus-items. + # @param bus the system-dbus object + # @param name the dbus-service-name of the settings dbus service, 'com.victronenergy.settings' + # @param supportedSettings dictionary with all setting-names, and their defaultvalue, min, max and whether + # the setting is silent. The 'silent' entry is optional. If set to true, no changes in the setting will + # be logged by localsettings. + # @param eventCallback function that will be called on changes on any of these settings + # @param timeout Maximum interval to wait for localsettings. An exception is thrown at the end of the + # interval if the localsettings D-Bus service has not appeared yet. + def __init__(self, bus, supportedSettings, eventCallback, name='com.victronenergy.settings', timeout=0): + logging.debug("===== Settings device init starting... =====") + self._bus = bus + self._dbus_name = name + self._eventCallback = eventCallback + self._values = {} # stored the values, used to pass the old value along on a setting change + self._settings = {} + + count = 0 + while True: + if 'com.victronenergy.settings' in self._bus.list_names(): + break + if count == timeout: + raise Exception("The settings service com.victronenergy.settings does not exist!") + count += 1 + logging.info('waiting for settings') + time.sleep(1) + + # Add the items. + self.addSettings(supportedSettings) + + logging.debug("===== Settings device init finished =====") + + def addSettings(self, settings): + for setting, options in settings.items(): + silent = len(options) > SILENT and options[SILENT] + busitem = self.addSetting(options[PATH], options[VALUE], + options[MINIMUM], options[MAXIMUM], silent, callback=partial(self.handleChangedSetting, setting)) + self._settings[setting] = busitem + self._values[setting] = busitem.get_value() + + def addSetting(self, path, value, _min, _max, silent=False, callback=None): + busitem = VeDbusItemImport(self._bus, self._dbus_name, path, callback) + if busitem.exists and (value, _min, _max, silent) == busitem._proxy.GetAttributes(): + logging.debug("Setting %s found" % path) + else: + logging.info("Setting %s does not exist yet or must be adjusted" % path) + + # Prepare to add the setting. Most dbus types extend the python + # type so it is only necessary to additionally test for Int64. + if isinstance(value, (int, dbus.Int64)): + itemType = 'i' + elif isinstance(value, float): + itemType = 'f' + else: + itemType = 's' + + # Add the setting + # TODO, make an object that inherits VeDbusItemImport, and complete the D-Bus settingsitem interface + settings_item = VeDbusItemImport(self._bus, self._dbus_name, '/Settings', createsignal=False) + setting_path = path.replace('/Settings/', '', 1) + if silent: + settings_item._proxy.AddSilentSetting('', setting_path, value, itemType, _min, _max) + else: + settings_item._proxy.AddSetting('', setting_path, value, itemType, _min, _max) + + busitem = VeDbusItemImport(self._bus, self._dbus_name, path, callback) + + return busitem + + def handleChangedSetting(self, setting, servicename, path, changes): + oldvalue = self._values[setting] if setting in self._values else None + self._values[setting] = changes['Value'] + + if self._eventCallback is None: + return + + self._eventCallback(setting, oldvalue, changes['Value']) + + def setDefault(self, path): + item = VeDbusItemImport(self._bus, self._dbus_name, path, createsignal=False) + item.set_default() + + def __getitem__(self, setting): + return self._settings[setting].get_value() + + def __setitem__(self, setting, newvalue): + result = self._settings[setting].set_value(newvalue) + if result != 0: + # Trying to make some false change to our own settings? How dumb! + assert False diff --git a/velib_python/velib_python/v3.41/ve_utils.py b/velib_python/velib_python/v3.41/ve_utils.py new file mode 100644 index 0000000..f5a2f85 --- /dev/null +++ b/velib_python/velib_python/v3.41/ve_utils.py @@ -0,0 +1,276 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +import sys +from traceback import print_exc +from os import _exit as os_exit +from os import statvfs +from subprocess import check_output, CalledProcessError +import logging +import dbus +logger = logging.getLogger(__name__) + +VEDBUS_INVALID = dbus.Array([], signature=dbus.Signature('i'), variant_level=1) + +class NoVrmPortalIdError(Exception): + pass + +# Use this function to make sure the code quits on an unexpected exception. Make sure to use it +# when using GLib.idle_add and also GLib.timeout_add. +# Without this, the code will just keep running, since GLib does not stop the mainloop on an +# exception. +# Example: GLib.idle_add(exit_on_error, myfunc, arg1, arg2) +def exit_on_error(func, *args, **kwargs): + try: + return func(*args, **kwargs) + except: + try: + print ('exit_on_error: there was an exception. Printing stacktrace will be tried and then exit') + print_exc() + except: + pass + + # sys.exit() is not used, since that throws an exception, which does not lead to a program + # halt when used in a dbus callback, see connection.py in the Python/Dbus libraries, line 230. + os_exit(1) + + +__vrm_portal_id = None +def get_vrm_portal_id(): + # The original definition of the VRM Portal ID is that it is the mac + # address of the onboard- ethernet port (eth0), stripped from its colons + # (:) and lower case. This may however differ between platforms. On Venus + # the task is therefore deferred to /sbin/get-unique-id so that a + # platform specific method can be easily defined. + # + # If /sbin/get-unique-id does not exist, then use the ethernet address + # of eth0. This also handles the case where velib_python is used as a + # package install on a Raspberry Pi. + # + # On a Linux host where the network interface may not be eth0, you can set + # the VRM_IFACE environment variable to the correct name. + + global __vrm_portal_id + + if __vrm_portal_id: + return __vrm_portal_id + + portal_id = None + + # First try the method that works if we don't have a data partition. This + # will fail when the current user is not root. + try: + portal_id = check_output("/sbin/get-unique-id").decode("utf-8", "ignore").strip() + if not portal_id: + raise NoVrmPortalIdError("get-unique-id returned blank") + __vrm_portal_id = portal_id + return portal_id + except CalledProcessError: + # get-unique-id returned non-zero + raise NoVrmPortalIdError("get-unique-id returned non-zero") + except OSError: + # File doesn't exist, use fallback + pass + + # Fall back to getting our id using a syscall. Assume we are on linux. + # Allow the user to override what interface is used using an environment + # variable. + import fcntl, socket, struct, os + + iface = os.environ.get('VRM_IFACE', 'eth0').encode('ascii') + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + try: + info = fcntl.ioctl(s.fileno(), 0x8927, struct.pack('256s', iface[:15])) + except IOError: + raise NoVrmPortalIdError("ioctl failed for eth0") + + __vrm_portal_id = info[18:24].hex() + return __vrm_portal_id + + +# See VE.Can registers - public.docx for definition of this conversion +def convert_vreg_version_to_readable(version): + def str_to_arr(x, length): + a = [] + for i in range(0, len(x), length): + a.append(x[i:i+length]) + return a + + x = "%x" % version + x = x.upper() + + if len(x) == 5 or len(x) == 3 or len(x) == 1: + x = '0' + x + + a = str_to_arr(x, 2); + + # remove the first 00 if there are three bytes and it is 00 + if len(a) == 3 and a[0] == '00': + a.remove(0); + + # if we have two or three bytes now, and the first character is a 0, remove it + if len(a) >= 2 and a[0][0:1] == '0': + a[0] = a[0][1]; + + result = '' + for item in a: + result += ('.' if result != '' else '') + item + + + result = 'v' + result + + return result + + +def get_free_space(path): + result = -1 + + try: + s = statvfs(path) + result = s.f_frsize * s.f_bavail # Number of free bytes that ordinary users + except Exception as ex: + logger.info("Error while retrieving free space for path %s: %s" % (path, ex)) + + return result + + +def _get_sysfs_machine_name(): + try: + with open('/sys/firmware/devicetree/base/model', 'r') as f: + return f.read().rstrip('\x00') + except IOError: + pass + + return None + +# Returns None if it cannot find a machine name. Otherwise returns the string +# containing the name +def get_machine_name(): + # First try calling the venus utility script + try: + return check_output("/usr/bin/product-name").strip().decode('UTF-8') + except (CalledProcessError, OSError): + pass + + # Fall back to sysfs + name = _get_sysfs_machine_name() + if name is not None: + return name + + # Fall back to venus build machine name + try: + with open('/etc/venus/machine', 'r', encoding='UTF-8') as f: + return f.read().strip() + except IOError: + pass + + return None + + +def get_product_id(): + """ Find the machine ID and return it. """ + + # First try calling the venus utility script + try: + return check_output("/usr/bin/product-id").strip().decode('UTF-8') + except (CalledProcessError, OSError): + pass + + # Fall back machine name mechanism + name = _get_sysfs_machine_name() + return { + 'Color Control GX': 'C001', + 'Venus GX': 'C002', + 'Octo GX': 'C006', + 'EasySolar-II': 'C007', + 'MultiPlus-II': 'C008', + 'Maxi GX': 'C009', + 'Cerbo GX': 'C00A' + }.get(name, 'C003') # C003 is Generic + + +# Returns False if it cannot open the file. Otherwise returns its rstripped contents +def read_file(path): + content = False + + try: + with open(path, 'r') as f: + content = f.read().rstrip() + except Exception as ex: + logger.debug("Error while reading %s: %s" % (path, ex)) + + return content + + +def wrap_dbus_value(value): + if value is None: + return VEDBUS_INVALID + if isinstance(value, float): + return dbus.Double(value, variant_level=1) + if isinstance(value, bool): + return dbus.Boolean(value, variant_level=1) + if isinstance(value, int): + try: + return dbus.Int32(value, variant_level=1) + except OverflowError: + return dbus.Int64(value, variant_level=1) + if isinstance(value, str): + return dbus.String(value, variant_level=1) + if isinstance(value, list): + if len(value) == 0: + # If the list is empty we cannot infer the type of the contents. So assume unsigned integer. + # A (signed) integer is dangerous, because an empty list of signed integers is used to encode + # an invalid value. + return dbus.Array([], signature=dbus.Signature('u'), variant_level=1) + return dbus.Array([wrap_dbus_value(x) for x in value], variant_level=1) + if isinstance(value, dict): + # Wrapping the keys of the dictionary causes D-Bus errors like: + # 'arguments to dbus_message_iter_open_container() were incorrect, + # assertion "(type == DBUS_TYPE_ARRAY && contained_signature && + # *contained_signature == DBUS_DICT_ENTRY_BEGIN_CHAR) || (contained_signature == NULL || + # _dbus_check_is_valid_signature (contained_signature))" failed in file ...' + return dbus.Dictionary({(k, wrap_dbus_value(v)) for k, v in value.items()}, variant_level=1) + return value + + +dbus_int_types = (dbus.Int32, dbus.UInt32, dbus.Byte, dbus.Int16, dbus.UInt16, dbus.UInt32, dbus.Int64, dbus.UInt64) + + +def unwrap_dbus_value(val): + """Converts D-Bus values back to the original type. For example if val is of type DBus.Double, + a float will be returned.""" + if isinstance(val, dbus_int_types): + return int(val) + if isinstance(val, dbus.Double): + return float(val) + if isinstance(val, dbus.Array): + v = [unwrap_dbus_value(x) for x in val] + return None if len(v) == 0 else v + if isinstance(val, (dbus.Signature, dbus.String)): + return str(val) + # Python has no byte type, so we convert to an integer. + if isinstance(val, dbus.Byte): + return int(val) + if isinstance(val, dbus.ByteArray): + return "".join([bytes(x) for x in val]) + if isinstance(val, (list, tuple)): + return [unwrap_dbus_value(x) for x in val] + if isinstance(val, (dbus.Dictionary, dict)): + # Do not unwrap the keys, see comment in wrap_dbus_value + return dict([(x, unwrap_dbus_value(y)) for x, y in val.items()]) + if isinstance(val, dbus.Boolean): + return bool(val) + return val + +# When supported, only name owner changes for the the given namespace are reported. This +# prevents spending cpu time at irrelevant changes, like scripts accessing the bus temporarily. +def add_name_owner_changed_receiver(dbus, name_owner_changed, namespace="com.victronenergy"): + # support for arg0namespace is submitted upstream, but not included at the time of + # writing, Venus OS does support it, so try if it works. + if namespace is None: + dbus.add_signal_receiver(name_owner_changed, signal_name='NameOwnerChanged') + else: + try: + dbus.add_signal_receiver(name_owner_changed, + signal_name='NameOwnerChanged', arg0namespace=namespace) + except TypeError: + dbus.add_signal_receiver(name_owner_changed, signal_name='NameOwnerChanged') diff --git a/velib_python/velib_python/v3.41/vedbus.py b/velib_python/velib_python/v3.41/vedbus.py new file mode 100644 index 0000000..cb95ba1 --- /dev/null +++ b/velib_python/velib_python/v3.41/vedbus.py @@ -0,0 +1,646 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import dbus.service +import logging +import traceback +import os +import weakref +from collections import defaultdict +from ve_utils import wrap_dbus_value, unwrap_dbus_value + +# vedbus contains three classes: +# VeDbusItemImport -> use this to read data from the dbus, ie import +# VeDbusItemExport -> use this to export data to the dbus (one value) +# VeDbusService -> use that to create a service and export several values to the dbus + +# Code for VeDbusItemImport is copied from busitem.py and thereafter modified. +# All projects that used busitem.py need to migrate to this package. And some +# projects used to define there own equivalent of VeDbusItemExport. Better to +# use VeDbusItemExport, or even better the VeDbusService class that does it all for you. + +# TODOS +# 1 check for datatypes, it works now, but not sure if all is compliant with +# com.victronenergy.BusItem interface definition. See also the files in +# tests_and_examples. And see 'if type(v) == dbus.Byte:' on line 102. Perhaps +# something similar should also be done in VeDbusBusItemExport? +# 2 Shouldn't VeDbusBusItemExport inherit dbus.service.Object? +# 7 Make hard rules for services exporting data to the D-Bus, in order to make tracking +# changes possible. Does everybody first invalidate its data before leaving the bus? +# And what about before taking one object away from the bus, instead of taking the +# whole service offline? +# They should! And after taking one value away, do we need to know that someone left +# the bus? Or we just keep that value in invalidated for ever? Result is that we can't +# see the difference anymore between an invalidated value and a value that was first on +# the bus and later not anymore. See comments above VeDbusItemImport as well. +# 9 there are probably more todos in the code below. + +# Some thoughts with regards to the data types: +# +# Text from: http://dbus.freedesktop.org/doc/dbus-python/doc/tutorial.html#data-types +# --- +# Variants are represented by setting the variant_level keyword argument in the +# constructor of any D-Bus data type to a value greater than 0 (variant_level 1 +# means a variant containing some other data type, variant_level 2 means a variant +# containing a variant containing some other data type, and so on). If a non-variant +# is passed as an argument but introspection indicates that a variant is expected, +# it'll automatically be wrapped in a variant. +# --- +# +# Also the different dbus datatypes, such as dbus.Int32, and dbus.UInt32 are a subclass +# of Python int. dbus.String is a subclass of Python standard class unicode, etcetera +# +# So all together that explains why we don't need to explicitly convert back and forth +# between the dbus datatypes and the standard python datatypes. Note that all datatypes +# in python are objects. Even an int is an object. + +# The signature of a variant is 'v'. + +# Export ourselves as a D-Bus service. +class VeDbusService(object): + def __init__(self, servicename, bus=None, register=True): + # dict containing the VeDbusItemExport objects, with their path as the key. + self._dbusobjects = {} + self._dbusnodes = {} + self._ratelimiters = [] + self._dbusname = None + self.name = servicename + + # dict containing the onchange callbacks, for each object. Object path is the key + self._onchangecallbacks = {} + + # Connect to session bus whenever present, else use the system bus + self._dbusconn = bus or (dbus.SessionBus() if 'DBUS_SESSION_BUS_ADDRESS' in os.environ else dbus.SystemBus()) + + # make the dbus connection available to outside, could make this a true property instead, but ach.. + self.dbusconn = self._dbusconn + + # Add the root item that will return all items as a tree + self._dbusnodes['/'] = VeDbusRootExport(self._dbusconn, '/', self) + + # Immediately register the service unless requested not to + if register: + self.register() + + def register(self): + # Register ourselves on the dbus, trigger an error if already in use (do_not_queue) + self._dbusname = dbus.service.BusName(self.name, self._dbusconn, do_not_queue=True) + logging.info("registered ourselves on D-Bus as %s" % self.name) + + # To force immediate deregistering of this dbus service and all its object paths, explicitly + # call __del__(). + def __del__(self): + for node in list(self._dbusnodes.values()): + node.__del__() + self._dbusnodes.clear() + for item in list(self._dbusobjects.values()): + item.__del__() + self._dbusobjects.clear() + if self._dbusname: + self._dbusname.__del__() # Forces call to self._bus.release_name(self._name), see source code + self._dbusname = None + + def get_name(self): + return self._dbusname.get_name() + + # @param callbackonchange function that will be called when this value is changed. First parameter will + # be the path of the object, second the new value. This callback should return + # True to accept the change, False to reject it. + def add_path(self, path, value, description="", writeable=False, + onchangecallback=None, gettextcallback=None, valuetype=None, itemtype=None): + + if onchangecallback is not None: + self._onchangecallbacks[path] = onchangecallback + + itemtype = itemtype or VeDbusItemExport + item = itemtype(self._dbusconn, path, value, description, writeable, + self._value_changed, gettextcallback, deletecallback=self._item_deleted, valuetype=valuetype) + + spl = path.split('/') + for i in range(2, len(spl)): + subPath = '/'.join(spl[:i]) + if subPath not in self._dbusnodes and subPath not in self._dbusobjects: + self._dbusnodes[subPath] = VeDbusTreeExport(self._dbusconn, subPath, self) + self._dbusobjects[path] = item + logging.debug('added %s with start value %s. Writeable is %s' % (path, value, writeable)) + return item + + # Add the mandatory paths, as per victron dbus api doc + def add_mandatory_paths(self, processname, processversion, connection, + deviceinstance, productid, productname, firmwareversion, hardwareversion, connected): + self.add_path('/Mgmt/ProcessName', processname) + self.add_path('/Mgmt/ProcessVersion', processversion) + self.add_path('/Mgmt/Connection', connection) + + # Create rest of the mandatory objects + self.add_path('/DeviceInstance', deviceinstance) + self.add_path('/ProductId', productid) + self.add_path('/ProductName', productname) + self.add_path('/FirmwareVersion', firmwareversion) + self.add_path('/HardwareVersion', hardwareversion) + self.add_path('/Connected', connected) + + # Callback function that is called from the VeDbusItemExport objects when a value changes. This function + # maps the change-request to the onchangecallback given to us for this specific path. + def _value_changed(self, path, newvalue): + if path not in self._onchangecallbacks: + return True + + return self._onchangecallbacks[path](path, newvalue) + + def _item_deleted(self, path): + self._dbusobjects.pop(path) + for np in list(self._dbusnodes.keys()): + if np != '/': + for ip in self._dbusobjects: + if ip.startswith(np + '/'): + break + else: + self._dbusnodes[np].__del__() + self._dbusnodes.pop(np) + + def __getitem__(self, path): + return self._dbusobjects[path].local_get_value() + + def __setitem__(self, path, newvalue): + self._dbusobjects[path].local_set_value(newvalue) + + def __delitem__(self, path): + self._dbusobjects[path].__del__() # Invalidates and then removes the object path + assert path not in self._dbusobjects + + def __contains__(self, path): + return path in self._dbusobjects + + def __enter__(self): + l = ServiceContext(self) + self._ratelimiters.append(l) + return l + + def __exit__(self, *exc): + # pop off the top one and flush it. If with statements are nested + # then each exit flushes its own part. + if self._ratelimiters: + self._ratelimiters.pop().flush() + +class ServiceContext(object): + def __init__(self, parent): + self.parent = parent + self.changes = {} + + def __contains__(self, path): + return path in self.parent + + def __getitem__(self, path): + return self.parent[path] + + def __setitem__(self, path, newvalue): + c = self.parent._dbusobjects[path]._local_set_value(newvalue) + if c is not None: + self.changes[path] = c + + def __delitem__(self, path): + if path in self.changes: + del self.changes[path] + del self.parent[path] + + def flush(self): + if self.changes: + self.parent._dbusnodes['/'].ItemsChanged(self.changes) + self.changes.clear() + + def add_path(self, path, value, *args, **kwargs): + self.parent.add_path(path, value, *args, **kwargs) + self.changes[path] = { + 'Value': wrap_dbus_value(value), + 'Text': self.parent._dbusobjects[path].GetText() + } + + def del_tree(self, root): + root = root.rstrip('/') + for p in list(self.parent._dbusobjects.keys()): + if p == root or p.startswith(root + '/'): + self[p] = None + self.parent._dbusobjects[p].__del__() + + def get_name(self): + return self.parent.get_name() + +class TrackerDict(defaultdict): + """ Same as defaultdict, but passes the key to default_factory. """ + def __missing__(self, key): + self[key] = x = self.default_factory(key) + return x + +class VeDbusRootTracker(object): + """ This tracks the root of a dbus path and listens for PropertiesChanged + signals. When a signal arrives, parse it and unpack the key/value changes + into traditional events, then pass it to the original eventCallback + method. """ + def __init__(self, bus, serviceName): + self.importers = defaultdict(weakref.WeakSet) + self.serviceName = serviceName + self._match = bus.get_object(serviceName, '/', introspect=False).connect_to_signal( + "ItemsChanged", weak_functor(self._items_changed_handler)) + + def __del__(self): + self._match.remove() + self._match = None + + def add(self, i): + self.importers[i.path].add(i) + + def _items_changed_handler(self, items): + if not isinstance(items, dict): + return + + for path, changes in items.items(): + try: + v = changes['Value'] + except KeyError: + continue + + try: + t = changes['Text'] + except KeyError: + t = str(unwrap_dbus_value(v)) + + for i in self.importers.get(path, ()): + i._properties_changed_handler({'Value': v, 'Text': t}) + +""" +Importing basics: + - If when we power up, the D-Bus service does not exist, or it does exist and the path does not + yet exist, still subscribe to a signal: as soon as it comes online it will send a signal with its + initial value, which VeDbusItemImport will receive and use to update local cache. And, when set, + call the eventCallback. + - If when we power up, save it + - When using get_value, know that there is no difference between services (or object paths) that don't + exist and paths that are invalid (= empty array, see above). Both will return None. In case you do + really want to know ifa path exists or not, use the exists property. + - When a D-Bus service leaves the D-Bus, it will first invalidate all its values, and send signals + with that update, and only then leave the D-Bus. (or do we need to subscribe to the NameOwnerChanged- + signal!?!) To be discussed and make sure. Not really urgent, since all existing code that uses this + class already subscribes to the NameOwnerChanged signal, and subsequently removes instances of this + class. + +Read when using this class: +Note that when a service leaves that D-Bus without invalidating all its exported objects first, for +example because it is killed, VeDbusItemImport doesn't have a clue. So when using VeDbusItemImport, +make sure to also subscribe to the NamerOwnerChanged signal on bus-level. Or just use dbusmonitor, +because that takes care of all of that for you. +""" +class VeDbusItemImport(object): + def __new__(cls, bus, serviceName, path, eventCallback=None, createsignal=True): + instance = object.__new__(cls) + + # If signal tracking should be done, also add to root tracker + if createsignal: + if "_roots" not in cls.__dict__: + cls._roots = TrackerDict(lambda k: VeDbusRootTracker(bus, k)) + + return instance + + ## Constructor + # @param bus the bus-object (SESSION or SYSTEM). + # @param serviceName the dbus-service-name (string), for example 'com.victronenergy.battery.ttyO1' + # @param path the object-path, for example '/Dc/V' + # @param eventCallback function that you want to be called on a value change + # @param createSignal only set this to False if you use this function to one time read a value. When + # leaving it to True, make sure to also subscribe to the NameOwnerChanged signal + # elsewhere. See also note some 15 lines up. + def __init__(self, bus, serviceName, path, eventCallback=None, createsignal=True): + # TODO: is it necessary to store _serviceName and _path? Isn't it + # stored in the bus_getobjectsomewhere? + self._serviceName = serviceName + self._path = path + self._match = None + # TODO: _proxy is being used in settingsdevice.py, make a getter for that + self._proxy = bus.get_object(serviceName, path, introspect=False) + self.eventCallback = eventCallback + + assert eventCallback is None or createsignal == True + if createsignal: + self._match = self._proxy.connect_to_signal( + "PropertiesChanged", weak_functor(self._properties_changed_handler)) + self._roots[serviceName].add(self) + + # store the current value in _cachedvalue. When it doesn't exists set _cachedvalue to + # None, same as when a value is invalid + self._cachedvalue = None + try: + v = self._proxy.GetValue() + except dbus.exceptions.DBusException: + pass + else: + self._cachedvalue = unwrap_dbus_value(v) + + def __del__(self): + if self._match is not None: + self._match.remove() + self._match = None + self._proxy = None + + def _refreshcachedvalue(self): + self._cachedvalue = unwrap_dbus_value(self._proxy.GetValue()) + + ## Returns the path as a string, for example '/AC/L1/V' + @property + def path(self): + return self._path + + ## Returns the dbus service name as a string, for example com.victronenergy.vebus.ttyO1 + @property + def serviceName(self): + return self._serviceName + + ## Returns the value of the dbus-item. + # the type will be a dbus variant, for example dbus.Int32(0, variant_level=1) + # this is not a property to keep the name consistant with the com.victronenergy.busitem interface + # returns None when the property is invalid + def get_value(self): + return self._cachedvalue + + ## Writes a new value to the dbus-item + def set_value(self, newvalue): + r = self._proxy.SetValue(wrap_dbus_value(newvalue)) + + # instead of just saving the value, go to the dbus and get it. So we have the right type etc. + if r == 0: + self._refreshcachedvalue() + + return r + + ## Resets the item to its default value + def set_default(self): + self._proxy.SetDefault() + self._refreshcachedvalue() + + ## Returns the text representation of the value. + # For example when the value is an enum/int GetText might return the string + # belonging to that enum value. Another example, for a voltage, GetValue + # would return a float, 12.0Volt, and GetText could return 12 VDC. + # + # Note that this depends on how the dbus-producer has implemented this. + def get_text(self): + return self._proxy.GetText() + + ## Returns true of object path exists, and false if it doesn't + @property + def exists(self): + # TODO: do some real check instead of this crazy thing. + r = False + try: + r = self._proxy.GetValue() + r = True + except dbus.exceptions.DBusException: + pass + + return r + + ## callback for the trigger-event. + # @param eventCallback the event-callback-function. + @property + def eventCallback(self): + return self._eventCallback + + @eventCallback.setter + def eventCallback(self, eventCallback): + self._eventCallback = eventCallback + + ## Is called when the value of the imported bus-item changes. + # Stores the new value in our local cache, and calls the eventCallback, if set. + def _properties_changed_handler(self, changes): + if "Value" in changes: + changes['Value'] = unwrap_dbus_value(changes['Value']) + self._cachedvalue = changes['Value'] + if self._eventCallback: + # The reason behind this try/except is to prevent errors silently ending up the an error + # handler in the dbus code. + try: + self._eventCallback(self._serviceName, self._path, changes) + except: + traceback.print_exc() + os._exit(1) # sys.exit() is not used, since that also throws an exception + + +class VeDbusTreeExport(dbus.service.Object): + def __init__(self, bus, objectPath, service): + dbus.service.Object.__init__(self, bus, objectPath) + self._service = service + logging.debug("VeDbusTreeExport %s has been created" % objectPath) + + def __del__(self): + # self._get_path() will raise an exception when retrieved after the call to .remove_from_connection, + # so we need a copy. + path = self._get_path() + if path is None: + return + self.remove_from_connection() + logging.debug("VeDbusTreeExport %s has been removed" % path) + + def _get_path(self): + if len(self._locations) == 0: + return None + return self._locations[0][1] + + def _get_value_handler(self, path, get_text=False): + logging.debug("_get_value_handler called for %s" % path) + r = {} + px = path + if not px.endswith('/'): + px += '/' + for p, item in self._service._dbusobjects.items(): + if p.startswith(px): + v = item.GetText() if get_text else wrap_dbus_value(item.local_get_value()) + r[p[len(px):]] = v + logging.debug(r) + return r + + @dbus.service.method('com.victronenergy.BusItem', out_signature='v') + def GetValue(self): + value = self._get_value_handler(self._get_path()) + return dbus.Dictionary(value, signature=dbus.Signature('sv'), variant_level=1) + + @dbus.service.method('com.victronenergy.BusItem', out_signature='v') + def GetText(self): + return self._get_value_handler(self._get_path(), True) + + def local_get_value(self): + return self._get_value_handler(self.path) + +class VeDbusRootExport(VeDbusTreeExport): + @dbus.service.signal('com.victronenergy.BusItem', signature='a{sa{sv}}') + def ItemsChanged(self, changes): + pass + + @dbus.service.method('com.victronenergy.BusItem', out_signature='a{sa{sv}}') + def GetItems(self): + return { + path: { + 'Value': wrap_dbus_value(item.local_get_value()), + 'Text': item.GetText() } + for path, item in self._service._dbusobjects.items() + } + + +class VeDbusItemExport(dbus.service.Object): + ## Constructor of VeDbusItemExport + # + # Use this object to export (publish), values on the dbus + # Creates the dbus-object under the given dbus-service-name. + # @param bus The dbus object. + # @param objectPath The dbus-object-path. + # @param value Value to initialize ourselves with, defaults to None which means Invalid + # @param description String containing a description. Can be called over the dbus with GetDescription() + # @param writeable what would this do!? :). + # @param callback Function that will be called when someone else changes the value of this VeBusItem + # over the dbus. First parameter passed to callback will be our path, second the new + # value. This callback should return True to accept the change, False to reject it. + def __init__(self, bus, objectPath, value=None, description=None, writeable=False, + onchangecallback=None, gettextcallback=None, deletecallback=None, + valuetype=None): + dbus.service.Object.__init__(self, bus, objectPath) + self._onchangecallback = onchangecallback + self._gettextcallback = gettextcallback + self._value = value + self._description = description + self._writeable = writeable + self._deletecallback = deletecallback + self._type = valuetype + + # To force immediate deregistering of this dbus object, explicitly call __del__(). + def __del__(self): + # self._get_path() will raise an exception when retrieved after the + # call to .remove_from_connection, so we need a copy. + path = self._get_path() + if path == None: + return + if self._deletecallback is not None: + self._deletecallback(path) + self.remove_from_connection() + logging.debug("VeDbusItemExport %s has been removed" % path) + + def _get_path(self): + if len(self._locations) == 0: + return None + return self._locations[0][1] + + ## Sets the value. And in case the value is different from what it was, a signal + # will be emitted to the dbus. This function is to be used in the python code that + # is using this class to export values to the dbus. + # set value to None to indicate that it is Invalid + def local_set_value(self, newvalue): + changes = self._local_set_value(newvalue) + if changes is not None: + self.PropertiesChanged(changes) + + def _local_set_value(self, newvalue): + if self._value == newvalue: + return None + + self._value = newvalue + return { + 'Value': wrap_dbus_value(newvalue), + 'Text': self.GetText() + } + + def local_get_value(self): + return self._value + + # ==== ALL FUNCTIONS BELOW THIS LINE WILL BE CALLED BY OTHER PROCESSES OVER THE DBUS ==== + + ## Dbus exported method SetValue + # Function is called over the D-Bus by other process. It will first check (via callback) if new + # value is accepted. And it is, stores it and emits a changed-signal. + # @param value The new value. + # @return completion-code When successful a 0 is return, and when not a -1 is returned. + @dbus.service.method('com.victronenergy.BusItem', in_signature='v', out_signature='i') + def SetValue(self, newvalue): + if not self._writeable: + return 1 # NOT OK + + newvalue = unwrap_dbus_value(newvalue) + + # If value type is enforced, cast it. If the type can be coerced + # python will do it for us. This allows ints to become floats, + # or bools to become ints. Additionally also allow None, so that + # a path may be invalidated. + if self._type is not None and newvalue is not None: + try: + newvalue = self._type(newvalue) + except (ValueError, TypeError): + return 1 # NOT OK + + if newvalue == self._value: + return 0 # OK + + # call the callback given to us, and check if new value is OK. + if (self._onchangecallback is None or + (self._onchangecallback is not None and self._onchangecallback(self.__dbus_object_path__, newvalue))): + + self.local_set_value(newvalue) + return 0 # OK + + return 2 # NOT OK + + ## Dbus exported method GetDescription + # + # Returns the a description. + # @param language A language code (e.g. ISO 639-1 en-US). + # @param length Lenght of the language string. + # @return description + @dbus.service.method('com.victronenergy.BusItem', in_signature='si', out_signature='s') + def GetDescription(self, language, length): + return self._description if self._description is not None else 'No description given' + + ## Dbus exported method GetValue + # Returns the value. + # @return the value when valid, and otherwise an empty array + @dbus.service.method('com.victronenergy.BusItem', out_signature='v') + def GetValue(self): + return wrap_dbus_value(self._value) + + ## Dbus exported method GetText + # Returns the value as string of the dbus-object-path. + # @return text A text-value. '---' when local value is invalid + @dbus.service.method('com.victronenergy.BusItem', out_signature='s') + def GetText(self): + if self._value is None: + return '---' + + # Default conversion from dbus.Byte will get you a character (so 'T' instead of '84'), so we + # have to convert to int first. Note that if a dbus.Byte turns up here, it must have come from + # the application itself, as all data from the D-Bus should have been unwrapped by now. + if self._gettextcallback is None and type(self._value) == dbus.Byte: + return str(int(self._value)) + + if self._gettextcallback is None and self.__dbus_object_path__ == '/ProductId': + return "0x%X" % self._value + + if self._gettextcallback is None: + return str(self._value) + + return self._gettextcallback(self.__dbus_object_path__, self._value) + + ## The signal that indicates that the value has changed. + # Other processes connected to this BusItem object will have subscribed to the + # event when they want to track our state. + @dbus.service.signal('com.victronenergy.BusItem', signature='a{sv}') + def PropertiesChanged(self, changes): + pass + +## This class behaves like a regular reference to a class method (eg. self.foo), but keeps a weak reference +## to the object which method is to be called. +## Use this object to break circular references. +class weak_functor: + def __init__(self, f): + self._r = weakref.ref(f.__self__) + self._f = weakref.ref(f.__func__) + + def __call__(self, *args, **kargs): + r = self._r() + f = self._f() + if r == None or f == None: + return + f(r, *args, **kargs) diff --git a/venus-data-UninstallPackages.tgz b/venus-data-UninstallPackages.tgz index 8ef149312698710f0365854c4e2d2d9f898f8c4c..a0b0bb52623a87d7944d7aa4482f5934aa60a4a8 100644 GIT binary patch delta 1095 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

&Iz@1C8W(U7_ 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%0As&8md(bt~*vLj@;HP&@N{e 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