SmartMeter avec port P1

Normalement, pas possible. Tu as sûrement une valeur moyenne qui s’est créée.

ce que tu peux faire, c’est créer un virtuel (puissance) en plus et créer un event en dessous de ton scenario qui tourne toutes les minutes et mettre ceci:
event # Puissance # Puissance injection - Puissance conso

tu auras une courbe pour ta commande puissance qui va ds le positif en cas de production et en négatif en cas de conso

En fait comme je me basais que c’était l’un ou l’autre j’avais fait un virtuel ainsi:

#[Local technique][Compteur Electrique][Conso Puissance]# > 0 ? #[Local technique][Compteur Electrique][Conso Puissance]# : (#[Local technique][Compteur Electrique][Prod Puissance]# * -1)

Ca permet d’avoir en positif quand je consomme, et en négatif quand je produit

Je suppose en effet que c’était le lissage car c’était mis « Moyenne », j’ai mis sur « Aucune »
Je vais voir ce que ça donne, un grand merci pour ton aide.

Bonjour, utilisateur home assistant ici, qui aura bientôt un compteur smart de chez Ores car le mien ne tourne pas à l’envers malheureusement
Je pourrais être intéressé par ton module @Poluket il faudra que je trouve comment lire les data dans home assistant mais ça c’est mon problème :)- tu peux m’envoyer un mp avec ton prix ? merci !

Bonjour,
j’essaye de rapatrier les tensions et courant mais en recopiant les IF, il ne me rapatrie jamais les valeurs.

je suis pas un expert en script

peux-tu faire un test sur le tien et me donner le script modifié ?

pour la tension, si tu es en mono:

    if (substr( $data, 0, 10 ) === "1-0:32.7.0") {
       $scenario->setLog("32.7.0: " . substr( $data, 11, 5 ));
       cmd::byId("VirtuelID1")->event(substr( $data, 11, 5 ));
       }

et en tri:

    if (substr( $data, 0, 10 ) === "1-0:32.7.0") {
       $scenario->setLog("32.7.0: " . substr( $data, 11, 5 ));
       cmd::byId("VirtuelID1")->event(substr( $data, 11, 5 ));
       }
    if (substr( $data, 0, 10 ) === "1-0:52.7.0") {
       $scenario->setLog("52.7.0: " . substr( $data, 11, 5 ));
       cmd::byId("VirtuelID2")->event(substr( $data, 11, 5 ));
       }
    if (substr( $data, 0, 10 ) === "1-0:72.7.0") {
       $scenario->setLog("72.7.0: " . substr( $data, 11, 5 ));
       cmd::byId("VirtuelID3")->event(substr( $data, 11, 5 ));
       }

ne pas oublier de changer la valeur pour les VirtuelIDx

on a bien les 3 valeurs qui remontent dans jeedom:
image

et le vrituel:

le courant en mono: les requetes ds le scenario:

    if (substr( $data, 0, 10 ) === "1-0:31.7.0") {
       $scenario->setLog("31.7.0: " . substr( $data, 11, 6 ));
       cmd::byId("VirtuelID2")->event(substr( $data, 11, 6 ));
       }

pour le courant en tri:

et les requetes ds le scenario:

    if (substr( $data, 0, 10 ) === "1-0:31.7.0") {
       $scenario->setLog("31.7.0: " . substr( $data, 11, 6 ));
       cmd::byId("VirtuelID4")->event(substr( $data, 11, 6 ));
       }
    if (substr( $data, 0, 10 ) === "1-0:51.7.0") {
       $scenario->setLog("51.7.0: " . substr( $data, 11, 6 ));
       cmd::byId("VirtuelID5")->event(substr( $data, 11, 6 ));
       }
    if (substr( $data, 0, 10 ) === "1-0:71.7.0") {
       $scenario->setLog("51.7.0: " . substr( $data, 11, 6 ));
       cmd::byId("VirtuelID6")->event(substr( $data, 11, 6 ));
       }

au final, ces lignes son ajoutées:
image
et voila mon code complet ( en triphasé) testé et validé :

$cfgServer ="192.168.3.174";
$cfgPort    = "8088";                
$cfgTimeOut = "5";

$f=fsockopen("$cfgServer",$cfgPort,$cfgTimeOut);

