Help with inserting number into json

Hi everyone,
I have a simple problem but unfortunately, I am even more so. I have a flow that I want to use to retrieve the set temperature of my climate system, and then set the new temperature of the furnace to 2 degrees less. I have already learned how to retrieve the 'set temperature' and placed it into the flow as "msg.payload".

var setTemp = msg.data.attributes.temperature-2;
msg.payload=setTemp;
return msg;

As you can see above, I have retrieved the set temperature of the climate control and I have subtracted 2 degrees C from this value and placed it into the msg.payload. This part works fine

Then, I know how to use a 'Call Service' node to set the temperature with data like {"temperature":22};
However, I do not know how to insert the msg.payload in place of the number (in this case 22)
Here is the complete flow. Just the last node 'Set Temp' is the problem.

[{"id":"94492e5d.e42928","type":"tab","label":"Flow 2","disabled":false,"info":""},{"id":"e56ba6e.21bfad8","type":"debug","z":"94492e5d.e42928","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":610,"y":100,"wires":[]},{"id":"a79705ba.3185d8","type":"inject","z":"94492e5d.e42928","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":160,"wires":[["865e6bcc.52643"]]},{"id":"d257d30b.6fb71","type":"function","z":"94492e5d.e42928","name":"","func":"var setTemp = msg.data.attributes.temperature-2;\nmsg.payload=setTemp;\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":320,"y":160,"wires":[["74bc2b60.be6bbc"]]},{"id":"865e6bcc.52643","type":"api-current-state","z":"94492e5d.e42928","name":"test","server":"1d707c49.07a204","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"climate.thermostat","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":110,"y":100,"wires":[["20092d4f.3f4682"]]},{"id":"20092d4f.3f4682","type":"switch","z":"94492e5d.e42928","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"heat","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":270,"y":100,"wires":[["d257d30b.6fb71"],[]]},{"id":"74bc2b60.be6bbc","type":"api-call-service","z":"94492e5d.e42928","name":"Set Temp","server":"fee4c7b2.b5e188","version":1,"debugenabled":false,"service_domain":"climate","service":"set_temperature","entityId":"climate.thermostat","data":"{\"temperature\":20}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":480,"y":120,"wires":[["e56ba6e.21bfad8"]]},{"id":"1d707c49.07a204","type":"server","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true},{"id":"fee4c7b2.b5e188","type":"server","name":"Home Assistant","addon":true}]

Thanks
Sam

Call service is a HA node, none standard, I do not use i. I believe you can create the json in a template node and feed it to the callservice block

If you mean instead of returning setTemp in the payload you want to return the object {temperature: 22} if setTemp is 22 then instead of
msg.payload = setTemp
use
msg.payload = {temperature: setTemp}
You don't need the quotes round temperature in javascript when the property name (temperature) does not include any special characters.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.