Merci beaucoup, cette réponse est très parlante. 
Elle confirme que le hub est bien détecté et que les 5 caméras sont vues correctement, avec leur UID et leur état de veille (« camera porche » et « Portail » dormaient au moment du test, ce qui est normal sur les modèles à batterie).
Tu as mentionné que Home Assistant récupérait bien tout : je suis allé voir comment ils s’y prennent, et ça m’a donné la réponse. Ton firmware ne renvoie pas le champ typeInfo dans la liste des canaux, mais il existe une autre commande, GetChnTypeInfo, qui donne le modèle canal par canal. C’est celle que j’aurais dû utiliser dès le départ.
À lancer dans cmd.exe, pas dans PowerShell (curl y est un alias qui ne comprend pas -k). Le token expire au bout d’une heure : si tu obtiens please login first (code -6), refais l’étape 1.
Étape 1 — récupérer un token (remplace le mot de passe) :
curl -k -s -X POST "https://192.168.1.69/cgi-bin/api.cgi?cmd=Login" -H "Content-Type: application/json" -d "[{\"cmd\":\"Login\",\"action\":0,\"param\":{\"User\":{\"userName\":\"admin\",\"password\":\"TON_MDP\"}}}]"
Repère « name » dans le bloc Token : c’est ton token.
Étape 2 — le type de chaque caméra (remplace LE_TOKEN) :
curl -k -s -X POST "https://192.168.1.69/cgi-bin/api.cgi?cmd=GetChnTypeInfo&token=LE_TOKEN" -H "Content-Type: application/json" -d "[{\"cmd\":\"GetChnTypeInfo\",\"action\":0,\"param\":{\"channel\":0}},{\"cmd\":\"GetChnTypeInfo\",\"action\":0,\"param\":{\"channel\":1}},{\"cmd\":\"GetChnTypeInfo\",\"action\":0,\"param\":{\"channel\":2}},{\"cmd\":\"GetChnTypeInfo\",\"action\":0,\"param\":{\"channel\":3}},{\"cmd\":\"GetChnTypeInfo\",\"action\":0,\"param\":{\"channel\":4}}]"
Elle interroge le hub et non les caméras : celles qui dorment ne seront pas réveillées. C’est le champ type de chaque bloc ChnTypeInfo qui m’intéresse.
Ça devrait me suffire pour identifier automatiquement ta sonnette et lui ajouter la capacité « bouton de sonnette ». Merci encore, ta remarque sur Home Assistant m’a mis sur la bonne piste.