if (!$f)
{
  $scenario->setLog('pas connecté');
  cmd::byId("19215")->event(0);
}
else
{
 $scenario->setLog('connecté');
  cmd::byId("19215")->event(1);
 $data2 = '';
 while (($data =  fgets($f, 4096)) !== false) {
    //$scenario->setLog($data);
    $data2 .= $data;
    //on remplit les valeurs dans les commandes jeedom
    if (substr( $data, 0, 9 ) === "1-0:1.8.1") {
       $scenario->setLog("1.8.1: " . substr( $data, 10, 10 ));
       cmd::byId("19201")->event(substr( $data, 10, 10 )) ;
       }
    if (substr( $data, 0, 9 ) === "1-0:1.8.2") { 
       $scenario->setLog("1.8.2: " . substr( $data, 10, 10 ));
       cmd::byId("19203")->event(substr( $data, 10, 10 ));
       }
    if (substr( $data, 0, 9 ) === "1-0:2.8.1") {
       $scenario->setLog("2.8.1: " . substr( $data, 10, 10 ));
       cmd::byId("19202")->event(substr( $data, 10, 10 ));
       }
    if (substr( $data, 0, 9 ) === "1-0:2.8.2") {
       $scenario->setLog("2.8.2: " . substr( $data, 10, 10 ));
       cmd::byId("19216")->event(substr( $data, 10, 10 ));
       }
    if (substr( $data, 0, 9 ) === "1-0:1.7.0") {
       $scenario->setLog("1.7.0: " . floatval(substr( $data, 10, 6 ))*1000);
       cmd::byId("19205")->event(floatval(substr( $data, 10, 6 ))*1000);
       }
    if (substr( $data, 0, 9 ) === "1-0:2.7.0") {
       $scenario->setLog("2.7.0: " . floatval(substr( $data, 10, 6 ))*1000);
       cmd::byId("19206")->event(floatval(substr( $data, 10, 6 ))*1000);
       }
    if (substr( $data, 0, 10 ) === "1-0:32.7.0") {
       $scenario->setLog("32.7.0: " . substr( $data, 11, 5 ));
       cmd::byId("20186")->event(substr( $data, 11, 5 ));
       }
    if (substr( $data, 0, 10 ) === "1-0:52.7.0") {
       $scenario->setLog("52.7.0: " . substr( $data, 11, 5 ));
       cmd::byId("20187")->event(substr( $data, 11, 5 ));
       }
    if (substr( $data, 0, 10 ) === "1-0:72.7.0") {
       $scenario->setLog("72.7.0: " . substr( $data, 11, 5 ));
       cmd::byId("20188")->event(substr( $data, 11, 5 ));
       }
    if (substr( $data, 0, 10 ) === "1-0:31.7.0") {
       $scenario->setLog("31.7.0: " . substr( $data, 11, 6 ));
       cmd::byId("20189")->event(substr( $data, 11, 6 ));
       }
    if (substr( $data, 0, 10 ) === "1-0:51.7.0") {
       $scenario->setLog("51.7.0: " . substr( $data, 11, 6 ));
       cmd::byId("20190")->event(substr( $data, 11, 6 ));
       }
    if (substr( $data, 0, 10 ) === "1-0:71.7.0") {
       $scenario->setLog("51.7.0: " . substr( $data, 11, 6 ));
       cmd::byId("20191")->event(substr( $data, 11, 6 ));
       }
	if (substr( $data, 0, 11 ) === "0-0:96.13.0") {
       //$scenario->setLog('Quitte la boucle');
       break;
	   } 
   	
    }
 //$scenario->setLog($data2);

 // coupe la session
 $scenario->setLog('coupe la session');
fclose($f);

}

désolé de répondre si tard je vais essayer ton code et regarder ton code pour essayer de le comprendre

Merci @Poluket je ne reprenais pas bien les données.
Ca fonctionne

Salut à tous,

J’utilise la même solution que vous pour récupérer les données de mon compteur Ores.
Malheureusement, je ne peux pas fixer mes adresses IP et donc utilise Scan.IP qui associe le mac/IP avec des bridges pour les plugins compatibles. Dans le plugin Scan.IP, la derniere IP du ESP8266 est automatiquement retrouvée sous #[MAC-IP][Lecteur P1][Last IpV4]#.

J’arrive à récupérer la valeur dans un virtuel ( si il le faut) mais pas à l’intégrer dans le code du scénario …

$cfgServer = cmd::byString("#[MAC-IP][Lecteur P1][Last IpV4]#");
$cfgPort    = "8088";                
$cfgTimeOut = "5";

$f=fsockopen("$cfgServer",$cfgPort,$cfgTimeOut);

if (!$f)
{
  $scenario->setLog('pas connecté');
  cmd::byId("191")->event(0);
}
else
{
 $scenario->setLog('connecté');
  cmd::byId("191")->event(1);
 $data2 = '';
 while (($data =  fgets($f, 4096)) !== false) {
    //$scenario->setLog($data);
    $data2 .= $data;
    //on remplit les valeurs dans les commandes jeedom
    if (substr( $data, 0, 9 ) === "1-0:1.8.1") {
       $scenario->setLog("1.8.1: " . substr( $data, 10, 10 ));
       cmd::byId("181")->event(substr( $data, 10, 10 )) ;
       }

J’ai aussi essayé en passant par un virtuel

$cfgServer = cmd::byId("192");
$cfgPort    = "8088";                
$cfgTimeOut = "5";

$f=fsockopen("$cfgServer",$cfgPort,$cfgTimeOut);

if (!$f)
{
  $scenario->setLog('pas connecté');
  cmd::byId("191")->event(0);

Pouvez-vous m’aider ? (de base je code pas en PHP, j’ai juste qlqs notions de codage)

Bon WE

et si tu mets $cfgServer = cmd::byString('#[MAC-IP][Lecteur P1][Last IpV4]#')->execCmd(); a la place, cela devrait etre ok

et si tu mets $scenario->setLog($cfgServer); en 4eme ligne, tu devrais avoir l’ip

image

tu devrais avoir une ligne avec 192.168.0.215


moi c’est 192.168.3.174

une bible:

:slight_smile: Top ça fonctionne !!!

Merci pour le lien « Petits codes entre amis », très intéressant. je vais pouvoir trouver les solutions par moi-même.

Bonjour Domex,

Pourrais tu détailler comment tu as procédé?

Pour ceux que ça intéresse, j’ai créé un petit code pour l’ESP-01 qui envoie les données toutes les 3 secondes en MQTT.
https://github.com/SNatis/T211-MQTT-Bridge
J’ai également mis les fichiers EasyEDA pour crée le PCB.

Actuellement, cela fait un mois que ça tourne sans aucun problème chez moi…

je suis en train de finaliser une version câblée (rj45) pour ne pas utiliser le wifi. attention que ce modelé a besoin d’une alimentation extérieur pour l’alimenter (USB typeC 5V) .
S’il y en a qui veulent être des beta tester (fonctionne bien chez moi) . envoyez moi un mp

2 « J'aime »