Référence API
La communication avec TIC2WebSocket repose sur des messages JSON échangés via WebSocket.
GetAvailableTICs
Cette requête permet de récupérer la liste des flux TIC disponibles.
Requête
{
"type": "REQUEST",
"name": "GetAvailableTICs"
}
Réponse
La réponse contient une liste de structures avec les informations TIC :
- numéro de série du compteur Linky ;
- nom du port série ;
- identifiant du port USB physique.
{
"type": "RESPONSE",
"name": "GetAvailableTICs",
"dateTime": "10/06/2021 14:01:00",
"errorCode": 0,
"data": [
{
"serialNumber": "021762010203",
"portName": "/dev/ttyUSB0",
"portId": "1-1"
},
{
"serialNumber": "041775010507",
"portName": "/dev/ttyUSB2",
"portId": "1-2"
}
]
}
GetModemsInfo
Cette requête permet de récupérer la liste des informations des modems TIC connectés.
La reconnaissance des modems se fait à partir de la paire USB vendorId + productId.
Types de modems pris en charge :
| Type de modem | Vendor ID (hex) | Product ID (hex) | Vendor ID (dec) | Product ID (dec) |
|---|---|---|---|---|
MICHAUD |
0x0403 |
0x6001 |
1027 |
24577 |
TELEINFO |
0x0403 |
0x6015 |
1027 |
24597 |
Requête
{
"type": "REQUEST",
"name": "GetModemsInfo"
}
Réponse
La réponse contient une liste de structures avec les informations des modems :
- nom du port série ;
- type de modem, si disponible (uniquement les modem USB décrit ci-dessus);
- identifiant produit (USB PID), si disponible ;
- identifiant vendeur (USB VID), si disponible ;
- nom du produit, si disponible ;
- nom du fabricant, si disponible ;
- numéro de série du modem, si disponible ;
- identifiant physique du port série, si disponible.
{
"type": "RESPONSE",
"name": "GetModemsInfo",
"dateTime": "16/06/2021 15:53:32",
"errorCode": 0,
"data": [
{
"portName": "COM3",
"modemType": "MICHAUD",
"productId": 24597,
"vendorId": 1027,
"productName": null,
"manufacturerName": "FTDI",
"serialNumber": "DA2VYTKGA",
"portId": null
}
]
}
ReadTIC
Cette requête permet de lire une trame TIC.
Requête
{
"type": "REQUEST",
"name": "ReadTIC",
"data": {
"serialNumber": "010203040506"
}
}
Le champ data doit contenir un identifiant TIC défini dans le format d'identifiant TIC.
Réponse
{
"type": "RESPONSE",
"name": "ReadTIC",
"dateTime": "10/06/2021 14:01:00",
"errorCode": 0,
"data": {
"mode": "STANDARD",
"captureDateTime": "10/06/2021 14:01:00",
"ticIdentifier": {
"serialNumber": "021762010203",
"portName": "/dev/ttyUSB0",
"portId": "1-1"
},
"content": {
"ADSC": "010203040506",
"URMS1": "230"
}
}
}
SubscribeTIC
Cette requête permet de s'abonner à un flux TIC. Une fois abonné, le client reçoit des évènements à chaque nouvelle trame TIC ou erreur liée au flux TIC.
Requête
Plusieurs formats sont possibles.
Abonnement à un flux TIC :
{
"type": "REQUEST",
"name": "SubscribeTIC",
"data": {
"serialNumber": "010203040506"
}
}
Abonnement à plusieurs flux TIC :
{
"type": "REQUEST",
"name": "SubscribeTIC",
"data": [
{
"serialNumber": "010203040506"
},
{
"portId": "1-1"
}
]
}
Abonnement à tous les flux TIC :
{
"type": "REQUEST",
"name": "SubscribeTIC"
}
Le champ data doit contenir un identifiant TIC (ou une liste d'identifiants TIC) défini dans le format d'identifiant TIC.
Réponse
Réponse en cas de succès :
{
"type": "RESPONSE",
"name": "SubscribeTIC",
"dateTime": "10/06/2021 14:01:00",
"errorCode": 0
}
Si le flux TIC demandé n'existe pas :
{
"type": "RESPONSE",
"name": "SubscribeTIC",
"dateTime": "10/06/2021 14:01:00",
"errorCode": -7,
"errorMessage": "The given TIC identifier doesn't match with current TIC stream"
}
Évènement OnTICData
Cet évènement est généré à chaque nouvelle trame TIC et envoyé à tous les clients abonnés à cette TIC.
{
"type": "EVENT",
"dateTime": "10/06/2021 14:01:00",
"name": "OnTICData",
"data": {
"mode": "STANDARD",
"captureDateTime": "10/06/2021 14:01:00",
"ticIdentifier": {
"serialNumber": "021762010203",
"portName": "/dev/ttyUSB0",
"portId": "1-1"
},
"content": {
"ADSC": "010203040506",
"URMS1": "230"
}
}
}
Évènement OnError
Cet évènement est généré lorsqu'une erreur survient sur le flux TIC et envoyé à tous les clients abonnés à cette TIC.
{
"type": "EVENT",
"dateTime": "10/06/2021 14:01:00",
"name": "OnError",
"data": {
"errorCode": -5,
"errorMessage": "TIC frame reading timeout",
"ticIdentifier": {
"serialNumber": "021762010203",
"portName": "/dev/ttyUSB0",
"portId": "1-1"
}
}
}
UnsubscribeTIC
Cette requête permet de se désabonner d'un flux TIC.
Requête
Plusieurs formats sont possibles.
Désabonnement d'un flux TIC :
{
"type": "REQUEST",
"name": "UnsubscribeTIC",
"data": {
"serialNumber": "010203040506"
}
}
Désabonnement de plusieurs flux TIC :
{
"type": "REQUEST",
"name": "UnsubscribeTIC",
"data": [
{
"serialNumber": "010203040506"
},
{
"portId": "1-1"
}
]
}
Désabonnement de tous les flux TIC :
{
"type": "REQUEST",
"name": "UnsubscribeTIC"
}
Dans le cas d'un désabonnement ciblé, le champ data doit contenir un identifiant TIC (ou une liste d'identifiants TIC) défini dans le format d'identifiant TIC.
Format d'identifiant TIC
Un identifiant TIC est un objet contenant un des champs suivants :
serialNumber: numéro de série du compteur Linky ;portId: identifiant physique du port série sur lequel le modem est connecté ;portName: nom du port série sur lequel le modem est connecté ;
Selon la requête, vous pouvez fournir un identifiant unique ou une liste d'identifiants.
Réponse
{
"type": "RESPONSE",
"name": "UnsubscribeTIC",
"dateTime": "16/06/2021 15:53:32",
"errorCode": 0
}