Forum eedomus
https://forum.eedomus.com/

[Store] Radiateurs et interfaces Cozytouch
https://forum.eedomus.com/viewtopic.php?f=50&t=6232
« Précédent  Page 12 sur 17  Suivant »
Auteur:  Niafreu [ 21 Nov 2021 21:02 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

Je viens de tester et ça fonctionne pas. Après avoir mis mon accès cela me donne aucun périphérique détecté. Cela dois venir du boîtier que j’ai installé sur mes radiateurs (ils ne sont pas compatibles d’origine). Dommage car ça fonctionnait très bien avant leur fichue mise à jour. Merci quand même, j’attendrais une prochaine version…
Auteur:  parabellum [ 21 Nov 2021 23:59 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

la version est en ligne.
si vous allez sur mise à jour de votre périphérique, ça devrait fonctionner mais vous n'aurez pas la conso totale. pour cela il faut réinstaller les périphériques.

je viens de tout désinstaller pour valider que la version publié fonctionne bien et c'est bon chez moi.
quelqu'un pourrait il me confirmer que ça fonctionne aussi chez lui?
Auteur:  Niafreu [ 22 Nov 2021 06:02 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

Je confirme que pour les radiateurs compatibles cela fonctionne, mais pour ceux qui fonctionne comme moi avec le cozytouch ça ne fonctionne pas. Ca nous indique identifiant incorrecte, si quelqu’un veux bien regarder, je pense pas être le seul à utiliser que l’interface cozytouch. Merci à tous et bonne journée
Auteur:  parabellum [ 22 Nov 2021 11:14 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

Bonjour, je ne comprends pas bien ta réponse.
Tu dis que ça fonctionne et que ça ne fonctionne pas en même temps. Tu as deux type de radiateurs (radiateur connecté et radiateur avec un module supplémentaire) ?
Dans tous les cas la box Cozytouch est installée et donc la connections avec sauter fonctionne pareil, non?

Je veux bien regarder, mais il faudrait que je comprenne bien à quoi ressemble ton installation.
Je pourrais aussi tester avec un outil(postman) si l’authentification fonctionne pareil ou pas avec tes identifiants, mais il faudrait que tu m’envoi en MP tes login et password sauter (que tu changeras plus tard bien sur)
Auteur:  Paga49 [ 22 Nov 2021 15:23 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

Bonjour,

Je pense qu'il a voulu dire qu'il existe 2 drivers, "Radiateur Cozytouch" pour les radiateurs communiquant et "Interface Cozytouch / Somfy" pour ceux qui passe par un boitier pour les autres radiateurs. Tu as modifier le premier, peux-tu modifier le deuxième ?
Un grand merci pour ta contribution.
Bonne journée

Pascal
Auteur:  parabellum [ 22 Nov 2021 17:20 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

Ahhh ok! Effectivement je n’ai pas regardé l’autre script mais comme ils ont été créés par la même personne, il y a des chances que le code se ressemble. Je regarderai dès que j’aurai un moment
Auteur:  Paga49 [ 22 Nov 2021 17:25 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

Super, merci
Auteur:  Niafreu [ 22 Nov 2021 21:19 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

Paga49 a écrit:Bonjour,

Je pense qu'il a voulu dire qu'il existe 2 drivers, "Radiateur Cozytouch" pour les radiateurs communiquant et "Interface Cozytouch / Somfy" pour ceux qui passe par un boitier pour les autres radiateurs. Tu as modifier le premier, peux-tu modifier le deuxième ?
Un grand merci pour ta contribution.
Bonne journée

Pascal


Bonjour,

Merci pascal d’avoir traduit, désolé pour le manque de clarté.

Bonne journée à tous
Auteur:  ventrea [ 23 Nov 2021 00:37 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

Bravo Parabellum et merci, beau travail,
Je viens de faire la maj et la synchro avec mon bridge cozytouch fonctionne bien. Je peux à nouveau piloter mon radiateur.
:clap:
Auteur:  parabellum [ 23 Nov 2021 02:20 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

ventrea a écrit:Bravo Parabellum et merci, beau travail,
Je viens de faire la maj et la synchro avec mon bridge cozytouch fonctionne bien. Je peux à nouveau piloter mon radiateur.
:clap:


de rien.
je viens d'ailleurs de pousser une petite correction mineur. une simple recherche de mise à jour sur l'un des périphériques suffit pour avoir la dernière version
Auteur:  parabellum [ 23 Nov 2021 02:29 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

sinon j'ai regardé pour l'autre driver: "Interface Cozytouch / Somfy"
alors la bonne nouvelle, c'est qu'il y a effectivement un code qui est proche.
par contre ça gère plusieurs types de brides: "cosytouch" mais aussi "connexoon" et "Tahoma".
du coup je ne sais pas si pour les deux autres ils ont aussi changer le principe de connection.

est ce que des utilisateurs de connexoon et Tahoma pourrait nous confirmer qu'il ont le problème?
je voudrais pas pousser une correction pour cosytouch qui planterait les autres.

Enfin, je vais poster en dessous le code que vous pourrez remplacer dans votre fichier cosytouch_interface.php pour tester si ça marche. n'ayant pas les bridges en question à la maison, c'est un peu dur d'etre sur de mon coup. ;-)
Auteur:  parabellum [ 23 Nov 2021 02:42 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

<?php
// script créé par Patrice Gauchon pour eedomus
// modification authentification par Parabellum
// Version 1.1.0 / 23 novembre 2021

$url_token = 'https://api.groupe-atlantic.com/token';
$url_jwt = 'https://api.groupe-atlantic.com/gacoma/gacomawcfservice/accounts/jwt';
//$url_login = 'https://ha110-1.overkiz.com/enduser-mobile-web/enduserAPI/login';
$url_login = '';

$api_urls = array(
'cozytouch' => 'https://ha110-1.overkiz.com/enduser-mobile-web/enduserAPI/',
'connexoon' => 'https://ha101-1.overkiz.com/enduser-mobile-web/enduserAPI/',
'tahoma' => 'https://www.tahomalink.com/enduser-mobile-web/enduserAPI/',
);

$cache_time = 240; // 4 minutes

$action = getArg('action', false);
$cache = loadVariable('cache');

//------------------------------
// Fonctions
//------------------------------

// Envoi une requête à l'API
function sdk_make_request($path, $method='POST', $data=NULL, $content_type=NULL)
{
global $api_url;

$header = NULL;
if ($content_type == 'json')
{
$header = array('Content-Type: application/json');
}
else if (!empty($data))
{
$data = http_build_query($data);
}

$result = httpQuery($api_url.$path, $method, $data, NULL, $header, true);

return sdk_json_decode($result);
}

// Login
function sdk_login($ignore_cache=false)
{
global $api_url, $api_urls, $url_token, $url_jwt, $url_login;

$bridge = loadVariable('bridge');

if (empty($bridge))
{
$bridge = 'cozytouch';
}

$api_url = $api_urls[$bridge];

$url_login = $api_url.'login';

$last_login = loadVariable('last_login');

if (!$ignore_cache and !empty($last_login) and $last_login > (time()-120))
{
return;
}

//Tentative de login direct avec le jeton en mÈmoire
$headers = array('Content-Type: application/x-www-form-urlencoded');
$data = array('jwt' => loadVariable('jeton'));
$data = http_build_query($data);
$result = httpQuery($url_login, 'POST', $data, null, $headers, true);
$result = sdk_json_decode($result);

if (isset($result['success']) and $result['success'])
{
//echo 'login direct avec succËs: '.'<br/>';
}
else
{
//echo 'login direct KO donc nouvelle authentification'.'<br/>';

//RÈcupÈration access_token
$headers = array('Authorization: Basic czduc0RZZXdWbjVGbVV4UmlYN1pVSUM3ZFI4YTphSDEzOXZmbzA1ZGdqeDJkSFVSQkFTbmhCRW9h');
$data = array(
'grant_type' => 'password',
'username' => loadVariable('username'),
'password' => loadVariable('password'),
);
$data = http_build_query($data);
$result = httpQuery($url_token, 'POST', $data, null, $headers, true);
$result = sdk_json_decode($result);
$atlantic_token = $result['access_token'];
//echo 'atlantic_token:'.$atlantic_token.'<br/>';

//RÈcupÈration nouveau jeton
$headers = array('Authorization: Bearer '.$atlantic_token);
$result = httpQuery($url_jwt, 'GET',null, null, $headers, true);
$jeton = sdk_json_decode($result);
//echo 'jeton:'.$jeton.'<br/>';

saveVariable('jeton', $jeton);

//Login avec nouveau jeton
$headers = array('Content-Type: application/x-www-form-urlencoded');
$data = array('jwt' => $jeton);
$data = http_build_query($data);
$result = httpQuery($url_login, 'POST', $data, null, $headers, true);
//echo 'resultat login: '.$result.'<br/>';
$result = sdk_json_decode($result);
}

if (isset($result['success']) and $result['success'])
{
saveVariable('last_login', time());
}

return $result; //pas sur...voir comment c'Ètait avant




////// code d'origine/////////
//////////////////////////////
//$data = array(
// 'userId' => loadVariable('username'),
// 'userPassword' => loadVariable('password'),
//);

//return sdk_make_request('login', 'POST', $data);
}

// Récupère toutes les pièces
function sdk_get_places($places)
{
$result = array();
foreach ($places as $place)
{
$result[$place['oid']] = $place['label'];

if (!empty($place['subPlaces']))
{
$result += sdk_get_places($place['subPlaces']);
}
}

return $result;
}

// Récupère les pièces et les périphériques
function sdk_get_setup($ignore_cache=false)
{
global $cache, $cache_time;

if (getArg('ignoreCache', false) == 'true')
{
$ignore_cache = true;
}

// retourne la sauvegarde en cache si dernière requête < $cache_time
if (!$ignore_cache and isset($cache['time']) and time() - $cache['time'] < $cache_time
and !empty($cache['devices']) and !empty($cache['places']))
{
return array(
'devices' => $cache['devices'],
'places' => $cache['places'],
'time' => $cache['time'],
);
}

// Login
sdk_login();

// On attend que les commandes en cours se terminent
$count = 0;
while ($count < 10)
{
$result = sdk_make_request('exec/current', 'GET');
if (empty($result))
{
break;
}
usleep(200000);
$count++;
}

// On rafraichit les états
sdk_make_request('setup/devices/states/refresh', 'POST');

// On récupère les périphériques
$setup = sdk_make_request('setup', 'GET');
$devices = array();
foreach ($setup['devices'] as $device)
{
if (!empty($device['placeOID']) and preg_match('%^(io://.*?/\d*?)$%', $device['deviceURL'], $match))
{
$device_url = $match[1];
$devices[$device_url]['place_oid'] = $device['placeOID'];
foreach ($device['states'] as $state)
{
if (preg_match('%^(core|io):(.*?)State$%', $state['name'], $match2))
{
$devices[$device_url]['states'][$match2[2]] = $state['value'];
}
}
}
}

// On récupère les pièces
$places = sdk_get_places($setup['rootPlace']['subPlaces']);

// Sauvegarde des données en cache
$time = time();
$cache['devices'] = $devices;
$cache['places'] = $places;
$cache['time'] = $time;
saveVariable('cache', $cache);

return array(
'places' => $places,
'devices' => $devices,
'time' => $time,
);
}

// On applique une commande aux périphériques d'une pièce
function sdk_apply_command($place_oid, $commands, $path='exec/apply')
{
global $cache;

$actions = array();
foreach ($cache['devices'] as $device_url => $device)
{
if ($device['place_oid'] == $place_oid)
{
$commands_str = array();
foreach ($commands as $command_name => $value)
{
$commands_str[] = '{"name":"'.$command_name.'","parameters":['.$value.']}';
}

$actions[] = '{"deviceURL":"'.$device_url.'","commands":['.implode($commands_str,',').']}';
}
}

$json = '{"label":"eedomus command","notificationTypeMask":"0","notificationCondition":"NEVER","actions":['.implode($actions,',').']}';

return sdk_make_request($path, 'POST', $json, 'json');
}

// Ecran de login
function sdk_display_login_form($message='', $error='')
{
$bridge = loadVariable('bridge');

echo '<html><head><title>eedomus</title></head><body>';
if (!empty($message)) echo '<p><b>'.$message.'</b></p>';
if (!empty($error)) echo '<p style="color:red"><b>'.$error.'</b></p>';
echo '<form method="post">';
echo 'Type de bridge :<br><select name="bridge">';
echo '<option value="cozytouch" '.($bridge == 'cozytouch' ? 'selected' : '').'>Cozytouch</option>';
echo '<option value="connexoon" '.($bridge == 'connexoon' ? 'selected' : '').'>Connexoon</option>';
echo '<option value="tahoma" '.($bridge == 'tahoma' ? 'selected' : '').'>Tahoma</option></select><br><br>';
echo 'Nom d\'utilisateur Cozytouch :<br><input type="text" name="username" value="'.loadVariable('username').'"><br><br>';
echo 'Mot de passe Cozytouch :<br><input type="password" name="password" value="'.loadVariable('password').'"><br><br>';
echo '<input type="submit" name="submit" value="'.'Connexion'.'">';
echo '</body>';
die;
}

// Ecran des pièces
function sdk_display_places($places)
{
echo '<html><head><title>eedomus</title></head><body><p><b>'.'Liste des Pièces'.' :</b></p>';
foreach ($places as $place_id => $place_label)
{
echo '<p>'.$place_label.'<br><input onclick="this.select();" type="text" size="40" readonly="readonly" value="'.$place_id.'"></p>';
}
echo '</body>';
die;
}

//------------------------------
// Page de configuration
//------------------------------

if (empty($action))
{
if (empty($_POST['submit']))
{
sdk_display_login_form('Veuillez renseigner vos identifiants.');
}

saveVariable('username', $_POST['username']);
saveVariable('password', $_POST['password']);
saveVariable('bridge', $_POST['bridge']);

$result = sdk_login(true);

if (isset($result['error']) and $result['error'] == 'Bad credentials')
{
sdk_display_login_form('', 'Identifiants de connexion incorrects');
}
if (!isset($result['success']) and !$result['success'])
{
sdk_display_login_form('', 'Impossible de se connecter au serveur Cozytouch');
}

$setup = sdk_get_setup(true);

if (!count($setup['devices']))
{
sdk_display_login_form('', 'Aucun périphérique détecté.');
}

sdk_display_places($setup['places']);
}

//------------------------------
// Actions
//------------------------------

// Set Mode
if ($action == 'setMode')
{
sdk_login();
$value = getArg('value');
$place_oid = getArg('place');

$commands = array('setHeatingLevel' => '"'.$value.'"');
sdk_apply_command($place_oid, $commands);

// Reset cache time
$cache['time'] = 0;
saveVariable('cache', $cache);
}

//------------------------------
// Polling (XML)
//------------------------------

if ($action == 'getState')
{
$setup = sdk_get_setup();
$places = $setup['places'];

sdk_header('text/xml');
$xml = '<?xml version="1.0" encoding="ISO-8859-1"?>';
$xml .= '<cozytouch>';

foreach ($places as $place_id => $place_label)
{
$xml .= '<place id="'.$place_id.'" label="'.$place_label.'">';
$xml .= '<devices>';

foreach ($setup['devices'] as $device_url => $device)
{
if ($device['place_oid'] == $place_id)
{
$xml .= '<device url="'.$device_url.'">';
foreach ($device['states'] as $state => $value)
{
$xml .= '<'.$state.'>'.$value.'</'.$state.'>';
}
$xml .= '</device>';
}
}
$xml .= '</devices>';
$xml .= '</place>';
}
$xml .= '<Timestamp>'.$setup['time'].'</Timestamp>';
$xml .= '</cozytouch>';
echo $xml;
}

?>
Auteur:  parabellum [ 26 Nov 2021 21:47 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

Personne pour tester ?
Auteur:  matouftetouf [ 29 Nov 2021 21:12 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

parabellum a écrit:Personne pour tester ?


Bonjour Parabellum

Désolé je n'avais encore pas pris le temps de tester.
Je te confirme que le scrip posté fonctionne. Je peux enfin piloter mon radiateur de la salle de bains avec une interface 6 fils via mon boitier cozytouch...

Mes autres chauffages sont des Atlantic connectés que je peux de nouveau piloter via eedomus.

Tout fonctionne comme avant.

Un grand merci a toi d'avoir pris le temps de mettre les mains dans le cambouis et d'avoir publier cette MAJ
Auteur:  parabellum [ 29 Nov 2021 22:21 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

merci pour votre réponse.

je viens donc de publier la version 1.1.0 sur le store.

Pour ceux qui avaient l'ancienne version il vous faudra peut être quand même vous identifier à nouveau....et cela ne se fait qu'à l'installation. du coup, je pense qu' il vous faudra donc installer un nouveau radiateur 'pipo', puis cliquer sur 'lister vos radiateur"...là, l'invitation de saisie de login/mot de passe apparait. une fois que la liste de vos radiateur s'est bien affiché, vous pourrez supprimer le radiateur 'pipo', votre authentification sera conservé sur la box.
Auteur:  Niafreu [ 30 Nov 2021 20:59 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

Tu es au top ! Tout fonctionne comme avant, juste à entrer le mail et mdp. Pas besoin de rentrer à nouveau les radiateurs, ils sont tous reconnus (je n’avais rien effacé).
Encore merci pour le taf !
Auteur:  parabellum [ 30 Nov 2021 22:53 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

Nickel, si tu n'as pas eu besoin de réinstaller un radiateur...j'en était vraiment pas sur.
Merci aussi pour les encouragement, ça fait toujours plaisir.

Il reste plus qu'à espérer que ça marche aussi pour les utilisateurs "connexoon" et "Tahoma".
Auteur:  Paga49 [ 01 Déc 2021 18:36 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

Bonjour,

Je viens de tester sur Cozytouch, c'est parfait, tout remarche nickel
Un grand merci Parabellum !!!!!
Auteur:  díadeluz [ 06 Déc 2021 18:31 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

Mille et un mercis, parabellum pour avoir mis temps, compétence et énergie dans ce développement ! :)
Auteur:  parabellum [ 06 Déc 2021 21:52 ]
Sujet du message:  Re: [Store] Radiateurs et interfaces Cozytouch

Merci pour vos retours et encouragement. :-D
Page 12 sur 17 Le fuseau horaire est UTC+1 heure