Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

[Plugin Tiers][Sujet Principal] Remora : gestion de chauffage par fil pilote

Pour échanger sur les plugins classés en catégorie "Bien-être/Confort"
Avatar de l’utilisateur
lunarok
Actif
Messages : 6704
Inscription : 08 août 2014, 12:48
Localisation : Anjou

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par lunarok » 08 janv. 2016, 07:33

Les modifs a faire sont données juste au dessus

Envoyé de mon A0001 en utilisant Tapatalk
Mon Blog | Xiaomi Home
Pour contribuer au développement des plugins (don ou achat de matériel) : Paypal
Aides nous à t'aider : les logs, détails du soucis, la doc, recherche sur le forum ...
PS : pas de support par MP, je ne répondrais pas

specimen
Timide
Messages : 213
Inscription : 07 nov. 2014, 18:11
Localisation : Montpellier

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par specimen » 08 janv. 2016, 09:10

La modif de la ligne 50 corrige les remontées téléinfo mais pas les remontées FP (en tous cas chez moi).

Code : Tout sélectionner

08-01-2016 09:06:06 | debug | getTeleinfo 
08-01-2016 09:06:08 | debug | Retour 
08-01-2016 09:06:08 | debug | Retour Teleinfo _UPTIME valeur 2278
08-01-2016 09:06:11 | debug | getCEStatus 
08-01-2016 09:06:11 | debug | getStatus 
08-01-2016 09:06:14 | debug | Retour 
08-01-2016 09:06:14 | debug | Retour Status zone 1 valeur 
08-01-2016 09:06:18 | debug | Retour Status zone 2 valeur 
08-01-2016 09:06:20 | debug | Retour Status zone 3 valeur 
08-01-2016 09:06:20 | debug | Retour Status zone 4 valeur 
08-01-2016 09:06:20 | debug | Retour Status zone 5 valeur 
08-01-2016 09:06:20 | debug | Retour Status zone 6 valeur 
08-01-2016 09:06:20 | debug | Retour Status zone 7 valeur 
08-01-2016 09:06:24 | debug | Retour Status nivdelest valeur

Avatar de l’utilisateur
lunarok
Actif
Messages : 6704
Inscription : 08 août 2014, 12:48
Localisation : Anjou

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par lunarok » 08 janv. 2016, 09:22

@kaktusatomik et @Albinoz vous avez aussi le problème ?

Envoyé de mon A0001 en utilisant Tapatalk
Mon Blog | Xiaomi Home
Pour contribuer au développement des plugins (don ou achat de matériel) : Paypal
Aides nous à t'aider : les logs, détails du soucis, la doc, recherche sur le forum ...
PS : pas de support par MP, je ne répondrais pas

specimen
Timide
Messages : 213
Inscription : 07 nov. 2014, 18:11
Localisation : Montpellier

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par specimen » 08 janv. 2016, 12:15

Comme le retour du relais ne fonctionne pas non plus j'ai modifié le code :
A la ligne 94 remplacer :

Code : Tout sélectionner

      $addr = config::byKey('addr', 'remora', 0);
      $devAddr = 'http://' . $addr . '/relais';
      $devResult = file($devAddr);
      $retour = $devResult[0];
      $jsonob = json_decode($devResult);
      $result = $jsonob['relais'];
Par :

Code : Tout sélectionner

      $addr = config::byKey('addr', 'remora', 0);
      $devAddr = 'http://' . $addr . '/relais';
      $devResult = file_get_contents($devAddr);
      $jsonob = json_decode($devResult);
      $result = $jsonob->{'relais'};
Je regarde pour faire pareil sur les FP.

Avatar de l’utilisateur
lunarok
Actif
Messages : 6704
Inscription : 08 août 2014, 12:48
Localisation : Anjou

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par lunarok » 08 janv. 2016, 17:42

Ligne 128 ca serait pas ca :
$devResult = file_get_contents($devAddr);
$result = json_decode($devResult);

En tout cas j'ai modifier pour la v2 les 2 fonctions
Mon Blog | Xiaomi Home
Pour contribuer au développement des plugins (don ou achat de matériel) : Paypal
Aides nous à t'aider : les logs, détails du soucis, la doc, recherche sur le forum ...
PS : pas de support par MP, je ne répondrais pas

specimen
Timide
Messages : 213
Inscription : 07 nov. 2014, 18:11
Localisation : Montpellier

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par specimen » 09 janv. 2016, 08:50

