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

[Store] Script pour module radiateur électrique Heatzy V1
https://forum.eedomus.com/viewtopic.php?f=50&t=6026
« Précédent  Page 2 sur 2
Auteur:  eozanne [ 12 Mars 2018 10:56 ]
Sujet du message:  Re: [Store] Script pour module radiateur électrique Heatzy

Aurelsam20 a écrit:
eozanne a écrit:Bonjour,

Voila plusieurs semaine que mon script retourne une valeur vide.
La suppression-reinstallation n'a rien réglé.
J'ai supprimé le test de la variable time() dans le script et là tout refonctionne.
Peut-Être si je coupe l'alimentation de la box, ca va disfonctionner ?
En attendant d'avoir un script à jour
Je tiens à remercier Havok pour son travail

Cordialement


Bonjour Eozanne,
Peux-tu m'expliquer comment tu as fait stp??
Merci beaucoup


Bonjour,

Comme je l'avais prédit dans mon précédent POST, le script a cesse de fonctionner au bout d'un moment. J'ai tout supprimé, désolé.
J'ai ensuite réinstallé le script d'Havoc, la ca remarche; mais bon je ne me sers plus d'eedomus pour l'instant car le script n'est pas assez fiable.
Je me suis résigné à utiliser la programmation du module Heatzy avec l'outil fourni; il m'as fallu un bon moment car l'ergonomie (selon moi) de cette programmation est délicate !
J'ai réussi sur un iPad (en mode X2) pour y arriver.

Cordialement
Auteur:  Havok [ 12 Mars 2018 11:15 ]
Sujet du message:  Re: [Store] Script pour module radiateur électrique Heatzy

Bonjour eozanne,

Qu'est ce qui n'est pas fiable exactement ?
Auteur:  eozanne [ 26 Mars 2018 20:07 ]
Sujet du message:  Re: [Store] Script pour module radiateur électrique Heatzy

Bonjour,

J'ai pas mal galère pour arriver à faire fonctionner le script.
Comme lu dans les post du forum; les désinstallation-installation remettaient tout en ordre sauf pour moi ??? J'ai recommencé une nouvelle fois et là on dirait que le script fonctionne depuis quelques semaines.
Je suis tombé entre le plantage du script et un plantage des serveurs Hetzy en fin d'année !
C'est pour cela que j'hésite à continuer d'investir dans des modules Heatzy
En plus le changement d'heure dernier, ça a merdé

Cordialement
Auteur:  eozanne [ 27 Mars 2018 15:43 ]
Sujet du message:  Re: [Store] Script pour module radiateur électrique Heatzy

Bonjour,

Après quelques semaines, le script est en erreur comme la dernière fois.
Erreur sur EEDOMUS
En fait c'est se que j'avais eu en fin d'année après environ 1 mois d'utilisation même erreur
Code : Tout sélectionner
[code]Le 27 mars à 15:14 : Heatzy Pilote Cuisine en erreur: [Valeur lue vide]. Aperçu du contenu.
La fréquence de cette notification est maintenant réduite.[/code]


En cliquant sur aperçu du contenu :

<root><status></status></root>

On dirait bien qu'un problème avec les API Heatzy est bien présent.

Cordialement
Auteur:  paulogaz [ 03 Fév 2019 15:48 ]
Sujet du message:  Re: [Store] Script pour module radiateur électrique Heatzy

Hello,

J'ai aussi connu ces soucis "d'instabilité".
en réalité, pour ma part, cela fonctionnait bien au travers de eedomus jusqu'à une mise à jour (Heatzy ou eedmous?).
J'avais des espaces dans le nom de mes périphériques.
en supprimant ces espaces, tout est rentré dans l'ordre.
donc, règle de base :
- bannir les espaces
- bannir les caractères spéciaux (accents, etc)

Toutefois, @Havoc, est-il possible de remonter la MAC address depuis le script?
ce serait une évolution sympa pour tous ceux qui filtrent les accès à leur wifi au travers de la MAC.

