From eabe9b22f38a4f09527dc78cf354b501b057fe9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Lebruman?= Date: Thu, 16 Apr 2020 22:09:13 +0200 Subject: [PATCH 01/12] Add data for three phases Linky counter --- pyticcom/const.py | 10 +++++++++- pyticcom/teleinfo.py | 12 +++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/pyticcom/const.py b/pyticcom/const.py index 544f530..e9de4b9 100644 --- a/pyticcom/const.py +++ b/pyticcom/const.py @@ -6,12 +6,20 @@ HCHP_DESCRIPTION = "Index Heures Pleines" PTEC_DESCRIPTION = "Période Tarifaire en cours " IINST_DESCRIPTION = "Intensité Instantanée" +IINST1_DESCRIPTION = "Courant efficace phase 1 (A)" +IINST2_DESCRIPTION = "Courant efficace phase 2 (A)" +IINST3_DESCRIPTION = "Courant efficace phase 3 (A)" IMAX_DESCRIPTION = "Intensité maximale appelée" +IMAX1_DESCRIPTION = "Courant max phase 1 (A), toujours 60A en triphasé" +IMAX2_DESCRIPTION = "Courant max phase 2 (A), toujours 60A en triphasé" +IMAX3_DESCRIPTION = "Courant max phase 3 (A), toujours 60A en triphasé" +PMAX_DESCRIPTION = "Puissance maximale triphasée atteinte, valeur du jour n-1" PAPP_DESCRIPTION = "Puissance apparente" HHPHC_DESCRIPTION = "Horaire Heures Pleines Heures Creuses" MOTDETAT_DESCRIPTION = "Mot d'état du compteur MOTDETAT" +PPOT_DESCRIPTION = "Présence des potentiels, 0X, le X reflétant les coupures de phase selon la règle suivante :absence de la phase n -> bit n = 1" UNIT_NONE = "" UNIT_VA = "VA" UNIT_WH = "Wh" -UNIT_A = "A" \ No newline at end of file +UNIT_A = "A" diff --git a/pyticcom/teleinfo.py b/pyticcom/teleinfo.py index 0a403dc..4b1d9ac 100644 --- a/pyticcom/teleinfo.py +++ b/pyticcom/teleinfo.py @@ -7,7 +7,9 @@ from pyticcom.const import ADCO_DESCRIPTION, OPTARIF_DESCRIPTION, ISOUSC_DESCRIPTION, UNIT_A, UNIT_WH, UNIT_VA, UNIT_NONE, \ BASE_DESCRIPTION, HCHC_DESCRIPTION, HCHP_DESCRIPTION, PTEC_DESCRIPTION, IINST_DESCRIPTION, IMAX_DESCRIPTION, \ - PAPP_DESCRIPTION, HHPHC_DESCRIPTION, MOTDETAT_DESCRIPTION + PAPP_DESCRIPTION, HHPHC_DESCRIPTION, MOTDETAT_DESCRIPTION, \ + IINST1_DESCRIPTION, IINST2_DESCRIPTION, IINST3_DESCRIPTION, IMAX1_DESCRIPTION, IMAX2_DESCRIPTION, IMAX3_DESCRIPTION, \ + PMAX_DESCRIPTION, PPOT_DESCRIPTION LOGGER = logging.getLogger(__name__) @@ -22,10 +24,18 @@ class GroupInfo(enum.Enum): HCHP = (HCHP_DESCRIPTION, UNIT_WH) PTEC = (PTEC_DESCRIPTION) IINST = (IINST_DESCRIPTION, UNIT_WH) + IINST1 = (IINST1_DESCRIPTION, UNIT_WH) + IINST2 = (IINST2_DESCRIPTION, UNIT_WH) + IINST3 = (IINST3_DESCRIPTION, UNIT_WH) IMAX = (IMAX_DESCRIPTION, UNIT_A) + IMAX1 = (IMAX1_DESCRIPTION, UNIT_A) + IMAX2 = (IMAX2_DESCRIPTION, UNIT_A) + IMAX3 = (IMAX3_DESCRIPTION, UNIT_A) + PMAX = (PMAX_DESCRIPTION, UNIT_VA) PAPP = (PAPP_DESCRIPTION, UNIT_VA) HHPHC = (HHPHC_DESCRIPTION) MOTDETAT = (MOTDETAT_DESCRIPTION) + PPOT = (PPOT_DESCRIPTION) def __init__(self, description, unit = UNIT_NONE): self._description = description From 87520c799a85ad9a544d89acf7cbfb3a6e90b781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Lebruman?= Date: Fri, 17 Apr 2020 11:54:18 +0200 Subject: [PATCH 02/12] Correct bug. Each group info was retruning None, so add test on Name --- pyticcom/__init__.py | 2 +- pyticcom/const.py | 2 +- pyticcom/teleinfo.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pyticcom/__init__.py b/pyticcom/__init__.py index 6750a35..82b7303 100644 --- a/pyticcom/__init__.py +++ b/pyticcom/__init__.py @@ -1,3 +1,3 @@ from .teleinfo import * -__version__ = "1.1" +__version__ = "1.3" diff --git a/pyticcom/const.py b/pyticcom/const.py index e9de4b9..328d86c 100644 --- a/pyticcom/const.py +++ b/pyticcom/const.py @@ -17,7 +17,7 @@ PAPP_DESCRIPTION = "Puissance apparente" HHPHC_DESCRIPTION = "Horaire Heures Pleines Heures Creuses" MOTDETAT_DESCRIPTION = "Mot d'état du compteur MOTDETAT" -PPOT_DESCRIPTION = "Présence des potentiels, 0X, le X reflétant les coupures de phase selon la règle suivante :absence de la phase n -> bit n = 1" +PPOT_DESCRIPTION = "Présence des potentiels, 0X le X reflétant les coupures de phase selon la règle suivante: absence de la phase n -> bit n = 1" UNIT_NONE = "" UNIT_VA = "VA" diff --git a/pyticcom/teleinfo.py b/pyticcom/teleinfo.py index 4b1d9ac..724c006 100644 --- a/pyticcom/teleinfo.py +++ b/pyticcom/teleinfo.py @@ -81,7 +81,7 @@ def __init__(self): def get(self, group_info:GroupInfo): """Get group by label.""" for group in self.groups: - if group.info == group_info: + if group.info.name == group_info: return group return None @@ -192,4 +192,4 @@ def __enter__(self): def __exit__(self, type, value, traceback): """Make sure reader is closed.""" - self.close() \ No newline at end of file + self.close() From 05e2c3ee3e1a3536ccfa3ad5417a577cdea90984 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Lebruman?= Date: Fri, 17 Apr 2020 14:06:38 +0200 Subject: [PATCH 03/12] Remane lib for pyPi --- .gitignore | 2 +- README.md | 12 +++++++----- example.py | 2 +- {pyticcom => pytictri}/__init__.py | 2 +- {pyticcom => pytictri}/const.py | 0 {pyticcom => pytictri}/scanner.py | 0 {pyticcom => pytictri}/teleinfo.py | 0 setup.py | 13 +++++++------ 8 files changed, 17 insertions(+), 14 deletions(-) rename {pyticcom => pytictri}/__init__.py (55%) rename {pyticcom => pytictri}/const.py (100%) rename {pyticcom => pytictri}/scanner.py (100%) rename {pyticcom => pytictri}/teleinfo.py (100%) diff --git a/.gitignore b/.gitignore index 9ea48e8..3fef061 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # PyCharm .idea - +.vscode # Virtualenv venv diff --git a/README.md b/README.md index c4a3a54..7a84763 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,18 @@ -# pyticcom - EDF teléinformation Python library +# pytictri - EDF teléinformation Python library -[![PyPI version](https://badge.fury.io/py/pyticcom.svg)](https://badge.fury.io/py/pyticcom) +[![PyPI version](https://badge.fury.io/py/pytictri.svg)](https://badge.fury.io/py/pytictri) This library allows you to retrieve teleinfo using serial port device (USBTICLCV2). +This library is a fork from pyticcom project. It adds three phases counter compatibility. + ### Example ~~~ -from pyticcom import Teleinfo, TeleinfoMode +from pytictri import Teleinfo, Mode -with Teleinfo('/dev/tty.usbserial-DA4Y56SG', mode=TeleinfoMode.HISTORY) as teleinfo: +with Teleinfo('/dev/tty.usbserial-DA4Y56SG', mode=Mode.HISTORY) as teleinfo: frame = teleinfo.read_frame() print(frame.get("PAPP")) -~~~ \ No newline at end of file +~~~ diff --git a/example.py b/example.py index 0fa1a15..c767baa 100644 --- a/example.py +++ b/example.py @@ -1,6 +1,6 @@ from time import sleep -from pyticcom import Teleinfo, Mode, list_available_serials +from pytictri import Teleinfo, Mode, list_available_serials with Teleinfo('/dev/ttyUSB', mode=Mode.HISTORY) as tr: devices = list_available_serials() diff --git a/pyticcom/__init__.py b/pytictri/__init__.py similarity index 55% rename from pyticcom/__init__.py rename to pytictri/__init__.py index 82b7303..9c4e1b3 100644 --- a/pyticcom/__init__.py +++ b/pytictri/__init__.py @@ -1,3 +1,3 @@ from .teleinfo import * -__version__ = "1.3" +__version__ = "0.1" diff --git a/pyticcom/const.py b/pytictri/const.py similarity index 100% rename from pyticcom/const.py rename to pytictri/const.py diff --git a/pyticcom/scanner.py b/pytictri/scanner.py similarity index 100% rename from pyticcom/scanner.py rename to pytictri/scanner.py diff --git a/pyticcom/teleinfo.py b/pytictri/teleinfo.py similarity index 100% rename from pyticcom/teleinfo.py rename to pytictri/teleinfo.py diff --git a/setup.py b/setup.py index 0bc66c7..9e35970 100644 --- a/setup.py +++ b/setup.py @@ -30,17 +30,17 @@ def find_version(*file_paths): long_description = f.read() setup( - name='pyticcom', - version=find_version("pyticcom", "__init__.py"), + name='pytictri', + version=find_version("pytictri", "__init__.py"), packages=find_packages(), - description='Teleinfo python library', + description='Teleinfo tri python library', long_description=long_description, long_description_content_type='text/markdown', install_requires=['requests>=2'], license='GPL-3', include_package_data=True, - url='https://github.com/biker91620/pyticcom/tree/master', - author='biker91620', + url='https://github.com/biker91620/pytictri/tree/master', + author='benblrm', classifiers=[ 'Programming Language :: Python', 'Development Status :: 5 - Production/Stable', @@ -55,6 +55,7 @@ def find_version(*file_paths): ], keywords=[ 'rest', + 'pytictri', 'pyticcom', 'linky', 'tic', @@ -62,4 +63,4 @@ def find_version(*file_paths): 'smart-things', 'iot' ], -) \ No newline at end of file +) From 1d3a74312c3145c4009f8c8e3a954bb408baf368 Mon Sep 17 00:00:00 2001 From: benlbrm Date: Fri, 17 Apr 2020 14:10:54 +0200 Subject: [PATCH 04/12] Create pythonpublish.yml --- .github/workflows/pythonpublish.yml | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/pythonpublish.yml diff --git a/.github/workflows/pythonpublish.yml b/.github/workflows/pythonpublish.yml new file mode 100644 index 0000000..d5f3859 --- /dev/null +++ b/.github/workflows/pythonpublish.yml @@ -0,0 +1,31 @@ +# This workflows will upload a Python Package using Twine when a release is created +# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries + +name: Upload Python Package + +on: + release: + types: [created] + +jobs: + deploy: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: '3.x' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install setuptools wheel twine + - name: Build and publish + env: + TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + run: | + python setup.py sdist bdist_wheel + twine upload dist/* From 71cdf604cada8bfb0fda28ca7b932800e5d1274a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Lebruman?= Date: Fri, 17 Apr 2020 14:11:43 +0200 Subject: [PATCH 05/12] Change version --- pytictri/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pytictri/__init__.py b/pytictri/__init__.py index 9c4e1b3..d9a6d09 100644 --- a/pytictri/__init__.py +++ b/pytictri/__init__.py @@ -1,3 +1,3 @@ from .teleinfo import * -__version__ = "0.1" +__version__ = "0.1.0" From f76c2ab4d3c448098e7ac05bb28d60431949718c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Lebruman?= Date: Fri, 17 Apr 2020 14:16:01 +0200 Subject: [PATCH 06/12] Change version --- pytictri/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pytictri/__init__.py b/pytictri/__init__.py index d9a6d09..12311e4 100644 --- a/pytictri/__init__.py +++ b/pytictri/__init__.py @@ -1,3 +1,3 @@ from .teleinfo import * -__version__ = "0.1.0" +__version__ = "2.0.0" From 50aa963267a1eaf31ad57a6ddd830f04b66645c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Lebruman?= Date: Fri, 17 Apr 2020 14:34:13 +0200 Subject: [PATCH 07/12] Correct bug --- pytictri/teleinfo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pytictri/teleinfo.py b/pytictri/teleinfo.py index 724c006..b1e66c4 100644 --- a/pytictri/teleinfo.py +++ b/pytictri/teleinfo.py @@ -5,7 +5,7 @@ import serial from serial import PARITY_EVEN, STOPBITS_ONE -from pyticcom.const import ADCO_DESCRIPTION, OPTARIF_DESCRIPTION, ISOUSC_DESCRIPTION, UNIT_A, UNIT_WH, UNIT_VA, UNIT_NONE, \ +from pytictri.const import ADCO_DESCRIPTION, OPTARIF_DESCRIPTION, ISOUSC_DESCRIPTION, UNIT_A, UNIT_WH, UNIT_VA, UNIT_NONE, \ BASE_DESCRIPTION, HCHC_DESCRIPTION, HCHP_DESCRIPTION, PTEC_DESCRIPTION, IINST_DESCRIPTION, IMAX_DESCRIPTION, \ PAPP_DESCRIPTION, HHPHC_DESCRIPTION, MOTDETAT_DESCRIPTION, \ IINST1_DESCRIPTION, IINST2_DESCRIPTION, IINST3_DESCRIPTION, IMAX1_DESCRIPTION, IMAX2_DESCRIPTION, IMAX3_DESCRIPTION, \ From e76dc5dd7e3bdc0b182c42870078ca16c1b8b2ef Mon Sep 17 00:00:00 2001 From: benlbrm Date: Fri, 17 Apr 2020 14:39:04 +0200 Subject: [PATCH 08/12] Update pythonpublish.yml --- .github/workflows/pythonpublish.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pythonpublish.yml b/.github/workflows/pythonpublish.yml index d5f3859..1d09c1d 100644 --- a/.github/workflows/pythonpublish.yml +++ b/.github/workflows/pythonpublish.yml @@ -4,8 +4,9 @@ name: Upload Python Package on: - release: - types: [created] + push: + branches: + - master jobs: deploy: From 297d76078061bb3f506f38f5f488c9e2d6fb4d81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Lebruman?= Date: Fri, 17 Apr 2020 14:39:33 +0200 Subject: [PATCH 09/12] tag version 2.0.1 --- pytictri/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pytictri/__init__.py b/pytictri/__init__.py index 12311e4..67f6d89 100644 --- a/pytictri/__init__.py +++ b/pytictri/__init__.py @@ -1,3 +1,3 @@ from .teleinfo import * -__version__ = "2.0.0" +__version__ = "2.0.1" From b05c7f9d7b5ade03d1343cc61fb8315efc38504e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Lebruman?= Date: Sat, 18 Apr 2020 23:00:37 +0200 Subject: [PATCH 10/12] Correct units for IIMAXxin scan function, add serial ports with ID --- pytictri/__init__.py | 2 +- pytictri/scanner.py | 2 +- pytictri/teleinfo.py | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pytictri/__init__.py b/pytictri/__init__.py index 67f6d89..0843874 100644 --- a/pytictri/__init__.py +++ b/pytictri/__init__.py @@ -1,3 +1,3 @@ from .teleinfo import * -__version__ = "2.0.1" +__version__ = "2.0.2" diff --git a/pytictri/scanner.py b/pytictri/scanner.py index 7d75bab..89cb5f1 100644 --- a/pytictri/scanner.py +++ b/pytictri/scanner.py @@ -21,4 +21,4 @@ def find_serial(self, name): def scan(self): """Check if a serial port is available.""" - return list_ports.comports() \ No newline at end of file + return list_ports.comports(True) diff --git a/pytictri/teleinfo.py b/pytictri/teleinfo.py index b1e66c4..3c150e7 100644 --- a/pytictri/teleinfo.py +++ b/pytictri/teleinfo.py @@ -23,10 +23,10 @@ class GroupInfo(enum.Enum): HCHC = (HCHC_DESCRIPTION, UNIT_WH) HCHP = (HCHP_DESCRIPTION, UNIT_WH) PTEC = (PTEC_DESCRIPTION) - IINST = (IINST_DESCRIPTION, UNIT_WH) - IINST1 = (IINST1_DESCRIPTION, UNIT_WH) - IINST2 = (IINST2_DESCRIPTION, UNIT_WH) - IINST3 = (IINST3_DESCRIPTION, UNIT_WH) + IINST = (IINST_DESCRIPTION, UNIT_A) + IINST1 = (IINST1_DESCRIPTION, UNIT_A) + IINST2 = (IINST2_DESCRIPTION, UNIT_A) + IINST3 = (IINST3_DESCRIPTION, UNIT_A) IMAX = (IMAX_DESCRIPTION, UNIT_A) IMAX1 = (IMAX1_DESCRIPTION, UNIT_A) IMAX2 = (IMAX2_DESCRIPTION, UNIT_A) From 9d84a35a1a67b5914e8c9907d85863462041cbbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Lebruman?= Date: Sat, 18 Apr 2020 23:12:15 +0200 Subject: [PATCH 11/12] Correct comports argument call --- pytictri/__init__.py | 2 +- pytictri/scanner.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pytictri/__init__.py b/pytictri/__init__.py index 0843874..8868d34 100644 --- a/pytictri/__init__.py +++ b/pytictri/__init__.py @@ -1,3 +1,3 @@ from .teleinfo import * -__version__ = "2.0.2" +__version__ = "2.0.3" diff --git a/pytictri/scanner.py b/pytictri/scanner.py index 89cb5f1..065633e 100644 --- a/pytictri/scanner.py +++ b/pytictri/scanner.py @@ -21,4 +21,4 @@ def find_serial(self, name): def scan(self): """Check if a serial port is available.""" - return list_ports.comports(True) + return list_ports.comports(include_links = True) From 94f6cee5fea10195e6b43fae54e388f9e462945b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Lebruman?= Date: Sat, 18 Apr 2020 23:20:26 +0200 Subject: [PATCH 12/12] debug --- pytictri/__init__.py | 2 +- pytictri/scanner.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pytictri/__init__.py b/pytictri/__init__.py index 8868d34..dedff67 100644 --- a/pytictri/__init__.py +++ b/pytictri/__init__.py @@ -1,3 +1,3 @@ from .teleinfo import * -__version__ = "2.0.3" +__version__ = "2.0.4" diff --git a/pytictri/scanner.py b/pytictri/scanner.py index 065633e..b5ab82a 100644 --- a/pytictri/scanner.py +++ b/pytictri/scanner.py @@ -21,4 +21,4 @@ def find_serial(self, name): def scan(self): """Check if a serial port is available.""" - return list_ports.comports(include_links = True) + return list_ports.comports()