en 128 j'ai mis ca :
if (config::byKey('type', 'remora', 0) == "esp") {
$addr = config::byKey('addr', 'remora', 0);
$devAddr = 'http://' . $addr . '/fp';
$devResult = file_get_contents($devAddr);
$result = json_decode($devResult);

ensuite en 129
$izone = 1;
while ($izone <= 7) {
if (config::byKey('type', 'remora', 0) == "esp") {
$fp = "fp$izone";
$value = $result->{$fp};
} else {
$value = $result[$izone];
}
$logical = 'zone' . $izone-1;
log::add('remora', 'debug', 'Retour Status zone ' . $izone . ' valeur ' . $value);
$remora = self::byLogicalId($logical, 'remora');
$remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'status');
$remoraCmd->setConfiguration('value', $value);
$remoraCmd->save();
$remoraCmd->event($value);
$izone ++;
}


En 167 (même si je n'ai pas encore compris le principe du "delestage") :

if (config::byKey('type', 'remora', 0) == "esp") {
$devAddr = 'http://' . $addr . '/delestage';
$devResult = file_get_contents($devAddr);
$json = json_decode($retour);
$result = $json->{'niveau'};

Si c'est plus simple je te pousse le .php en MP ?
Je n'ai pas pu vérifier pour la téléinfo car je ne l'ai pas encore connectée, j'ai juste le uptime qui s'affiche donc je pense que c'est ok.
Le relais et les FP fonctionnent nickel.

specimen
Timide
Messages : 213
Inscription : 07 nov. 2014, 18:11
Localisation : Montpellier

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par specimen » 12 janv. 2016, 09:26

Correctif, dans le bloc ligne 129 remplacer :
$logical = 'zone' . $izone-1;
par :
$logical = 'zone' . $izone;

Avatar de l’utilisateur
lunarok
Actif
Messages : 6704
Inscription : 08 août 2014, 12:48
Localisation : Anjou

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par lunarok » 12 janv. 2016, 19:08

Mouais enfin en meme temps t'avais modifié toute la boucle en deplacant le ++ par exemple, t'as fait plus de modif que nécessaire en mettant un bug
Mon Blog | Xiaomi Home
Pour contribuer au développement des plugins (don ou achat de matériel) : Paypal
Aides nous à t'aider : les logs, détails du soucis, la doc, recherche sur le forum ...
PS : pas de support par MP, je ne répondrais pas

specimen
Timide
Messages : 213
Inscription : 07 nov. 2014, 18:11
Localisation : Montpellier

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par specimen » 12 janv. 2016, 21:53

Aucune obligation d'intégrer ces modifs. Je ne les ai faites que parce que cela ne fonctionnait pas (pour moi).
Comme a priori je suis le seul à avoir eu des soucis le mieux est de ne rien changer.

Avatar de l’utilisateur
lunarok
Actif
Messages : 6704
Inscription : 08 août 2014, 12:48
Localisation : Anjou

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par lunarok » 12 janv. 2016, 22:19

J'ai intégré juste $devResult = file_get_contents($devAddr);
$result = json_decode($devResult);

Qui est nécessaire sur esp

Mais ca sera diffusé à la sortie de V2
Mon Blog | Xiaomi Home
Pour contribuer au développement des plugins (don ou achat de matériel) : Paypal
Aides nous à t'aider : les logs, détails du soucis, la doc, recherche sur le forum ...
PS : pas de support par MP, je ne répondrais pas

Avatar de l’utilisateur
Dany21000
Timide
Messages : 271
Inscription : 01 déc. 2015, 10:56
Localisation : Dijon

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par Dany21000 » 12 janv. 2016, 22:59

specimen a écrit :Aucune obligation d'intégrer ces modifs. Je ne les ai faites que parce que cela ne fonctionnait pas (pour moi).
Comme a priori je suis le seul à avoir eu des soucis le mieux est de ne rien changer.
Non tu n'es pas le seul à avoir des soucis.
Je n'ai pas encore intégré tes modifications ni pris le temps de debugger le plug-in.

Pour que ça marche sans plug-in, j'utilise des scripts pour le moment.

Tu peux faire un copier coller du PHP en intégralité, je prendrai quelques minutes pour l'intégrer et le tester.

Albinoz
Timide
Messages : 8
Inscription : 09 déc. 2014, 14:04

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par Albinoz » 13 janv. 2016, 21:49

lunarok a écrit :@kaktusatomik et @Albinoz vous avez aussi le problème ?

Envoyé de mon A0001 en utilisant Tapatalk
Bonsoir Lunarok. Oui, j'ai le même problème et j'essaie de faire les modifs (c'est ok pour la teleinfo mais pas pour les status) ... du moins pour le moment.

specimen
Timide
Messages : 213
Inscription : 07 nov. 2014, 18:11
Localisation : Montpellier

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par specimen » 13 janv. 2016, 22:16

donc le fichier /usr/share/nginx/www/jeedom/plugins/remora/core/class/remora.class.php (sur jeedom mini) modifié.
bien sur c'est juste pour vous dépanner en attendant la version officielle qui viendra avec jeedom v2,

Code : Tout sélectionner

<?php

/* This file is part of Jeedom.
*
* Jeedom is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Jeedom is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Jeedom. If not, see <http://www.gnu.org/licenses/>.
*/

/* * ***************************Includes********************************* */
require_once dirname(__FILE__) . '/../../../../core/php/core.inc.php';
require_once dirname(__FILE__) . '/../../core/php/phpSpark.class.php';

class remora extends eqLogic {
  /*     * *************************Attributs****************************** */


  /*     * ***********************Methode static*************************** */


  public static function cron() {
    $elogic = self::byLogicalId('teleinfo', 'remora');
    if ($elogic->getIsEnable() == 1) {
      $elogic->getTeleinfo();
    }
    $elogic = self::byLogicalId('chauffeeau', 'remora');
    if ($elogic->getIsEnable() == 1) {
      $elogic->getCEStatus();
    }
    self::getStatus();
  }

  public function getTeleinfo() {
    //https://api.spark.io/v1/devices/[DEVICE_ID]/indexhp?access_token=[ACCESS_TOKEN]
    $elogic = self::byLogicalId('teleinfo', 'remora');
    log::add('remora', 'debug', 'getTeleinfo ');
    if (config::byKey('type', 'remora', 0) == "esp") {
      $addr = config::byKey('addr', 'remora', 0);
      $devAddr = 'http://' . $addr . '/tinfo';
      $devResult = file($devAddr);
      //$ticall = $devResult[0];
      $ticall =implode($devResult);
    } else {
      $accessToken = config::byKey('token', 'remora', 0);
      $deviceid = config::byKey('deviceid', 'remora', 0);
      $spark = new phpSpark();
      $spark->setDebug(false);
      $spark->setDebugType("TXT");
      $spark->setAccessToken($accessToken);
      if($spark->getVariable($deviceid, "tinfo") == true) {
        $obj = $spark->getResult();
        $ticall = $obj['result'];
      } else {
        log::add('remora', 'error', 'Teleinfo Erreur d\'appel ' . $spark->getError()) . ' source ' . $spark->getErrorSource();
        return false;
      }
    }
    log::add('remora', 'debug', 'Retour ' . print_r($tinfo,true));
      $tinfo = json_decode($ticall);
      foreach($tinfo as $key => $value ) {
        log::add('remora', 'debug', 'Retour Teleinfo ' . $key . ' valeur ' . $value);
        $remora = self::byLogicalId('teleinfo', 'remora');
        $cmdlogic = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),$key);
        if (!is_object($cmdlogic)) {
          $cmdlogic = new remoraCmd();
          $cmdlogic->setName($key);
          $cmdlogic->setEqLogic_id($remora->id);
          $cmdlogic->setEqType('remora');
          $cmdlogic->setLogicalId($key);
          $cmdlogic->setType('info');
          $cmdlogic->setSubType('numeric');
          $cmdlogic->setEventOnly(1);
        }
        $cmdlogic->setConfiguration('value', $value);
        $cmdlogic->save();
        $cmdlogic->event($value);
      }

    return ;
  }

  public function getCEStatus() {
    //https://api.spark.io/v1/devices/[DEVICE_ID]/indexhp?access_token=[ACCESS_TOKEN]

    if (config::byKey('type', 'remora', 0) == "esp") {
      $addr = config::byKey('addr', 'remora', 0);
      $devAddr = 'http://' . $addr . '/relais';
      $devResult = file_get_contents($devAddr);
      $jsonob = json_decode($devResult);
      $result = $jsonob->{'relais'};
    } else {
      $accessToken = config::byKey('token', 'remora', 0);
      $deviceid = config::byKey('deviceid', 'remora', 0);
      $spark = new phpSpark();
      $spark->setDebug(false);
      $spark->setDebugType("TXT");
      $spark->setAccessToken($accessToken);
      if($spark->getVariable($deviceid, "etatrelais") == true) {
        $obj = $spark->getResult();
        $result = $obj['result'];
      } else {
        log::add('remora', 'error', 'Teleinfo Erreur d\'appel ' . $spark->getError()) . ' source ' . $spark->getErrorSource();
        return false;
      }
    }
      log::add('remora', 'debug', 'getCEStatus ' . $result);
        $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($this->getId(),'status');
        $remoraCmd->setConfiguration('value', $result);
        $remoraCmd->save();
        $remoraCmd->event($result);

    return ;
  }

  public function getStatus() {
    log::add('remora', 'debug', 'getStatus ');
    if (config::byKey('type', 'remora', 0) == "esp") {
      $addr = config::byKey('addr', 'remora', 0);
      $devAddr = 'http://' . $addr . '/fp';
      $devResult = file_get_contents($devAddr);
      //$retour = $devResult[0];
      $result = json_decode($devResult);
    } else {
      $accessToken = config::byKey('token', 'remora', 0);
      $deviceid = config::byKey('deviceid', 'remora', 0);
      $spark = new phpSpark();
      $spark->setDebug(false);
      $spark->setDebugType("TXT");
      $spark->setAccessToken($accessToken);
      if($spark->getVariable($deviceid, "etatfp") == true) {
        $obj = $spark->getResult();
        $result = $obj['result'];
      } else {
        log::add('remora', 'error', 'Teleinfo Erreur d\'appel ' . $spark->getError()) . ' source ' . $spark->getErrorSource();
        return false;
      }
    }

      log::add('remora', 'debug', 'Retour ' . print_r($result,true));

      $izone = 1;
      while ($izone <= 7) {
        if (config::byKey('type', 'remora', 0) == "esp") {
          $fp = "fp$izone";
          $value = $result->{$fp};
        } else {
          $value = $result[$izone];
        }
        $logical = 'zone' . $izone;
        log::add('remora', 'debug', 'Retour Status zone ' . $izone . ' valeur ' . $value);
        $remora = self::byLogicalId($logical, 'remora');
        $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'status');
        $remoraCmd->setConfiguration('value', $value);
        $remoraCmd->save();
        $remoraCmd->event($value);
        $izone ++;
      }

      if (config::byKey('type', 'remora', 0) == "esp") {
        $devAddr = 'http://' . $addr . '/delestage';
        $devResult = file_get_contents($devAddr);
        //$retour = $devResult[0];
        $json = json_decode($retour);
        $result = $json->{'niveau'};;
      } else {
        if($spark->getVariable($deviceid, "nivdelest") == true) {
          $obj = $spark->getResult();
          $result = $obj['result'];
        } else {
          log::add('remora', 'error', 'Teleinfo Erreur d\'appel ' . $spark->getError()) . ' source ' . $spark->getErrorSource();
          return false;
        }
      }

          log::add('remora', 'debug', 'Retour Status nivdelest valeur ' . $result);
          $remora = self::byLogicalId('global', 'remora');
          $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'nivdelest');
          $remoraCmd->setConfiguration('value', $value);
          $remoraCmd->save();
          $remoraCmd->event($value);
    return ;
  }

  public function remoraCall($zone,$request) {
    log::add('remora', 'debug', 'Recu commande ' . $request . ' vers ' . $zone);
    //curl https://api.spark.io/v1/devices/[DEVICE_ID]/fp -d access_token=[ACCESS_TOKEN] -d params=[ORDRES]
    $params = $zone.$request;

    if (config::byKey('type', 'remora', 0) == "esp") {
      $addr = config::byKey('addr', 'remora', 0);
      $devAddr = 'http://' . $addr . '?setfp=' . $params;
      $devResult = file_get_contents($devAddr);
      //$retour = $devResult[0];
      //$result = json_decode($retour);
    } else {
      $accessToken = config::byKey('token', 'remora', 0);
      $deviceid = config::byKey('deviceid', 'remora', 0);
      $spark = new phpSpark();
      $spark->setDebug(false);
      $spark->setDebugType("TXT");
      $spark->setTimeout("5");
      $spark->setAccessToken($accessToken);
      if($spark->callFunction($deviceid, "setfp", $params) == true) {

      } else {
        log::add('remora', 'error', 'Erreur d\'appel ' . $spark->getError()) . ' source ' . $spark->getErrorSource();
        return false;
      }
    }

        $logical = 'zone' . $zone;
        $remora = self::byLogicalId($logical, 'remora');
        $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'status');
        $remoraCmd->setConfiguration('value', $request);
        $remoraCmd->save();
        $remoraCmd->event($request);
  }

  public function remoraRelais($request) {
    log::add('remora', 'debug', 'Recu commande relais vers ' . $request);
    if (config::byKey('type', 'remora', 0) == "esp") {
      $addr = config::byKey('addr', 'remora', 0);
      $devAddr = 'http://' . $addr . '?relais=' . $request;
      $devResult = file_get_contents($devAddr);
      //$retour = $devResult[0];
      //$result = json_decode($retour);
    } else {
      $accessToken = config::byKey('token', 'remora', 0);
      $deviceid = config::byKey('deviceid', 'remora', 0);
      $spark = new phpSpark();
      $spark->setDebug(false);
      $spark->setDebugType("TXT");
      $spark->setTimeout("5");
      $spark->setAccessToken($accessToken);
      if($spark->callFunction($deviceid, "relais", $request) == true) {

      } else {
        log::add('remora', 'error', 'Erreur d\'appel ' . $spark->getError()) . ' source ' . $spark->getErrorSource();
        return false;
      }
    }

        $remora = self::byLogicalId('chauffeeau', 'remora');
        $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'status');
        $remoraCmd->setConfiguration('value', $request);
        $remoraCmd->save();
        $remoraCmd->event($request);

  }

  public static function populate() {
    $izone = 1;

    while ($izone <= 7) {
      $logical = 'zone' . $izone;
      $remora = self::byLogicalId($logical, 'remora');
      if (!is_object($remora)) {
        log::add('remora', 'info', 'Equipement n existe pas, création ' . $logical);
        $remora = new remora();
        $remora->setEqType_name('remora');
        $remora->setLogicalId($logical);
        $remora->setName('Zone ' . $izone);
        $remora->setIsEnable(true);
        $remora->save();
        $remora->setLogicalId('zone' . $izone);
        $remora->setConfiguration('zone', $izone);
        $remora->save();
        //log::add('remora', 'info',   print_r($remora,true));
      }
      $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'confort');
      if (!is_object($remoraCmd)) {
        $remoraCmd = new remoraCmd();
        $remoraCmd->setEqLogic_id($remora->getId());
        $remoraCmd->setEqType('remora');
        $remoraCmd->setLogicalId('confort');
        $remoraCmd->setName( 'Confort' );
        $remoraCmd->setConfiguration('request', 'C');
        $remoraCmd->setType('action');
        $remoraCmd->setSubType('other');
        $remoraCmd->save();
      }
      $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'arret');
      if (!is_object($remoraCmd)) {
        $remoraCmd = new remoraCmd();
        $remoraCmd->setEqLogic_id($remora->getId());
        $remoraCmd->setEqType('remora');
        $remoraCmd->setLogicalId('arret');
        $remoraCmd->setName( 'Arrêt' );
        $remoraCmd->setConfiguration('request', 'A');
        $remoraCmd->setType('action');
        $remoraCmd->setSubType('other');
        $remoraCmd->save();
      }
      $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'eco');
      if (!is_object($remoraCmd)) {
        $remoraCmd = new remoraCmd();
        $remoraCmd->setEqLogic_id($remora->getId());
        $remoraCmd->setEqType('remora');
        $remoraCmd->setLogicalId('eco');
        $remoraCmd->setName( 'Eco' );
        $remoraCmd->setConfiguration('request', 'E');
        $remoraCmd->setType('action');
        $remoraCmd->setSubType('other');
        $remoraCmd->save();
      }
      $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'horsgel');
      if (!is_object($remoraCmd)) {
        $remoraCmd = new remoraCmd();
        $remoraCmd->setEqLogic_id($remora->getId());
        $remoraCmd->setEqType('remora');
        $remoraCmd->setLogicalId('horsgel');
        $remoraCmd->setName( 'Hors Gel' );
        $remoraCmd->setConfiguration('request', 'H');
        $remoraCmd->setType('action');
        $remoraCmd->setSubType('other');
        $remoraCmd->save();
      }
      $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'status');
      if (!is_object($remoraCmd)) {
        $remoraCmd = new remoraCmd();
        $remoraCmd->setName('Statut');
        $remoraCmd->setEqLogic_id($remora->id);
        $remoraCmd->setEqType('remora');
        $remoraCmd->setLogicalId('status');
        $remoraCmd->setType('info');
        $remoraCmd->setSubType('string');
        $remoraCmd->setEventOnly(1);
        $remoraCmd->save();
      }
      //incrémentation
      $izone++;
    }

    $logical = 'global';
    $remora = self::byLogicalId($logical, 'remora');
    if (!is_object($remora)) {
      log::add('remora', 'info', 'Equipement n existe pas, création ' . $logical);
      $remora = new remora();
      $remora->setEqType_name('remora');
      $remora->setLogicalId($logical);
      $remora->setName('Global');
      $remora->setConfiguration('zone', '0');
      $remora->setIsEnable(true);
      $remora->save();
    }
    $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'confort');
    if (!is_object($remoraCmd)) {
      $remoraCmd = new remoraCmd();
      $remoraCmd->setEqLogic_id($remora->getId());
      $remoraCmd->setEqType('remora');
      $remoraCmd->setLogicalId('confort');
      $remoraCmd->setName( 'Confort' );
      $remoraCmd->setConfiguration('request', 'C');
      $remoraCmd->setType('action');
      $remoraCmd->setSubType('other');
      $remoraCmd->save();
    }
    $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'arret');
    if (!is_object($remoraCmd)) {
      $remoraCmd = new remoraCmd();
      $remoraCmd->setEqLogic_id($remora->getId());
      $remoraCmd->setEqType('remora');
      $remoraCmd->setLogicalId('arret');
      $remoraCmd->setName( 'Arrêt' );
      $remoraCmd->setConfiguration('request', 'A');
      $remoraCmd->setType('action');
      $remoraCmd->setSubType('other');
      $remoraCmd->save();
    }
    $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'eco');
    if (!is_object($remoraCmd)) {
      $remoraCmd = new remoraCmd();
      $remoraCmd->setEqLogic_id($remora->getId());
      $remoraCmd->setEqType('remora');
      $remoraCmd->setLogicalId('eco');
      $remoraCmd->setName( 'Eco' );
      $remoraCmd->setConfiguration('request', 'E');
      $remoraCmd->setType('action');
      $remoraCmd->setSubType('other');
      $remoraCmd->save();
    }
    $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'horsgel');
    if (!is_object($remoraCmd)) {
      $remoraCmd = new remoraCmd();
      $remoraCmd->setEqLogic_id($remora->getId());
      $remoraCmd->setEqType('remora');
      $remoraCmd->setLogicalId('horsgel');
      $remoraCmd->setName( 'Hors Gel' );
      $remoraCmd->setConfiguration('request', 'H');
      $remoraCmd->setType('action');
      $remoraCmd->setSubType('other');
      $remoraCmd->save();
    }
    $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'nivdelest');
    if (!is_object($remoraCmd)) {
      $remoraCmd = new remoraCmd();
      $remoraCmd->setName('Niveau Délestage');
      $remoraCmd->setEqLogic_id($remora->id);
      $remoraCmd->setEqType('remora');
      $remoraCmd->setLogicalId('nivdelest');
      $remoraCmd->setType('info');
      $remoraCmd->setSubType('string');
      $remoraCmd->setEventOnly(1);
      $remoraCmd->save();
    }

    $logical = 'teleinfo';
    $remora = self::byLogicalId($logical, 'remora');
    if (!is_object($remora)) {
      log::add('remora', 'info', 'Equipement n existe pas, création ' . $logical);
      $remora = new remora();
      $remora->setEqType_name('remora');
      $remora->setLogicalId($logical);
      $remora->setName('Téléinfo');
      $remora->setIsEnable(true);
      $remora->save();
    }

    $logical = 'chauffeeau';
    $remora = self::byLogicalId($logical, 'remora');
    if (!is_object($remora)) {
      log::add('remora', 'info', 'Equipement n existe pas, création ' . $logical);
      $remora = new remora();
      $remora->setEqType_name('remora');
      $remora->setLogicalId($logical);
      $remora->setName('Chauffe-Eau');
      $remora->setConfiguration('chauffeeau', '1');
      $remora->setIsEnable(true);
      $remora->save();
    }
    $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'on');
    if (!is_object($remoraCmd)) {
      $remoraCmd = new remoraCmd();
      $remoraCmd->setEqLogic_id($remora->getId());
      $remoraCmd->setEqType('remora');
      $remoraCmd->setLogicalId('on');
      $remoraCmd->setName( 'Allumer' );
      $remoraCmd->setConfiguration('request', '1');
      $remoraCmd->setType('action');
      $remoraCmd->setSubType('other');
      $remoraCmd->save();
    }
    $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'off');
    if (!is_object($remoraCmd)) {
      $remoraCmd = new remoraCmd();
      $remoraCmd->setEqLogic_id($remora->getId());
      $remoraCmd->setEqType('remora');
      $remoraCmd->setLogicalId('off');
      $remoraCmd->setName( 'Eteindre' );
      $remoraCmd->setConfiguration('request', '0');
      $remoraCmd->setType('action');
      $remoraCmd->setSubType('other');
      $remoraCmd->save();
    }
    $remoraCmd = remoraCmd::byEqLogicIdAndLogicalId($remora->getId(),'status');
    if (!is_object($remoraCmd)) {
      $remoraCmd = new remoraCmd();
      $remoraCmd->setName('Statut');
      $remoraCmd->setEqLogic_id($remora->id);
      $remoraCmd->setEqType('remora');
      $remoraCmd->setLogicalId('status');
      $remoraCmd->setType('info');
      $remoraCmd->setSubType('string');
      $remoraCmd->setEventOnly(1);
      $remoraCmd->save();
    }

    return true;
  }

}