Merci pour ce script!
Auteur:  technoseb27 [ 09 Fév 2019 22:02 ]
Sujet du message:  Re: [Store] Script pour module radiateur électrique Heatzy

Bonsoir à tous. Je ne sais pas si chez vous c'est pareil mais depuis quelques jours, impossible de faire fonctionner mes modules sur Eedomus. Je viens d'essayer avec "Jeedom" et cela fonctionne sans problème comme sur l'application.
N'y aurait-il pas eu une mise à jour du côté de chez Heatzy?
Merci de votre retour
Auteur:  Havok [ 13 Fév 2019 19:13 ]
Sujet du message:  Re: [Store] Script pour module radiateur électrique Heatzy

Ca devrait fonctionner correctement maintenant. Mais il faut mettre à jour le script.
Auteur:  technoseb27 [ 14 Fév 2019 10:50 ]
Sujet du message:  Re: [Store] Script pour module radiateur électrique Heatzy

Havok a écrit:Ca devrait fonctionner correctement maintenant. Mais il faut mettre à jour le script.

Bonjour Havok. Je te confirme que cela fonctionne à nouveau. Un grand merci à toi de ton retour. ;)
Auteur:  Havok [ 14 Fév 2019 14:49 ]
Sujet du message:  Re: [Store] Script pour module radiateur électrique Heatzy

J'y suis pour rien :)
C'est la team eedomus qui a detecté une anomalie sur la gestion des noms de variables (générale pas que pour mon script hein ;) pouvant provoquer des instabilités et qui a apporté des corrections à mon script (et peut être à d'autres) pour que ca fonctionne de nouveau.
Auteur:  technoseb27 [ 17 Fév 2019 22:21 ]
Sujet du message:  Re: [Store] Script pour module radiateur électrique Heatzy

Bonsoir à tous,
Après consultation avec Havok, je pose ma question ici pour savoir si je suis tout seul dans mon cas.
Actuellement j'avais mon sèche-serviette de connecté avec un module qui fonctionne impeccable. Ce week-end j'ai voulu ajouter mes autres modules Heatzy, ceux-ci s'intègrent parfaitement mais impossible de les piloter depuis Eeedomus alors que le premier fonctionne toujours.
Y'a t'il des personnes ayant plusieurs modules de connectés sur la box?
Merci par avance pour votre réponse.
:D
Auteur:  sebafil [ 30 Oct 2019 22:02 ]
Sujet du message:  Re: [Store] Script pour module radiateur électrique Heatzy

Bonjour,

Je viens d'installer le script depuis le store Eedomus : on voit bien que mon module Heatzy reçoit l'instruction d'Eedomus, les voyants changent, clignotent... puis Heatzy se remet dans la configuration qui était la sienne avant l'ordre, tout cela en l'espace de quelques petites secondes...

Une idée sur ce qui pourrait causer ce problème ?

J'ai tenté de dés installer/réinstaller/ le script après avoir simplifié le nom du Heatzy et même son mot de passe... ça n'a rien changé au comportement décrit ci-dessus.
Auteur:  Havok [ 07 Nov 2019 15:11 ]
Sujet du message:  Re: [Store] Script pour module radiateur électrique Heatzy

A priori le script n'est plus valable pour la V2 du module heatzy.
Comme hélas je n'ai pas de V2 je ne peux pas faire grand chose...
Auteur:  gule2004 [ 10 Nov 2019 12:55 ]
Sujet du message:  Re: [Store] Script pour module radiateur électrique Heatzy V

Bonjour,
J'ai adapter le script pour la génération 2
Ne savant pas comment ajouter un plugin je le met ici:

Les commandes ne sont plus les mêmes.

confort = cft
Eco = eco
Hors-Gel = fro
Off = stop
Annotation 2019-11-10 125153.png
Annotation 2019-11-10 125153.png (27.78 Kio) Consulté 1919 fois

