Hello
De retour sur le sujet après un petit déplacement sans accès Jeedom.
Alors situation
Conf retenue:
*Désactivation de tous les équipements
*Création d’un seul équipement avec avec 2 @esclaves reflétant 2 onduleurs.
{
"ECU2onduleurs": {
"name": "ECU2onduleurs",
"eqType_name": "mymodbus",
"configuration": {
"createtime": "2025-01-28 11:19:08",
"eqProtocol": "tcp",
"eqRefreshMode": "polling",
"eqPolling": "10",
"eqTimeout": "5",
"eqRetries": "3",
"eqWriteCmdCheckTimeout": "0.01",
"eqFirstDelay": "0",
"eqErrorDelay": "1",
"eqPortNetwork": "502",
"updatetime": "2025-02-03 17:59:51",
"eqAddr": ""
},
"category": {
"heating": "0",
"security": "0",
"energy": "1",
"light": "0",
"opening": "0",
"automatism": "0",
"multimedia": "0",
"default": "0"
},
"display": {
"width": "786px",
"height": "216px"
},
"status": {
"lastCommunication": "2025-01-20 18:31:05",
"enableDatime": "2025-01-20 18:31:05"
},
"cache": [],
"commands": [
{
"logicalId": "polling",
"eqType": "mymodbus",
"name": "Polling",
"type": "info",
"subType": "numeric",
"isHistorized": "0",
"unite": "s",
"configuration": {
"cmdSlave": "1",
"cmdFctModbus": "1",
"cmdFormat": "bit",
"cmdInvertBytes": "0",
"cmdInvertWords": "0",
"cmdInvertDWords": "0",
"cmdFrequency": "1",
"logicalId": "polling"
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"isVisible": "0",
"alert": []
},
{
"logicalId": "refresh",
"eqType": "mymodbus",
"name": "Rafraîchir",
"type": "action",
"subType": "other",
"isHistorized": "0",
"configuration": {
"cmdSlave": "1",
"cmdFctModbus": "1",
"cmdFormat": "bit",
"cmdInvertBytes": "0",
"cmdInvertWords": "0",
"cmdInvertDWords": "0",
"cmdFrequency": "1",
"logicalId": "refresh"
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"isVisible": "1",
"alert": []
},
{
"eqType": "mymodbus",
"name": "SN",
"type": "info",
"subType": "string",
"isHistorized": "0",
"configuration": {
"cmdSlave": "1",
"cmdFctModbus": "3",
"cmdFormat": "s",
"cmdAddress": "40052[16]",
"cmdInvertBytes": "1",
"cmdInvertWords": "0",
"cmdInvertDWords": "0",
"cmdFrequency": "1"
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"isVisible": "1",
"alert": []
},
{
"logicalId": "cycle ok",
"eqType": "mymodbus",
"name": "Cycle OK",
"type": "info",
"subType": "binary",
"isHistorized": "1",
"configuration": {
"cmdSlave": "1",
"cmdFctModbus": "1",
"cmdFormat": "bit",
"cmdInvertBytes": "0",
"cmdInvertWords": "0",
"cmdInvertDWords": "0",
"cmdFrequency": "1",
"logicalId": "cycle ok"
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"isVisible": "1",
"alert": []
},
{
"logicalId": "refresh time",
"eqType": "mymodbus",
"name": "Temps de rafraîchissement",
"type": "info",
"subType": "numeric",
"isHistorized": "0",
"unite": "s",
"configuration": {
"cmdSlave": "1",
"cmdFctModbus": "1",
"cmdFormat": "bit",
"cmdInvertBytes": "0",
"cmdInvertWords": "0",
"cmdInvertDWords": "0",
"cmdFrequency": "1",
"logicalId": "refresh time"
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"isVisible": "0",
"alert": []
},
{
"eqType": "mymodbus",
"name": "Tension",
"type": "info",
"subType": "numeric",
"isHistorized": "0",
"configuration": {
"cmdSlave": "1",
"cmdFctModbus": "3",
"cmdFormat": "f",
"cmdAddress": "40138",
"cmdInvertBytes": "0",
"cmdInvertWords": "1",
"cmdInvertDWords": "0",
"cmdFrequency": "1"
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"isVisible": "1",
"alert": []
},
{
"eqType": "mymodbus",
"name": "Puissance",
"type": "info",
"subType": "numeric",
"isHistorized": "1",
"configuration": {
"cmdSlave": "1",
"cmdFctModbus": "3",
"cmdFormat": "f",
"cmdAddress": "40144",
"cmdInvertBytes": "0",
"cmdInvertWords": "1",
"cmdInvertDWords": "0",
"cmdFrequency": "1"
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"isVisible": "1",
"alert": []
},
{
"eqType": "mymodbus",
"name": "Courant",
"type": "info",
"subType": "numeric",
"isHistorized": "0",
"configuration": {
"cmdSlave": "1",
"cmdFctModbus": "3",
"cmdFormat": "f",
"cmdAddress": "40124",
"cmdInvertBytes": "0",
"cmdInvertWords": "1",
"cmdInvertDWords": "0",
"cmdFrequency": "1",
"timeline::enable": "0",
"influx::enable": "0",
"interact::auto::disable": "0",
"historizeRound": "1",
"jeedomCheckCmdOperator": "==",
"historizeMode": "avg",
"repeatEventManagement": "never",
"alert::messageReturnBack": "0",
"actionCheckCmd": [],
"jeedomPreExecCmd": [],
"jeedomPostExecCmd": []
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"display": {
"showNameOndashboard": "1",
"showNameOnmobile": "1",
"showIconAndNamedashboard": "0",
"showIconAndNamemobile": "0",
"forceReturnLineBefore": "0",
"forceReturnLineAfter": "0",
"parameters": []
},
"isVisible": "1",
"alert": []
},
{
"eqType": "mymodbus",
"name": "Frequence",
"type": "info",
"subType": "numeric",
"isHistorized": "0",
"configuration": {
"cmdSlave": "1",
"cmdFctModbus": "3",
"cmdFormat": "f",
"cmdAddress": "40146",
"cmdInvertBytes": "0",
"cmdInvertWords": "1",
"cmdInvertDWords": "0",
"cmdFrequency": "1",
"timeline::enable": "0",
"influx::enable": "0",
"interact::auto::disable": "0",
"historizeRound": "1",
"jeedomCheckCmdOperator": "==",
"historizeMode": "avg",
"repeatEventManagement": "never",
"alert::messageReturnBack": "0",
"actionCheckCmd": [],
"jeedomPreExecCmd": [],
"jeedomPostExecCmd": []
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"display": {
"showNameOndashboard": "1",
"showNameOnmobile": "1",
"showIconAndNamedashboard": "0",
"showIconAndNamemobile": "0",
"forceReturnLineBefore": "0",
"forceReturnLineAfter": "0",
"parameters": []
},
"isVisible": "1",
"alert": []
},
{
"eqType": "mymodbus",
"name": "Temperature",
"type": "info",
"subType": "numeric",
"isHistorized": "0",
"configuration": {
"cmdSlave": "1",
"cmdFctModbus": "3",
"cmdFormat": "f",
"cmdAddress": "40162",
"cmdInvertBytes": "0",
"cmdInvertWords": "1",
"cmdInvertDWords": "0",
"cmdFrequency": "1"
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"isVisible": "1",
"alert": []
},
{
"eqType": "mymodbus",
"name": "Energie",
"type": "info",
"subType": "numeric",
"isHistorized": "0",
"configuration": {
"cmdSlave": "1",
"cmdFctModbus": "3",
"cmdFormat": "f",
"cmdAddress": "40154",
"cmdInvertBytes": "0",
"cmdInvertWords": "1",
"cmdInvertDWords": "0",
"cmdFrequency": "1",
"timeline::enable": "0",
"influx::enable": "0",
"interact::auto::disable": "0",
"historizeRound": "0",
"jeedomCheckCmdOperator": "==",
"historizeMode": "avg",
"repeatEventManagement": "never",
"alert::messageReturnBack": "0",
"actionCheckCmd": [],
"jeedomPreExecCmd": [],
"jeedomPostExecCmd": []
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"display": {
"showNameOndashboard": "1",
"showNameOnmobile": "1",
"showIconAndNamedashboard": "0",
"showIconAndNamemobile": "0",
"forceReturnLineBefore": "0",
"forceReturnLineAfter": "0",
"parameters": []
},
"isVisible": "1",
"alert": []
},
{
"eqType": "mymodbus",
"name": "SN2",
"type": "info",
"subType": "string",
"isHistorized": "0",
"configuration": {
"cmdSlave": "2",
"cmdFctModbus": "3",
"cmdFormat": "s",
"cmdAddress": "40052[16]",
"cmdInvertBytes": "1",
"cmdInvertWords": "0",
"cmdInvertDWords": "0",
"cmdFrequency": "1"
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"isVisible": "1",
"alert": []
},
{
"eqType": "mymodbus",
"name": "Tension2",
"type": "info",
"subType": "numeric",
"isHistorized": "0",
"configuration": {
"cmdSlave": "2",
"cmdFctModbus": "3",
"cmdFormat": "f",
"cmdAddress": "40138",
"cmdInvertBytes": "0",
"cmdInvertWords": "1",
"cmdInvertDWords": "0",
"cmdFrequency": "1"
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"isVisible": "1",
"alert": []
},
{
"eqType": "mymodbus",
"name": "Puissance2",
"type": "info",
"subType": "numeric",
"isHistorized": "1",
"configuration": {
"cmdSlave": "2",
"cmdFctModbus": "3",
"cmdFormat": "f",
"cmdAddress": "40144",
"cmdInvertBytes": "0",
"cmdInvertWords": "1",
"cmdInvertDWords": "0",
"cmdFrequency": "1"
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"display": {
"graphStep": "1"
},
"isVisible": "1",
"alert": []
},
{
"eqType": "mymodbus",
"name": "Courant2",
"type": "info",
"subType": "numeric",
"isHistorized": "0",
"configuration": {
"cmdSlave": "2",
"cmdFctModbus": "3",
"cmdFormat": "f",
"cmdAddress": "40124",
"cmdInvertBytes": "0",
"cmdInvertWords": "1",
"cmdInvertDWords": "0",
"cmdFrequency": "1",
"timeline::enable": "0",
"influx::enable": "0",
"interact::auto::disable": "0",
"historizeRound": "2",
"jeedomCheckCmdOperator": "==",
"historizeMode": "avg",
"repeatEventManagement": "never",
"alert::messageReturnBack": "0",
"actionCheckCmd": [],
"jeedomPreExecCmd": [],
"jeedomPostExecCmd": []
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"display": {
"showNameOndashboard": "1",
"showNameOnmobile": "1",
"showIconAndNamedashboard": "0",
"showIconAndNamemobile": "0",
"forceReturnLineBefore": "0",
"forceReturnLineAfter": "0",
"parameters": []
},
"isVisible": "1",
"alert": []
},
{
"eqType": "mymodbus",
"name": "Frequence2",
"type": "info",
"subType": "numeric",
"isHistorized": "0",
"configuration": {
"cmdSlave": "2",
"cmdFctModbus": "3",
"cmdFormat": "f",
"cmdAddress": "40146",
"cmdInvertBytes": "0",
"cmdInvertWords": "1",
"cmdInvertDWords": "0",
"cmdFrequency": "1",
"timeline::enable": "0",
"influx::enable": "0",
"interact::auto::disable": "0",
"historizeRound": "1",
"jeedomCheckCmdOperator": "==",
"historizeMode": "avg",
"repeatEventManagement": "never",
"alert::messageReturnBack": "0",
"actionCheckCmd": [],
"jeedomPreExecCmd": [],
"jeedomPostExecCmd": []
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"display": {
"showNameOndashboard": "1",
"showNameOnmobile": "1",
"showIconAndNamedashboard": "0",
"showIconAndNamemobile": "0",
"forceReturnLineBefore": "0",
"forceReturnLineAfter": "0",
"parameters": []
},
"isVisible": "1",
"alert": []
},
{
"eqType": "mymodbus",
"name": "Temperature2",
"type": "info",
"subType": "numeric",
"isHistorized": "0",
"configuration": {
"cmdSlave": "2",
"cmdFctModbus": "3",
"cmdFormat": "f",
"cmdAddress": "40162",
"cmdInvertBytes": "0",
"cmdInvertWords": "1",
"cmdInvertDWords": "0",
"cmdFrequency": "1"
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"isVisible": "1",
"alert": []
},
{
"eqType": "mymodbus",
"name": "Energie2",
"type": "info",
"subType": "numeric",
"isHistorized": "0",
"configuration": {
"cmdSlave": "2",
"cmdFctModbus": "3",
"cmdFormat": "f",
"cmdAddress": "40154",
"cmdInvertBytes": "0",
"cmdInvertWords": "1",
"cmdInvertDWords": "0",
"cmdFrequency": "1",
"timeline::enable": "0",
"influx::enable": "0",
"interact::auto::disable": "0",
"historizeRound": "0",
"jeedomCheckCmdOperator": "==",
"historizeMode": "avg",
"repeatEventManagement": "never",
"alert::messageReturnBack": "0",
"actionCheckCmd": [],
"jeedomPreExecCmd": [],
"jeedomPostExecCmd": []
},
"template": {
"dashboard": "core::default",
"mobile": "core::default"
},
"display": {
"showNameOndashboard": "1",
"showNameOnmobile": "1",
"showIconAndNamedashboard": "0",
"showIconAndNamemobile": "0",
"forceReturnLineBefore": "0",
"forceReturnLineAfter": "0",
"parameters": []
},
"isVisible": "1",
"alert": []
}
]
}
}
*Aprés activation le cycle_ok est à 1. ok
Ci dessous l’historique.
A nouveau on voit que le booleen tombe vers 2h13 ne revient jamais à 1 alors que les mesures se font correctement (identiques à celles collectées par NodeRed sur l’id 1). Le tout sur 2jours consécutifs. Toujours ce décalage entre la logique du booleen et la réelle possiblité d’acquisition.
Conclusion le fait d’être sur un seul équipement ne change donc rien au pb de cohérence cycle_ok vs acquisitions correctes.
Encore une fois le booleen est à 0 alors que je peux acquerir des donnés également avec modbusdoctor.
resumé:
cycly_ok =0 alors que
acquisitions par MyModbus ok
acquisitions par Nodered ok
acquisitions par Modbusdoctor ok
Sur cette configuration ECU-C APS en Modbus TCP, le booleen n’arrive pas à remonter à 1 par la logique codée.
Le redemarrage du demon dans conf +refresh a permis de remonter à 1.
zone utilisée pour redémarrage demon.
Si j’ai un peu de temps, je vais essayé d’instrumenter une détection comm ko dans nodeRed pour voir comment ca se passe.
Au fait je suis en version beta (2025-01-24 11:07:19) car la version stable avant la maj ne fonctionnait pas pour moi.
les logs
mymodbus(3).txt (218,2 Ko)
mymodbus_daemon(1).txt (8,2 Mo)
erreur de ma part sur le log demon comme il était trop gros je l’ai raccourci mais a priori de trop…
si besoin j’en referai un nouveau couvrant cette nuit.
Les solutions possibles si on en reste là:
1Scénario d’arrêt acquisition pendant la période de « maintenance ECU » vers 2h13. mais rien ne prouve que sur un vrai pb de comm le booleen remontera pour ma configuration. → de la charge cpu inutile puisque fonctionnalité non certaine.
2Puisque mes acquisitions peuvent se faire correctement quelque soit l’etat du booléen, on oublie carrément le booléen qui n’est pas complètement pertinent sur mon installation.
3*Je reste sur nodered/Mqtt avec mes 3 machines impliqués (Box pour nodered Modbus et transfert MQTT sous debian / Syno pour mosquitto/ Jeedom pour recup MQTT). Ce qui revient en l’état à ne pas avoir de booleen de bon fonctionnement (identique à solution 2).
A noter que si d’autres lecteurs ont un ECU-C APSystem ce serait probablement intéressant de faire un essai. Le template de conf equipement est dispo dans le fil de discussion. Cela permettrait de confirmer ou non que la logique de remontée du booleen n’est pas compatible avec une conf Modbus TCP sur ECU-C APS ou l’inverse peut importe ou s’il s’agit d’un cas de figure local.
Pour éviter toute éventuelle incompréhension avec des lecteurs de ce fil, le but de cet échange n’est pas de mettre un quelconque doute sur ce plugin.
En dehors de ce pb que j’ai sur ma conf, ce plugin fait le job est représente une excellente solution qui plus est gratos. La configuration d’un équipement est vraiment rapide, conviviale et bien pensée. (comparé à ce que j’ai sur NodeRed c’est du bonheur)+ gros travail de doc.
Bravo et merci beaucoup au créateur et contributeurs pour la somme colossale de boulot qu’il y a derriere ce genre de plugin.
A+