Node-RED Soustraction

Erreur « classique » :slight_smile:
Avec le principe de NodeRed et ce que tu as fait, tu ne peux pas avoir le noeud conso et le noeud prod qui font ce qu’il faut et ensuite « simplement » récupérer les deux.
Par conception de NodeRed, tout est asynchrone. Comme tu veux être sûr de passer à l’étape calcul quand les deux résultats sont là (imagine qu’une des requêtes mette 1 seconde et l’autre 5 seconde - comment « attendre » ?), il faut utiliser le noeud join. Le principe est un peu tordu (je trouve).
Mais avec les exemples fournis par NodeRed, ça le fait bien.
Voici le flow qui devrait marcher:

[{"id":"372cfde1af10bf6d","type":"inject","z":"671609705841dfab","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":200,"y":1040,"wires":[["d65a77250c2dcf89","1c97cfa9a2d49adb"]]},{"id":"ecb7f327848b282a","type":"debug","z":"671609705841dfab","name":"Reste","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1070,"y":1040,"wires":[]},{"id":"f261c8a1a7c29e58","type":"change","z":"671609705841dfab","name":"Conso- prod","rules":[{"t":"set","p":"payload","pt":"msg","to":"( payload.shelly_shem_485519c9c2da_1_current_consumption - payload.shelly_shem_485519c9c2da_2_current_consumption > 0 ) ? true : false","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":870,"y":1040,"wires":[["ecb7f327848b282a"]]},{"id":"cd0b2bc6cc6fbbcc","type":"join","z":"671609705841dfab","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"1","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":650,"y":1040,"wires":[["f261c8a1a7c29e58"]]},{"id":"d65a77250c2dcf89","type":"api-current-state","z":"671609705841dfab","name":"Conso","server":"4ea89bf17c4b2c16","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.shelly_shem_485519c9c2da_1_current_consumption","state_type":"num","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":390,"y":1000,"wires":[["cd0b2bc6cc6fbbcc"]]},{"id":"1c97cfa9a2d49adb","type":"api-current-state","z":"671609705841dfab","name":"Prod","server":"4ea89bf17c4b2c16","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.shelly_shem_485519c9c2da_2_current_consumption","state_type":"num","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":390,"y":1080,"wires":[["cd0b2bc6cc6fbbcc"]]},{"id":"4ea89bf17c4b2c16","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]