class remoraCmd extends cmd {
  /*     * *************************Attributs****************************** */



  /*     * ***********************Methode static*************************** */

  /*     * *********************Methode d'instance************************* */
  public function execute($_options = null) {


    switch ($this->getType()) {
      case 'info' :
      return $this->getConfiguration('value');
      break;
      case 'action' :
      $request = $this->getConfiguration('request');
      switch ($this->getSubType()) {
        case 'slider':
        $request = str_replace('#slider#', $value, $request);
        break;
        case 'color':
        $request = str_replace('#color#', $_options['color'], $request);
        break;
        case 'message':
        if ($_options != null)  {
          $replace = array('#title#', '#message#');
          $replaceBy = array($_options['title'], $_options['message']);
          if ( $_options['title'] == '') {
            throw new Exception(__('Le sujet ne peut être vide', __FILE__));
          }
          $request = str_replace($replace, $replaceBy, $request);

        }
        else
        $request = 1;
        break;
        default : $request == null ?  1 : $request;
      }

      $eqLogic = $this->getEqLogic();
      $LogicalID = $this->getLogicalId();

      if ($eqLogic->getConfiguration('chauffeeau') == 1) {
        remora::remoraRelais($request);
      } else {
        $zone = $eqLogic->getConfiguration('zone');
        if ($zone == '0') {
          $izone = 1;
          while ($izone <= 7) {
            remora::remoraCall($izone,$request);
            $izone ++;
          }
        } else {
          remora::remoraCall($zone,$request);
        }
      }

      return $request;
    }
    return true;
  }
}

