Comment arrêter le rafraîchissement mymodbus

Je ne sais pas comment de donner plus d’infos, dans mon dernier message c’est bien log info de 23h06 à 23h07 du démon et rien autour de l’heure désactivation/d’activation et dans mon message d’avant le log du plugin installé.

Dit moi où je dois aller pour ce que tu à besoin en image stp, j’ai cherché et je n’ais pas trouvé plus.

Excuse moi

Tu avais passé le démon en log info ou début puis redémarré celui-ci ? Parce que tu devrais avoir plus de logs que juste des ERROR

1 « J'aime »

Non, ce type de code n’est pas implémenté parce que MyModbus est un plugin avec un démon qui tourne en tâche de fond. Ce démon envoie les données à Jeedom, ces données sont donc toujours à jour, inutile de les interroger pour les rafraichir. Si l’équipement est activé (et sauvegardé) alors ses données sont rafraichies comme configuré.

Les log du démon permettent de savoir ce que le démon fait ou a fait.


Tu devrais en effet avoir plus de log sauf si tu as limité le nombre de lignes des fichiers log à 30 dans la configuration Jeedom. Par défaut c’est sur 500 ou 100 lignes, je ne sais plus.
Dans les log envoyés, il n’y a que 30 lignes. La dernière ligne est pour I_AC_Fréquence, j’imagine donc que l’équipement a 11 commandes info :

  • M_AC_PF
  • I_DC_Voltage
  • I_DC_Current
  • I_Statut
  • I_AC_Power
  • I_Temp_Sink
  • M_AC_Power
  • I_AC_VoltageCA
  • I_AC_Current
  • M_AC_VA_A
  • I_AC_Fréquence

Or on ne voit pas le défaut pour les 3 premières commandes à 23:06. Le log est donc tronqué, soit par toi, soit par Jeedom. Si c’est Jeedom qui tronque, il faut modifier la configuration du nombre de lignes dans des log. Si c’est toi, cf mon message plus haut.

Le log est donc tronqué, soit par toi, soit par Jeedom

Oui en effet j’avais oublié ce détail, je te reverrai le log demain. :upside_down_face:

Merci à toi

1 « J'aime »

Pense bien à avoir redémarré le démon si le niveau de log a été modifié, pour que celui-ci soit pris en compte par le démon. Sinon ça décallera encore d’un jour.

Bonjour

Voici, j’espère que c’est bien ça qu’il te faut.
Et oui j’ai 11 commandes.

Merci, bonne journée

