Cloom
1
Hello la Belgique,
Je sais que Techem est aussi présent en France mais ils utilisent un espace client qui doit être différent de la Belgique qui utilise Energy Coach et Energy Coach Occupant.
Je vis dans une copropriété et TECHEM gère nos factures d’Eau Chaude Sanitaire, Eau Froide et de Chauffage.
Il y a le système Techem Smart System donc j’ai des compteurs « connectés » qui balancent les infos à une passerelle dans l’immeuble en 433MHz et j’ai suivi le tuto de la sympathique chaine du Journal de Thomas que j’ai découvert avec la vidéo Suivre sa consommation d’eau sous Home Assistant avec une simple clé USB FM TV !
Tout fonctionne au poil. J’ai remarqué que j’ai également accès aux données via le portail Energy Coach Occupant et la valeur du mois en cours est mise à jour tous les jours:
Ma question: est-ce que d’autres personnes ont ce système? J’ai fait une présentation pour que mes voisins se fassent leur compte occupant 
J’arrive à me logguer avec Apps Script et je me demande si ça vaut le coup de développer un addon custom_component pour aller chercher ces données.
Pros:
- je peux utiliser ma clé Nooelec RTL-SDR pour autre chose
- d’autres personnes peuvent bénéficier du code

Cons:
- développer un custom_component c’est du boulot
Surtout que je dois adapter ce que j’ai fait en python
- les données dépendront d’une connection internet
Voilà , c’est une petite bouteille à la mer pour voir s’il y a des intéressés.
1 « J'aime »
Cloom
2
Bon apparemment personne n’utilise Techem… J’avoue qu’il faut être en Belgique (c’est apparemment un autre portail en France), il faut être dans une copropriété et il faut même savoir que c’est possible de se connecter sur leur portail (mon syndic ne savait même pas
)
Je me lance quand mĂŞme, je fais le module python et ensuite je me lance dans mon premier custom_component from scratch!
Merci à Gemini qui m’a converti mon script Apps Script en python presque sans erreur
et m’en a fait une « belle » classe avec des commentaires !
Bonjour !
Je vis moi-mĂŞme dans un appartement (en Belgique !
), également avec des compteurs Techem. Je cherchais un moyen de les intégrer dans Home Assistant, et grâce à votre message, je viens de regarder la vidéo de Thomas. Très intéressant, et très encourageant de voir que vous avez réussi avec cette méthode.
Mais ailleurs sur Internet, je lis que beaucoup de gens n’y parviennent pas avec wmbusmeters parce que les données des compteurs Techem sont cryptées. Est-ce exact ? Avez-vous les clés de décryptage de vos compteurs, ou les données passent-elles sans clé?
D’ailleurs, avez-vous réussi à créer le module Python pour le portail Energy Coach ? Cela m’intéresse aussi beaucoup. Je dois encore contacter mon syndic pour pouvoir créer moi-même un compte là -bas. Déjà merci également pour la présentation sur la façon de procéder.
Joyeuses fĂŞtes !
Bonjour!
J’ai connecté un récepteur usb RTL_SDR et je reçois maintenant les télégrammes avec wmbusmeters. Malheureusement, en effet ils sont tous chiffrés.
Comment avez-vous obtenu les clés de déchiffrement ? Via le syndic ou directement de Techem ? Vous les ont-ils communiquées directement ?
Je crains qu’on ne sache pas de quoi je parle, ou qu’on pense immédiatement que je tente de pirater leur système si je demande des clés de déchiffrement…
Cloom
5
Comme indiqué, j’ai suivi le tuto et je n’ai pas eu besoin de clé de déchiffrement:
Hello @cloom,
Je suis aussi belge (je travaille à quelques mètres de chez toi, d’ailleurs
) et j’ai aussi un compteur de passage Techem, malheureusement chiffré…
J’ai demandé à Techem les clés mais ils ont refusé…
Je me rabats donc sur la solution avec l’energycoach. J’ai lu plus haut que tu avais réussi à t’y connecter via Apps Script. Est-ce que tu en as finalement fait un custom_component ? Est-ce que tu pourrais me partager ce que tu as fait dans l’App Script ou la technique que tu as utilisée pour le faire?
Thanks 
Cloom
7
Hello @sachast
Je n’ai pas créé de custom_component. En fait il faudrait faire un module python qui fait du web scrapping et ensuite faire un module home assistant qui se base sur ce module.
Avec les avancés de l’IA ça pourrait peut-être se faire facilement mais le web scrapping c’est pas ce qu’il y a de mieux, vraiment dommage que Techem n’offre pas une façon aisée de récupérer les infos, surtout pour les 500 personnes max qui le ferait en Belgique 
Pour l’apps script c’était un test quick and dirty, tu peux ajouter ça dans script.google.com:
const SettingsTechem = (()=>{
var USER_LOGIN = 'tonemail@pourtelogguer.be';
var USER_PASSWORD = 'ton_password';
return {
user: {
login: USER_LOGIN,
password: USER_PASSWORD
}
}
})()
function getTechemData(){
var url = "https://energycoach.techem.be/WEBENERGY_OCCUPANTS/";
// Do a GET request to retrieve the generated UID needed to log into the portal
var options = {
'method' : 'GET',
'contentType': 'text/html; charset=utf-8'
};
var res = UrlFetchApp.fetch(url, options);
console.log(res);
var regExp = new RegExp('<form name="LOGIN" action="/WEBENERGY_OCCUPANTS/Login/([a-zA-Z0-9_$]+)"',"g");
var regRes = regExp.exec(res);
var login_uid = '';
if( regRes.length > 1){
login_uid = regRes[1];
console.log(login_uid);
}
else {
console.log("Cannot Retrieve the login UID");
return false;
}
// Login into TECHEM energycoach OCCUPANTS portal
url = "https://energycoach.techem.be/WEBENERGY_OCCUPANTS/Login/"+login_uid;
var options = {
// 'headers' : headers,
'method' : 'POST',
'contentType': 'application/x-www-form-urlencoded',
'payload': 'WD_JSON_PROPRIETE_=&WD_BUTTON_CLICK_=A14&A34=1&A8='+encodeURIComponent(SettingsTechem.user.login)+'&A10='+encodeURIComponent(SettingsTechem.user.password)+'&A28=1'
};
res = UrlFetchApp.fetch(url, options);
if( res.getResponseCode() === 200 ){
Logger.log(res);
}
let myArray;
// Get the biweekly information page
url = "https://energycoach.techem.be/WEBENERGY_OCCUPANTS/TAB_CONSOMMATIONS_APPARTEMENT/"+login_uid;
var options = {
// 'headers' : headers,
'method' : 'POST',
'contentType': 'application/x-www-form-urlencoded',
'payload': 'WD_JSON_PROPRIETE_=&WD_BUTTON_CLICK_=M53'
};
res = UrlFetchApp.fetch(url, options);
if( res.getResponseCode() === 200 ){
Logger.log(res);
}
// Extract the biweekly tables data
regExp = new RegExp('<td .*id="(c[0-9]+-A[0-9]+)".*>(.+)</td>',"g");
while ((myArray = regExp.exec(res)) !== null) {
let msg = `Found ${myArray[1]} -> ${myArray[2]}.`;
console.log(msg);
}
}
Je viens de tester, normalement ça devrait donner les valeurs bi-mensuelles mais je ne sais pas pourquoi ça donne les valeurs annuelles, ça marché y’a 6 mois ou 1 an 
En tout cas j’espère que ça t’aide, si jamais j’avance sur ce sujet, je posterai ici.