dsmr_parser/__main__.py
def console():
    """Output DSMR data to console."""

    parser = argparse.ArgumentParser(description=console.__doc__)
    parser.add_argument('--device', default='/dev/ttyUSB0',
                        help='port to read DSMR data from')
    parser.add_argument('--host', default=None,
                        help='alternatively connect using TCP host.')
    parser.add_argument('--port', default=None,
                        help='TCP port to use for connection')
    parser.add_argument('--version', default='2.2', choices=['2.2', '4'],
                        help='DSMR version (2.2, 4)')
    parser.add_argument('--verbose', '-v', action='count')

    args = parser.parse_args()

    if args.verbose:
        level = logging.DEBUG
    else:
        level = logging.ERROR
    logging.basicConfig(level=level)

    loop = asyncio.get_event_loop()

    def print_callback(telegram):
        """Callback that prints telegram values."""
        for obiref, obj in telegram.items():
            if obj:
                print(obj.value, obj.unit)
        print()

    # create tcp or serial connection depending on args
    if args.host and args.port:
        create_connection = partial(create_tcp_dsmr_reader,
                                    args.host, args.port, args.version,
                                    print_callback, loop=loop)
    else:
        create_connection = partial(create_dsmr_reader,
                                    args.device, args.version,
                                    print_callback, loop=loop)

    try:
        # connect and keep connected until interrupted by ctrl-c
        while True:
            # create serial or tcp connection
            conn = create_connection()
            transport, protocol = loop.run_until_complete(conn)
            # wait until connection it closed
            loop.run_until_complete(protocol.wait_closed())
            # wait 5 seconds before attempting reconnect
            loop.run_until_complete(asyncio.sleep(5))
    except KeyboardInterrupt:
        # cleanup connection after user initiated shutdown
        transport.close()
        loop.run_until_complete(asyncio.sleep(0))
    finally:
        loop.close()
def console():
    parser = argparse.ArgumentParser(description=console.__doc__)
    parser.add_argument('--device', default='/dev/ttyUSB0',
                        help='port to read DSMR data from')
    parser.add_argument('--host', default=None,
                        help='alternatively connect using TCP host.')
    parser.add_argument('--port', default=None,
                        help='TCP port to use for connection')
    parser.add_argument('--version', default='2.2', choices=['2.2', '4'],
                        help='DSMR version (2.2, 4)')
    parser.add_argument('--verbose', '-v', action='count')

    args = parser.parse_args()

    if args.verbose:
        level = logging.DEBUG
    else:
        level = logging.ERROR
    logging.basicConfig(level=level)

    loop = asyncio.get_event_loop()

    def print_callback(telegram):
        """Callback that prints telegram values."""
        for obiref, obj in telegram.items():
            if obj:
                print(obj.value, obj.unit)
        print()

    # create tcp or serial connection depending on args
    if args.host and args.port:
        create_connection = partial(create_tcp_dsmr_reader,
                                    args.host, args.port, args.version,
                                    print_callback, loop=loop)
    else:
        create_connection = partial(create_dsmr_reader,
                                    args.device, args.version,
                                    print_callback, loop=loop)

    try:
        # connect and keep connected until interrupted by ctrl-c
        while True:
            # create serial or tcp connection
            conn = create_connection()
            transport, protocol = loop.run_until_complete(conn)
            # wait until connection it closed
            loop.run_until_complete(protocol.wait_closed())
            # wait 5 seconds before attempting reconnect
            loop.run_until_complete(asyncio.sleep(5))
    except KeyboardInterrupt:
        # cleanup connection after user initiated shutdown
        transport.close()
        loop.run_until_complete(asyncio.sleep(0))
    finally:
        loop.close()
def console ( ) : parser = argparse . ArgumentParser ( description = console . __doc__ ) parser . add_argument ( '--device' , default = '/dev/ttyUSB0' , help = 'port to read DSMR data from' ) parser . add_argument ( '--host' , default = None , help = 'alternatively connect using TCP host.' ) parser . add_argument ( '--port' , default = None , help = 'TCP port to use for connection' ) parser . add_argument ( '--version' , default = '2.2' , choices = [ '2.2' , '4' ] , help = 'DSMR version (2.2, 4)' ) parser . add_argument ( '--verbose' , '-v' , action = 'count' ) args = parser . parse_args ( ) if args . verbose : level = logging . DEBUG else : level = logging . ERROR logging . basicConfig ( level = level ) loop = asyncio . get_event_loop ( ) def print_callback ( telegram ) : """Callback that prints telegram values.""" for obiref , obj in telegram . items ( ) : if obj : print ( obj . value , obj . unit ) print ( ) # create tcp or serial connection depending on args if args . host and args . port : create_connection = partial ( create_tcp_dsmr_reader , args . host , args . port , args . version , print_callback , loop = loop ) else : create_connection = partial ( create_dsmr_reader , args . device , args . version , print_callback , loop = loop ) try : # connect and keep connected until interrupted by ctrl-c while True : # create serial or tcp connection conn = create_connection ( ) transport , protocol = loop . run_until_complete ( conn ) # wait until connection it closed loop . run_until_complete ( protocol . wait_closed ( ) ) # wait 5 seconds before attempting reconnect loop . run_until_complete ( asyncio . sleep ( 5 ) ) except KeyboardInterrupt : # cleanup connection after user initiated shutdown transport . close ( ) loop . run_until_complete ( asyncio . sleep ( 0 ) ) finally : loop . close ( )
Output DSMR data to console.
Output DSMR data to console .