je met la capture d'écran en pièce jointe

Code : Tout sélectionner
<?php

/*
script cree par twitter:@Havok pour la eedomus

------------------- Parametres :

user = login du compte heatzy_username
pass = password du compte heatzy_username
device = nom du module heatzy
mode = set - Modification de l'etat de l'appareil
  ordre = cft confort/ eco eco/ fro hors-gel/ stop off
*/

//--- Paramètres Script
$heatzy_application_id = "c70a66ff039d41b4a220e198b0fcc8b3";

//-------------- Parametres
$mode = getArg('mode');
$ordre = getArg('ordre');
$heatzy_username = getArg('user');
$heatzy_password = getArg('pass');
$heatzy_devicename = getArg('device');

//*************   Récupération du token, validité 7 jours
// POST /app/login (User login)
function sdk_heatzy_login($login, $password, $appid) {

  $postfields = '{"username":"'.$login.'","password":"'.$password.'","lang":"en"}';

  $return = httpQuery('https://euapi.gizwits.com/app/login','POST',$postfields,NULL,array("Content-Type: application/json","Accept: application/json","X-Gizwits-Application-Id: ".$appid));
  $obj = sdk_json_decode($return);
  //print_r($obj);
  saveVariable('tokenheatzy',$obj['token']);
  saveVariable('tokenexpireat',$obj['expire_at']);
  return $obj['token'];
}

function sdk_clean_variable_name($name)
{
   $name = strtolower($name);
   $name = trim($name);
   $name = str_replace(' ', '_', $name);
   $name = strtr($name,'àáâãäçèéêëìíîïñòóôõöùúûüýÿ','aaaaaceeeeiiiinooooouuuuyy');
   return $name;
}

//*************   Récupération did (identifiant de l'appareil (validité permanente)) en fonction du nom de l'appareil
// GET /app/bindings
function sdk_heatzy_getdidbyname($token, $appid, $devicename) {

  $return = httpQuery('https://euapi.gizwits.com/app/bindings?limit=20&skip=0','GET',NULL,NULL,array("Accept: application/json","X-Gizwits-Application-Id: ".$appid,"X-Gizwits-User-token: ".$token));

  $obj = sdk_json_decode($return);
  //print_r($obj);

  foreach($obj['devices'] as $device) {
    if (sdk_clean_variable_name($device['dev_alias']) == sdk_clean_variable_name($devicename)) {
      $did = $device['did'];
      saveVariable('did-'.sdk_clean_variable_name($devicename), $did);
      return $did;
    }
  }

}


//*************   Récupération de l'etat de l'appareil
// GET /app/devdata/{did}/latest
function sdk_heatzy_getstatus($diditem, $appid) {

  $return = httpQuery('https://euapi.gizwits.com/app/devdata/'.$diditem.'/latest','GET',NULL,NULL,array("Accept: application/json","X-Gizwits-Application-Id: ".$appid));

  $obj = sdk_json_decode($return);
  //print_r($obj);

  $etatch = $obj['attr']['mode'];
 
  switch ($etatch) {
    case 'cft':
      $etat = 'cft'; // 'confort';
      break;
    case 'stop':
      $etat = 'stop'; //'off';
      break;
    case 'eco':
      $etat = 'eco'; //'eco';
      break;
    case 'fro':
      $etat = 'fro'; //'hors-gel';
      break;
    default:
      $etat = 99; //'inconnu';
      break;
  }
  return $etat;
}

//*************   Mise en forme xml du status pour la eedomus
function sdk_heatzy_eedomusstatus($status) {

  $eestatus = "<root><status>";
  switch ($status) {
    case 'cft':
      $eestatus .= '<libelle>confort</libelle><value>cft</value>';
      break;
    case 'eco':
      $eestatus .= '<libelle>eco</libelle><value>eco</value>';
      break;
    case 'fro':
      $eestatus .= '<libelle>hors-gel</libelle><value>fro</value>';
      break;
    case 'stop':
      $eestatus .= '<libelle>off</libelle><value>stop</value>';
      break;

    default:
      # code...
      break;
  }
  $eestatus .= "</status></root>";
  return $eestatus;
}