?>

Albinoz
Timide
Messages : 8
Inscription : 09 déc. 2014, 14:04

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par Albinoz » 13 janv. 2016, 23:44

Ok , donc c'est bon pour moi. Je récupère les status (fp), le délestage et le statut du relais ;-)
En fait, j'ai appliqué la première correction partout :

Code : Tout sélectionner

$devResult = file($devAddr);
$retour = implode($devResult);
$result = json_decode($retour, true);
Le paramètre "true" de json_decode permet d'avoir le tableau associatif, et ça change tout (en tout cas chez moi).
Pour la fonction statut, au lieu de la boucle while, j'ai fais une boucle foreach sur le modèle de la fonction teleinfo, et c'est nicket.
Du coup, on doit même pouvoir faire une fonction getDatas ($adresseIpRemora, $page) qui nous retournera le tableau associatif qui va bien.
Par exemple, getDatas(IP, "tinfo"), etc ...

Après pour le délestage, nous avons en fait 2 variables : niveau et zone. Hors le plugin ne prend en compte que le niveau dans "global".
Il faudrait rajouter la variable "zone".

;-)

kaktusatomik
Timide
Messages : 119
Inscription : 04 déc. 2015, 21:48
Localisation : La Rochelle

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par kaktusatomik » 14 janv. 2016, 09:20

