Erreur sur la fonction cron du plugin : Call to a member function execCmd() on bool

Bonjour,

Suite à mise à jour du plugin à l’instant (2023-07-07 09:39:57) j’ai une erreur « Erreur sur la fonction cron du plugin : Call to a member function execCmd() on bool »

Version D7.6.175 de la passerelle Enphase

Token récupéré et inscrit dans les paramètres :

[2023-07-07 12:55:03][ERROR] : Erreur sur la fonction cron du plugin : Call to a member function execCmd() on bool
[2023-07-07 12:56:02][ERROR] : Erreur sur la fonction cron du plugin : Call to a member function execCmd() on bool
[2023-07-07 12:57:02][DEBUG] : Call url https://192.168.0.14/production.json?details=1
[2023-07-07 12:57:03][DEBUG] : Results {"production":[{"type":"inverters","activeCount":12,"readingTime":1688727368,"wNow":2950,"whLifetime":229489},{"type":"eim","activeCount":1,"measurementType":"production","readingTime":1688727423,"wNow":2893.821,"whLifetime":6137515.726,"varhLeadLifetime":0.055,"varhLagLifetime":2489343.122,"vahLifetime":7802095.037,"rmsCurrent":12.01,"rmsVoltage":241.99,"reactPwr":215.342,"apprntPwr":2905.727,"pwrFactor":1,"whToday":11659.726,"whLastSevenDays":126804.726,"vahToday":12679.037,"varhLeadToday":0.055,"varhLagToday":2133.122,"lines":[{"wNow":2893.821,"whLifetime":6137515.726,"varhLeadLifetime":0.055,"varhLagLifetime":2489343.122,"vahLifetime":7802095.037,"rmsCurrent":12.01,"rmsVoltage":241.99,"reactPwr":215.342,"apprntPwr":2905.727,"pwrFactor":1,"whToday":11659.726,"whLastSevenDays":126804.726,"vahToday":12679.037,"varhLeadToday":0.055,"varhLagToday":2133.122}]}],"consumption":[{"type":"eim","activeCount":1,"measurementType":"total-consumption","readingTime":1688727423,"wNow":1442.226,"whLifetime":16901772.151,"varhLeadLifetime":5570580.691,"varhLagLifetime":-2279096.255,"vahLifetime":15070000.69,"rmsCurrent":5.832,"rmsVoltage":242.22,"reactPwr":220.992,"apprntPwr":1412.534,"pwrFactor":1,"whToday":11436.151,"whLastSevenDays":175675.151,"vahToday":9734.69,"varhLeadToday":3086.691,"varhLagToday":4289991444,"lines":[{"wNow":1442.226,"whLifetime":16901772.151,"varhLeadLifetime":5570580.691,"varhLagLifetime":-2279096.255,"vahLifetime":15070000.69,"rmsCurrent":5.832,"rmsVoltage":242.22,"reactPwr":220.992,"apprntPwr":1412.534,"pwrFactor":1,"whToday":11436.151,"whLastSevenDays":175675.151,"vahToday":9734.69,"varhLeadToday":3086.691,"varhLagToday":4289991444}]},{"type":"eim","activeCount":1,"measurementType":"net-consumption","readingTime":1688727423,"wNow":-1451.595,"whLifetime":10764827.98,"varhLeadLifetime":5570580.746,"varhLagLifetime":210246.867,"vahLifetime":15070000.69,"rmsCurrent":-6.179,"rmsVoltage":242.22,"reactPwr":5.65,"apprntPwr":-1496.586,"pwrFactor":-1,"whToday":0,"whLastSevenDays":0,"vahToday":0,"varhLeadToday":0,"varhLagToday":0,"lines":[{"wNow":-1451.595,"whLifetime":10764827.98,"varhLeadLifetime":5570580.746,"varhLagLifetime":210246.867,"vahLifetime":15070000.69,"rmsCurrent":-6.179,"rmsVoltage":242.22,"reactPwr":5.65,"apprntPwr":-1496.586,"pwrFactor":-1,"whToday":0,"whLastSevenDays":0,"vahToday":0,"varhLeadToday":0,"varhLagToday":0}]}],"storage":[{"type":"acb","activeCount":0,"readingTime":0,"wNow":0,"whNow":0,"state":"idle"}]}
[2023-07-07 12:57:03][ERROR] : Erreur sur la fonction cron du plugin : Call to a member function execCmd() on bool
[2023-07-07 12:58:02][DEBUG] : Call url https://192.168.0.14/production.json?details=1
[2023-07-07 12:58:02][DEBUG] : Results {"production":[{"type":"inverters","activeCount":12,"readingTime":1688727368,"wNow":2950,"whLifetime":229489},{"type":"eim","activeCount":1,"measurementType":"production","readingTime":1688727483,"wNow":2895.588,"whLifetime":6137563.97,"varhLeadLifetime":0.055,"varhLagLifetime":2489346.695,"vahLifetime":7802143.468,"rmsCurrent":12.037,"rmsVoltage":241.407,"reactPwr":212.994,"apprntPwr":2906.258,"pwrFactor":1,"whToday":11707.97,"whLastSevenDays":126852.97,"vahToday":12727.468,"varhLeadToday":0.055,"varhLagToday":2136.695,"lines":[{"wNow":2895.588,"whLifetime":6137563.97,"varhLeadLifetime":0.055,"varhLagLifetime":2489346.695,"vahLifetime":7802143.468,"rmsCurrent":12.037,"rmsVoltage":241.407,"reactPwr":212.994,"apprntPwr":2906.258,"pwrFactor":1,"whToday":11707.97,"whLastSevenDays":126852.97,"vahToday":12727.468,"varhLeadToday":0.055,"varhLagToday":2136.695}]}],"consumption":[{"type":"eim","activeCount":1,"measurementType":"total-consumption","readingTime":1688727483,"wNow":1442.32,"whLifetime":16901796.124,"varhLeadLifetime":5570580.693,"varhLagLifetime":-2279099.715,"vahLifetime":15070025.743,"rmsCurrent":5.836,"rmsVoltage":241.288,"reactPwr":212.466,"apprntPwr":1408.038,"pwrFactor":1,"whToday":11460.124,"whLastSevenDays":175699.124,"vahToday":9759.743,"varhLeadToday":3086.693,"varhLagToday":4289991444,"lines":[{"wNow":1442.32,"whLifetime":16901796.124,"varhLeadLifetime":5570580.693,"varhLagLifetime":-2279099.715,"vahLifetime":15070025.743,"rmsCurrent":5.836,"rmsVoltage":241.288,"reactPwr":212.466,"apprntPwr":1408.038,"pwrFactor":1,"whToday":11460.124,"whLastSevenDays":175699.124,"vahToday":9759.743,"varhLeadToday":3086.693,"varhLagToday":4289991444}]},{"type":"eim","activeCount":1,"measurementType":"net-consumption","readingTime":1688727483,"wNow":-1453.268,"whLifetime":10764803.709,"varhLeadLifetime":5570580.748,"varhLagLifetime":210246.979,"vahLifetime":15070025.743,"rmsCurrent":-6.202,"rmsVoltage":241.288,"reactPwr":-0.527,"apprntPwr":-1496.413,"pwrFactor":-1,"whToday":0,"whLastSevenDays":0,"vahToday":0,"varhLeadToday":0,"varhLagToday":0,"lines":[{"wNow":-1453.268,"whLifetime":10764803.709,"varhLeadLifetime":5570580.748,"varhLagLifetime":210246.979,"vahLifetime":15070025.743,"rmsCurrent":-6.202,"rmsVoltage":241.288,"reactPwr":-0.527,"apprntPwr":-1496.413,"pwrFactor":-1,"whToday":0,"whLastSevenDays":0,"vahToday":0,"varhLeadToday":0,"varhLagToday":0}]}],"storage":[{"type":"acb","activeCount":0,"readingTime":0,"wNow":0,"whNow":0,"state":"idle"}]}
[2023-07-07 12:58:02][ERROR] : Erreur sur la fonction cron du plugin : Call to a member function execCmd() on bool

