You guys are doing great work. I have been lurking and building my own controller from different parts and peices from the post here. I have the Alexa integration working. One thing I didnt like is if the state was changed from the Node Red interface it wasnt updated with Alexa. I used MQTT broker to fix this. I dont have everything I want to control with Alexa in these nodes, but I thought I could pass on my flows for Alexa to see if they are helpful for you.
You can ignore the iptable stuff, it isnt needed.
[{"id":"34b007c5.43ff98","type":"tab","label":"Amazon Alexa-emm","disabled":false,"info":""},{"id":"879618eb.206918","type":"amazon-echo-device","z":"34b007c5.43ff98","name":"Pool","topic":"","x":1410,"y":680,"wires":[["464e35d0.cccc9c"]]},{"id":"464e35d0.cccc9c","type":"change","z":"34b007c5.43ff98","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"Medium","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"off","fromt":"str","to":"Off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1700,"y":680,"wires":[["170ae3d.f7ea41c"]]},{"id":"e684884e.d30688","type":"amazon-echo-device","z":"34b007c5.43ff98","name":"Spa","topic":"","x":1410,"y":720,"wires":[["f98884b2.8b4a58"]]},{"id":"f98884b2.8b4a58","type":"change","z":"34b007c5.43ff98","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"Spa Speed 3","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"off","fromt":"str","to":"Spa Pump Off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1700,"y":720,"wires":[["e14c3d8f.13a9f"]]},{"id":"170ae3d.f7ea41c","type":"link out","z":"34b007c5.43ff98","name":"Alexa Pool Out","links":["2746fbc0.561394"],"x":1920,"y":680,"wires":[]},{"id":"e14c3d8f.13a9f","type":"link out","z":"34b007c5.43ff98","name":"Alexa Spa Out ","links":["76820228.695bec"],"x":1915,"y":720,"wires":[]},{"id":"cac6006e.26a51","type":"amazon-echo-device","z":"34b007c5.43ff98","name":"Pool Lights","topic":"","x":1430,"y":880,"wires":[["5ab496c0.5c2658"]]},{"id":"cfa9f92a.2b05a8","type":"amazon-echo-device","z":"34b007c5.43ff98","name":"Spa Lights","topic":"","x":1430,"y":920,"wires":[["e0e30eec.1b74b"]]},{"id":"5ab496c0.5c2658","type":"change","z":"34b007c5.43ff98","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"1","tot":"num"},{"t":"change","p":"payload","pt":"msg","from":"off","fromt":"str","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1700,"y":880,"wires":[["482f73e5.a93dcc"]]},{"id":"e0e30eec.1b74b","type":"change","z":"34b007c5.43ff98","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"1","tot":"num"},{"t":"change","p":"payload","pt":"msg","from":"off","fromt":"str","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1700,"y":920,"wires":[["ea364486.0aa5a8"]]},{"id":"482f73e5.a93dcc","type":"link out","z":"34b007c5.43ff98","name":"Pool Lights Out","links":["8879a055.39126"],"x":1915,"y":880,"wires":[]},{"id":"ea364486.0aa5a8","type":"link out","z":"34b007c5.43ff98","name":"Spa Lights Out","links":["ebd7bf13.44fdc","e789937e.a922d8"],"x":1915,"y":920,"wires":[]},{"id":"6ba24d4e.668ef4","type":"exec","z":"34b007c5.43ff98","command":"sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":770,"y":140,"wires":[[],[],[]]},{"id":"1c0ec163.3d70ef","type":"delay","z":"34b007c5.43ff98","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":360,"y":140,"wires":[["6ba24d4e.668ef4"]]},{"id":"f8b8b71e.2f4908","type":"delay","z":"34b007c5.43ff98","name":"","pauseType":"delay","timeout":"4","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":360,"y":200,"wires":[["2cb9ab90.f2a564"]]},{"id":"2cb9ab90.f2a564","type":"exec","z":"34b007c5.43ff98","command":"sudo iptables -t nat -A PREROUTING -p udp --dport 80 -j REDIRECT --to-port 8080 ","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":770,"y":200,"wires":[[],[],[]]},{"id":"2f43cdf7.563312","type":"exec","z":"34b007c5.43ff98","command":"sudo iptables -t nat -L","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":580,"y":260,"wires":[[],[],[]]},{"id":"66be6ecb.21544","type":"exec","z":"34b007c5.43ff98","command":"sudo sh -c \"iptables-save > /etc/iptables.rules\"","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":660,"y":320,"wires":[[],[],[]]},{"id":"302ccef4.726582","type":"delay","z":"34b007c5.43ff98","name":"","pauseType":"delay","timeout":"6","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":360,"y":260,"wires":[["2f43cdf7.563312"]]},{"id":"b2024dc9.6f8b1","type":"delay","z":"34b007c5.43ff98","name":"","pauseType":"delay","timeout":"8","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":360,"y":320,"wires":[["66be6ecb.21544"]]},{"id":"50e62efd.59a2d","type":"amazon-echo-device","z":"34b007c5.43ff98","name":"Waterfall Lights ","topic":"","x":1440,"y":960,"wires":[["40384b9.9ee8c34"]]},{"id":"40384b9.9ee8c34","type":"change","z":"34b007c5.43ff98","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"11","tot":"num"},{"t":"change","p":"payload","pt":"msg","from":"off","fromt":"str","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1700,"y":960,"wires":[["39146849.97a528"]]},{"id":"39146849.97a528","type":"link out","z":"34b007c5.43ff98","name":"Waterfall Lights Out","links":["5083b31.6b1194c","80d3783d.51edd","d36e594a.275a4"],"x":1915,"y":960,"wires":[]},{"id":"b77bf1a4.fb1ee","type":"amazon-echo-device","z":"34b007c5.43ff98","name":"Waterfall","topic":"","x":1420,"y":760,"wires":[["62f98e14.235fb"]]},{"id":"62f98e14.235fb","type":"change","z":"34b007c5.43ff98","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"Feature Speed 3","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"off","fromt":"str","to":"Off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1700,"y":760,"wires":[["caa526a3.baeb88"]]},{"id":"caa526a3.baeb88","type":"link out","z":"34b007c5.43ff98","name":"Alexa Waterfall Out ","links":["6eeafd57.607f64","fd26ec8e.3b8ec"],"x":1915,"y":760,"wires":[]},{"id":"afb80e33.eab428","type":"amazon-echo-device","z":"34b007c5.43ff98","name":"Fire","topic":"","x":1410,"y":800,"wires":[["6e69ae29.09bf2"]]},{"id":"6e69ae29.09bf2","type":"change","z":"34b007c5.43ff98","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"Spa Speed 4","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"off","fromt":"str","to":"Spa Pump Off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1700,"y":800,"wires":[["e2aebe63.1e1bf"]]},{"id":"e2aebe63.1e1bf","type":"link out","z":"34b007c5.43ff98","name":"Alexa Fire Out ","links":["c78b53bf.f80fe"],"x":1915,"y":800,"wires":[]},{"id":"c6806579.b081a8","type":"start-up-trigger","z":"34b007c5.43ff98","x":140,"y":240,"wires":[[]]},{"id":"a34d1e79.c05f9","type":"delay","z":"34b007c5.43ff98","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":360,"y":420,"wires":[["a1488789.613968"]]},{"id":"7908d200.73464","type":"delay","z":"34b007c5.43ff98","name":"","pauseType":"delay","timeout":"4","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":360,"y":480,"wires":[["18c3f854.f9ca28"]]},{"id":"18c3f854.f9ca28","type":"exec","z":"34b007c5.43ff98","command":"sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":790,"y":480,"wires":[[],[],[]]},{"id":"a1488789.613968","type":"exec","z":"34b007c5.43ff98","command":"sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":680,"y":420,"wires":[[],[],[]]},{"id":"60be82d.510447c","type":"amazon-echo-hub","z":"34b007c5.43ff98","port":"8080","processinput":"1","x":1130,"y":800,"wires":[["50e62efd.59a2d","cfa9f92a.2b05a8","cac6006e.26a51","afb80e33.eab428","b77bf1a4.fb1ee","e684884e.d30688","879618eb.206918","5e366a97.da2794"]]},{"id":"2ad6c36e.00133c","type":"function","z":"34b007c5.43ff98","name":"Waterfall Light Hub Input","func":"var nodeid=\"50e62efd.59a2d\";\n\nif (msg.payload == \"1\"){\n msg.payload = {\n on: true,\n nodeid: nodeid\n }\n\n} else if(msg.payload == \"0\"){\n msg.payload = {\n on: false,\n nodeid: nodeid\n }\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":810,"y":1400,"wires":[["60be82d.510447c"]]},{"id":"c3cba273.276c3","type":"link in","z":"34b007c5.43ff98","name":"","links":["b41c8b25.e5cdb8"],"x":655,"y":1400,"wires":[["2ad6c36e.00133c"]]},{"id":"cf777302.89d428","type":"function","z":"34b007c5.43ff98","name":"Spa Light Hub Input","func":"var nodeid=\"cfa9f92a.2b05a8\";\n\nif (msg.payload == \"1\"){\n msg.payload = {\n on: true,\n nodeid: nodeid\n }\n\n} else if(msg.payload == \"0\"){\n msg.payload = {\n on: false,\n nodeid: nodeid\n }\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":800,"y":1360,"wires":[["60be82d.510447c"]]},{"id":"fc0a71ab.e43c8","type":"link in","z":"34b007c5.43ff98","name":"","links":["778718b9.ed54c8"],"x":655,"y":1360,"wires":[["cf777302.89d428"]]},{"id":"91e0ccfc.742f2","type":"function","z":"34b007c5.43ff98","name":"Pool Light Hub Input","func":"var nodeid=\"cac6006e.26a51\";\n\nif (msg.payload == \"1\"){\n msg.payload = {\n on: true,\n nodeid: nodeid\n }\n\n} else if(msg.payload == \"0\"){\n msg.payload = {\n on: false,\n nodeid: nodeid\n }\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":800,"y":1320,"wires":[["60be82d.510447c"]]},{"id":"7f5ff622.8ea51","type":"link in","z":"34b007c5.43ff98","name":"","links":["7b8d8de4.b77ffc"],"x":655,"y":1320,"wires":[["91e0ccfc.742f2"]]},{"id":"72ceb556.c8d99c","type":"function","z":"34b007c5.43ff98","name":"Pool Hub Input","func":"var nodeid=\"879618eb.206918\";\n\nif (msg.payload == \"1\"){\n msg.payload = {\n on: true,\n nodeid: nodeid\n }\n\n} else if(msg.payload == \"0\"){\n msg.payload = {\n on: false,\n nodeid: nodeid\n }\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":820,"y":600,"wires":[["60be82d.510447c"]]},{"id":"e31936a5.aad6e8","type":"function","z":"34b007c5.43ff98","name":"Fire Hub Input","func":"var nodeid=\"afb80e33.eab428\";\n\nif (msg.payload == \"1\"){\n msg.payload = {\n on: true,\n nodeid: nodeid\n }\n\n} else if(msg.payload == \"0\"){\n msg.payload = {\n on: false,\n nodeid: nodeid\n }\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":780,"y":1280,"wires":[["60be82d.510447c"]]},{"id":"35122503.921892","type":"link in","z":"34b007c5.43ff98","name":"Fire State","links":["e2094a75.00b4e"],"x":655,"y":1280,"wires":[["e31936a5.aad6e8"]]},{"id":"63da2c65.87bd04","type":"mqtt in","z":"34b007c5.43ff98","name":"Pool Pump Speed 1","topic":"Pool Pump Speed 1","qos":"0","datatype":"json","broker":"b0ef9109.119168","x":190,"y":540,"wires":[["2ed7a72.2dcf0d8"]]},{"id":"bb095f12.8c1308","type":"mqtt in","z":"34b007c5.43ff98","name":"Pool Pump Speed 2","topic":"Pool Pump Speed 2","qos":"0","datatype":"json","broker":"b0ef9109.119168","x":190,"y":580,"wires":[["2ed7a72.2dcf0d8"]]},{"id":"fcae7e13.e68f58","type":"mqtt in","z":"34b007c5.43ff98","name":"Pool Pump Speed 3","topic":"Pool Pump Speed 3","qos":"0","datatype":"json","broker":"b0ef9109.119168","x":190,"y":620,"wires":[["2ed7a72.2dcf0d8"]]},{"id":"65ae6d08.d3c8ac","type":"debug","z":"34b007c5.43ff98","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":590,"y":860,"wires":[]},{"id":"982d0e99.6e7b9","type":"mqtt in","z":"34b007c5.43ff98","name":"Pool Pump Speed 4","topic":"Pool Pump Speed 4","qos":"0","datatype":"json","broker":"b0ef9109.119168","x":190,"y":660,"wires":[["2ed7a72.2dcf0d8"]]},{"id":"5e366a97.da2794","type":"amazon-echo-device","z":"34b007c5.43ff98","name":"Bubbles","topic":"","x":1420,"y":640,"wires":[["5641e5e4.b24a0c"]]},{"id":"5641e5e4.b24a0c","type":"change","z":"34b007c5.43ff98","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"1","tot":"num"},{"t":"change","p":"payload","pt":"msg","from":"off","fromt":"str","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1700,"y":640,"wires":[["d3c478c.098f608"]]},{"id":"d3c478c.098f608","type":"link out","z":"34b007c5.43ff98","name":"Alexa Bubbles Out","links":["2746fbc0.561394","d4c08309.2b93a8"],"x":1915,"y":640,"wires":[]},{"id":"2ed7a72.2dcf0d8","type":"BooleanLogic","z":"34b007c5.43ff98","name":"","operation":"OR","inputCount":"4","topic":"result","x":430,"y":600,"wires":[["6b48e655.be7698"]]},{"id":"6b48e655.be7698","type":"change","z":"34b007c5.43ff98","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"true","fromt":"bool","to":"1","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"false","fromt":"bool","to":"0","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":620,"y":600,"wires":[["72ceb556.c8d99c"]]},{"id":"132011c1.7360a6","type":"function","z":"34b007c5.43ff98","name":"Feature Hub Input","func":"var nodeid=\"b77bf1a4.fb1ee\";\n\nif (msg.payload == \"1\"){\n msg.payload = {\n on: true,\n nodeid: nodeid\n }\n\n} else if(msg.payload == \"0\"){\n msg.payload = {\n on: false,\n nodeid: nodeid\n }\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":830,"y":780,"wires":[["60be82d.510447c"]]},{"id":"3e877697.d4ead2","type":"mqtt in","z":"34b007c5.43ff98","name":"Feature Pump Speed 1","topic":"Feature Pump Speed 1","qos":"0","datatype":"json","broker":"b0ef9109.119168","x":200,"y":720,"wires":[["8da5cc48.3ddd3"]]},{"id":"c9fdf88e.0ed6d","type":"mqtt in","z":"34b007c5.43ff98","name":"Feature Pump Speed 2","topic":"Feature Pump Speed 2","qos":"0","datatype":"json","broker":"b0ef9109.119168","x":200,"y":760,"wires":[["8da5cc48.3ddd3"]]},{"id":"97203828.66b8b8","type":"mqtt in","z":"34b007c5.43ff98","name":"Feature Pump Speed 3","topic":"Feature Pump Speed 3","qos":"0","datatype":"json","broker":"b0ef9109.119168","x":200,"y":800,"wires":[["8da5cc48.3ddd3"]]},{"id":"33e6d4d4.15b654","type":"mqtt in","z":"34b007c5.43ff98","name":"Feature Pump Speed 4","topic":"Feature Pump Speed 4","qos":"0","datatype":"json","broker":"b0ef9109.119168","x":200,"y":840,"wires":[["8da5cc48.3ddd3"]]},{"id":"8da5cc48.3ddd3","type":"BooleanLogic","z":"34b007c5.43ff98","name":"","operation":"OR","inputCount":"4","topic":"result","x":430,"y":780,"wires":[["f05a1796.3e3c7"]]},{"id":"f05a1796.3e3c7","type":"change","z":"34b007c5.43ff98","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"true","fromt":"bool","to":"1","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"false","fromt":"bool","to":"0","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":620,"y":780,"wires":[["132011c1.7360a6"]]},{"id":"917dddc8.c9de7","type":"inject","z":"34b007c5.43ff98","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"59 23 * * 3,0","once":false,"onceDelay":0.1,"x":190,"y":60,"wires":[["8d25afb9.113758"]]},{"id":"8d25afb9.113758","type":"exec","z":"34b007c5.43ff98","command":"sudo reboot","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":390,"y":60,"wires":[[],[],[]]},{"id":"b0ef9109.119168","type":"mqtt-broker","z":"","name":"","broker":"192.168.1.252","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]