Metadata-Version: 1.2
Name: dlms-cosem
Version: 21.2.0
Summary: A Python library for DLMS/COSEM
Home-page: https://github.com/pwitab/dlms-cosem
Author: Henrik Palmlund Wahlgren @ Palmlund Wahlgren Innovative Technology AB
Author-email: henrik@pwit.se
License: MIT
Description-Content-Type: UNKNOWN
Description: 
        # A Python library for DLMS/COSEM.
        
        [![codecov](https://codecov.io/gh/pwitab/dlms-cosem/branch/master/graph/badge.svg?token=RO37L11VQJ)](https://codecov.io/gh/pwitab/dlms-cosem)
        ![run-tests](https://github.com/pwitab/dlms-cosem/workflows/run-tests/badge.svg)
        ![build-docs](https://github.com/pwitab/dlms-cosem/workflows/build-docs/badge.svg)
        
        <img src="dlms-logo.png" alt="dlms_logo" width="200"/>
        
        # Installation
        We only support Python 3.6+
        
        ```
        pip install dlms-cosem
        ```
        
        
        # Documentation
        
        Full documentation can be found at [www.dlms.dev](https://www.dlms.dev)
        
        # About
        
        `dlms-cosem` is designed to be a tool with a simple API for working with DLMS/COSEM
        enabled energy meters. It provides the lowest level function, as protocol state
        management, APDU encoding/decoding, APDU encryption/decryption.
        
        The library aims to provide a [sans-io](https://sans-io.readthedocs.io/) implementation
        of the DLMS/COSEM protocol so that the protocol code can be reused with several
        different io-paradigms. As of now we provide a simple client implementation based on
        blocking I/O.
        
        We have not implemented full support to be able to build a server (meter) emulator. If
        this is a use-case you need, consider sponsoring the development and contact us.
        
        # Supported features
        
        Current release:
        
            * Parsing DataNotification via UDP.
        
        Current Work:
        
            * GET, GET.WITH_BLOCK
            * Simple blocking DLMS Client for HDLC and TCP/IP
            * GlobalCiphering
            * HLS-GMAC auth
            * Selective access for ProfileGeneric via RangeDescriptor
            * Parsing of ProfileGeneric buffers
        
        # Example use:
        
        Look at the different file in the `examples` folder to how to use the library.
        
        # Supported meters
        
        Technically we aim to support any DLMS enabled meter. The library is implementing all
        the low level DLMS, and you might need an abstraction layer to support everything in
        your meter.
        
        DLMS/COSEM specifies many ways of performing tasks on a meter. It is
        customary that a meter also adheres to a companion standard. In the companion standard
        it is defined exactly how certain use-cases are to be performed and how data is modeled.
        
        Examples of companion standards are:
        * DSMR (Netherlands)
        * IDIS (all Europe)
        * UNI/TS 11291 (Italy)
        
        On top of it all your DSO (Distribution Service Operator) might have ordered their
        meters with extra functionality or reduced functionality from one of the companion
        standards.
        
        We have some meters we have run tests on or know the library is used for in production
        
        * Pietro Fiorentini RSE 1,2 LA N1. Italian gas meter
        * Iskraemeco AM550. IDIS compliant electricity meter.
        
        # Development
        
        This library is developed by Palmlund Wahlgren Innovative Technology AB. We are
        based in Sweden and are members of the DLMS User Association.
        
        If you find a bug pleas raise an issue on Github.
        
        We welcome contributions of any kind.
        
        We add features depending on our own and our clients use cases. If you
        need a feature implemented please contact us.
        
        # Training / Consultancy / Commercial Support
        
        We offer consultancy service and training services around this library and general DLMS/COSEM.
        If you are interested in our services just reach out to us.
        
        If you have implemented a solution based on this library we also offer a commercial
        support scheme.
        
        
        
        # Changelog
        All notable changes to this project will be documented in this file.
        
        
        The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
        and this project adheres to [Calendar Versioning](https://calver.org/)
        
        ## Unreleased
        
        
        ### Added
        
        ### Changed
        
        ### Deprecated
        
        ### Removed
        
        ### Fixed
        
        ### Security
        
        ## [21.2.0] - 2021-01-28
        
        ### Added
        
        * Support for basic SET service. No support for WITH_LIST or service specific block
          transfer
        
        ## [21.1.2] - 2021-01-22
        
        ### Fixed
        
        * The standard DLMS way of dealing with timezones in datetime are via UTC offset. But
          the offset is the deviation from normal time to UTC not deviation from UTC. This
          results in -60 min deviation for UTC+01:00 for example. Previous solution assumed
          60 min for UTC+01:00. Solved by negating all values for offset.
          Note that some DLMS companion standards handles the offset the previous way and in
          the future there will be need to handle both ways correctly.
        
        * Included typing-extensions in required packages.
        
        ## [21.1.1] - 2021-01-13
        
        ### Added
        
        * Better handling of TCP errors in `BlockingTcpTransport`
        
        ### Changed
        
        * It is now explicitly possible to connect and disconnect a transport in the
          `DlmsClient` instead of it being done automatically in `.associate()` and
          `.release_association()`. Context manager `.session()` works the same.
        
        * Client to server challenge of DlmsConnection is always created independent of auth
          method. But only used if needed.
        
        ### Removed
        
        * Removed conformance validation in DlmsConnection. It seems like meters don't always
          follow it so better to leave it up to the client.
        
        
        
        ## [21.1.0] - 2021-01-12
        
        ### Added
        
        * HDLC transport implementation
        * TCP transport implementation
        * DlMS client implementation
        * Support for Get service including service specific block transfer
        * Support for selective access via range descriptor
        * Support for HLS authentication using HLS-GMAC.
        * Support for GlobalCiphering
        * Parsing of ProfileGeneric buffer
        
        ### Changed
        
        * Changed project versioning scheme to Calendar versioning
        
        
        ## v0.0.2
        
        
        ### Changed
        
        -   UDP messages are now based WrapperProtocolDataUnit to be able to reuse
            WrapperHeader for TCP messages.
        -   Parsing of DLMS APDUs
        
        
        ### v0.0.1
        
        
        Initial implementation.
        
Keywords: AMR,Metering,smart meters,MDM,dlms,cosem
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: ~=3.6
