1. Home
  2. Guides de l'utilisateur
  3. Intégration :
  4. [3D Pro2 2025] FootfallCam Compteur de Personnes Guide d'intégration Websocket

[3D Pro2 2025] FootfallCam Compteur de Personnes Guide d'intégration Websocket

Ce guide vous aide à intégrer notre compteur de personnes via WebSocket. Veuillez noter que ce guide est spécifique au 3D Pro2 2025.

Configuration de la transmission de données via une connexion Websocket

1. Sur le panneau de configuration de l'appareil, accédez à l'onglet « Configuration », puis sous « Transfert de données », cliquez sur le bouton « Nouveau transfert de données ». Voir la figure 1.1.

Figure 1.1 : Ajouter une nouvelle transmission de données

2. Configurez les paramètres d'envoi de données, choisissez « WebSocket » comme mode d'exportation et sélectionnez la granularité temporelle pour le niveau d'agrégation des données (par exemple, toutes les minutes, toutes les 15 minutes, toutes les heures, par événement) et la fréquence d'envoi des données (par exemple, toutes les 15 minutes, toutes les heures, tous les jours). Assurez-vous que le champ « Actif » est coché afin que l'envoi de données soit effectif une fois la configuration terminée. Voir la figure 2.1. (Remarque : pour une granularité temporelle « par événement », les données seront poussées chaque fois qu'un nombre d'entrées/sorties est enregistré)


Figure 2.1 : Configurer la transmission de données WebSocket

3. Renseignez les paramètres de connexion, notamment l'URL du serveur WebSocket et le jeton d'authentification. Utilisez le bouton « Tester la connexion » pour vérifier si le serveur WebSocket est accessible. L'appareil effectuera un ping vers le serveur WebSocket et déterminera l'état de la connexion en fonction de la réponse du serveur. (Remarque : nous supposons que le serveur WebSocket est conforme à la RFC, c'est-à-dire qu'il répondra à un ping par un pong)Enregistrez les paramètres si la connexion fonctionne correctement.

Format de charge utile des données de fréquentation

Granularité temporelle : par événement

 {
  "UUID": "658a2443-72ba-422c-85dc-e4e10baa1288", #Unique for each message
  "DeviceSerial": "ecd5cc57d23c5c9f",
  "RoiId": 1, #Useful when there are multiple counting lines defined
  "MetricId": 1, #1 for IN, 2 for OUT
  "PeopleTypeId": 1,
  "CombineObjectTypeId": 11, #11 for visitor, 21 for staff
  "PeopleId": 1,
  "EventEndLocalTime": "2025-07-23 18:36:31",
  "EventEndTime": 1753266991,
  "EventEndUTCTime": "2025-07-23 10:36:31",
  "EventStartLocalTime": "2025-07-23 18:36:21",
  "EventStartTime": 1753266981,
  "EventStartUTCTime": "2025-07-23 10:36:21"
 }

Granularité temporelle : toutes les minutes, fréquence : toutes les 15 minutes

{
  "uuid": "658a2443-72ba-422c-85dc-e4e10baa1288", #Unique for each message
  "device_serial": "ecd5cc57d23c5c9f",
  "date_requested": "2025-07-23 10:15:00", #Local datetime
  "offset": "GMT +1",
  "output": [{
		"datetime": "2025-07-23 10:00:00", #Local datetime, forward-looking 
		"invalue": "4", #Aggregated IN count
		"outvalue": "5", #Aggregated OUT count
		"timestamp": 1753236000
	    },	
	    {	
		  ...
	    },
	    {
	      "datetime": "2025-07-23 10:14:00",
	      "invalue": "6",	
	      "outvalue": "3",
	      "timestamp": 1753236840
	    }]
} 

Granularité temporelle : toutes les 15 minutes, fréquence : horaire

{
  "uuid": "658a2443-72ba-422c-85dc-e4e10baa1288", #Unique for each message
  "device_serial": "ecd5cc57d23c5c9f",
  "date_requested": "2025-07-23 11:00:00", #Local datetime
  "offset": "GMT +1",
  "output": [{
 	"datetime": "2025-07-23 10:00:00", #Local datetime, forward-looking
 	"invalue": "23", #Aggregated IN count
 	"outvalue": "15", #Aggregated OUT count
 	"timestamp": 1753236000
 	},
 	{
 	...
 	},
 	{
 	"datetime": "2025-07-23 10:45:00",
 	"invalue": "16",
 	"outvalue": "31",
 	"timestamp": 1753238700
 	}]
 }

Granularité temporelle : horaire, fréquence : quotidienne

{
  "uuid": "658a2443-72ba-422c-85dc-e4e10baa1288", #Unique for each message
  "device_serial": "ecd5cc57d23c5c9f",
  "date_requested": "2025-07-23 19:00:00", #Local datetime
  "offset": "GMT +1",
  "output": [{
 	"datetime": "2025-07-23 10:00:00", #Local datetime, forward-looking
 	"invalue": "203", #Aggregated IN count
 	"outvalue": "112", #Aggregated OUT count
 	"timestamp": 1753236000
 	},
 	{
 	...
 	},
 	{
 	"datetime": "2025-07-23 18:00:00",
 	"invalue": "45",
 	"outvalue": "345",
 	"timestamp": 1753238700
 	}]
 }

Comportements des clients WebSocket

  1. Port standard attendu 443 pour WSS et port 80 pour WS
  2. Détectez et gérez les connexions obsolètes, prenez en charge la reconnexion automatique avec backoff.
  3. Inclure des messages de maintien de connexion toutes les 30 secondes
  4. Attendez un message ACK pour que le mécanisme de nouvelle tentative fonctionne.
  5. Format JSON pour les messages push

Exigences du serveur WebSocket

  1. Assistance Autorisation : Porteur entête

  2. Conforme à la RFC, c'est-à-dire répondre aux trames Ping (RFC 6455)

  3. Envoyer un message ACK à la réception des données, comme :
    { "status": "ack", "uuid": "74fd6a2e-..." }

Mis à jour en juillet 28, 2025