//*************   Modification de l'etat de l'appareil
// POST /app/control/{did}
function sdk_heatzy_setstatus($diditem, $appid, $token, $ordre) {

  $ordreapi = $ordre;
  $modeapi = '"mode"';

  $return = httpQuery('https://euapi.gizwits.com/app/control/'.$diditem,'POST','{"attrs":{'.$modeapi.':"'.$ordreapi.'"}}',NULL,array("Content-Type: application/json","Accept: application/json","X-Gizwits-Application-Id: ".$appid,"X-Gizwits-User-token: ".$token));

  $obj = sdk_json_decode($return);
  //print_r($obj);

  return $obj;
}

/* **** MAIN PROGRAM *******************/

if (isset($mode) && $mode == 'set') {

  if (loadVariable('tokenheatzy') != '' && (loadVariable('tokenexpireat') > time())) { // récupération du token
    $token = loadVariable('tokenheatzy');
  } else {
    $token = sdk_heatzy_login($heatzy_username,$heatzy_password,$heatzy_application_id ); // récupération du token
  }

  if (loadVariable('did-'.sdk_clean_variable_name($heatzy_devicename)) != '') { // récupération du did
    $did = loadVariable('did-'.sdk_clean_variable_name($heatzy_devicename));
  } else {
    $did = sdk_heatzy_getdidbyname($token,$heatzy_application_id,$heatzy_devicename);
  }

  $result = sdk_heatzy_setstatus($did,$heatzy_application_id,$token,$ordre); // définition du status actuel

} else {

  if (loadVariable('tokenheatzy') != '' && (loadVariable('tokenexpireat') > time())) { // récupération du token
    $token = loadVariable('tokenheatzy');
  } else {
    $token = sdk_heatzy_login($heatzy_username,$heatzy_password,$heatzy_application_id ); // récupération du token
  }

  if (loadVariable('did-'.sdk_clean_variable_name($heatzy_devicename)) != '') { // récupération du did
    $did = loadVariable('did-'.sdk_clean_variable_name($heatzy_devicename));
  } else {
    $did = sdk_heatzy_getdidbyname($token,$heatzy_application_id,$heatzy_devicename);
  }

  $status = sdk_heatzy_getstatus($did,$heatzy_application_id); //récupération du status actuel
  sdk_header('text/xml');
  echo sdk_heatzy_eedomusstatus($status); //mise en forme du xml pour eedomus
}
 ?>
Auteur:  Havok [ 10 Nov 2019 16:12 ]
Sujet du message:  Re: [Store] Script pour module radiateur électrique Heatzy V

Super :)
Je veux bien le mettre a jour mais il faut me dire ce que tu as changé dans le fichier php
Auteur:  oliv30 [ 10 Avr 2020 21:20 ]
Sujet du message:  Re: [Store] Script pour module radiateur électrique Heatzy V

bonsoir tout nouveau depuis aujourd'hui sur Eedomus!
mes Heatzy doivent être des V2..
j'ai une erreur valeur lue vide , <root><status></status></root
pas bien compris ce qu'il fallait changer dans le script.
Si quelqu'un a des mots simples pour moi :roll:
Auteur:  oliv30 [ 10 Avr 2020 21:33 ]
Sujet du message:  Re: [Store] Script pour module radiateur électrique Heatzy V

bon ca marche bien !
il faut changer le script
et aussi modifier les valeurs

Par contre si on modifie le mode de chauffage dans Heatzy cela ne se change pas dans Eedomus
Page 2 sur 2 Le fuseau horaire est UTC+1 heure