{"id":16238343,"url":"https://github.com/jczic/iotsocket-concentrator","last_synced_at":"2025-04-08T08:50:45.619Z","repository":{"id":121870772,"uuid":"164189898","full_name":"jczic/IoTSocket-Concentrator","owner":"jczic","description":"IoTSocket Concentrator - Router for Web API and thousands of IoT connections","archived":false,"fork":false,"pushed_at":"2019-11-16T05:28:59.000Z","size":3661,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-14T05:44:33.812Z","etag":null,"topics":["asynchronous","concentrator","hc2","http","https","iot","iot-platform","iot-socket","iotsocket","iotsocket-concentrator","protocol","router","server","sessions","tcp","telemetrie","telemetry","tls","udp"],"latest_commit_sha":null,"homepage":"https://github.com/jczic/IoTSocket-Concentrator/blob/master/Protocole%20IoTSocket%20(v1.01).pdf","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jczic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-05T06:47:36.000Z","updated_at":"2022-04-24T01:36:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"854c9a4d-62f7-4f87-a628-7eee5c7abc3e","html_url":"https://github.com/jczic/IoTSocket-Concentrator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jczic%2FIoTSocket-Concentrator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jczic%2FIoTSocket-Concentrator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jczic%2FIoTSocket-Concentrator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jczic%2FIoTSocket-Concentrator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jczic","download_url":"https://codeload.github.com/jczic/IoTSocket-Concentrator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247810020,"owners_count":20999814,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asynchronous","concentrator","hc2","http","https","iot","iot-platform","iot-socket","iotsocket","iotsocket-concentrator","protocol","router","server","sessions","tcp","telemetrie","telemetry","tls","udp"],"created_at":"2024-10-10T13:39:56.755Z","updated_at":"2025-04-08T08:50:45.588Z","avatar_url":"https://github.com/jczic.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![IoTSocket Concentrator](img/iotsocket_concentrator.png \"IoTSocket Concentrator\")\n## Concentrateur/Routeur/API pour les objets connectés.\n\n- Implémente le protocole [IoTSocket Protocol (v1.01)](https://github.com/jczic/IoTSocket-Concentrator/blob/master/Protocole%20IoTSocket%20(v1.01).pdf).\n- Utilise la couche sockets asynchrone I/O [XAsyncSockets](https://github.com/jczic/XAsyncSockets).\n- Permet des échanges en TCP, UDP et HTTP(S).\n- Supporte le dialogue avec des APIs Web de type REST.\n- Assure le maintient de milliers de connexions persistantes.\n- Offre une télémétrie \"hors session\" par obtention de jetons temporaires.\n- Sécurise les communications par chiffrement TLS et clés/jetons.\n- Permet de traiter les sessions d'objets au sein de groupes dédiés.\n- Finement paramétrable via fichier de configuration JSON.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"img/concentrator.png\"\u003e\n\u003c/p\u003e\n\n-------------------------------------------------------------------------------------------\n\n### Le routage, cœur du concentrateur\n- Traite et applique toutes les valeurs spécifiques définies par le fichier de configuration.\n- Orchestre les échanges, requêtes et réponses, depuis et vers les différents éléments.\n- Procède au traitement asynchrone et parallèle des flux de données entrants et sortants.\n- Maintient et applique les droits d’accès des éléments (sessions, clé d’API Web).\n- Garde en mémoire les données à transmettre durant certaines déconnexions.\n- Gère le pool de l’ensemble des connexions persistantes, serveurs et écouteurs.\n- Contrôle le système de suivi entre les requêtes Web HTTP(S) routées et leur réponse.\n- Permet des échanges formatés et typés en binaire, ASCII, UTF-8 et JSON.\n\n### Le serveur TCP\n- Est le point de terminaison des sessions entrantes pour le central et les objets.\n- Sécurise l’authentification des sessions par négociation de clé via challenge.\n- Utilise le chiffrage des échanges avec certificat par application d’une couche TLS (SSL).\n- Assure la persistance des connexions ainsi que l’expiration des opérations trop longues.\n- Maintient les données de session à transmettre durant certains types de déconnexions.\n\n### Le serveur UDP\n- Est le point de terminaison de l’écouteur des datagrammes contenant la télémétrie.\n- Sécurise les remontées de données par système de jetons uniques et aléatoires.\n\n### Le serveur HTTP(S)\n- Est le point de terminaison Web pour les requêtes provenant du central vers les objets.\n- Utilise le chiffrage des échanges avec certificat par application d’une couche TLS (SSL).\n- Assure le maintient des requêtes jusqu’au retour de réponse ou temps d’attente expiré.\n- Fonctionne tel qu’une API Web JSON (type REST) avec authentification par clé d’API.\n\n### Le client HTTP(S)\n- Redirige les requêtes d’objets vers le central au moyen de WebHooks HTTP(S).\n- Contrôle le système de suivi entre les requêtes et leur réponse auprès des objets.\n- Fonctionne tel qu’un retour d’API Web JSON avec authentification par clé d’API.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"img/archi_diagram.png\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"img/conn_diagram.png\"\u003e\n\u003c/p\u003e\n\n\n### By JC`zic for [HC²](https://www.hc2.fr) ;')\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjczic%2Fiotsocket-concentrator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjczic%2Fiotsocket-concentrator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjczic%2Fiotsocket-concentrator/lists"}