0000|[2025-05-25 23:07:00]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0001|[2025-05-25 23:07:00]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0002|[2025-05-25 23:07:00]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0003|[2025-05-25 23:07:01]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0004|[2025-05-25 23:07:03]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0005|[2025-05-25 23:07:04] ERROR  : Cancel send, because not connected!
0006|[2025-05-25 23:07:06]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0007|[2025-05-25 23:07:09] ERROR  : Cancel send, because not connected!
0008|[2025-05-25 23:07:14] ERROR  : Cancel send, because not connected!
0009|[2025-05-25 23:07:17]WARNING : Failed to connect
0010|[2025-05-25 23:07:19] ERROR  : No response received after 3.0 retries, continue with next request
0011|[2025-05-25 23:07:19] ERROR  : Onduleur Solaredge/I_DC_Current: exception during read request on device id 1, address 40096 -> Modbus Error: [Input/Output] No response received after 3.0 retries, continue with next request
0012|[2025-05-25 23:07:25]WARNING : Failed to connect
0013|[2025-05-25 23:07:25] ERROR  : Onduleur Solaredge/I_Statut: exception during read request on device id 1, address 40107 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0014|[2025-05-25 23:07:27]WARNING : Failed to connect [Errno 113] Connect call failed ('192.168.1.11', 1502)
0015|[2025-05-25 23:07:27] ERROR  : Onduleur Solaredge/I_AC_Power: exception during read request on device id 1, address 40083 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0016|[2025-05-25 23:07:30]WARNING : Failed to connect [Errno 113] Connect call failed ('192.168.1.11', 1502)
0017|[2025-05-25 23:07:30] ERROR  : Onduleur Solaredge/I_Temp_Sink: exception during read request on device id 1, address 40103 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0018|[2025-05-25 23:07:33]WARNING : Failed to connect [Errno 113] Connect call failed ('192.168.1.11', 1502)
0019|[2025-05-25 23:07:33]WARNING : Failed to connect [Errno 113] Connect call failed ('192.168.1.11', 1502)
0020|[2025-05-25 23:07:33] ERROR  : Onduleur Solaredge/M_AC_Power: exception during read request on device id 1, address 40206 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0021|[2025-05-25 23:07:36]WARNING : Failed to connect [Errno 113] Connect call failed ('192.168.1.11', 1502)
0022|[2025-05-25 23:07:36]WARNING : Failed to connect [Errno 113] Connect call failed ('192.168.1.11', 1502)
0023|[2025-05-25 23:07:36] ERROR  : Onduleur Solaredge/I_AC_VoltageCA: exception during read request on device id 1, address 40076 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0024|[2025-05-25 23:07:36]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0025|[2025-05-25 23:07:37]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0026|[2025-05-25 23:07:37]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0027|[2025-05-25 23:07:37] ERROR  : Onduleur Solaredge/I_AC_Current: exception during read request on device id 1, address 40072 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0028|[2025-05-25 23:07:37]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0029|[2025-05-25 23:07:38]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0030|[2025-05-25 23:07:38]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0031|[2025-05-25 23:07:38]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0032|[2025-05-25 23:07:38] ERROR  : Onduleur Solaredge/M_AC_VA_A: exception during read request on device id 1, address 40212 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0033|[2025-05-25 23:07:39]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0034|[2025-05-25 23:07:39]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0035|[2025-05-25 23:07:39]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0036|[2025-05-25 23:07:39] ERROR  : Onduleur Solaredge/I_AC_Fréquence: exception during read request on device id 1, address 40204 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0037|[2025-05-25 23:07:40]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0038|[2025-05-25 23:07:40]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0039|[2025-05-25 23:07:40]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0040|[2025-05-25 23:07:40]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0041|[2025-05-25 23:07:41] ERROR  : Onduleur Solaredge/M_AC_PF: exception during read request on device id 1, address 40221 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0042|[2025-05-25 23:07:41]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0043|[2025-05-25 23:07:41]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0044|[2025-05-25 23:07:42]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0045|[2025-05-25 23:07:42]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0046|[2025-05-25 23:07:42] ERROR  : Onduleur Solaredge/I_DC_Voltage: exception during read request on device id 1, address 40098 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0047|[2025-05-25 23:07:42]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0048|[2025-05-25 23:07:43]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0049|[2025-05-25 23:07:43]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0050|[2025-05-25 23:07:43] ERROR  : Onduleur Solaredge/I_DC_Current: exception during read request on device id 1, address 40096 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0051|[2025-05-25 23:07:43]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0052|[2025-05-25 23:07:43]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0053|[2025-05-25 23:07:44]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0054|[2025-05-25 23:07:44]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0055|[2025-05-25 23:07:44] ERROR  : Onduleur Solaredge/I_Statut: exception during read request on device id 1, address 40107 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0056|[2025-05-25 23:07:44]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0057|[2025-05-25 23:07:45]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0058|[2025-05-25 23:07:45]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0059|[2025-05-25 23:07:45]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0060|[2025-05-25 23:07:45] ERROR  : Onduleur Solaredge/I_AC_Power: exception during read request on device id 1, address 40083 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0061|[2025-05-25 23:07:45]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0062|[2025-05-25 23:07:46]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0063|[2025-05-25 23:07:46]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0064|[2025-05-25 23:07:46] ERROR  : Onduleur Solaredge/I_Temp_Sink: exception during read request on device id 1, address 40103 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0065|[2025-05-25 23:07:46]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0066|[2025-05-25 23:07:47]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0067|[2025-05-25 23:07:47]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0068|[2025-05-25 23:07:47]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0069|[2025-05-25 23:07:47] ERROR  : Onduleur Solaredge/M_AC_Power: exception during read request on device id 1, address 40206 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0070|[2025-05-25 23:07:48]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0071|[2025-05-25 23:07:48]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0072|[2025-05-25 23:07:48]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0073|[2025-05-25 23:07:48] ERROR  : Onduleur Solaredge/I_AC_VoltageCA: exception during read request on device id 1, address 40076 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0074|[2025-05-25 23:07:48]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0075|[2025-05-25 23:07:49]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0076|[2025-05-25 23:07:49]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0077|[2025-05-25 23:07:49]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0078|[2025-05-25 23:07:49] ERROR  : Onduleur Solaredge/I_AC_Current: exception during read request on device id 1, address 40072 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0079|[2025-05-25 23:07:50]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0080|[2025-05-25 23:07:50]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0081|[2025-05-25 23:07:50]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0082|[2025-05-25 23:07:50]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0083|[2025-05-25 23:07:51] ERROR  : Onduleur Solaredge/M_AC_VA_A: exception during read request on device id 1, address 40212 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0084|[2025-05-25 23:07:51]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0085|[2025-05-25 23:07:51]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0086|[2025-05-25 23:07:52]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0087|[2025-05-25 23:07:52] ERROR  : Onduleur Solaredge/I_AC_Fréquence: exception during read request on device id 1, address 40204 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0088|[2025-05-25 23:07:52]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0089|[2025-05-25 23:07:52]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0090|[2025-05-25 23:07:52]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0091|[2025-05-25 23:07:53]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0092|[2025-05-25 23:07:53] ERROR  : Onduleur Solaredge/M_AC_PF: exception during read request on device id 1, address 40221 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0093|[2025-05-25 23:07:53]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0094|[2025-05-25 23:07:53]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0095|[2025-05-25 23:07:54]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0096|[2025-05-25 23:07:54]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0097|[2025-05-25 23:07:54] ERROR  : Onduleur Solaredge/I_DC_Voltage: exception during read request on device id 1, address 40098 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0098|[2025-05-25 23:07:54]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0099|[2025-05-25 23:07:54]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0100|[2025-05-25 23:07:55]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0101|[2025-05-25 23:07:55] ERROR  : Onduleur Solaredge/I_DC_Current: exception during read request on device id 1, address 40096 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0102|[2025-05-25 23:07:55]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0103|[2025-05-25 23:07:55]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0104|[2025-05-25 23:07:56]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0105|[2025-05-25 23:07:56]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0106|[2025-05-25 23:07:56] ERROR  : Onduleur Solaredge/I_Statut: exception during read request on device id 1, address 40107 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.11:1502]
0107|[2025-05-25 23:07:57]WARNING : Failed to connect [Errno 111] Connect call failed ('192.168.1.11', 1502)
0108|[2025-05-26 04:01:03] INFO  : MyModbusd: Command 'read' received from jeedom: sending the command to MyModbusClient