Albinoz a écrit :Ok , donc c'est bon pour moi. Je récupère les status (fp), le délestage et le statut du relais ;-)
En fait, j'ai appliqué la première correction partout :

Code : Tout sélectionner

$devResult = file($devAddr);
$retour = implode($devResult);
$result = json_decode($retour, true);
Le paramètre "true" de json_decode permet d'avoir le tableau associatif, et ça change tout (en tout cas chez moi).
Pour la fonction statut, au lieu de la boucle while, j'ai fais une boucle foreach sur le modèle de la fonction teleinfo, et c'est nicket.
Du coup, on doit même pouvoir faire une fonction getDatas ($adresseIpRemora, $page) qui nous retournera le tableau associatif qui va bien.
Par exemple, getDatas(IP, "tinfo"), etc ...

Après pour le délestage, nous avons en fait 2 variables : niveau et zone. Hors le plugin ne prend en compte que le niveau dans "global".
Il faudrait rajouter la variable "zone".

;-)
Effectivement cette correction fonctionne. Il faut modifier également la ligne

Code : Tout sélectionner

$fp = 'fp'.$izone+1;
en

Code : Tout sélectionner

 $fp = 'fp'.($izone+1);
Du moins sur ma config pour que cela fonctionne.

Avatar de l’utilisateur
DanoneKiD
Timide
Messages : 356
Inscription : 21 janv. 2015, 16:37

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par DanoneKiD » 09 févr. 2016, 15:01

