Intégration Ecojoko - création entité - mesure instantanée de la consommation électrique

Bonjour,
ceci est mon premier message donc merci pour votre accueil :slight_smile:

Je n’ai pas encore fait un plug-in car je viens de découvrir Home Assistant il y a quelques jours mais j’ai réussi à trouver un moyen rapide d’intégrer le sensor Ecojoko dans Home Assistant.

Vous avez besoin d’avoir un serveur Web qui peut executer du php (récupération informations).

Voici le contenu de la page php (qui utilise GuzzleHttp pour des requests):

<?php
  require_once('vendor/autoload.php'); 
  // use available jar
  $jar = new \GuzzleHttp\Cookie\FileCookieJar(__DIR__ .'/myjar.json',true);
  $clientEcojoko = new \GuzzleHttp\Client(['cookies' => $jar]);  
  $url ="https://service.ecojoko.com/gateway/XXXXX/device/YYYY/realtime_conso";
  try {
    $res = $clientEcojoko->request('GET', $url,[
      'allow_redirects' => true,
      'headers' => [
        'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8',
        'Accept' => '*/*',
        'Accept-Encoding' => 'gzip, deflate, br',
        'Connection' => 'keep-alive',
        'Cache-Control' => 'no-cache'
      ]]);
  }
  catch (Exception $e) {
    // authentification
    $res = $clientEcojoko->request('POST', 
            "https://service.ecojoko.com/login",
            [
              'allow_redirects' => true,
              'headers' => [
                'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8',
                'Accept' => '*/*',
                'Accept-Encoding' => 'gzip, deflate, br',
                'Connection' => 'keep-alive',
                'Cache-Control' => 'no-cache'
              ],
              'body'=>'{"l":"YOUR ECOJOKO MAIL ADRESS","p":"YOUR ECOJOKO PASSWORD BASE64 ENCODED"}'
            ]);
      // retry original GET
      $res = $clientEcojoko->request('GET', $url,[
        'allow_redirects' => true,
        'headers' => [
          'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8',
          'Accept' => '*/*',
          'Accept-Encoding' => 'gzip, deflate, br',
          'Connection' => 'keep-alive',
          'Cache-Control' => 'no-cache'
        ]]);
  }
  $ecojoko = json_decode($res->getBody(),true);
  $wat = -1*$ecojoko['real_time']['value'];
  echo "<p>".$wat."</p>";
  //echo $res->getBody();
?>

le résultat est la consomation instantanée.

Ensuite dans Home Assistant, aprés avoir installé le scrapper web rajouter dans configuration.yaml:

rest:
  - resource :VOTRE_SERVICE_WEB
    method: GET
    verify_ssl: false
    scan_interval: 60
    sensor:
      - unique_id: rest_ecojoko
        name: "ecojoko_rest"
        unit_of_measurement: "W"
        value_template: '{{ value | round(0) }}'

Ensuite l’entité peut être utilisée pour des automatismes : chargement batteries quand la consommation est supérieure à une valeur.

L’idéal est d’intégrer ça dans un plug-in mais je ne sais pas comment faire pour instant. Je vais tenter de le faire mais en état c’est déjà utilisable.

Bonne journée à tous et merci si possible d’avance pour votre accueil.

1 « J'aime »

Vous pouvez récupérer l’adresse de vote gateway dans la console développeur:

$url =« https://service.ecojoko.com/gateway/**XXXXX**/device/**YYYY**/realtime_conso »;

Bonjour Biased !

C’est super ce que tu as fait !
Je voulais savoir où est ta page php (sur le serveur HA ? sur un autre serveur web ?) ?

Je n’arrive pas à faire fonctionner le code PHP.
Si tu as créé un plug-in, je suis preneur !

Bonne journée et merci d’avance