diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 881fd97..c4c8635 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,13 +1,18 @@ Change Log ---------- + +**0.4** (2016-11-21) +- DSMR v2.2 serial settings now uses parity serial.EVEN by default (`issue #4 `_) +- improved asyncio reader and improve it's error handling (`pull request #5 `_) + **0.3** (2016-11-12) -- Added asyncio reader for non-blocking reads. (thanks to https://github.com/aequitas) +- asyncio reader for non-blocking reads. (`pull request #3 `_) **0.2** (2016-11-08) -- Added support for DMSR version 2.2 (thanks to https://github.com/aequitas) +- support for DMSR version 2.2 (`pull request #2 `_) **0.1** (2016-08-22) -- Initial version with a serial reader and support for DSMR version 4.x +- initial version with a serial reader and support for DSMR version 4.x diff --git a/README.rst b/README.rst index b6feed0..d750628 100644 --- a/README.rst +++ b/README.rst @@ -22,7 +22,7 @@ Using the serial reader to connect to your smart meter and parse it's telegrams: .. code-block:: python from dsmr_parser import telegram_specifications - from dsmr_parser.obis_references import P1_MESSAGE_TIMESTAMP + from dsmr_parser import obis_references from dsmr_parser.serial import SerialReader, SERIAL_SETTINGS_V4 serial_reader = SerialReader( @@ -34,25 +34,22 @@ Using the serial reader to connect to your smart meter and parse it's telegrams: for telegram in serial_reader.read(): # The telegram message timestamp. - message_datetime = telegram[P1_MESSAGE_TIMESTAMP] + message_datetime = telegram[obis_references.P1_MESSAGE_TIMESTAMP] # Using the active tariff to determine the electricity being used and # delivered for the right tariff. - tariff = telegram[ELECTRICITY_ACTIVE_TARIFF] + tariff = telegram[obis_references.ELECTRICITY_ACTIVE_TARIFF] tariff = int(tariff.value) electricity_used_total \ - = telegram[ELECTRICITY_USED_TARIFF_ALL[tariff - 1]] + = telegram[obis_references.ELECTRICITY_USED_TARIFF_ALL[tariff - 1]] electricity_delivered_total = \ - telegram[ELECTRICITY_DELIVERED_TARIFF_ALL[tariff - 1]] + telegram[obis_referencesELECTRICITY_DELIVERED_TARIFF_ALL[tariff - 1]] - gas_reading = telegram[HOURLY_GAS_METER_READING] + gas_reading = telegram[obis_references.HOURLY_GAS_METER_READING] # See dsmr_reader.obis_references for all readable telegram values. -The dsmr_parser.serial module contains multiple settings that should work in -most cases. For example: if SERIAL_SETTINGS_V4 doesn't work, then try -SERIAL_SETTINGS_V4_EVEN too. Installation ------------ @@ -63,6 +60,13 @@ To install DSMR Parser: $ pip install dsmr-parser +Known issues +------------ + +If the serial settings SERIAL_SETTINGS_V2_2 or SERIAL_SETTINGS_V4 don't work. +Make sure to try and replace the parity settings to EVEN or NONE. +It's possible that alternative settings will be added in the future if these +settings don't work for the majority of meters. TODO ---- diff --git a/dsmr_parser/serial.py b/dsmr_parser/serial.py index fbe51e6..30dc451 100644 --- a/dsmr_parser/serial.py +++ b/dsmr_parser/serial.py @@ -11,16 +11,6 @@ logger = logging.getLogger(__name__) SERIAL_SETTINGS_V2_2 = { - 'baudrate': 9600, - 'bytesize': serial.SEVENBITS, - 'parity': serial.PARITY_NONE, - 'stopbits': serial.STOPBITS_ONE, - 'xonxoff': 0, - 'rtscts': 0, - 'timeout': 20 -} - -SERIAL_SETTINGS_V2_2_EVEN = { 'baudrate': 9600, 'bytesize': serial.SEVENBITS, 'parity': serial.PARITY_EVEN, @@ -31,16 +21,6 @@ SERIAL_SETTINGS_V2_2_EVEN = { } SERIAL_SETTINGS_V4 = { - 'baudrate': 115200, - 'bytesize': serial.SEVENBITS, - 'parity': serial.PARITY_NONE, - 'stopbits': serial.STOPBITS_ONE, - 'xonxoff': 0, - 'rtscts': 0, - 'timeout': 20 -} - -SERIAL_SETTINGS_V4_EVEN = { 'baudrate': 115200, 'bytesize': serial.SEVENBITS, 'parity': serial.PARITY_EVEN,