Petite question toute con, as tu vérifié si le port était bien 1502 car en général c’est 502.

Edit: laisse tomber j’avais perdu le contexte

Bonjour

Car j’ai un autre équipement.

Voici ce qu’il me faudrait, là on ne voit pas si l’équipement a été touché (activé, désactivé).


J’ai fait des essais de mon coté, en fait il n’y a pas d’événement déclenché par le core lorsqu’un éeuipement est activé ou désactivé. Dans MyModbus, j’ai fait une mise à jour du démon lors de la sauvegarde d’un équipement. Je vais poser la question dans le coin des dev.

En attendant, pour que ça fonctionne chez toi, il faudrait que tu fasses un bloc code de ce type (à adapter / tester / corriger) :

$equipement = eqLogic::byString('#[ton][équipement]#');
$equipement->setIsEnable(false); // false pour désactivation, true pour activation
$equipement->save(); // sauvegarde

je ne sais pas mais perso je teste si l’équipement est actif avant de traiter, par exemple:

        $isEnable = false;
        try {
            $isEnable = $this->getIsEnable();
        } catch (Exception $e) {
            log::add('APSystemsSunspec', 'error', 'Erreur lors de l\'appel à getIsEnable : ' . $e->getMessage());
            return;
        }

là pour ce plugin ce n’est pas un démon python mais pour toi tu pourrais envoyer l’info en direct au démon par le port de comm que tu pourrais traiter dans ta fonction on_message de mymodbusd.py

Au passage, j’utilise cette fonction pour changer en live le niveau de log, cela évite de devoir relancer le démon si changement de niveau de log:

dans le fichier class:

    public static function changeLogLive($level)
    {
        $activation_Modem = (config::byKey('activation_Modem', 'teleinfo') == "") ? 1 : config::byKey('activation_Modem', 'teleinfo');
        $activation_Mqtt = (config::byKey('activation_Mqtt', 'teleinfo') == "") ? 0 : config::byKey('activation_Mqtt', 'teleinfo');
        $productionActivated = (config::byKey('port_modem2', 'teleinfo') == "") ? 0 : config::byKey('port_modem2', 'teleinfo');
        if (($activation_Modem=='0') && ($activation_Mqtt=='0')) {
            log::add('teleinfo', 'info', __('pas d envoi de message faute de configuration', __FILE__));
            return false;
        }
        sleep(1); // attend que le level ait eu le temps de s'écrire dans la bdd
        $value['cmd'] = 'changelog';
        $value['level'] = log::convertLogLevel(log::getLogLevel('teleinfo'));
        $socketport = config::byKey('socketport', __CLASS__, '55062');
        $value['apikey'] = jeedom::getApiKey(__CLASS__);
        if ($activation_Modem==1 && $productionActivated == 0){
            self::sendToDaemon($value,'serial', $socketport);
        }
        if ($activation_Mqtt==1){
            // $value = json_encode($value);
            self::sendToDaemon($value,'mqtt', $socketport + 2);
        }
        if ($activation_Modem==1 && $productionActivated == 1) {
            self::sendToDaemon($value,'prod', $socketport + 1);
        }
}


Dans le python

def read_socket(cycle):
    while True:
        try:
            global JEEDOM_SOCKET_MESSAGE
            if not JEEDOM_SOCKET_MESSAGE.empty():
                logging.debug("SOCKET-READ------Message received in socket JEEDOM_SOCKET_MESSAGE")
                message = json.loads(JEEDOM_SOCKET_MESSAGE.get())
                logging.debug("SOCKET-READ------Message received in socket JEEDOM_SOCKET_MESSAGE " + message['cmd'])
                if message['apikey'] != globals.apikey:
                    logging.error("SOCKET-READ------Invalid apikey from socket : " + str(message))
                    return
                logging.debug('SOCKET-READ------Received command from jeedom : ' + str(message['cmd']))
                if message['cmd'] == 'action':
                    logging.debug('SOCKET-READ------Attempt an action on a device')
                    _thread.start_new_thread(action_handler, (message,))
                    logging.debug('SOCKET-READ------Action Thread Launched')
                elif message['cmd'] == 'changelog':
                    log = logging.getLogger()
                    for hdlr in log.handlers[:]:
                        log.removeHandler(hdlr)
                    jeedom_utils.set_log_level('info')
                    logging.info('SOCKET-READ------Passage des log du demon en mode ' + message['level'])
                    for hdlr in log.handlers[:]:
                        log.removeHandler(hdlr)
                    jeedom_utils.set_log_level(message['level'])
        except Exception as e:
            logging.error(f"SOCKET-READ------Exception on socket : {e}")
            logging.debug("MQTT------" + traceback.format_exc())
        time.sleep(cycle)

def listen():
    jeedom_socket.open()
    try:
        _thread.start_new_thread(read_socket, (globals.cycle,))
        _thread.start_new_thread(listen_mqtt())
        logging.info('MQTT------Tout roule')
        while 1:
            time.sleep(0.5)
    except KeyboardInterrupt:
        shutdown()


Le principe de base du fonctionnement du plugin n’est pas le même. Le mien s’appuie sur la bibliothèque de JeeDaemon. Avant que je n’utilise cette bibliothèque le changement de log à la volée fonctionnait aussi.

Le démon ne sait pas si un équipement est activé ou désactivé s’il n’est pas sauvegardé puisque c’est un process indépendant. Si le démon envoie des données d’un équipement désactivé, je peux effectivement filtrer les données mais les logs erreur du démon continueront. Par contre si je lance une mise à jour du démon dans ce cas-là, je n’ai pas de possibilité de réactiver l’équipement pour le démon puisqu’il n’y a pas d’événement…
Et ça quelle que soit la bibliothèque utilisée.

Mais tu peux envoyer un message au démon et par ce message après c’est toi qui gère ou alors qq chose m’échappe ? Toi ou la bibliothèque utilisez bien la fonction on_message du demon pour recevoir des commandes de la class. Par exemple le démon stop envoie par message la commande « quit » qui arrête ton démon:

  public static function deamon_stop() {
    ...
    $message = [];
    $message['CMD'] = 'quit';
    self::sendToDaemon($message);

qui est ensuite traitée dans ton démon par là:

  async def on_message(self, message: dict) -> None:
    """
    Message reçu de Jeedom
    """
    self._logger.debug(f"{self.__n}: 'on_message' '''{message}'''")
    # Checking if it is a command
    if "CMD" not in message:
      self._logger.error(f"{self.__n}: Received data without CMD: {message}")
      return
    else:
      # Quit
      if message["CMD"] == "quit":
        self._logger.info(f"{self.__n}: Command 'quit' received from jeedom: exiting")
        eqIds = [id for id in self._mymodbus_clients.keys()]
        for eqId in eqIds:
          await self.terminate_client(eqId)
        asyncio.create_task(self.stop())
        

et c’est là (enfin dans une fonction similaire) que je traite le changement de log (et c’est d’une façon similaire que tu peux traiter le changement activé / désactivé de tes équipements je pense):

                elif message['cmd'] == 'changelog':
                    log = logging.getLogger()
                    for hdlr in log.handlers[:]:
                        log.removeHandler(hdlr)
                    jeedom_utils.set_log_level('info')
                    logging.info('SOCKET-READ------Passage des log du demon en mode ' + message['level'])
                    for hdlr in log.handlers[:]:
                        log.removeHandler(hdlr)
                    jeedom_utils.set_log_level(message['level'])

que je lui ai envoyée par la fonction de mon message précédent appelée par jeedom à chaque changement de level: changeLogLive

Ok, je détaille ma pensée de mon message précédent : Si le plugin reçoit des informations du démon concernant un équipement désactivé, le plugin peut envoyer l’info comme quoi l’équipement est désactivé mais si le plugin ne reçoit pas d’informations du démon pour un équipement activé, ça veut ju#se dire qu’il n’y a pas de changement de valeur… L’équipement n’est pas forcément désactivé pour le démon.
C’est ça que j’ai essayé de dire en parlant de réactivation.

On peut bidouiller un truc avec une interrogation toutes les minutes par exemple mais le mieux c’est l’événement sur activation ou désactivation.

Bonsoir

Comme je ne suis pas forcément aventurier et ne sais pas ou et faire pour
modifier Class et python.
Un bloc code dans un sénario me parait plus simple pour moi, mais je met quoi en déclencheur?

Merci à tous pour votre aide

// Récupérer l'équipement
$equipement = eqLogic::byString('#[Photovoltaique][Onduleur Solaredge]#');

// Fonction pour désactiver l'équipement
function desactiverEquipement($equipement) {
    if (is_object($equipement)) {
        $equipement->setIsEnable(false); // false pour désactivation
        $equipement->save(); // sauvegarde
        log::add('scenario', 'info', 'Équipement désactivé');
    } else {
        log::add('scenario', 'error', 'Équipement non trouvé');
    }
}

// Fonction pour activer l'équipement
function activerEquipement($equipement) {
    if (is_object($equipement)) {
        $equipement->setIsEnable(true); // true pour activation
        $equipement->save(); // sauvegarde
        log::add('scenario', 'info', 'Équipement activé');
    } else {
        log::add('scenario', 'error', 'Équipement non trouvé');
    }
}

Ce code sert à déclarer les 2 fonctions, mais n’exécute rien.

non je verrai plus dans le postSave, on est bien obligé de sauvegarder si on active ou désactive un équipement

Est ce qu’un bloc code de se type pourrait aider.

// Scénario pour éviter les erreurs du démon mymodbus lors de la désactivation d'un équipement
scenario({
    trigger: {
        type: 'event',
        event: 'postSave',
        device: 'votre_equipement_id' // Remplacez par l'ID de votre équipement
    },
    action: function(event) {
        var device = event.device;
        if (device.status === 'inactive') {
            // Désactiver le démon mymodbus pour cet équipement
            jeedom.mymodbus.disableDevice(device.id);
            log('Démon mymodbus désactivé pour l\'équipement ' + device.name);
        } else if (device.status === 'active') {
            // Réactiver le démon mymodbus pour cet équipement
            jeedom.mymodbus.enableDevice(device.id);
            log('Démon mymodbus réactivé pour l\'équipement ' + device.name);
        }
    }
});

Ben non justement pas si l’activation ou la désactivation se fait par scénario. C’est le résultat de mon test et c’est le problème ici aussi.

Le problème est identique mais dans un autre language de programmation.

Pourquoi passer en JS ?! Le PHP fonctionne très bien. Tu peux déclarer les 2 fonctions dans le fichier qui va bien (je ne sais plus lequel, mais c’est dans la documentation) et les appeler dans un scénario.

Bonjour

Actuellement, j’ai ma fille qui apprend le python et autre à l’école, et m’a montré avec IA quelques astuces mais je ne sais pas intégrer à jeedom, mes compétences sont limitées, je vais essayer de voir dans la doc si je trouve.
Est-ce que je peux faire un scénario pour mettre à jour le démon à chaque changement? A priori oui?

Est-il possible de proposer une telle fonction depuis une option intégrer quelques part sur le dashboard, à l’équipe jeedom?
Merci