01/11/2026, 17:37:44 (Modification du message : 01/11/2026, 17:39:42 par richardpub.)
Pour ma part, j'ai essayé Claude Code dans sa version desktop pour programmer des appareils en KNX avec ETS. J'ai testé au départ simplement en donnant à Claude Code mon fichier KNXprog et il m'a demandé le mot de passe pour l'ouvrir, ce que j'ai fait au départ. Par contre, très vite, je suis revenu dans mon code et j'ai modifié dans ETS mon mot de passe d'accès à KNXprog. Ensuite, il m'a appris à passer à créer un produit en Python dans lequel je déverse le KNXproj. Je peux ensuite donner le mot de passe dans ce petit programme et il génère un KNXprog non protégé. Ensuite, on peut donner ce KNXprog à Claude Code et cela permet à Claude Code de voir éventuellement toutes les erreurs de programmation, les défauts, les doublons, les choses qui manquent. Il peut aussi aider à programmer. Entre autres, j'ai fait des variateurs de LED blanche, avec des couleurs plus ou moins chaudes. Et franchement, c'est hyper puissant et en final, on lui fait corriger, voir si on n'a pas fait des erreurs dans notre programmation, il nous valide tout.
Il a repris pour l'intehration du variateur Zennio, les meme structure de denommination de GA ainsi que la façon dont je rejoute des GA, puis il m'a fait le csv pour importer des GA dans ETS. Ensuite il m'a guidé sur le parametrage de mon zennio, puis il m'a donné les emplacement ou je devais associer les GA deja importé. En final il m'a aidé a verifier que je n'avais pas d'erreurs.
Le gain de temps est considerable.
Un autre truc qui serait super, c'est de partager ta conversation avec Claude, tu peux cliquer sur le bouton Partager dans l'application Claude Desktop. Sur les application Web on a aussi la possibilité de partager.
Sinon voici un prompt a essayer :
Citation :« Peux-tu me rédiger un compte rendu complet de notre conversation, structuré pour être partagé avec des tiers ? Il doit inclure :
1. L'objectif initial : Ce que je cherchais à résoudre ou à concevoir.
2. Le parcours et le raisonnement : Les différentes étapes de notre réflexion, les hypothèses testées, et la logique qui nous a menés aux conclusions.
3. La solution finale ou les conclusions : Les choix techniques/méthodologiques arrêtés.
4. Les prochaines étapes (le cas échéant). »
Ca peut permettre a d'autre personne débutant dans le domaine de l'IA de voir la démarche pour s'y mettre.
Et puis a plusieurs on pourrait même imaginer améliorer les choses.
KNX Partner Base / Avancé
Ma boite de MP est pleine, merci de créer un post si vous avez une question, cela profitera a tout le monde.
Une autre version, pour être sur qu'il n'y ait aucun mot de passe partagé.
Pour obtenir un récapitulatif clair, structuré et sécurisé de votre échange, vous pouvez envoyer directement la consigne suivante à l'IA avec laquelle vous avez travaillé :
Consigne à copier-coller dans votre autre conversation :
Citation :Je souhaiterais un récapitulatif complet de notre échange pour le partager avec mon équipe.
Peux-tu me rédiger un document clair comprenant :
1.L'objectif du programme et le besoin initial.
2.Le raisonnement et la démarche technique étape par étape (choix d'architecture, logiques d'algorithme, contraintes prises en compte).
3.Le code final propre et commenté.
ATTENTION (Sécurité) : Veille à supprimer ou anonymiser formellement tous les mots de passe, clés d'API, identifiants ou données sensibles partagés au cours de la conversation. Remplace-les systématiquement par des espaces réservés génériques (ex: VOTRE_MOT_DE_PASSE).
Conseils complémentaires pour le partage
Relecture systématique : Même si l'IA masque les secrets, effectuez un Rechercher (Ctrl+F) sur le texte final généré pour vérifier qu'aucun mot de passe ou jeton d'accès n'a été oublié avant d'envoyer le document.
KNX Partner Base / Avancé
Ma boite de MP est pleine, merci de créer un post si vous avez une question, cela profitera a tout le monde.
02/11/2026, 17:51:30 (Modification du message : 02/11/2026, 17:54:25 par richardpub.)
J'ai demandé a claude d'anonymiser et du coup il me genere un pdf car il n'etait pas sur de ce qui ressortirait avec un partage simple .
depuis une semaine l'ergonomie de Claude Code desktop a changé, et comme j'ai énormément d'infos confidentiel c'est surment plus sûr:
# Paramètres de dérivation utilisés par ETS pour le mot de passe du zip
ETS_SALT = b"21.project.ets.knx.org"
ETS_ITERATIONS = 65536
def derive_zip_password(password: str) -> bytes:
"""Mot de passe ETS -> mot de passe réel du zip (PBKDF2-SHA256 puis base64)."""
key = hashlib.pbkdf2_hmac(
"sha256", password.encode("utf-16-le"), ETS_SALT, ETS_ITERATIONS, dklen=32
)
return base64.b64encode(key)
def candidate_passwords(password: str):
"""Mots de passe à essayer : dérivé ETS en premier, brut en secours."""
yield derive_zip_password(password)
yield password.encode("utf-8")
def _is_encrypted(zf: pyzipper.AESZipFile) -> bool:
return any(info.flag_bits & 0x1 for info in zf.infolist())
def _open_zip(data, password: str | None):
"""Ouvre un zip (chemin ou bytes) ; teste les mots de passe candidats si chiffré."""
src = io.BytesIO(data) if isinstance(data, (bytes, bytearray)) else data
zf = pyzipper.AESZipFile(src)
if not _is_encrypted(zf):
return zf
if password is None:
raise ValueError("Archive chiffrée mais aucun mot de passe fourni.")
# on teste sur le premier fichier non-répertoire
probe = next(i for i in zf.infolist() if not i.is_dir())
for pwd in candidate_passwords(password):
zf.setpassword(pwd)
try:
zf.read(probe)
return zf
except Exception:
continue
raise ValueError("Mot de passe incorrect.")
with zipfile.ZipFile(dst, "w", compression=zipfile.ZIP_DEFLATED) as out:
for info in outer.infolist():
if info.is_dir():
continue
data = outer.read(info)
name = info.filename
# Archive interne de projet : P-XXXX.zip -> dossier P-XXXX/
m = re.fullmatch(r"(?:.*/)?(P-[0-9A-Fa-f]+)\.zip", name)
if m:
folder = m.group(1)
inner = _open_zip(data, password)
nb_inner += 1
for iinfo in inner.infolist():
if iinfo.is_dir():
continue
iname = iinfo.filename
# évite un doublon P-XXXX/P-XXXX/... si déjà préfixé
if iname.startswith(folder + "/"):
iname = iname[len(folder) + 1:]
out.writestr(f"{folder}/{iname}", inner.read(iinfo))
continue
out.writestr(name, data)
if nb_inner == 0:
print("Note : aucune archive P-XXXX.zip trouvée, le fichier était peut-être "
"déjà en clair (contenu simplement recopié).")
else:
print(f"OK : {nb_inner} projet(s) déchiffré(s) -> {dst}")
def main() -> None:
ap = argparse.ArgumentParser(description="Retire le mot de passe d'un .knxproj")
ap.add_argument("fichier", type=Path, help="fichier .knxproj protégé")
ap.add_argument("-p", "--password", help="mot de passe du projet")
ap.add_argument("-o", "--output", type=Path,
help="fichier de sortie (défaut : <nom>_unprotected.knxproj)")
args = ap.parse_args()
if not args.fichier.is_file():
sys.exit(f"Fichier introuvable : {args.fichier}")
dst = args.output or args.fichier.with_name(args.fichier.stem + "_unprotected.knxproj")
if dst.resolve() == args.fichier.resolve():
sys.exit("Le fichier de sortie doit être différent du fichier d'entrée.")
password = args.password
if password is None:
password = getpass.getpass("Mot de passe du projet (laisser vide si aucun) : ") or None
(05/11/2026, 07:15:28)Scorpio5 a écrit : Hello ton script permet de virer un mdp, sans le connaître ?
Sinon dans ets, il me semble que supprimer un mots de passe est simple, suffit de modifié, et de pas en mettre un nouveau..
Bon si y a du knx secure, je sais pas ce qui ce passe...
Si tu regardes le début du script il y a la méthode d'utilisation, tu spécifies le MDP en ligne de commande ou si tu ne le fais pas en ligne de commande tu le saisis ensuite après
ETS ne permet pas normalement de retirer un MDP sur un projet utilisant du secure (enfin j'avais déjà essayé je supose que c'est toujours le cas)
Ok donc c'est pour le secure...
Mais donc sur un projet avec du secure, supprimer le mdp, risque de casser toute la partie secure, tu pourras plus les programmer...
.
Y a aucun intérêt actuel a utiliser du secure...
Du ip secure oui, mais pas du knx secure,
Perte de mdp, tu jette le matériel...
Déjà qu'il y a des souci de transmission de projet avec les année, qu'on peut sauver grace a une reconstruction.
Avec du secure c'est mort, tu jette tout..
je suis retourné dans ClaudeCode :
Displayed the extraction script, masking any password
Le script est toujours là, inchangé depuis le 27 octobre : C:\adresses du script dansmonPC\extraire_knx.py.
Pour le lancer dans PowerShell, se placer d’abord dans son dossier utilisateur :
Glisse ensuite ton .knxproj dans la fenêtre, appuie sur Entrée,
puis tape le mot de passe : rien ne s’affiche, c’est normal.
Le fichier .json est créé à côté du projet. Il n’est pas protégé, donc supprime-le une fois l’analyse terminée.
Code :
import json
from pathlib import Path
from getpass import getpass
from xknxproject import XKNXProj
chemin = input("Glisse ici le fichier .knxproj puis Entrée : ").strip().strip('"').strip("'")
chemin = Path(chemin)
mdp = getpass("Mot de passe du projet (rien ne s'affiche, c'est normal) : ")
projet = XKNXProj(path=str(chemin), password=mdp, language="fr-FR").parse()
sortie = chemin.with_suffix(".json")
with open(sortie, "w", encoding="utf-8") as f:
json.dump(projet, f, ensure_ascii=False, indent=2)
print(f"OK : {sortie} créé")
ce fichier en json permet a Claude Code de pouvoir lire le .knxprog, puis de l'analyser et faire un rapport des erreurs et des modification a eventuellement apporter dand ETS.