Thanks for your input.
This is what I use in Node-Red (with zigbee2mqtt). could help someone in the future.
Basically, it sets time and outdoor temperature using the AccuWeather integration. It search for all “climate.thermistat_” entities (thats the name i gave them), splits into a array, loops each thermostats in the list and sends the info to MQTT.
The code below can be imported into a new flow in node-red
[{"id":"2482ec1a27369a3a","type":"tab","label":"Sinope thermostats","disabled":false,"info":""},{"id":"69a0c53f022704d3","type":"group","z":"2482ec1a27369a3a","name":"Set time every hour","style":{"fill":"#92d04f","label":true,"color":"#000000"},"nodes":["d4ca37942b589b3b","7e531d1aa32bd73d","a96f7634ce0ad432","4f9914f0897f0f3e"],"x":74,"y":59,"w":872,"h":82},{"id":"f32457fe8d036c37","type":"group","z":"2482ec1a27369a3a","name":"Set outdoor temp on Accuweather changes","style":{"fill":"#ffC000","label":true,"color":"#000000"},"nodes":["c2aa85cfb612d955","def64bd64d9ec087","7225751d8a9c65ba","5f723299d3c658cd"],"x":74,"y":179,"w":872,"h":82},{"id":"d4ca37942b589b3b","type":"ha-get-entities","z":"2482ec1a27369a3a","g":"69a0c53f022704d3","name":"Sinope Thermostat List","server":"26a73422.2f588c","version":0,"rules":[{"property":"entity_id","logic":"starts_with","value":"climate.thermostat_","valueType":"str"}],"output_type":"array","output_empty_results":false,"output_location_type":"msg","output_location":"payload","output_results_count":1,"x":470,"y":100,"wires":[["a96f7634ce0ad432"]]},{"id":"7e531d1aa32bd73d","type":"inject","z":"2482ec1a27369a3a","g":"69a0c53f022704d3","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"3600","crontab":"","once":true,"onceDelay":"0,1","topic":"","payloadType":"date","x":190,"y":100,"wires":[["d4ca37942b589b3b"]]},{"id":"a96f7634ce0ad432","type":"split","z":"2482ec1a27369a3a","g":"69a0c53f022704d3","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":690,"y":100,"wires":[["4f9914f0897f0f3e"]]},{"id":"4f9914f0897f0f3e","type":"function","z":"2482ec1a27369a3a","g":"69a0c53f022704d3","name":"","func":"thermostat_name = msg.payload.attributes.friendly_name;\nreturn {payload : \"\", topic: \"zigbee2mqtt/\" + thermostat_name + \"/set/thermostat_time\"};","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":860,"y":100,"wires":[["929aa253eae9fa28"]]},{"id":"929aa253eae9fa28","type":"mqtt out","z":"2482ec1a27369a3a","name":"MQTT zigbee2mqtt Thermostats","topic":"","qos":"0","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"89f33f95.1b2a5","x":1110,"y":160,"wires":[]},{"id":"c2aa85cfb612d955","type":"server-state-changed","z":"2482ec1a27369a3a","g":"f32457fe8d036c37","name":"accuweather_temperature","server":"26a73422.2f588c","version":3,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.accuweather_temperature","entityidfiltertype":"exact","outputinitially":true,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":false,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":true,"ignorePrevStateUnavailable":true,"ignoreCurrentStateUnknown":true,"ignoreCurrentStateUnavailable":true,"outputProperties":[{"property":"temperature","propertyType":"msg","value":"","valueType":"entityState"}],"x":210,"y":220,"wires":[["def64bd64d9ec087"]]},{"id":"def64bd64d9ec087","type":"ha-get-entities","z":"2482ec1a27369a3a","g":"f32457fe8d036c37","name":"Sinope Thermostat List","server":"26a73422.2f588c","version":0,"rules":[{"property":"entity_id","logic":"starts_with","value":"climate.thermostat_","valueType":"str"}],"output_type":"array","output_empty_results":false,"output_location_type":"msg","output_location":"payload","output_results_count":1,"x":470,"y":220,"wires":[["7225751d8a9c65ba"]]},{"id":"7225751d8a9c65ba","type":"split","z":"2482ec1a27369a3a","g":"f32457fe8d036c37","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":690,"y":220,"wires":[["5f723299d3c658cd"]]},{"id":"5f723299d3c658cd","type":"function","z":"2482ec1a27369a3a","g":"f32457fe8d036c37","name":"","func":"thermostat_name = msg.payload.attributes.friendly_name;\naccu_temperature = String(msg.temperature);\n\nreturn {payload : accu_temperature, topic: \"zigbee2mqtt/\" + thermostat_name + \"/set/thermostat_outdoor_temperature\"};","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":860,"y":220,"wires":[["929aa253eae9fa28"]]},{"id":"26a73422.2f588c","type":"server","name":"Main HA Server","version":2,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":false,"heartbeat":false,"heartbeatInterval":"30"},{"id":"89f33f95.1b2a5","type":"mqtt-broker","name":"HA-MQTT","broker":"172.20.10.10","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""}]