Merci pour le fw Bison :slight_smile:

Même erreur chez moi donc (Passage V5 a V7 NOK , perte info - #148 par Pingu)

A suivre ici du coup.

Tu trouve ta gw sur https://entrez.enphaseenergy.com/login ? ou tu es passé via le lien où tu met le SN de ta GW en argument ? https://enlighten.enphaseenergy.com/entrez-auth-token?serial_num=xxxxxxxx

Je viens de faire un coup de « synchronisé » ça semble marcher mieux…

1 « J'aime »

En effet, idem :slight_smile:

@Loic une petite info dans le changelog, si tu peux, pour éviter les ennuis aux suivants ?

image

Plugin en PLS chez moi aussi depuis hier soir. J’ai ça dans les logs:

0017|[2023-07-07 00:30:26]ERROR : Erreur sur la fonction cron5 du plugin : Echec de la requête HTTP : http://IP_DE_L_ENVOY/api/v1/production/inverters cURL error : Operation timed out after 1238 milliseconds with 0 bytes received

J’ai tenté de redémarrer Jeedom et j’ai ça:

0018|[2023-07-07 14:36:28]INFO : Début d'activation du plugin
0019|[2023-07-07 14:36:29]INFO : Info sur le démon : {"launchable_message":"","launchable":"nok","state":"nok","log":"nok","auto":0}

Le fait d’actualiser ne résous pas de souci.

Oui c’est evident pour moi… Le soucis c’est que si je rajoute l’info ca va faire une nouvelle version et les gens vont demandé pourquoi…

Tu as du passé en v7 comme beaucoup de monde cette nuit faut mettre a jour le plugin et relancer la synchronisation

1 « J'aime »

Bon ben on va bien trouver un truc qui va pas :wink:
Par exemple Results {"production":[{"type":"inverters","activeCount":12, et le compte est à 1 dans le plugin
image

Je vais ouvrir un autre sujet

Ca sera corrigé demain en beta.

Des trucs qui vont pas va en avoir, deja rien suivant ou tu regardes dans le json ya pas le production en watt…

Merci Loïc je ne savais pas. C’est embêtant qu’ils puissent faire des MàJ à distance et tout casser comme ça… Du coup Jeedom ne me proposait pas de MàJ et effectivement en allant voir elle était bien dispo. Donc MàJ + création du token + actualisation et c’est out bon!

PS: j’ai mis un moment pour générer le token mais voici ou trouver votre ID:


J’espère que ça aidera d’autres.

PS2: Serait il possible de faire remonter la tension du système dans le module? J’avais réussi à bidouiller et faire remonter rmsVoltage mais depuis hier soir ça ne fonctionne plus (probablement parce que je ne sais pas comment accéder au json…

Merci!

Bonjour
Ça serait techniquement possible mais pas sûr de l’intérêt surtout que chaque commande en plus consomme de la ressource…

La tension est utile pour calculer l’ampérage et faire des scenarios de charge qui suivent la courbe de production solaire.

Avant je la remontais avec ce script:

// URL du fichier JSON
$jsonUrl = 'https://MONIP/production.json';

// Récupérer le contenu JSON depuis l'URL
$jsonData = file_get_contents($jsonUrl);

// Décoder le contenu JSON en tableau associatif
$data = json_decode($jsonData, true);

// Vérifier si la clé 'production' existe
if (isset($data['production'])) {
    // Parcourir le tableau 'production' pour trouver la valeur de la tension
    $tension = null;

    foreach ($data['production'] as $item) {
        if (isset($item['rmsVoltage'])) {
            $tension = $item['rmsVoltage'];
            break;
        }
    }

    // Vérifier si la tension a été trouvée
    if ($tension !== null) {
        // Mettre à jour la valeur dans Jeedom
        $scenario->setData('enphase_tension', $tension);
        $scenario->setLog('La tension (rmsVoltage) a été extraite avec succès. Tension : ' . $tension);
    } else {
        // Gérer le cas où la tension n'a pas été trouvée
        $scenario->setLog('La tension (rmsVoltage) n\'a pas été trouvée dans le fichier JSON.');
    }
} else {
    // Gérer le cas où la clé 'production' n'existe pas dans le fichier JSON
    $scenario->setLog('La clé "production" n\'existe pas dans le fichier JSON.');
    // Afficher le contenu du JSON pour le débogage
    $scenario->setLog('Contenu JSON : ' . $jsonData);

Mais je ne sais pas faire avec le token et les changements d’hier…

La tension varie pas tant que ça quand même et puis faire de la régulation avec jeedom ça doit pas être top sachant qu’il faut faire la régulation plusieurs fois par seconde normalement…

Après pour ton script faut juste passer en header l’autorisation beare et c’est bon. Regarde sur internet je l’ai fait ce matin juste pour que le plugin remarche.

Si ça fonctionne ce serait top! Est ce que tu pourrais me donner un coup de main là dessus parce que je veux bien " passer en header l’autorisation beare" mais c’est du chinois pour moi. ma seule compétence en code est de m’acharner sur des chatGPT pendant des heures jusqu’à ce qu’il me donne un truc qui fonctionne…

Regarde le plugin le fichier de class dans core/class tu as tout dedans c’est très simple.

1 « J'aime »

Ampère et tension sont disponible dans le json pour chaque phase

J’ai eu le même probleme ce matin.
Même après mise à jour et sychronisation cela ne fonctionnait pas.

J’ai du ajouter le token lié a la V7 dans le paramétrage du plugin en appuyant sur « Obtenir »

Bonjour,
Petite insomnie et beaucoup de bonne volonté mais ça fait 3h que je suis dessus et je n’arrive à rien.

Je crois comprendre que c’est cette partie de code qui permet l’authentification:

$url = 'https://' . config::byKey('envoy_ip', 'envoy') . $_path;
			$request_http = new com_http($url);
			$request_http->setHeader(array(
				'Content-Type: application/json',
				'Authorization: Bearer ' . config::byKey('envoy_jwt', 'envoy')
			));

J’ai adapté mon code comme ceci:

// URL du fichier JSON
$jsonUrl = 'https://192.168.1.112/production.json';

// Créer un contexte pour la requête avec l'en-tête d'authentification JWT
$opts = array(
    'http' => array(
        'header' => 'Authorization: Bearer MONTOKEN' . "\r\n",
        'ignore_errors' => true // Ignorer les erreurs HTTP pour accéder au contenu JSON
    )
);
$context = stream_context_create($opts);

// Récupérer le contenu JSON depuis l'URL en utilisant le contexte
$jsonData = @file_get_contents($jsonUrl, false, $context);

// Vérifier si le contenu JSON a pu être récupéré
if ($jsonData !== false) {
    // Décoder le contenu JSON en tableau associatif
    $data = json_decode($jsonData, true);

    // Vérifier si la clé 'production' existe
    if (isset($data['production'])) {
        // Parcourir le tableau 'production' pour trouver la valeur de la tension
        $tension = null;

        foreach ($data['production'] as $item) {
            if (isset($item['rmsVoltage'])) {
                $tension = $item['rmsVoltage'];
                break;
            }
        }

        // Vérifier si la tension a été trouvée
        if ($tension !== null) {
            // Mettre à jour la valeur dans Jeedom
            $scenario->setData('enphase_tension', $tension);
            $scenario->setLog('La tension (rmsVoltage) a été extraite avec succès. Tension : ' . $tension);
        } else {
            // Gérer le cas où la tension n'a pas été trouvée
            $scenario->setLog('La tension (rmsVoltage) n\'a pas été trouvée dans le fichier JSON.');
        }
    } else {
        // Gérer le cas où la clé 'production' n'existe pas dans le fichier JSON
        $scenario->setLog('La clé "production" n\'existe pas dans le fichier JSON.');
        // Afficher le contenu du JSON pour le débogage
        $scenario->setLog('Contenu JSON : ' . $jsonData);
    }
} else {
    // Gérer le cas où le contenu JSON n'a pas pu être récupéré
    $scenario->setLog('Erreur lors de la récupération du contenu JSON.');
}

Mais à priori toujours pas d’accès au production.json
Qu’est ce que je fais mal? Merci!

Yes ça j’ai bien vu et j’y avais accès avant. Le souci est juste un souci d’accès au production.json de mon côté. Et n’étant pas dev je suis bloqué :frowning: une idée pour m’aider?

Slt passe sur enphasesecure en attendant de débuger ton script