Skip to content

Nour3000/smart-meter-interface

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smart Meter Interface

Outil de communication client-compteur intelligent — RS232 / TCP/IP · CRC-16 Modbus

Communication tool for smart electricity meters — RS232 / TCP/IP, CRC-16 Modbus integrity, real-time supervision.


Python Tkinter TCP/IP RS232 CRC-16 Robot Framework


Industrial IoT · Serial Communication · CRC Integrity · Tkinter GUI · Smart Metering · Test Automation


Interface principale — trames reçues avec validation CRC-16 Modbus
Interface connectée en TCP/IP — trames du compteur avec validation CRC-16 Modbus (vert = valide, rouge = corrompue).

En bref / At a glance

Stage d'un mois chez SAGEMCOM Tunisie (Ben Arous, juillet 2025), dans le département test et métrologie. SAGEMCOM fabrique des compteurs électriques intelligents mono et triphasés certifiés MID/IEC/DLMS-COSEM, déployés en Europe, Afrique et Moyen-Orient.

Le stage avait deux dimensions. La première : observer la ligne de production — de la zone CMS jusqu'aux tests de calibration métrologique — pour comprendre comment un compteur passe de circuit imprimé nu à produit certifié. La deuxième : développer un outil logiciel concret, utilisé par les ingénieurs de test pour dialoguer avec ces compteurs.

One month watching how smart meters are built and certified on an industrial line, then building the software that connects them to client systems.


Ce que j'ai vu sur la ligne / Production line

Zone CMS

La zone CMS, c'est là où les cartes électroniques prennent forme. Sérigraphie de la pâte à braser, placement automatique des composants par des machines haute cadence, passage au four de refusion, soudure à la vague pour les composants traversants, puis contrôle ICT — test électrique automatisé qui détecte les défauts de soudure, courts-circuits et composants mal positionnés avant que la carte n'aille plus loin.

Ce qui m'a marqué : la précision du processus et la vitesse à laquelle les cartes passent d'un poste à l'autre. Chaque étape a ses propres critères de rejet, et rien ne passe en zone intégration sans avoir été validé.

Zone intégration et test

C'est là que le compteur devient un produit. Les cartes assemblées passent par le test vision (LCD et conformité visuelle), le test diélectrique Hipot (haute tension pour vérifier l'isolation électrique), le test fonctionnel (ports de communication, relais, impulsions), puis la calibration métrologique — le test clé, où la précision de mesure est validée sous charge calibrée selon la directive MID 2014/32/EU. Ensuite le poste laser grave le numéro de série, et des dispositifs poka-yoké bloquent toute erreur humaine jusqu'au test final.


L'outil / The tool

Pourquoi / Why

Sur le banc, les ingénieurs utilisaient plusieurs outils séparés pour communiquer avec les compteurs : un pour le port série, un autre pour le réseau. Passer de l'un à l'autre ralentissait les validations et la vérification des CRC se faisait manuellement. L'objectif était simple : un seul outil, les deux transports, la vérification automatique.

The goal was simple: one tool, two transports, automatic integrity check.

Ce que ça fait / What it does

Connexion. RS232 via pyserial (détection automatique des ports COM, baudrate configurable) ou TCP/IP (socket, IP et port configurables). Les deux modes partagent la même logique de réception — les données arrivent dans un thread de fond, passent dans une queue, et l'interface se met à jour toutes les 500 ms sans jamais bloquer.

Intégrité. Chaque trame reçue est vérifiée par CRC-16 Modbus. Si le CRC est bon, la ligne s'affiche en vert. Si le CRC est mauvais, la ligne s'affiche en rouge — et la session continue. Une trame corrompue est un événement à enregistrer, pas une raison de planter. À l'envoi, le CRC est calculé et ajouté automatiquement.

Interface. Tkinter, sobre. Sélecteur de mode, panneaux de paramètres, log coloré des trames, section d'envoi par fichier batch ou saisie manuelle, barre de progression, zone de paramètres en temps réel.


CRC-16 Modbus

def compute_crc16(data: bytes) -> int:
    crc = 0x0000
    for b in data:
        crc ^= b
        for _ in range(8):
            if crc & 1:
                crc = (crc >> 1) ^ 0xA001
            else:
                crc >>= 1
    return crc

Polynôme standard Modbus (0xA001) — utilisé dans les protocoles de communication des compteurs industriels pour garantir l'intégrité des échanges.


Format de trame / Frame format

V1,I1,V2,I2,V3,I3,kWh,kVAR,freq,index,lot,PF,THD,SN,timestamp,ref,CRC
230.1,5.123,229.8,5.100,230.0,5.110,3500,200,3550,12345,678,50.0,0.98,SGM123456,43298,12345

Le dernier champ est le CRC-16 Modbus calculé sur tous les champs précédents en UTF-8.


Tests / Testing

Tests unitaires et d'intégration réalisés avec Robot Framework — connexion, logique CRC, parsing, scénarios d'erreur (trame mal formée, coupure), transitions d'état de l'interface. Tests également menés sur des compteurs physiques sur la ligne de production.

Les suites de tests et leurs résultats sont confidentiels et ne sont pas inclus dans ce dépôt.

Unit and integration tests with Robot Framework. Real hardware tests on physical meters on the SAGEMCOM production line. Test suites are confidential.


Démarrage / Getting started

pip install -r requirements.txt

# Lancer le simulateur local
python server_sim.py

# Lancer l'interface
python client.py

Mode TCP/IP127.0.0.1:15000Connecter. Mode Série → sélectionner le port COM → régler le baudrate → Connecter.

Les commandes peuvent être envoyées depuis un fichier batch (commands.txt) ou saisies manuellement. Le CRC est ajouté automatiquement.


Structure

smart-meter-interface/
├── client.py          # Application principale
├── server_sim.py      # Simulateur TCP local
├── commands.txt       # Exemple de batch
├── requirements.txt
├── docs/images/
└── README.md

Confidentialité / Confidentiality

Ce dépôt contient uniquement l'interface de communication. Les outils internes SAGEMCOM, le firmware des compteurs, les spécifications propriétaires des trames, les données de calibration et les suites de tests ne sont pas inclus.

This repository contains only the standalone communication interface. Internal tooling, firmware, proprietary specifications, calibration data, and test suites are not included.


Stage d'initiation — SAGEMCOM Tunisie · ENSIT Génie Électrique · Juillet 2025

About

Python/Tkinter communication interface for smart electricity meters — RS232 serial and TCP/IP dual-mode, CRC-16 Modbus frame integrity, real-time supervision. Developed at SAGEMCOM Tunisie

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages