Bonjour
Très sympa ce sujet, même si je suis dépassé pour la plupart du temps
pour répondre @Sylvain_G
j’ai le même problème avec le système mise en place via MQTT.
effectivement j’avais des trames qui passent a zéro et du coup mes utility meters partaient en vrille
je me suis un peu tiré les cheveux afin de filtrer tout cela via node red ( d’ailleurs c’est pour le moment le seul flow mis en place chez moi.
Désolé de la piètre qualité de ce flow, mais je ne parle par couramment le JSON et encore moins le Java.
[
{
"id": "1eb4d24d.5cb37e",
"type": "tab",
"label": "TELEINFO",
"disabled": false,
"info": ""
},
{
"id": "5ac9bead.08f838",
"type": "mqtt in",
"z": "1eb4d24d.5cb37e",
"name": "HCHP",
"topic": "WTeleinfo/021861321451/HCHP",
"qos": "2",
"datatype": "auto",
"broker": "1eb4fa04.85f54e",
"x": 130,
"y": 180,
"wires": [
[
"b7e01771.e1b508",
"a3cdb829.7a74f8"
]
]
},
{
"id": "383e5703.1ad87",
"type": "mqtt in",
"z": "1eb4d24d.5cb37e",
"name": "HCHC",
"topic": "WTeleinfo/021861321451/HCHC",
"qos": "2",
"datatype": "auto",
"broker": "1eb4fa04.85f54e",
"x": 130,
"y": 40,
"wires": [
[
"3553eab9.e73a56",
"b336ecff.f28a78"
]
]
},
{
"id": "b64063ca.5aa91",
"type": "mqtt in",
"z": "1eb4d24d.5cb37e",
"name": "IINST",
"topic": "WTeleinfo/021861321451/IINST",
"qos": "2",
"datatype": "auto",
"broker": "1eb4fa04.85f54e",
"x": 130,
"y": 420,
"wires": [
[
"2ca1f1f6.3f3866",
"13f52c2a.33f8b4"
]
]
},
{
"id": "d683f5f.3752708",
"type": "mqtt in",
"z": "1eb4d24d.5cb37e",
"name": "IIMAX",
"topic": "WTeleinfo/021861321451/IIMAX",
"qos": "2",
"datatype": "auto",
"broker": "1eb4fa04.85f54e",
"x": 130,
"y": 559,
"wires": [
[
"caf7fb67.94051"
]
]
},
{
"id": "7d66d9a4.dc9778",
"type": "mqtt in",
"z": "1eb4d24d.5cb37e",
"name": "PAPP",
"topic": "WTeleinfo/021861321451/PAPP",
"qos": "2",
"datatype": "auto",
"broker": "1eb4fa04.85f54e",
"x": 130,
"y": 660,
"wires": [
[
"ba129802.4f52b8"
]
]
},
{
"id": "df7ee000.2c894",
"type": "mqtt in",
"z": "1eb4d24d.5cb37e",
"name": "PTEC",
"topic": "WTeleinfo/021861321451/PTEC",
"qos": "2",
"datatype": "auto",
"broker": "1eb4fa04.85f54e",
"x": 130,
"y": 320,
"wires": [
[
"f48366c9.e175c8"
]
]
},
{
"id": "3553eab9.e73a56",
"type": "function",
"z": "1eb4d24d.5cb37e",
"name": "HCHC",
"func": "msg.payload = Number(msg.payload)/1000; return msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"x": 350,
"y": 80,
"wires": [
[
"f065bec8.c1f2b"
]
]
},
{
"id": "c972c6a3.40361",
"type": "debug",
"z": "1eb4d24d.5cb37e",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 870,
"y": 40,
"wires": []
},
{
"id": "b7e01771.e1b508",
"type": "function",
"z": "1eb4d24d.5cb37e",
"name": "HCHP",
"func": "msg.payload = Number(msg.payload)/1000; return msg;",
"outputs": 1,
"noerr": 0,
"x": 350,
"y": 220,
"wires": [
[
"cb94715d.3d222"
]
]
},
{
"id": "1c2f628d.8b1ab5",
"type": "debug",
"z": "1eb4d24d.5cb37e",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 870,
"y": 180,
"wires": []
},
{
"id": "2ca1f1f6.3f3866",
"type": "function",
"z": "1eb4d24d.5cb37e",
"name": "IINST",
"func": "msg.payload = Number(msg.payload); return msg;",
"outputs": 1,
"noerr": 0,
"x": 350,
"y": 460,
"wires": [
[
"47670f25.5281c",
"96e11fc4.ece0a8"
]
]
},
{
"id": "47670f25.5281c",
"type": "debug",
"z": "1eb4d24d.5cb37e",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 590,
"y": 460,
"wires": []
},
{
"id": "caf7fb67.94051",
"type": "function",
"z": "1eb4d24d.5cb37e",
"name": "IIMAX",
"func": "msg.payload = Number(msg.payload); return msg;",
"outputs": 1,
"noerr": 0,
"x": 350,
"y": 560,
"wires": [
[
"17d79178.6cff27",
"c998cf92.c55938"
]
]
},
{
"id": "17d79178.6cff27",
"type": "debug",
"z": "1eb4d24d.5cb37e",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 590,
"y": 560,
"wires": []
},
{
"id": "ba129802.4f52b8",
"type": "function",
"z": "1eb4d24d.5cb37e",
"name": "PAPP",
"func": "msg.payload = Number(msg.payload); return msg;",
"outputs": 1,
"noerr": 0,
"x": 350,
"y": 660,
"wires": [
[
"d665b12d.4cb228",
"134cbba5.cde98c"
]
]
},
{
"id": "d665b12d.4cb228",
"type": "debug",
"z": "1eb4d24d.5cb37e",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 590,
"y": 660,
"wires": []
},
{
"id": "fcf9b0ad.ab2ef8",
"type": "mqtt out",
"z": "1eb4d24d.5cb37e",
"name": "teleinfo_HCHC",
"topic": "teleinfo/HCHC",
"qos": "2",
"retain": "true",
"broker": "1eb4fa04.85f54e",
"x": 880,
"y": 80,
"wires": []
},
{
"id": "53a96bcf.7bf934",
"type": "mqtt out",
"z": "1eb4d24d.5cb37e",
"name": "teleinfo_HCHP",
"topic": "teleinfo/HCHP",
"qos": "2",
"retain": "true",
"broker": "1eb4fa04.85f54e",
"x": 880,
"y": 220,
"wires": []
},
{
"id": "f3a96a9.9b91218",
"type": "mqtt out",
"z": "1eb4d24d.5cb37e",
"name": "teleinfo_PTEC",
"topic": "teleinfo/PTEC",
"qos": "2",
"retain": "true",
"broker": "1eb4fa04.85f54e",
"x": 600,
"y": 360,
"wires": []
},
{
"id": "96e11fc4.ece0a8",
"type": "mqtt out",
"z": "1eb4d24d.5cb37e",
"name": "teleinfo_IINST",
"topic": "teleinfo/IINST",
"qos": "2",
"retain": "true",
"broker": "1eb4fa04.85f54e",
"x": 600,
"y": 500,
"wires": []
},
{
"id": "c998cf92.c55938",
"type": "mqtt out",
"z": "1eb4d24d.5cb37e",
"name": "teleinfo_IIMAX",
"topic": "teleinfo/IIMAX",
"qos": "2",
"retain": "true",
"broker": "1eb4fa04.85f54e",
"x": 600,
"y": 600,
"wires": []
},
{
"id": "134cbba5.cde98c",
"type": "mqtt out",
"z": "1eb4d24d.5cb37e",
"name": "teleinfo_PAPP",
"topic": "teleinfo/PAPP",
"qos": "2",
"retain": "true",
"broker": "1eb4fa04.85f54e",
"x": 600,
"y": 720,
"wires": []
},
{
"id": "f2ddf52f.48e44",
"type": "debug",
"z": "1eb4d24d.5cb37e",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 590,
"y": 320,
"wires": []
},
{
"id": "f48366c9.e175c8",
"type": "change",
"z": "1eb4d24d.5cb37e",
"name": "",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "$substring(payload,0,2)",
"tot": "jsonata"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 380,
"y": 320,
"wires": [
[
"f2ddf52f.48e44",
"f3a96a9.9b91218"
]
]
},
{
"id": "13f52c2a.33f8b4",
"type": "debug",
"z": "1eb4d24d.5cb37e",
"name": "",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 370,
"y": 420,
"wires": []
},
{
"id": "b336ecff.f28a78",
"type": "debug",
"z": "1eb4d24d.5cb37e",
"name": "",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 370,
"y": 40,
"wires": []
},
{
"id": "a3cdb829.7a74f8",
"type": "debug",
"z": "1eb4d24d.5cb37e",
"name": "",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 370,
"y": 180,
"wires": []
},
{
"id": "f065bec8.c1f2b",
"type": "function",
"z": "1eb4d24d.5cb37e",
"name": "",
"func": "var old_value=context.get('old_value') || 0;\ncurrent_value=msg.payload;\n\nif (current_value > old_value)\n {\n msg.payload=current_value;\n old_value=current_value;\n context.set('old_value',old_value);\n }\nelse\n {\n msg.payload=old_value\n }\nreturn msg;\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"x": 580,
"y": 80,
"wires": [
[
"c972c6a3.40361",
"fcf9b0ad.ab2ef8"
]
]
},
{
"id": "cb94715d.3d222",
"type": "function",
"z": "1eb4d24d.5cb37e",
"name": "",
"func": "var old_value=context.get('old_value') || 0;\ncurrent_value=msg.payload;\n\nif (current_value > old_value)\n {\n msg.payload=current_value;\n old_value=current_value;\n context.set('old_value',old_value);\n }\nelse\n {\n msg.payload=old_value\n }\nreturn msg;\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"x": 580,
"y": 220,
"wires": [
[
"1c2f628d.8b1ab5",
"53a96bcf.7bf934"
]
]
},
{
"id": "1eb4fa04.85f54e",
"type": "mqtt-broker",
"name": "",
"broker": "192.168.1.8",
"port": "1883",
"clientid": "",
"usetls": false,
"compatmode": true,
"keepalive": "60",
"cleansession": true,
"birthTopic": "",
"birthQos": "0",
"birthPayload": "",
"closeTopic": "",
"closeQos": "0",
"closePayload": "",
"willTopic": "",
"willQos": "0",
"willPayload": ""
}
]
Grosso merdo je stocke dans une variable la dernière valeur des index HP et HC et je la compare avec celle arrivant par MQTT.
Si elle est inferieure je renvoie la précédente.
sinon je rafraichi la variable avec la valeur MQTT et envoie la valeur MQTT .
Voila ma modeste contribution.
Et des que la version via ESPHOME est declarée stable je bascule.
En tout cas BRAVO a tous .
MERCI
jrvrcd