parser = argparse.ArgumentParser( description='dummy dbus service' ) parser.add_argument("-n", "--name", help="the D-Bus service you want me to claim", type=str, default="com.victronenergy.solarcharger.tty33") args = parser.parse_args() logger = setup_logging(debug=True) logger.info(__file__ + " is starting up, use -h argument to see optional arguments") # Have a mainloop, so we can send/receive asynchronous calls to and from dbus DBusGMainLoop(set_as_default=True) s = DbusDummyService( servicename=args.name, deviceinstance=0, paths={ '/Dc/0/Voltage': {'initial': 12}, '/Dc/0/Current': {'initial': 0}, '/Dc/0/Power': {'initial': 290, 'update': 1} }, productname='Solarcharger', connection='VE.Direct port 1') logger.info('Connected to dbus, and switching over to gobject.MainLoop() (= event based)') mainloop = gobject.MainLoop() mainloop.run()
logging.basicConfig(level=logging.DEBUG) logging.info(__file__ + " is starting up, use -h argument to see optional arguments") # Have a mainloop, so we can send/receive asynchronous calls to and from dbus DBusGMainLoop(set_as_default=True) pvac_output = DbusDummyService(servicename=args.name, deviceinstance=args.position, productname='Grid meter (dummy)', paths={ '/Ac/L1/Power': { 'initial': 150 }, '/Ac/L2/Power': { 'initial': 200 }, '/Ac/L3/Power': { 'initial': 250 }, '/Ac/Power': { 'initial': 600 } }) print( 'Connected to dbus, and switching over to gobject.MainLoop() (= event based)' ) mainloop = GLib.MainLoop() mainloop.run()
s = DbusDummyService(servicename=args.name, deviceinstance=0, paths={ '/Serial': { 'initial': None }, '/CustomName': { 'initial': None }, '/GroupId': { 'initial': None }, '/IsInverterCharger': { 'initial': 0 }, '/Alarms/LowVoltage': { 'initial': 0 }, '/Alarms/HighVoltage': { 'initial': 0 }, '/Alarms/LowTemperature': { 'initial': 0 }, '/Alarms/HighTemperature': { 'initial': 0 }, '/Alarms/Overload': { 'initial': 0 }, '/Alarms/Ripple': { 'initial': 0 }, '/Alarms/LowVoltageAcOut': { 'initial': 0 }, '/Alarms/HighVoltageAcOut': { 'initial': 0 }, '/Dc/0/Voltage': { 'initial': 50 }, '/Dc/0/Current': { 'initial': 4.1 }, '/Ac/Out/L1/V': { 'initial': 230 }, '/Ac/Out/L1/I': { 'initial': 0.9 }, '/Ac/Out/L1/P': { 'initial': 180 }, '/Ac/Out/L1/S': { 'initial': 200 }, '/Ac/Out/L1/F': { 'initial': 50 }, '/Mode': { 'initial': 2 }, '/State': { 'initial': 9 }, '/Relay/0/State': { 'initial': 0 }, '/Pv/V': { 'initial': 381 }, '/Yield/Power': { 'initial': 123 }, '/DeviceOffReason': { 'initial': 0 }, '/Soc': { 'initial': 10 }, '/Energy/InverterToAcOut': { 'initial': None }, '/Energy/OutToInverter': { 'initial': None }, '/Energy/SolarToBattery': { 'initial': None }, '/Energy/SolarToAcOut': { 'initial': None }, }, productname='Inverter RS Smart 48V/6000VA/80A', connection='VE.Direct port 1')
def main(): # Argument parsing parser = argparse.ArgumentParser(description='dummy dbus service') parser.add_argument("-n", "--name", help="the D-Bus service you want me to claim", type=str, default="com.victronenergy.battery.socketcan_can0") parser.add_argument("parent", help="battery service to proxy for", type=str, default="com.victronenergy.battery.ttyO0") args = parser.parse_args() logging.basicConfig(level=logging.INFO) # Have a mainloop, so we can send/receive asynchronous calls to and from dbus DBusGMainLoop(set_as_default=True) s = DbusDummyService(servicename=args.name, deviceinstance=0, paths={ '/Alarms/CellImbalance': { 'initial': 0 }, '/Alarms/HighChargeCurrent': { 'initial': 0 }, '/Alarms/HighChargeTemperature': { 'initial': 0 }, '/Alarms/HighDischargeCurrent': { 'initial': 0 }, '/Alarms/HighTemperature': { 'initial': 0 }, '/Alarms/HighVoltage': { 'initial': 0 }, '/Alarms/InternalFailure': { 'initial': 0 }, '/Alarms/LowChargeTemperature': { 'initial': 0 }, '/Alarms/LowTemperature': { 'initial': 0 }, '/Alarms/LowVoltage': { 'initial': 0 }, '/Soc': { 'initial': None }, '/Dc/0/Voltage': { 'initial': None }, '/Dc/0/Current': { 'initial': None }, '/Dc/0/Power': { 'initial': None }, '/Dc/0/Temperature': { 'initial': 23.8 }, '/Info/BatteryLowVoltage': { 'initial': None }, '/Info/MaxChargeCurrent': { 'initial': None }, '/Info/MaxChargeVoltage': { 'initial': None }, '/Info/MaxDischargeCurrent': { 'initial': None }, }, productname='ACME BMS battery', connection='CAN-bus') logger.info('Connected to dbus') # Track some items and reflect them conn = s._dbusservice._dbusconn track(conn, args.parent, '/Dc/0/Voltage', partial(_set_value, s, '/Dc/0/Voltage')) track(conn, args.parent, '/Dc/0/Current', partial(_set_value, s, '/Dc/0/Current')) track(conn, args.parent, '/Dc/0/Power', partial(_set_value, s, '/Dc/0/Power')) track(conn, args.parent, '/Soc', partial(_set_value, s, '/Soc')) logger.info('Switching over to GLib.MainLoop() (= event based)') mainloop = GLib.MainLoop() mainloop.run()
"--name", help="the D-Bus service you want me to claim", type=str, default="com.victronenergy.charger.ttyO1") args = parser.parse_args() print(__file__ + " is starting up, use -h argument to see optional arguments") logger = setup_logging(debug=True) # Have a mainloop, so we can send/receive asynchronous calls to and from dbus DBusGMainLoop(set_as_default=True) s = DbusDummyService(servicename=args.name, deviceinstance=0, paths={ '/Dc/0/Voltage': { 'initial': 31 }, '/Dc/0/Current': { 'initial': 32 } }, productname='Charger (dummy)', connection='VE.Direct port 1') logger.info( 'Connected to dbus, and switching over to GLib.MainLoop() (= event based)') mainloop = GLib.MainLoop() mainloop.run()
parser.add_argument( "-p", "--position", help="position (and instance): 0=grid, 1=output, 2=genset", type=int, default="0") args = parser.parse_args() # Init logging logger = setup_logging(debug=True) logger.info(__file__ + " is starting up, use -h argument to see optional arguments") # Have a mainloop, so we can send/receive asynchronous calls to and from dbus DBusGMainLoop(set_as_default=True) pvac_output = DbusDummyService( servicename=args.name, deviceinstance=args.position, paths={ '/Ac/L1/Power': {'initial': 0, 'update': 0}, '/Ac/L2/Power': {'initial': 0, 'update': 0}, '/Ac/L3/Power': {'initial': 0, 'update': 0}, '/Ac/Energy/Forward': {'initial': 0, 'update': 1}, '/Position': {'initial': int(args.position), 'update': 0}}) logger.info('Connected to dbus, and switching over to gobject.MainLoop() (= event based)') mainloop = gobject.MainLoop() mainloop.run()
s = DbusDummyService(servicename=args.name, deviceinstance=1, paths={ '/CustomName': { 'initial': 'North roof' }, '/State': { 'initial': 242 }, '/Dc/0/Voltage': { 'initial': 41.0, 'update': partial(loop, 41, 20) }, '/Dc/0/Current': { 'initial': 42.0, 'update': partial(loop, 42, 20) }, '/Dc/0/Temperature': { 'initial': 5, 'update': partial(loop, 5, 20) }, '/Pv/I': { 'initial': 0.0, 'update': partial(loop, 0, 20) }, '/Pv/V': { 'initial': 80.0, 'update': partial(loop, 80, 20) }, '/Yield/Power': { 'initial': 800, 'update': partial(loop, 800, 20) }, '/Yield/User': { 'initial': 0.1, 'update': upwards }, '/History/Daily/0/TimeInBulk': { 'initial': 0, 'update': 1 }, '/Link/NetworkMode': { 'initial': None }, '/Link/NetworkStatus': { 'initial': None }, '/Link/ChargeVoltage': { 'initial': None }, '/Link/ChargeCurrent': { 'initial': None }, '/Settings/ChargeCurrentLimit': { 'initial': 70 }, '/Settings/BmsPresent': { 'initial': None }, '/DeviceOffReason': { 'initial': 0 }, }, productname='Solarcharger', connection='VE.Direct port 1')
s = DbusDummyService(servicename=args.name, deviceinstance=0, paths={ '/Soc': { 'initial': 20 }, '/TimeToGo': { 'initial': 20 }, '/Dc/0/Voltage': { 'initial': 21 }, '/Dc/1/Voltage': { 'initial': None }, '/Dc/0/Current': { 'initial': 22 }, '/Dc/0/Power': { 'initial': 23 }, '/Dc/0/Temperature': { 'initial': None }, '/CustomName': { 'initial': None } }, productname='BMV-700', connection='VE.Direct port 1')
description='dummy dbus service' ) parser.add_argument("-n", "--name", help="the D-Bus service you want me to claim", type=str, default="com.victronenergy.tank.builtin_adc5_di0") args = parser.parse_args() print(__file__ + " is starting up, use -h argument to see optional arguments") logger = setup_logging(debug=True) # Have a mainloop, so we can send/receive asynchronous calls to and from dbus DBusGMainLoop(set_as_default=True) s = DbusDummyService( servicename=args.name, deviceinstance=0, paths={ '/Capacity': {'initial': 100}, '/FluidType': {'initial': 0}, '/Level': {'initial': 50}, '/Remaining': {'initial': 50}, '/Status': {'initial': 1}, }, productname='Generic Tank sensor', connection='ADC port 1') logger.info('Connected to dbus, and switching over to GLib.MainLoop() (= event based)') mainloop = GLib.MainLoop() mainloop.run()
# Init logging logging.basicConfig(level=logging.DEBUG) logging.info(__file__ + " is starting up, use -h argument to see optional arguments") # Have a mainloop, so we can send/receive asynchronous calls to and from dbus DBusGMainLoop(set_as_default=True) pvac_output = DbusDummyService(servicename=args.name, productname='Battery', deviceinstance=223, paths={ '/Dc/0/V': { 'initial': 2, 'update': 0 }, '/Dc/0/I': { 'initial': -15, 'update': 0 }, '/Soc': { 'initial': 10, 'update': 0 } }) print 'Connected to dbus, and switching over to gobject.MainLoop() (= event based)' mainloop = gobject.MainLoop() mainloop.run()
s = DbusDummyService(servicename=args.name, deviceinstance=0, paths={ '/Start': { 'initial': None }, '/AutoStart': { 'initial': 1 }, '/CustomName': { 'initial': None }, '/StatusCode': { 'initial': 0 }, '/ErrorCode': { 'initial': 0 }, '/Engine/Load': { 'initial': 65 }, '/Engine/Speed': { 'initial': 1800 }, '/Engine/OperatingHours': { 'initial': 101 }, '/Engine/CoolantTemperature': { 'initial': 92 }, '/Engine/WindingTemperature': { 'initial': 101 }, '/Engine/ExaustTemperature': { 'initial': 188 }, '/StarterVoltage': { 'initial': 12.2 }, '/Ac/L1/Voltage': { 'initial': 230.2 }, '/Ac/L1/Current': { 'initial': 1.2 }, '/Ac/L1/Power': { 'initial': 480.1 }, '/Ac/L1/Frequency': { 'initial': 50.1 }, '/Ac/L2/Voltage': { 'initial': 231.2 }, '/Ac/L2/Current': { 'initial': 1.3 }, '/Ac/L2/Power': { 'initial': 481.1 }, '/Ac/L2/Frequency': { 'initial': 50.1 }, '/Ac/L3/Voltage': { 'initial': 229.2 }, '/Ac/L3/Current': { 'initial': 1.1 }, '/Ac/L3/Power': { 'initial': 481.1 }, '/Ac/L3/Frequency': { 'initial': 50.1 }, }, productname='Generic Genset', connection='CAN-bus')
s = DbusDummyService(servicename=args.name, deviceinstance=0, paths={ '/State': { 'initial': 242 }, '/Dc/0/Voltage': { 'initial': 41 }, '/Dc/0/Current': { 'initial': 42 }, '/Dc/0/Temperature': { 'initial': None }, '/Link/NetworkMode': { 'initial': None }, '/Link/NetworkStatus': { 'initial': None }, '/Link/ChargeVoltage': { 'initial': None }, '/Link/ChargeCurrent': { 'initial': None }, '/Settings/ChargeCurrentLimit': { 'initial': 70 }, '/Settings/BmsPresent': { 'initial': None }, '/DeviceOffReason': { 'initial': 0 }, }, productname='Solarcharger', connection='VE.Direct port 1')
s = DbusDummyService(servicename=args.name, deviceinstance=0, paths={ '/Ac/ActiveIn/L1/P': { 'initial': 0 }, '/Ac/ActiveIn/ActiveInput': { 'initial': 0 }, '/Ac/ActiveIn/Connected': { 'initial': 1 }, '/Ac/Out/P': { 'initial': 0 }, '/Ac/Out/L1/P': { 'initial': 0 }, '/Dc/0/Voltage': { 'initial': 11 }, '/Dc/0/Current': { 'initial': 12 }, '/Dc/0/MaxChargeCurrent': { 'initial': None }, '/Devices/0/Assistants': { 'initial': [0] * 56 }, '/FirmwareFeatures/BolFrame': { 'initial': None }, '/FirmwareFeatures/BolUBatAndTBatSense': { 'initial': None }, '/Soc': { 'initial': 10 }, '/State': { 'initial': None }, '/VebusMainState': { 'initial': None }, '/Hub4/AssistantId': { 'initial': None }, '/Hub4/Sustain': { 'initial': None }, '/Hub4/AcPowerSetpoint': { 'initial': None }, '/Hub4/DisableFeedIn': { 'initial': None }, '/Hub4/TargetPowerIsMaxFeedIn': { 'initial': 0 }, '/Hub4/FixSolarOffsetTo100mV': { 'initial': 0 }, '/BatteryOperationalLimits/MaxChargeVoltage': { 'initial': None }, '/BatteryOperationalLimits/MaxChargeCurrent': { 'initial': None }, '/BatteryOperationalLimits/MaxDischargeCurrent': { 'initial': None }, '/BatteryOperationalLimits/BatteryLowVoltage': { 'initial': None } }, productname='Multi 12/3000', connection='CCGX-VE.Bus port')
pvac_output = DbusDummyService(servicename=args.name, deviceinstance=222, productname='Multi', paths={ '/Dc/0/Voltage': { 'initial': 24, 'update': 0 }, '/Dc/0/Current': { 'initial': -3, 'update': 0 }, '/Soc': { 'initial': 80, 'update': 0 }, '/State': { 'initial': 1, 'update': 0 }, '/Ac/ActiveIn/ActiveInput': { 'initial': 0, 'update': 0 }, '/Alarms/HighTemperature': { 'initial': 0, 'update': 0 }, '/Alarms/Overload': { 'initial': 0, 'update': 0 }, '/Ac/Out/P': { 'initial': 80, 'update': 0 }, '/Ac/Out/L1/P': { 'initial': 0, 'update': 0 } })
print(__file__ + " is starting up, use -h argument to see optional arguments") logger = setup_logging(debug=True) # Have a mainloop, so we can send/receive asynchronous calls to and from dbus DBusGMainLoop(set_as_default=True) s = DbusDummyService(servicename=args.name, deviceinstance=0, paths={ '/State': { 'initial': None }, '/Soc': { 'initial': 10 }, '/Dc/0/Voltage': { 'initial': 11 }, '/Dc/0/Current': { 'initial': 12 } }, productname='Multi 12/3000', connection='CCGX-VE.Bus port') logging.info( 'Connected to dbus, and switching over to gobject.MainLoop() (= event based)' ) mainloop = gobject.MainLoop() mainloop.run()
logger = setup_logging(debug=True) # Have a mainloop, so we can send/receive asynchronous calls to and from dbus DBusGMainLoop(set_as_default=True) s = DbusDummyService(servicename=args.name, deviceinstance=0, paths={ '/Status': { 'initial': 0 }, '/Temperature': { 'initial': None }, '/TemperatureType': { 'initial': 0 }, '/Scale': { 'initial': 1 }, '/Offset': { 'initial': 0 }, }, productname='Generic Temperature sensor', connection='ADC port 1') logger.info( 'Connected to dbus, and switching over to gobject.MainLoop() (= event based)' ) mainloop = gobject.MainLoop()
s = DbusDummyService(servicename=args.name, deviceinstance=args.instance, paths={ '/Ac/ActiveIn/P': {'initial': 0}, '/Ac/ActiveIn/L1/P': {'initial': 0}, '/Ac/ActiveIn/ActiveInput': {'initial': 0}, '/Ac/ActiveIn/Connected': {'initial': 1}, '/Ac/Out/P': {'initial': 0}, '/Ac/Out/L1/P': {'initial': 0}, '/Ac/NumberOfPhases': {'initial': 1}, '/Ac/State/IgnoreAcIn1': {'initial': 0}, '/Ac/State/IgnoreAcIn2': {'initial': 0}, '/Alarms/HighTemperature': {'initial': 0}, '/Alarms/L1/HighTemperature': {'initial': 0}, '/Alarms/L1/LowBattery': {'initial': 0}, '/Alarms/L1/Overload': {'initial': 0}, '/Alarms/L1/Ripple': {'initial': 0}, '/Alarms/LowBattery': {'initial': 0}, '/Alarms/Overload': {'initial': 0}, '/Alarms/Ripple': {'initial': 0}, '/Alarms/TemperatureSensor': {'initial': 0}, '/Alarms/VoltageSensor': {'initial': 0}, '/Alarms/GridLost': {'initial': 0}, '/Alarms/HighDcVoltage': {'initial': 0}, '/Alarms/HighDcCurrent': {'initial': 0}, '/Dc/0/Voltage': {'initial': 11}, '/Dc/0/Current': {'initial': 12}, '/Dc/0/MaxChargeCurrent': {'initial': None}, '/Dc/0/Temperature': {'initial': None}, '/Devices/0/Assistants': {'initial': [0]*56}, '/Devices/0/ExtendStatus/GridRelayReport/Code': {'initial': None}, '/Devices/0/ExtendStatus/GridRelayReport/Count': {'initial': None}, '/Devices/0/ExtendStatus/WaitingForRelayTest': {'initial': 0}, '/ExtraBatteryCurrent': {'initial': 0}, '/FirmwareFeatures/BolFrame': {'initial': None}, '/FirmwareFeatures/BolUBatAndTBatSense': {'initial': None}, '/Soc': {'initial': 10}, '/State': {'initial': None}, '/Mode': {'initial': None}, '/VebusMainState': {'initial': None}, '/Hub/ChargeVoltage': {'initial': None}, '/Hub4/AssistantId': {'initial': None}, '/Hub4/Sustain': {'initial': None}, '/Hub4/L1/AcPowerSetpoint': {'initial': None}, '/Hub4/DisableFeedIn': {'initial': None}, '/Hub4/TargetPowerIsMaxFeedIn': {'initial': 0}, '/Hub4/FixSolarOffsetTo100mV': {'initial': 0}, '/BatteryOperationalLimits/MaxChargeVoltage': {'initial': None}, '/BatteryOperationalLimits/MaxChargeCurrent': {'initial': None}, '/BatteryOperationalLimits/MaxDischargeCurrent': {'initial': None}, '/BatteryOperationalLimits/BatteryLowVoltage': {'initial': None}}, productname='Multi 12/3000', connection='CCGX-VE.Bus port')
print(__file__ + " is starting up, use -h argument to see optional arguments") logger = setup_logging(debug=True) # Have a mainloop, so we can send/receive asynchronous calls to and from dbus DBusGMainLoop(set_as_default=True) s = DbusDummyService(servicename=args.name, deviceinstance=0, paths={ '/Soc': { 'initial': 20 }, '/Dc/0/Voltage': { 'initial': 21 }, '/Dc/0/Current': { 'initial': 22 }, '/Dc/0/Power': { 'initial': 23 } }, productname='BMV-700', connection='VE.Direct port 1') logger.info( 'Connected to dbus, and switching over to gobject.MainLoop() (= event based)' ) mainloop = gobject.MainLoop() mainloop.run()
DBusGMainLoop(set_as_default=True) s = DbusDummyService( servicename=args.name, deviceinstance=args.instance, paths={ '/Alarms/CellImbalance': {'initial': 0}, '/Alarms/HighChargeCurrent': {'initial': 0}, '/Alarms/HighChargeTemperature': {'initial': 0}, '/Alarms/HighDischargeCurrent': {'initial': 0}, '/Alarms/HighTemperature': {'initial': 0}, '/Alarms/HighVoltage': {'initial': 0}, '/Alarms/InternalFailure': {'initial': 0}, '/Alarms/LowChargeTemperature': {'initial': 0}, '/Alarms/LowTemperature': {'initial': 0}, '/Alarms/LowVoltage': {'initial': 0}, '/Soc': {'initial': 40}, '/Dc/0/Voltage': {'initial': 25}, '/Dc/0/Current': {'initial': 20}, '/Dc/0/Power': {'initial': 500}, '/Dc/0/Temperature': {'initial': 23.8}, '/Info/BatteryLowVoltage': {'initial': 23}, '/Info/MaxChargeCurrent': {'initial': 600}, '/Info/MaxChargeVoltage': {'initial': 28.4}, '/Info/MaxDischargeCurrent': {'initial': 600}, }, productname='ACME BMS battery {}'.format(args.instance), connection='CAN-bus') logger.info('Connected to dbus, and switching over to gobject.MainLoop() (= event based)')
pvac_output = DbusDummyService(servicename=args.name, deviceinstance=222, productname='Multi', paths={ '/Dc/V': { 'initial': 24, 'update': 0 }, '/Dc/I': { 'initial': 3, 'update': 0 }, '/Soc': { 'initial': 80, 'update': 0 }, '/State': { 'initial': 1, 'update': 0 }, '/Ac/Out/P': { 'initial': 80, 'update': 1 }, '/Ac/ActiveIn/L1/P': { 'initial': 0, 'update': 1 }, '/Ac/ActiveIn/L1/I': { 'initial': 46, 'update': 0 }, '/Ac/ActiveIn/L1/V': { 'initial': 230, 'update': 0 }, '/Ac/ActiveIn/L1/F': { 'initial': 50, 'update': 0 }, '/Ac/NumberOfPhases': { 'initial': 1, 'update': 0 } })