Salut,

Petit bug en installant la V2 de jeedom

Code : Tout sélectionner

2016/02/09 14:53:23 [error] 558#0: *82294 FastCGI sent in stderr: "PHP message: PHP Parse error:  syntax error, unexpected '}' in /usr/share/nginx/www/jeedom/plugins/remora/core/class/remora.class.php on line 51" while reading response header from upstream, client: ***, server: , request: "GET /index.php?v=d&m=remora&p=remora HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "***", referrer: "http://88.125.136.1/index.php?v=d&p=administration"
Il manque un ";" à la ligne 50

Code : Tout sélectionner

    if (config::byKey('type', 'remora', 0) == "esp") {
      $addr = config::byKey('addr', 'remora', 0);
      $devAddr = 'http://' . $addr . '/tinfo';
      $devResult = file($devAddr);
      $ticall =implode($devResult);
    } else { 
Application JeedomApp pour Windows 10 (non officielle)

Avatar de l’utilisateur
lunarok
Actif
Messages : 6704
Inscription : 08 août 2014, 12:48
Localisation : Anjou

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par lunarok » 09 févr. 2016, 16:12

corrigé et dispo au market en stable
trituré la version dans tous les sens pour vérifier tout parcequ'il y a peut etre (surement) d'autres trucs en erreur
Mon Blog | Xiaomi Home
Pour contribuer au développement des plugins (don ou achat de matériel) : Paypal
Aides nous à t'aider : les logs, détails du soucis, la doc, recherche sur le forum ...
PS : pas de support par MP, je ne répondrais pas

Avatar de l’utilisateur
shinji99
Actif
Messages : 803
Inscription : 25 janv. 2016, 10:17

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par shinji99 » 10 févr. 2016, 11:32

bonjour a tous

quelqu'un sais il ou je peut me procurer un remora (ou kit mais assemblé serrais idéal)
ca j'ai tout mes fil pilotes au tableau et d coup ca serrais je pense la solution la plus adaptéee
l'idée et d'avoir une installation fiable j'ai ma 2eme petite qui va arriver je ne peut pas me permettre de ne plus avoir de chauffage

mercii

Avatar de l’utilisateur
Dany21000
Timide
Messages : 271
Inscription : 01 déc. 2015, 10:56
Localisation : Dijon

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par Dany21000 » 10 févr. 2016, 22:21

Tu peux trouver tous les plans, schémas, liste des composants sur http://community.hallard.me.

Tu trouveras sur le forum un topic dédié Remora.

Il y a aussi le github de Thibault et de charles sur lesquels tout est disponible.

https://github.com/hallard/remora_soft
https://github.com/thibdct/programmateu ... ilote-wifi

Voilà, vas sur le forum ,n'hésite pas.

Avatar de l’utilisateur
lunarok
Actif
Messages : 6704
Inscription : 08 août 2014, 12:48
Localisation : Anjou

Re: [Sujet officie] Remora : gestion de chauffage par fil pi

Message par lunarok » 10 févr. 2016, 22:59

Sinon, vous pouvez me confirmer que tout est bon ou pas (je serais pas étonné :D) avec Spark et ESP ?
Mon Blog | Xiaomi Home
Pour contribuer au développement des plugins (don ou achat de matériel) : Paypal
Aides nous à t'aider : les logs, détails du soucis, la doc, recherche sur le forum ...
PS : pas de support par MP, je ne répondrais pas

Répondre

Revenir vers « [Catégorie] Confort / Bien-être »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Google [Bot] et 0 invité