Page 4 sur 15

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

Publié : 08 janv. 2016, 07:33
par lunarok
Les modifs a faire sont données juste au dessus

Envoyé de mon A0001 en utilisant Tapatalk

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

Publié : 08 janv. 2016, 09:10
par specimen
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

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

Publié : 08 janv. 2016, 09:22
par lunarok
@kaktusatomik et @Albinoz vous avez aussi le problème ?

Envoyé de mon A0001 en utilisant Tapatalk

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

Publié : 08 janv. 2016, 12:15
par specimen
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.

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

Publié : 08 janv. 2016, 17:42
par lunarok
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

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

Publié : 09 janv. 2016, 08:50
par specimen
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.

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

Publié : 12 janv. 2016, 09:26
par specimen
Correctif, dans le bloc ligne 129 remplacer :
$logical = 'zone' . $izone-1;
par :
$logical = 'zone' . $izone;

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

Publié : 12 janv. 2016, 19:08
par lunarok
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

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

Publié : 12 janv. 2016, 21:53
par specimen
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.

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

Publié : 12 janv. 2016, 22:19
par lunarok
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

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

Publié : 12 janv. 2016, 22:59
par Dany21000
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.

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

Publié : 13 janv. 2016, 21:49
par Albinoz
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.

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

Publié : 13 janv. 2016, 22:16
par specimen
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;
  }
}

?>

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

Publié : 13 janv. 2016, 23:44
par Albinoz
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".

;-)

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

Publié : 14 janv. 2016, 09:20
par kaktusatomik
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.

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

Publié : 09 févr. 2016, 15:01
par DanoneKiD
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 { 

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

Publié : 09 févr. 2016, 16:12
par lunarok
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

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

Publié : 10 févr. 2016, 11:32
par shinji99
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

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

Publié : 10 févr. 2016, 22:21
par Dany21000
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.

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

Publié : 10 févr. 2016, 22:59
par lunarok
Sinon, vous pouvez me confirmer que tout est bon ou pas (je serais pas étonné :D) avec Spark et ESP ?