Comment arrêter le rafraîchissement mymodbus

Bonjour

Est-il possible de stopper momentanément sur une période, 20h à 6h par exemple, le rafraîchissement ou l’interrogation de mon onduleur solaredge, car il se met en veille dès qu’il n’y a plus de production, ce qui provoque des erreurs de log inutiles car les commandes ne sont plus accessibles provisoirement.

Pour info, je récupère la commande d’état de mon onduleur (veille ou production)
Merci

Bonsoir,

Un scénario qui désactive ton équipement mymodbus le soir et qui le réactive le matin devrait faire l’affaire

1 « J'aime »

Bonjour,

+1 avec Bison
Je sais que @thomaspascal a eu exactement le même problème avec le même matériel et crois qu’il fait comme ça.

A+
Michel

Bonjour,
J’ai un truc qui fait exactement ça, pour un onduleur solaire :
Gestion du scénario sur évènement et planifié :
image

  • Durant la nuit, je planifie la réactivation de l’équipement modbus ;
  • Lorsque l’onduleur ne répond plus, je relance le scénario.
    60 minutes après le lever du soleil, l’équipement est réactivé et je redémarre le démon :

    En cas d’échec de la communication, l’équipement est désactivé et je redémarre le démon :

    Le bloc code pour le redémarrage du démon, piqué je ne sais plus où sur community :
$_plugin_Id = 'mymodbus';
	// charger le plugin 
	$_plugin = plugin::byId($_plugin_Id);
	if (is_object($_plugin)) {
	    	// start deamon ...
		$scenario->setLog('démarrage du plugin ' . $_plugin_Id);    
    		$_plugin->deamon_start(true);    
		$scenario->setLog('status daemon du plugin : ' . $_plugin->deamon_info()['state']);
    }

Bonne journée.

1 « J'aime »

Bonjour

Merci, je vais tenter aussi.

Et je donnerai d’ici 2 ou trois jours un rex.

Bonjour

Donc j’ai fait dans un premier temps la solution de @Bison puis ta solution
qui me semble un peu moins violente (juste dans le log deux fois le I_statut) et deux erreur comme quoi le demon doit attendre 45’ avant de redémarrer, j’ai modifier le code
en ajoutant un sleep 50.

$_plugin_Id = 'mymodbus';
	// charger le plugin 
	$_plugin = plugin::byId($_plugin_Id);
	if (is_object($_plugin)) {
	    	// start deamon ...
		$scenario->setLog('démarrage du plugin ' . $_plugin_Id);
           // Attendre 50 secondes avant de démarrer le démon
    sleep(50);
    		$_plugin->deamon_start(true);    
		$scenario->setLog('status daemon du plugin : ' . $_plugin->deamon_info()['state']);
    }

Je verrai demain si cela va bien ou pas.

Bonne journée

En regardant de plus près, je vois que l’équipement est désactivé puis le démon redémarré. C’est inutile. Même s’il s’agit du seul équipement, le démon peut continuer de tourner « à vide » sans avoir besoin d’être arrêté ou redémarré. Le plugin gère l’activation et désactivation des équipements correctement.

Le démon est fait pour lancer un client pymodbus par équipement avec une interface de communication dédiée actif. Chaque client pymodbus est indépendant des autres.
Si plus aucun équipement n’est actif, il n’y a plus de client pymodbus et le démon attend que Jeedom lui envoie une nouvelle configuration avec un équipement actif.

Hello,

J’ai moyennement compris en quoi ma proposition était plus violente.

Il fait la même chose c’est à dire une désactivation ou activation de l’équipement et redémarre le démon ce qui fait du code et des étapes en plus, qui ne sont pas nécessaires comme l’indique Michel