I have an RGB light that changes color based on outdoor temperature.
The automation that controls this is setup in Node-RED and now I want to move it to a native Home Assistant automation. I’m not sure how to write a script that will calculate and set the RGB color as in my Node-RED function.
So, in Node-RED I have a trigger on state change on my temp sensor. It will then call a function that looks like this:
let temp = parseInt(msg.payload, 10);
let rgb = [];
if (temp > 22)
rgb = [255, 0, 0]
else if (temp > 20)
rgb = [255, 64, 0]
else if (temp > 18)
rgb = [255, 128, 0]
else if (temp > 16)
rgb = [255, 191, 0]
else if (temp > 14)
rgb = [255, 255, 0]
else if (temp > 12)
rgb = [191, 255, 0]
else if (temp > 10)
rgb = [128, 255, 0]
else if (temp > 8)
rgb = [64, 255, 0]
else if (temp > 6)
rgb = [0, 255, 0]
else if (temp > 4)
rgb = [0, 255, 64]
else if (temp > 2)
rgb = [0, 255, 128]
else if (temp > 0)
rgb = [0, 255, 191]
else if (temp > -2)
rgb = [0, 255, 255]
else if (temp > -4)
rgb = [0, 191, 255]
else if (temp > -6)
rgb = [0, 128, 255]
else if (temp > -8)
rgb = [0, 64, 255]
else if (temp > -10)
rgb = [0, 0, 255]
else if (temp > -12)
rgb = [64, 0, 255]
else if (temp > -14)
rgb = [128, 0, 255]
else if (temp > -16)
rgb = [191, 0, 255]
else if (temp > -18)
rgb = [255, 0, 255]
else if (temp > -20)
rgb = [255, 0, 191]
else if (temp > -22)
rgb = [255, 0, 128]
else if (temp > -24)
rgb = [255, 0, 648]
else
rgb = [255, 0, 0]
msg.payload = {
domain: "light",
service: "turn_on",
data: {
entity_id: "light.outdoor_temperature_status",
rgb_color: rgb
}
};
return msg;
How can I achive this in a HA automation?