diff --git a/docs/assets/0Jrm5FqWzsc9G2KmWBJWMLEr2J4aYyj4Bg.jpg b/docs/assets/0Jrm5FqWzsc9G2KmWBJWMLEr2J4aYyj4Bg.jpg
deleted file mode 100644
index b5c419355d..0000000000
Binary files a/docs/assets/0Jrm5FqWzsc9G2KmWBJWMLEr2J4aYyj4Bg.jpg and /dev/null differ
diff --git a/docs/assets/1OhdBudlNh2Rk8SoytNKdoUHqknn8KA8sQ.png b/docs/assets/1OhdBudlNh2Rk8SoytNKdoUHqknn8KA8sQ.png
deleted file mode 100644
index 142796408e..0000000000
Binary files a/docs/assets/1OhdBudlNh2Rk8SoytNKdoUHqknn8KA8sQ.png and /dev/null differ
diff --git a/docs/assets/28MMBJEeIQOmwUGtP9L3cx0PtCaTL0HX_Q.png b/docs/assets/28MMBJEeIQOmwUGtP9L3cx0PtCaTL0HX_Q.png
deleted file mode 100644
index 2a71521c70..0000000000
Binary files a/docs/assets/28MMBJEeIQOmwUGtP9L3cx0PtCaTL0HX_Q.png and /dev/null differ
diff --git a/docs/assets/4Er61OH8tF-IaiVvom0cWPeOyfNkRWtibw.jpg b/docs/assets/4Er61OH8tF-IaiVvom0cWPeOyfNkRWtibw.jpg
deleted file mode 100644
index 23be94aa00..0000000000
Binary files a/docs/assets/4Er61OH8tF-IaiVvom0cWPeOyfNkRWtibw.jpg and /dev/null differ
diff --git a/docs/assets/4OHLuxZVKc1TcCGLfvAEf-1UUl-IzmeHzQ.jpg b/docs/assets/4OHLuxZVKc1TcCGLfvAEf-1UUl-IzmeHzQ.jpg
deleted file mode 100644
index 4ab4cceb8b..0000000000
Binary files a/docs/assets/4OHLuxZVKc1TcCGLfvAEf-1UUl-IzmeHzQ.jpg and /dev/null differ
diff --git a/docs/assets/5qmwmycqbmvoz-mlkdotbzwkc-4-rei8a.jpg b/docs/assets/5qmwmycqbmvoz-mlkdotbzwkc-4-rei8a.jpg
deleted file mode 100644
index 11e7ec3111..0000000000
Binary files a/docs/assets/5qmwmycqbmvoz-mlkdotbzwkc-4-rei8a.jpg and /dev/null differ
diff --git a/docs/assets/6uv5liNNA-wHLFfHxiadM56YpIonKQalTg.jpg b/docs/assets/6uv5liNNA-wHLFfHxiadM56YpIonKQalTg.jpg
deleted file mode 100644
index 906a526414..0000000000
Binary files a/docs/assets/6uv5liNNA-wHLFfHxiadM56YpIonKQalTg.jpg and /dev/null differ
diff --git a/docs/assets/9UJnA9aCGf0TNw1uc3ik2xEFxXlLs95bOw.jpg b/docs/assets/9UJnA9aCGf0TNw1uc3ik2xEFxXlLs95bOw.jpg
deleted file mode 100644
index 5460fb4b97..0000000000
Binary files a/docs/assets/9UJnA9aCGf0TNw1uc3ik2xEFxXlLs95bOw.jpg and /dev/null differ
diff --git a/docs/assets/BDLaEPEomVhYjATCJMSVMltiTS9aoVY9YQ.jpg b/docs/assets/BDLaEPEomVhYjATCJMSVMltiTS9aoVY9YQ.jpg
deleted file mode 100644
index 4b6224ccef..0000000000
Binary files a/docs/assets/BDLaEPEomVhYjATCJMSVMltiTS9aoVY9YQ.jpg and /dev/null differ
diff --git a/docs/assets/EQdHu-pdF_2D7T6GJkjdqSQYZptmHk-cmw.png b/docs/assets/EQdHu-pdF_2D7T6GJkjdqSQYZptmHk-cmw.png
deleted file mode 100644
index 097ce6c83b..0000000000
Binary files a/docs/assets/EQdHu-pdF_2D7T6GJkjdqSQYZptmHk-cmw.png and /dev/null differ
diff --git a/docs/assets/GublKQEhWUdU-OxJiA948P3_HGiwxTpn4w.png b/docs/assets/GublKQEhWUdU-OxJiA948P3_HGiwxTpn4w.png
deleted file mode 100644
index 5035caed8e..0000000000
Binary files a/docs/assets/GublKQEhWUdU-OxJiA948P3_HGiwxTpn4w.png and /dev/null differ
diff --git a/docs/assets/JI4fSugUQvhRpK1FauJEEPoj3Vwe-QD02Q.jpg b/docs/assets/JI4fSugUQvhRpK1FauJEEPoj3Vwe-QD02Q.jpg
deleted file mode 100644
index 4043896c93..0000000000
Binary files a/docs/assets/JI4fSugUQvhRpK1FauJEEPoj3Vwe-QD02Q.jpg and /dev/null differ
diff --git a/docs/assets/LwzqEXM9B89IWUQCIdZtwo_uYIbYVzdT0g.jpg b/docs/assets/LwzqEXM9B89IWUQCIdZtwo_uYIbYVzdT0g.jpg
deleted file mode 100644
index 8744410dde..0000000000
Binary files a/docs/assets/LwzqEXM9B89IWUQCIdZtwo_uYIbYVzdT0g.jpg and /dev/null differ
diff --git a/docs/assets/Me6P6lhhZUQMhuY--kIQqoFHV6QgrxpO0g.jpg b/docs/assets/Me6P6lhhZUQMhuY--kIQqoFHV6QgrxpO0g.jpg
deleted file mode 100644
index fc80512edb..0000000000
Binary files a/docs/assets/Me6P6lhhZUQMhuY--kIQqoFHV6QgrxpO0g.jpg and /dev/null differ
diff --git a/docs/assets/ObY0NPGDBIBaXPuhUVzo80fr1fToBm5ekg.png b/docs/assets/ObY0NPGDBIBaXPuhUVzo80fr1fToBm5ekg.png
deleted file mode 100644
index 2dc48a278d..0000000000
Binary files a/docs/assets/ObY0NPGDBIBaXPuhUVzo80fr1fToBm5ekg.png and /dev/null differ
diff --git a/docs/assets/P3TZVCVhVSBYXFOWtPc4fZML_8-LQTEHQw.jpg b/docs/assets/P3TZVCVhVSBYXFOWtPc4fZML_8-LQTEHQw.jpg
deleted file mode 100644
index 7f181cb038..0000000000
Binary files a/docs/assets/P3TZVCVhVSBYXFOWtPc4fZML_8-LQTEHQw.jpg and /dev/null differ
diff --git a/docs/assets/YfpAVN1FtpsODgbFgZg8qEVBNjl3NgaAvQ.png b/docs/assets/YfpAVN1FtpsODgbFgZg8qEVBNjl3NgaAvQ.png
deleted file mode 100644
index 3d8fbdfbd9..0000000000
Binary files a/docs/assets/YfpAVN1FtpsODgbFgZg8qEVBNjl3NgaAvQ.png and /dev/null differ
diff --git a/docs/assets/a6nANg-L_gqIkPH6ZKQo6mCSSSbacF7FkQ.jpg b/docs/assets/a6nANg-L_gqIkPH6ZKQo6mCSSSbacF7FkQ.jpg
deleted file mode 100644
index 15e7dde9c3..0000000000
Binary files a/docs/assets/a6nANg-L_gqIkPH6ZKQo6mCSSSbacF7FkQ.jpg and /dev/null differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-1.jpg b/docs/assets/air-1-gpio-header-wiki-pic-1.jpg
deleted file mode 100755
index 049baa4dfc..0000000000
Binary files a/docs/assets/air-1-gpio-header-wiki-pic-1.jpg and /dev/null differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-1.webp b/docs/assets/air-1-gpio-header-wiki-pic-1.webp
new file mode 100644
index 0000000000..36c1b87345
Binary files /dev/null and b/docs/assets/air-1-gpio-header-wiki-pic-1.webp differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-10.jpg b/docs/assets/air-1-gpio-header-wiki-pic-10.jpg
deleted file mode 100755
index 9c616babe5..0000000000
Binary files a/docs/assets/air-1-gpio-header-wiki-pic-10.jpg and /dev/null differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-10.webp b/docs/assets/air-1-gpio-header-wiki-pic-10.webp
new file mode 100644
index 0000000000..8df9b151f2
Binary files /dev/null and b/docs/assets/air-1-gpio-header-wiki-pic-10.webp differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-2.jpg b/docs/assets/air-1-gpio-header-wiki-pic-2.jpg
deleted file mode 100755
index 782c526932..0000000000
Binary files a/docs/assets/air-1-gpio-header-wiki-pic-2.jpg and /dev/null differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-2.webp b/docs/assets/air-1-gpio-header-wiki-pic-2.webp
new file mode 100644
index 0000000000..d9266d6b89
Binary files /dev/null and b/docs/assets/air-1-gpio-header-wiki-pic-2.webp differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-3.jpg b/docs/assets/air-1-gpio-header-wiki-pic-3.jpg
deleted file mode 100755
index 22410287be..0000000000
Binary files a/docs/assets/air-1-gpio-header-wiki-pic-3.jpg and /dev/null differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-3.webp b/docs/assets/air-1-gpio-header-wiki-pic-3.webp
new file mode 100644
index 0000000000..324054bb65
Binary files /dev/null and b/docs/assets/air-1-gpio-header-wiki-pic-3.webp differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-4.jpg b/docs/assets/air-1-gpio-header-wiki-pic-4.jpg
deleted file mode 100755
index 14c7157e04..0000000000
Binary files a/docs/assets/air-1-gpio-header-wiki-pic-4.jpg and /dev/null differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-4.webp b/docs/assets/air-1-gpio-header-wiki-pic-4.webp
new file mode 100644
index 0000000000..034395a467
Binary files /dev/null and b/docs/assets/air-1-gpio-header-wiki-pic-4.webp differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-5.jpg b/docs/assets/air-1-gpio-header-wiki-pic-5.jpg
deleted file mode 100755
index c86d3e7a51..0000000000
Binary files a/docs/assets/air-1-gpio-header-wiki-pic-5.jpg and /dev/null differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-5.webp b/docs/assets/air-1-gpio-header-wiki-pic-5.webp
new file mode 100644
index 0000000000..95f8b6a955
Binary files /dev/null and b/docs/assets/air-1-gpio-header-wiki-pic-5.webp differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-6.jpg b/docs/assets/air-1-gpio-header-wiki-pic-6.jpg
deleted file mode 100755
index 20137e945e..0000000000
Binary files a/docs/assets/air-1-gpio-header-wiki-pic-6.jpg and /dev/null differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-6.webp b/docs/assets/air-1-gpio-header-wiki-pic-6.webp
new file mode 100644
index 0000000000..6762dfc7c3
Binary files /dev/null and b/docs/assets/air-1-gpio-header-wiki-pic-6.webp differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-7.jpg b/docs/assets/air-1-gpio-header-wiki-pic-7.jpg
deleted file mode 100755
index 99352e434c..0000000000
Binary files a/docs/assets/air-1-gpio-header-wiki-pic-7.jpg and /dev/null differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-7.webp b/docs/assets/air-1-gpio-header-wiki-pic-7.webp
new file mode 100644
index 0000000000..afca53d79e
Binary files /dev/null and b/docs/assets/air-1-gpio-header-wiki-pic-7.webp differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-8.jpg b/docs/assets/air-1-gpio-header-wiki-pic-8.jpg
deleted file mode 100755
index 139bf5bb2e..0000000000
Binary files a/docs/assets/air-1-gpio-header-wiki-pic-8.jpg and /dev/null differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-8.webp b/docs/assets/air-1-gpio-header-wiki-pic-8.webp
new file mode 100644
index 0000000000..481ecf7d3f
Binary files /dev/null and b/docs/assets/air-1-gpio-header-wiki-pic-8.webp differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-9.jpg b/docs/assets/air-1-gpio-header-wiki-pic-9.jpg
deleted file mode 100755
index e1ee9b2c86..0000000000
Binary files a/docs/assets/air-1-gpio-header-wiki-pic-9.jpg and /dev/null differ
diff --git a/docs/assets/air-1-gpio-header-wiki-pic-9.webp b/docs/assets/air-1-gpio-header-wiki-pic-9.webp
new file mode 100644
index 0000000000..583382c63c
Binary files /dev/null and b/docs/assets/air-1-gpio-header-wiki-pic-9.webp differ
diff --git a/docs/assets/air1-0Jrm5FqWzsc9G2KmWBJWMLEr2J4aYyj4Bg.jpg b/docs/assets/air1-0Jrm5FqWzsc9G2KmWBJWMLEr2J4aYyj4Bg.jpg
deleted file mode 100644
index b5c419355d..0000000000
Binary files a/docs/assets/air1-0Jrm5FqWzsc9G2KmWBJWMLEr2J4aYyj4Bg.jpg and /dev/null differ
diff --git a/docs/assets/air1-1OhdBudlNh2Rk8SoytNKdoUHqknn8KA8sQ.png b/docs/assets/air1-1OhdBudlNh2Rk8SoytNKdoUHqknn8KA8sQ.png
deleted file mode 100644
index 142796408e..0000000000
Binary files a/docs/assets/air1-1OhdBudlNh2Rk8SoytNKdoUHqknn8KA8sQ.png and /dev/null differ
diff --git a/docs/assets/air1-28MMBJEeIQOmwUGtP9L3cx0PtCaTL0HX_Q.png b/docs/assets/air1-28MMBJEeIQOmwUGtP9L3cx0PtCaTL0HX_Q.png
deleted file mode 100644
index 2a71521c70..0000000000
Binary files a/docs/assets/air1-28MMBJEeIQOmwUGtP9L3cx0PtCaTL0HX_Q.png and /dev/null differ
diff --git a/docs/assets/air1-4Er61OH8tF-IaiVvom0cWPeOyfNkRWtibw.jpg b/docs/assets/air1-4Er61OH8tF-IaiVvom0cWPeOyfNkRWtibw.jpg
deleted file mode 100644
index 23be94aa00..0000000000
Binary files a/docs/assets/air1-4Er61OH8tF-IaiVvom0cWPeOyfNkRWtibw.jpg and /dev/null differ
diff --git a/docs/assets/air1-4OHLuxZVKc1TcCGLfvAEf-1UUl-IzmeHzQ.jpg b/docs/assets/air1-4OHLuxZVKc1TcCGLfvAEf-1UUl-IzmeHzQ.jpg
deleted file mode 100644
index 4ab4cceb8b..0000000000
Binary files a/docs/assets/air1-4OHLuxZVKc1TcCGLfvAEf-1UUl-IzmeHzQ.jpg and /dev/null differ
diff --git a/docs/assets/air1-5qmwmycqbmvoz-mlkdotbzwkc-4-rei8a.jpg b/docs/assets/air1-5qmwmycqbmvoz-mlkdotbzwkc-4-rei8a.jpg
deleted file mode 100644
index 11e7ec3111..0000000000
Binary files a/docs/assets/air1-5qmwmycqbmvoz-mlkdotbzwkc-4-rei8a.jpg and /dev/null differ
diff --git a/docs/assets/air1-6uv5liNNA-wHLFfHxiadM56YpIonKQalTg.jpg b/docs/assets/air1-6uv5liNNA-wHLFfHxiadM56YpIonKQalTg.jpg
deleted file mode 100644
index 906a526414..0000000000
Binary files a/docs/assets/air1-6uv5liNNA-wHLFfHxiadM56YpIonKQalTg.jpg and /dev/null differ
diff --git a/docs/assets/air1-9UJnA9aCGf0TNw1uc3ik2xEFxXlLs95bOw.jpg b/docs/assets/air1-9UJnA9aCGf0TNw1uc3ik2xEFxXlLs95bOw.jpg
deleted file mode 100644
index 5460fb4b97..0000000000
Binary files a/docs/assets/air1-9UJnA9aCGf0TNw1uc3ik2xEFxXlLs95bOw.jpg and /dev/null differ
diff --git a/docs/assets/air1-BDLaEPEomVhYjATCJMSVMltiTS9aoVY9YQ.jpg b/docs/assets/air1-BDLaEPEomVhYjATCJMSVMltiTS9aoVY9YQ.jpg
deleted file mode 100644
index 4b6224ccef..0000000000
Binary files a/docs/assets/air1-BDLaEPEomVhYjATCJMSVMltiTS9aoVY9YQ.jpg and /dev/null differ
diff --git a/docs/assets/air1-EQdHu-pdF_2D7T6GJkjdqSQYZptmHk-cmw.png b/docs/assets/air1-EQdHu-pdF_2D7T6GJkjdqSQYZptmHk-cmw.png
deleted file mode 100644
index 097ce6c83b..0000000000
Binary files a/docs/assets/air1-EQdHu-pdF_2D7T6GJkjdqSQYZptmHk-cmw.png and /dev/null differ
diff --git a/docs/assets/air1-GublKQEhWUdU-OxJiA948P3_HGiwxTpn4w.png b/docs/assets/air1-GublKQEhWUdU-OxJiA948P3_HGiwxTpn4w.png
deleted file mode 100644
index 5035caed8e..0000000000
Binary files a/docs/assets/air1-GublKQEhWUdU-OxJiA948P3_HGiwxTpn4w.png and /dev/null differ
diff --git a/docs/assets/air1-JI4fSugUQvhRpK1FauJEEPoj3Vwe-QD02Q.jpg b/docs/assets/air1-JI4fSugUQvhRpK1FauJEEPoj3Vwe-QD02Q.jpg
deleted file mode 100644
index 4043896c93..0000000000
Binary files a/docs/assets/air1-JI4fSugUQvhRpK1FauJEEPoj3Vwe-QD02Q.jpg and /dev/null differ
diff --git a/docs/assets/air1-LwzqEXM9B89IWUQCIdZtwo_uYIbYVzdT0g.jpg b/docs/assets/air1-LwzqEXM9B89IWUQCIdZtwo_uYIbYVzdT0g.jpg
deleted file mode 100644
index 8744410dde..0000000000
Binary files a/docs/assets/air1-LwzqEXM9B89IWUQCIdZtwo_uYIbYVzdT0g.jpg and /dev/null differ
diff --git a/docs/assets/air1-Me6P6lhhZUQMhuY--kIQqoFHV6QgrxpO0g.jpg b/docs/assets/air1-Me6P6lhhZUQMhuY--kIQqoFHV6QgrxpO0g.jpg
deleted file mode 100644
index fc80512edb..0000000000
Binary files a/docs/assets/air1-Me6P6lhhZUQMhuY--kIQqoFHV6QgrxpO0g.jpg and /dev/null differ
diff --git a/docs/assets/air1-ObY0NPGDBIBaXPuhUVzo80fr1fToBm5ekg.png b/docs/assets/air1-ObY0NPGDBIBaXPuhUVzo80fr1fToBm5ekg.png
deleted file mode 100644
index 2dc48a278d..0000000000
Binary files a/docs/assets/air1-ObY0NPGDBIBaXPuhUVzo80fr1fToBm5ekg.png and /dev/null differ
diff --git a/docs/assets/air1-P3TZVCVhVSBYXFOWtPc4fZML_8-LQTEHQw.jpg b/docs/assets/air1-P3TZVCVhVSBYXFOWtPc4fZML_8-LQTEHQw.jpg
deleted file mode 100644
index 7f181cb038..0000000000
Binary files a/docs/assets/air1-P3TZVCVhVSBYXFOWtPc4fZML_8-LQTEHQw.jpg and /dev/null differ
diff --git a/docs/assets/air1-YfpAVN1FtpsODgbFgZg8qEVBNjl3NgaAvQ.png b/docs/assets/air1-YfpAVN1FtpsODgbFgZg8qEVBNjl3NgaAvQ.png
deleted file mode 100644
index 3d8fbdfbd9..0000000000
Binary files a/docs/assets/air1-YfpAVN1FtpsODgbFgZg8qEVBNjl3NgaAvQ.png and /dev/null differ
diff --git a/docs/assets/air1-a6nANg-L_gqIkPH6ZKQo6mCSSSbacF7FkQ.jpg b/docs/assets/air1-a6nANg-L_gqIkPH6ZKQo6mCSSSbacF7FkQ.jpg
deleted file mode 100644
index 15e7dde9c3..0000000000
Binary files a/docs/assets/air1-a6nANg-L_gqIkPH6ZKQo6mCSSSbacF7FkQ.jpg and /dev/null differ
diff --git a/docs/assets/air1-cS6XiR5FyO8wvSBi9sW3466gHoUWfT7HhA.png b/docs/assets/air1-cS6XiR5FyO8wvSBi9sW3466gHoUWfT7HhA.png
deleted file mode 100644
index ce4d91633e..0000000000
Binary files a/docs/assets/air1-cS6XiR5FyO8wvSBi9sW3466gHoUWfT7HhA.png and /dev/null differ
diff --git a/docs/assets/air1-hbfGA0fIQlpnykuuZOhiEuHlZDW7r3GfoQ.jpg b/docs/assets/air1-hbfGA0fIQlpnykuuZOhiEuHlZDW7r3GfoQ.jpg
deleted file mode 100644
index 2307f1b399..0000000000
Binary files a/docs/assets/air1-hbfGA0fIQlpnykuuZOhiEuHlZDW7r3GfoQ.jpg and /dev/null differ
diff --git a/docs/assets/air1-n0MT-JcoqRwPKYfZOaYyBD2RU4K3x_gmOA.jpg b/docs/assets/air1-n0MT-JcoqRwPKYfZOaYyBD2RU4K3x_gmOA.jpg
deleted file mode 100644
index 940583ae87..0000000000
Binary files a/docs/assets/air1-n0MT-JcoqRwPKYfZOaYyBD2RU4K3x_gmOA.jpg and /dev/null differ
diff --git a/docs/assets/air1-oBW2IxCJX5zKaZGj_o4JtXuoulEGI8DH5Q.jpg b/docs/assets/air1-oBW2IxCJX5zKaZGj_o4JtXuoulEGI8DH5Q.jpg
deleted file mode 100644
index 12bbb9492c..0000000000
Binary files a/docs/assets/air1-oBW2IxCJX5zKaZGj_o4JtXuoulEGI8DH5Q.jpg and /dev/null differ
diff --git a/docs/assets/cS6XiR5FyO8wvSBi9sW3466gHoUWfT7HhA.png b/docs/assets/cS6XiR5FyO8wvSBi9sW3466gHoUWfT7HhA.png
deleted file mode 100644
index ce4d91633e..0000000000
Binary files a/docs/assets/cS6XiR5FyO8wvSBi9sW3466gHoUWfT7HhA.png and /dev/null differ
diff --git a/docs/assets/gpio-led-dupont-hot-glue.webp b/docs/assets/gpio-led-dupont-hot-glue.webp
new file mode 100644
index 0000000000..1e5d878023
Binary files /dev/null and b/docs/assets/gpio-led-dupont-hot-glue.webp differ
diff --git a/docs/assets/gpio-led-dupont-wires-1.webp b/docs/assets/gpio-led-dupont-wires-1.webp
new file mode 100644
index 0000000000..2ece078b49
Binary files /dev/null and b/docs/assets/gpio-led-dupont-wires-1.webp differ
diff --git a/docs/assets/gpio-led-dupont-wires-2.webp b/docs/assets/gpio-led-dupont-wires-2.webp
new file mode 100644
index 0000000000..812fcee433
Binary files /dev/null and b/docs/assets/gpio-led-dupont-wires-2.webp differ
diff --git a/docs/assets/gpio-led-dupont-wires-3.webp b/docs/assets/gpio-led-dupont-wires-3.webp
new file mode 100644
index 0000000000..e9fb85cc1d
Binary files /dev/null and b/docs/assets/gpio-led-dupont-wires-3.webp differ
diff --git a/docs/assets/gpio-led-esphome-edit.webp b/docs/assets/gpio-led-esphome-edit.webp
new file mode 100644
index 0000000000..8f898be0d0
Binary files /dev/null and b/docs/assets/gpio-led-esphome-edit.webp differ
diff --git a/docs/assets/gpio-led-esphome-no-errors.webp b/docs/assets/gpio-led-esphome-no-errors.webp
new file mode 100644
index 0000000000..d2f9937c73
Binary files /dev/null and b/docs/assets/gpio-led-esphome-no-errors.webp differ
diff --git a/docs/assets/gpio-led-ha-color-picker.webp b/docs/assets/gpio-led-ha-color-picker.webp
new file mode 100644
index 0000000000..1cba6187d1
Binary files /dev/null and b/docs/assets/gpio-led-ha-color-picker.webp differ
diff --git a/docs/assets/gpio-led-ha-color-wheel.webp b/docs/assets/gpio-led-ha-color-wheel.webp
new file mode 100644
index 0000000000..513da390b3
Binary files /dev/null and b/docs/assets/gpio-led-ha-color-wheel.webp differ
diff --git a/docs/assets/gpio-led-ha-effect-list.webp b/docs/assets/gpio-led-ha-effect-list.webp
new file mode 100644
index 0000000000..3e4d523ba9
Binary files /dev/null and b/docs/assets/gpio-led-ha-effect-list.webp differ
diff --git a/docs/assets/gpio-led-ha-entity.webp b/docs/assets/gpio-led-ha-entity.webp
new file mode 100644
index 0000000000..9c937e219e
Binary files /dev/null and b/docs/assets/gpio-led-ha-entity.webp differ
diff --git a/docs/assets/gpio-led-msr2-align-x.webp b/docs/assets/gpio-led-msr2-align-x.webp
new file mode 100644
index 0000000000..93d7792f27
Binary files /dev/null and b/docs/assets/gpio-led-msr2-align-x.webp differ
diff --git a/docs/assets/gpio-led-msr2-backplate-off-1.webp b/docs/assets/gpio-led-msr2-backplate-off-1.webp
new file mode 100644
index 0000000000..c32ef3ab41
Binary files /dev/null and b/docs/assets/gpio-led-msr2-backplate-off-1.webp differ
diff --git a/docs/assets/gpio-led-msr2-backplate-off-2.webp b/docs/assets/gpio-led-msr2-backplate-off-2.webp
new file mode 100644
index 0000000000..7aeeb67704
Binary files /dev/null and b/docs/assets/gpio-led-msr2-backplate-off-2.webp differ
diff --git a/docs/assets/gpio-led-msr2-gpio-backplate.webp b/docs/assets/gpio-led-msr2-gpio-backplate.webp
new file mode 100644
index 0000000000..b37fce7ce6
Binary files /dev/null and b/docs/assets/gpio-led-msr2-gpio-backplate.webp differ
diff --git a/docs/assets/gpio-led-msr2-header-seated.webp b/docs/assets/gpio-led-msr2-header-seated.webp
new file mode 100644
index 0000000000..5b53a300d4
Binary files /dev/null and b/docs/assets/gpio-led-msr2-header-seated.webp differ
diff --git a/docs/assets/gpio-led-msr2-press-header.webp b/docs/assets/gpio-led-msr2-press-header.webp
new file mode 100644
index 0000000000..92be99f68c
Binary files /dev/null and b/docs/assets/gpio-led-msr2-press-header.webp differ
diff --git a/docs/assets/gpio-led-strip-arrow-1.webp b/docs/assets/gpio-led-strip-arrow-1.webp
new file mode 100644
index 0000000000..c1472b5997
Binary files /dev/null and b/docs/assets/gpio-led-strip-arrow-1.webp differ
diff --git a/docs/assets/gpio-led-strip-arrow-2.webp b/docs/assets/gpio-led-strip-arrow-2.webp
new file mode 100644
index 0000000000..c87e0907e1
Binary files /dev/null and b/docs/assets/gpio-led-strip-arrow-2.webp differ
diff --git a/docs/assets/gpio-led-strip-jst-1.webp b/docs/assets/gpio-led-strip-jst-1.webp
new file mode 100644
index 0000000000..853d6f512a
Binary files /dev/null and b/docs/assets/gpio-led-strip-jst-1.webp differ
diff --git a/docs/assets/gpio-led-strip-jst-2.webp b/docs/assets/gpio-led-strip-jst-2.webp
new file mode 100644
index 0000000000..680e2f2da3
Binary files /dev/null and b/docs/assets/gpio-led-strip-jst-2.webp differ
diff --git a/docs/assets/gpio-led-strip-lit.webp b/docs/assets/gpio-led-strip-lit.webp
new file mode 100644
index 0000000000..73bd76a74e
Binary files /dev/null and b/docs/assets/gpio-led-strip-lit.webp differ
diff --git a/docs/assets/hbfGA0fIQlpnykuuZOhiEuHlZDW7r3GfoQ.jpg b/docs/assets/hbfGA0fIQlpnykuuZOhiEuHlZDW7r3GfoQ.jpg
deleted file mode 100644
index 2307f1b399..0000000000
Binary files a/docs/assets/hbfGA0fIQlpnykuuZOhiEuHlZDW7r3GfoQ.jpg and /dev/null differ
diff --git a/docs/assets/n0MT-JcoqRwPKYfZOaYyBD2RU4K3x_gmOA.jpg b/docs/assets/n0MT-JcoqRwPKYfZOaYyBD2RU4K3x_gmOA.jpg
deleted file mode 100644
index 940583ae87..0000000000
Binary files a/docs/assets/n0MT-JcoqRwPKYfZOaYyBD2RU4K3x_gmOA.jpg and /dev/null differ
diff --git a/docs/assets/oBW2IxCJX5zKaZGj_o4JtXuoulEGI8DH5Q.jpg b/docs/assets/oBW2IxCJX5zKaZGj_o4JtXuoulEGI8DH5Q.jpg
deleted file mode 100644
index 12bbb9492c..0000000000
Binary files a/docs/assets/oBW2IxCJX5zKaZGj_o4JtXuoulEGI8DH5Q.jpg and /dev/null differ
diff --git a/docs/homey/products/air1/addons/adding-gpio-header-to-air-1.md b/docs/homey/products/air1/addons/adding-gpio-header-to-air-1.md
index d78a7aaa53..8c95facd6b 100755
--- a/docs/homey/products/air1/addons/adding-gpio-header-to-air-1.md
+++ b/docs/homey/products/air1/addons/adding-gpio-header-to-air-1.md
@@ -22,19 +22,19 @@ description: Adding Optional GPIO Header to AIR-1.
5\. Flip the PCB over and identify the Top Right corner where the small black mezzanine connector lives. You will see an "X" indicating which corner needs to be lined up with the PCB of the GPIO Header. There is an X on the GPIO Header's PCB as well, you can see it in the images below
-
+
6\. Match up the X on the PCB of the GPIO Header and the X on the AIR-1 PCB and then gently push the GPIO Header onto the black mezzanine connector.
-
+
7\. Flip the AIR-1 PCB over and gently slide it back into the new AIR-1 Lid which came with your GPIO Header addon! Please do not use much force, the PCB should slide in relatively smoothly, with a tiny bit of force needed. There are three channels in the plastic where the PCB slides into!
-
+
8\. Gently push the case back together as shown below.
-
+
9\. You are now done and your AIR-1 is now able to be used with the GPIO Header addon! Here is the pinout image below and here's a great wiki article showing you how to add a small led strip!
diff --git a/docs/homey/products/msr2/examples/gpio-header-control-an-led-strip.md b/docs/homey/products/msr2/examples/gpio-header-control-an-led-strip.md
index 2b9bf564c7..99725b1fb1 100755
--- a/docs/homey/products/msr2/examples/gpio-header-control-an-led-strip.md
+++ b/docs/homey/products/msr2/examples/gpio-header-control-an-led-strip.md
@@ -1,127 +1 @@
-# How To Use The Apollo GPIO Header To Control An LED Strip
-
-This tutorial will guide you through setting up one of our MSR-2 devices (works with any mezzanine port on any Apollo Device) with the optional $4.99 GPIO Header which adds pins for you to easily add functionality to your device! In this tutorial, however, we will be focusing on adding an LED strip to your Apollo device.
-
-**Materials Needed for tutorial:**
-
-- [Apollo MSR-2](https://apolloautomation.com/products/msr-2), [Apollo MTR-1](https://apolloautomation.com/products/mtr-1), and all other future Apollo Automation products with the mezzanine port.
-- [Apollo GPIO Header](https://apolloautomation.com/products/msr-2-gpio-header)
-- ws2812b aka neopixel RGB led strip or similar. sk6812 RGBW strip will also work.
-- Optional DuPont Cables for GPIO Header but any DuPont cables will do.
-- USB-C cable and power brick to power MSR-2
-
-You are limited to 300mA of power output from the 5v port. You can either attach an external power supply and power the MSR-2 via 5v and gnd pins or work with the limited power output of the port
-
-
-
-Above is an image of the GPIO Header and its pinouts. We can use ports 2,4,6,7 for our data channel to an LED strip or multiple LED strips. We will also use the top two ports which are ground and 5v for power.
-
-Did you know you can power the esp32 from the 5v and gnd pin? That means you can connect an external power supply and power it without the side USB port being used! This also allows for more power to be given to your LEDs!
-
-We cannot use the IO ports 0,1,18, or 19 for LEDs but you can use ports 0 and 1 for i2c sensors.
-
-
-
-**Connecting the GPIO Header to the MSR-2**
-
-The first thing we will do is remove our MSR-2 back plate and connect our GPIO Header to our MSR-2 and then put the new GPIO back plate on (blue).
-
-Step 1. Remove the backplate of the MSR-2
-
- 
-
-Step 2. Line up the Xs shown on the msr-2 and the GPIO Header. They should both be facing in the same direction as shown below.
-
-
-
-Step 3. Gently push down onto the GPIO Header as shown below:
-
-
-
-Step 4. Confirm the GPIO Header is seated properly as shown below.
-
-
-
-Step 5. Slide the GPIO Header back plate for the MSR-2 over your sensor and gently push down until it clicks into place.
-
-
-
-If the back plate does not gently go onto the sensor please investigate and confirm it is in the right orientation.
-
-**Connecting DuPont pins to proper GPIO ports**
-Now we need to reference the GPIO pinout we looked at above and then connect three wires. You will need three male-to-male DuPont wires included in your kit. I suggest using red for power aka 5v, White for ground aka GND, and green for data aka port IO7. Most LED strips will also have this same color scheme and it's easier to match like colors together.
-
-
-
-
-
-
-
-You can add a bit of hot glue to the Dupont wires to hold them together. DO NOT put hot glue into the GPIO Header's female pins that will ruin the addon. I am only suggesting that you can hot-glue the Dupont pins outer shell themselves together to stiffen them up.
-
-
-
-**Connecting DuPont pins to LED Strip**
-
-Next, we need to connect the other side of the Dupont pins to the LED strip. Most likely your LED strip will have a JST-SM connector which is a 3amp max connector with three wires connected: red for 5v, green for data, and white for gnd. We will be matching up our red, green, and white wires already attached to the GPIO add-on pins in the MSR-2 (using IO7 as the data pin for this tutorial)
-
- 
-
-Make sure to connect to the correct side of the LED strip. The led strip will have an arrow going down the led strip showing one direction for the data line. you want the data channel going FROM the msr-2 TO the led strip going in a "forward" direction as shown below.
-
- 
-
-**Edit the YAML of your MSR-2 to let it know about your new LED strip**
-
-Finally, we need to tell the MSR-2 that we connected an LED strip. We need to tell it how many LEDs we have and we need to tell it that it's our second LED since the built-in LED is the first. This tutorial assumes you are comfortable with the ESPHome dashboard.
-
-Step 1. Open ESPhome Dashboard and click edit to bring up the yaml your sensor is currently using.
-
-
-
-You will see some YAML code here and you do NOT want to touch anything above line 20. If you need to, click your cursor at the end of wifi\_password and hit enter to create a new line then make sure you backspace until you are "flush" with the line numbers like how wifi: is.
-
-Step 2. Copy the code below and paste it to line 20 in your ESPHome yaml for this device.
-
-```generic
-light:
- - platform: esp32_rmt_led_strip
- id: bed_led
- name: "Bed LED"
- pin: GPIO7
- rmt_channel: 1
- default_transition_length: 0s
- chipset: WS2812
- num_leds: 60
- rgb_order: grb
- effects:
- - pulse:
- name: "Slow Pulse"
- transition_length: 1000ms
- update_interval: 1000ms
- min_brightness: 50%
- max_brightness: 100%
- - pulse:
- name: "Fast Pulse"
- transition_length: 100ms
- update_interval: 100ms
- min_brightness: 50%
- max_brightness: 100%
- - addressable_rainbow:
-```
-
-
-This is where you can change your number of LEDs as well as the GPIO pin used for the LED data!
-Make sure to check out [https://esphome.io/components/light/index.html#light-effects](https://esphome.io/components/light/index.html#light-effects) for all the effects supported such as addressable scan effect!Step 3. Confirm you do not have any red lines showing errors in your code
-You change the rmt\_channel to 1 because 0 is being used by the built-in LED of the MSR-2.
-Step 4. Hit save and then install in the top right. It should have a popup where you select "wirelessly" then it will begin compiling the firmware and finally installing the compiled firmware to your MSR-2.Step 5. Go into home assistant and confirm you now have a new light entity called Bed LED
-
-
-
-Step 6. Click on the name "Bed LED" circled and it will pop up a color picker. You can then choose the color wheel option to pick any color of the rainbow, or select "effect" and choose an effect.
-
-  
-
-
-
-That's all folks! Thanks to Smart Home Sellout for putting this tutorial together!
\ No newline at end of file
+--8<-- "products/msr2/examples/gpio-header-control-an-led-strip.md:5:"
diff --git a/docs/homey/products/mtr1/examples/how-to-use-the-apollo-gpio-header-to-control-an-led-strip.md b/docs/homey/products/mtr1/examples/how-to-use-the-apollo-gpio-header-to-control-an-led-strip.md
index 2b9bf564c7..99725b1fb1 100755
--- a/docs/homey/products/mtr1/examples/how-to-use-the-apollo-gpio-header-to-control-an-led-strip.md
+++ b/docs/homey/products/mtr1/examples/how-to-use-the-apollo-gpio-header-to-control-an-led-strip.md
@@ -1,127 +1 @@
-# How To Use The Apollo GPIO Header To Control An LED Strip
-
-This tutorial will guide you through setting up one of our MSR-2 devices (works with any mezzanine port on any Apollo Device) with the optional $4.99 GPIO Header which adds pins for you to easily add functionality to your device! In this tutorial, however, we will be focusing on adding an LED strip to your Apollo device.
-
-**Materials Needed for tutorial:**
-
-- [Apollo MSR-2](https://apolloautomation.com/products/msr-2), [Apollo MTR-1](https://apolloautomation.com/products/mtr-1), and all other future Apollo Automation products with the mezzanine port.
-- [Apollo GPIO Header](https://apolloautomation.com/products/msr-2-gpio-header)
-- ws2812b aka neopixel RGB led strip or similar. sk6812 RGBW strip will also work.
-- Optional DuPont Cables for GPIO Header but any DuPont cables will do.
-- USB-C cable and power brick to power MSR-2
-
-You are limited to 300mA of power output from the 5v port. You can either attach an external power supply and power the MSR-2 via 5v and gnd pins or work with the limited power output of the port
-
-
-
-Above is an image of the GPIO Header and its pinouts. We can use ports 2,4,6,7 for our data channel to an LED strip or multiple LED strips. We will also use the top two ports which are ground and 5v for power.
-
-Did you know you can power the esp32 from the 5v and gnd pin? That means you can connect an external power supply and power it without the side USB port being used! This also allows for more power to be given to your LEDs!
-
-We cannot use the IO ports 0,1,18, or 19 for LEDs but you can use ports 0 and 1 for i2c sensors.
-
-
-
-**Connecting the GPIO Header to the MSR-2**
-
-The first thing we will do is remove our MSR-2 back plate and connect our GPIO Header to our MSR-2 and then put the new GPIO back plate on (blue).
-
-Step 1. Remove the backplate of the MSR-2
-
- 
-
-Step 2. Line up the Xs shown on the msr-2 and the GPIO Header. They should both be facing in the same direction as shown below.
-
-
-
-Step 3. Gently push down onto the GPIO Header as shown below:
-
-
-
-Step 4. Confirm the GPIO Header is seated properly as shown below.
-
-
-
-Step 5. Slide the GPIO Header back plate for the MSR-2 over your sensor and gently push down until it clicks into place.
-
-
-
-If the back plate does not gently go onto the sensor please investigate and confirm it is in the right orientation.
-
-**Connecting DuPont pins to proper GPIO ports**
-Now we need to reference the GPIO pinout we looked at above and then connect three wires. You will need three male-to-male DuPont wires included in your kit. I suggest using red for power aka 5v, White for ground aka GND, and green for data aka port IO7. Most LED strips will also have this same color scheme and it's easier to match like colors together.
-
-
-
-
-
-
-
-You can add a bit of hot glue to the Dupont wires to hold them together. DO NOT put hot glue into the GPIO Header's female pins that will ruin the addon. I am only suggesting that you can hot-glue the Dupont pins outer shell themselves together to stiffen them up.
-
-
-
-**Connecting DuPont pins to LED Strip**
-
-Next, we need to connect the other side of the Dupont pins to the LED strip. Most likely your LED strip will have a JST-SM connector which is a 3amp max connector with three wires connected: red for 5v, green for data, and white for gnd. We will be matching up our red, green, and white wires already attached to the GPIO add-on pins in the MSR-2 (using IO7 as the data pin for this tutorial)
-
- 
-
-Make sure to connect to the correct side of the LED strip. The led strip will have an arrow going down the led strip showing one direction for the data line. you want the data channel going FROM the msr-2 TO the led strip going in a "forward" direction as shown below.
-
- 
-
-**Edit the YAML of your MSR-2 to let it know about your new LED strip**
-
-Finally, we need to tell the MSR-2 that we connected an LED strip. We need to tell it how many LEDs we have and we need to tell it that it's our second LED since the built-in LED is the first. This tutorial assumes you are comfortable with the ESPHome dashboard.
-
-Step 1. Open ESPhome Dashboard and click edit to bring up the yaml your sensor is currently using.
-
-
-
-You will see some YAML code here and you do NOT want to touch anything above line 20. If you need to, click your cursor at the end of wifi\_password and hit enter to create a new line then make sure you backspace until you are "flush" with the line numbers like how wifi: is.
-
-Step 2. Copy the code below and paste it to line 20 in your ESPHome yaml for this device.
-
-```generic
-light:
- - platform: esp32_rmt_led_strip
- id: bed_led
- name: "Bed LED"
- pin: GPIO7
- rmt_channel: 1
- default_transition_length: 0s
- chipset: WS2812
- num_leds: 60
- rgb_order: grb
- effects:
- - pulse:
- name: "Slow Pulse"
- transition_length: 1000ms
- update_interval: 1000ms
- min_brightness: 50%
- max_brightness: 100%
- - pulse:
- name: "Fast Pulse"
- transition_length: 100ms
- update_interval: 100ms
- min_brightness: 50%
- max_brightness: 100%
- - addressable_rainbow:
-```
-
-
-This is where you can change your number of LEDs as well as the GPIO pin used for the LED data!
-Make sure to check out [https://esphome.io/components/light/index.html#light-effects](https://esphome.io/components/light/index.html#light-effects) for all the effects supported such as addressable scan effect!Step 3. Confirm you do not have any red lines showing errors in your code
-You change the rmt\_channel to 1 because 0 is being used by the built-in LED of the MSR-2.
-Step 4. Hit save and then install in the top right. It should have a popup where you select "wirelessly" then it will begin compiling the firmware and finally installing the compiled firmware to your MSR-2.Step 5. Go into home assistant and confirm you now have a new light entity called Bed LED
-
-
-
-Step 6. Click on the name "Bed LED" circled and it will pop up a color picker. You can then choose the color wheel option to pick any color of the rainbow, or select "effect" and choose an effect.
-
-  
-
-
-
-That's all folks! Thanks to Smart Home Sellout for putting this tutorial together!
\ No newline at end of file
+--8<-- "products/msr2/examples/gpio-header-control-an-led-strip.md:5:"
diff --git a/docs/products/air1/addons/adding-gpio-header-to-air-1.md b/docs/products/air1/addons/adding-gpio-header-to-air-1.md
index d78a7aaa53..8c95facd6b 100755
--- a/docs/products/air1/addons/adding-gpio-header-to-air-1.md
+++ b/docs/products/air1/addons/adding-gpio-header-to-air-1.md
@@ -22,19 +22,19 @@ description: Adding Optional GPIO Header to AIR-1.
5\. Flip the PCB over and identify the Top Right corner where the small black mezzanine connector lives. You will see an "X" indicating which corner needs to be lined up with the PCB of the GPIO Header. There is an X on the GPIO Header's PCB as well, you can see it in the images below
-
+
6\. Match up the X on the PCB of the GPIO Header and the X on the AIR-1 PCB and then gently push the GPIO Header onto the black mezzanine connector.
-
+
7\. Flip the AIR-1 PCB over and gently slide it back into the new AIR-1 Lid which came with your GPIO Header addon! Please do not use much force, the PCB should slide in relatively smoothly, with a tiny bit of force needed. There are three channels in the plastic where the PCB slides into!
-
+
8\. Gently push the case back together as shown below.
-
+
9\. You are now done and your AIR-1 is now able to be used with the GPIO Header addon! Here is the pinout image below and here's a great wiki article showing you how to add a small led strip!
diff --git a/docs/products/air1/examples/how-to-use-the-apollo-gpio-header-to-control-an-led-strip.md b/docs/products/air1/examples/how-to-use-the-apollo-gpio-header-to-control-an-led-strip.md
index 3de2812e53..6dab2b08fd 100755
--- a/docs/products/air1/examples/how-to-use-the-apollo-gpio-header-to-control-an-led-strip.md
+++ b/docs/products/air1/examples/how-to-use-the-apollo-gpio-header-to-control-an-led-strip.md
@@ -1,130 +1,130 @@
---
-title: How To Use The Apollo GPIO Header To Control An LED Strip
-description: A tutorial for how To Use The Apollo GPIO Header To Control An LED Strip.
+title: Control an LED strip with the GPIO Header
+description: Wire a WS2812B LED strip to the AIR-1 GPIO Header and control it from Home Assistant.
---
-# How To Use The Apollo GPIO Header To Control An LED Strip
+# Control an LED strip with the GPIO Header
-This tutorial will guide you through setting up one of our MSR-2 devices (works with any mezzanine port on any Apollo Device) with the optional $4.99 GPIO Header which adds pins for you to easily add functionality to your device! In this tutorial, however, we will be focusing on adding an LED strip to your Apollo device.
+The GPIO Header addon brings the AIR-1's spare pins out to a row of headers, so you can hang your own hardware off the sensor. This guide wires a WS2812B strip to one of those pins and gets it into Home Assistant as its own light entity, color picker and effects included.
-**Materials Needed for tutorial:**
+Click any photo to see it full size.
-* [Apollo MSR-2](https://apolloautomation.com/products/msr-2), [Apollo MTR-1](https://apolloautomation.com/products/mtr-1), and all other future Apollo Automation products with the mezzanine port.
-* [Apollo GPIO Header](https://apolloautomation.com/products/msr-2-gpio-header)
-* ws2812b aka neopixel RGB led strip or similar. sk6812 RGBW strip will also work. I used BTF Lighting ws2812b 60 leds/meter and white PCB.
-* Optional DuPont Cables for GPIO Header but any DuPont cables will do.
-* USB-C cable and power brick to power MSR-2
+## What you need
-You are limited to 300mA of power output from the 5v port. You can either attach an external power supply and power the MSR-2 via 5v and gnd pins or work with the limited power output of the port
+- An [Apollo AIR-1](https://apolloautomation.com/products/air-1).
+- The [Apollo GPIO Header](https://apolloautomation.com/products/msr-2-gpio-header) addon, which ships with a replacement AIR-1 lid.
+- A WS2812B (neopixel) RGB strip. SK6812 RGBW strips work too.
+- Three male-to-male DuPont wires. A set comes with the header.
+- A USB-C cable and power brick.
-
+!!! warning "Watch the current draw"
-Above is an image of the GPIO Header and its pinouts. We can use ports 2,4,6,7 for our data channel to an LED strip or multiple LED strips. We will also use the top two ports which are ground and 5v for power.
+ The 5V pin supplies up to 300mA. A meter of 60 LEDs at full white draws far more than that, so anything longer than a short strip needs its own 5V supply. You can power the AIR-1 itself from the 5V and GND pins instead of the USB-C port, but use one or the other, never both.
-Did you know you can power the esp32 from the 5v and gnd pin? That means you can connect an external power supply and power it without the side USB port being used! This also allows for more power to be given to your LEDs!
+## Choosing a data pin
-We cannot use the IO ports 0,1,18, or 19 for LEDs but you can use ports 0 and 1 for i2c sensors.
+IO2, IO4, IO6, and IO7 are free for LED data, and you can drive more than one strip by giving each its own pin. IO18 and IO19 are unavailable, and IO0 and IO1 are reserved for I2C sensors. This guide uses **IO7**, plus the 5V and GND pins at the top of the header for power.
-**Connecting the GPIO Header to the MSR-2**
+{ width="480" }
-The first thing we will do is remove our MSR-2 back plate and connect our GPIO Header to our MSR-2 and then put the new GPIO back plate on (blue).
+## Attaching the GPIO Header
-Step 1. Remove the backplate of the MSR-2
+Opening an AIR-1 takes a few more steps than the other Apollo sensors, because the PCB slides out of the case. The [GPIO Header addon page](/products/air1/addons/adding-gpio-header-to-air-1.md) has photos of each one.
- 
+1. Unplug the AIR-1, lift the lid off, and slide the PCB out to the left.
-Step 2. Line up the Xs shown on the msr-2 and the GPIO Header. They should both be facing in the same direction as shown below.
+2. Flip the PCB over and find the small black mezzanine connector in the top right corner. An X marks the corner, and the GPIO Header has a matching X on its own board.
-
+ { width="200" } { width="200" }
-Step 3. Gently push down onto the GPIO Header as shown below:
+3. Line the two X markings up and press the header gently onto the connector.
-
+ { width="200" } { width="200" } { width="200" }
-Step 4. Confirm the GPIO Header is seated properly as shown below.
+4. Flip the PCB back over and slide it into the new lid that came with the addon. There are three channels in the plastic for it to run in, so it should go most of the way with light pressure.
-
+ { width="200" } { width="200" }
-Step 5. Slide the GPIO Header back plate for the MSR-2 over your sensor and gently push down until it clicks into place.
+5. Push the case back together.
-
+ { width="200" } { width="200" } { width="200" }
-If the back plate does not gently go onto the sensor please investigate and confirm it is in the right orientation.
+## Wiring the strip
-**Connecting DuPont pins to proper GPIO ports** Now we need to reference the GPIO pinout we looked at above and then connect three wires. You will need three male-to-male DuPont wires included in your kit. I suggest using red for power aka 5v, White for ground aka GND, and green for data aka port IO7. Most LED strips will also have this same color scheme and it's easier to match like colors together.
+1. Run three wires from the header to the strip: 5V, GND, and data. Matching the colors to the strip's own wiring saves a lot of squinting later, so use red for 5V, white for GND, and green for data on IO7.
-
+ { width="200" } { width="200" } { width="200" }
-
+2. Plug the other end into the strip. Most strips come with a JST-SM pigtail carrying the same three colors, so the wires match up directly. The connector is rated to 3A.
-
+ { width="200" } { width="200" }
-You can add a bit of hot glue to the Dupont wires to hold them together. DO NOT put hot glue into the GPIO Header's female pins that will ruin the addon. I am only suggesting that you can hot-glue the Dupont pins outer shell themselves together to stiffen them up.
+3. Check the direction before you power anything on. Arrows printed along the strip show which way data flows, and they need to point away from the AIR-1.
-
+ { width="200" } { width="200" }
-**Connecting DuPont pins to LED Strip**
+A dab of hot glue across the outer shells of the three DuPont connectors stiffens them into a single plug. (1)
+{ .annotate }
-Next, we need to connect the other side of the Dupont pins to the LED strip. Most likely your LED strip will have a JST-SM connector which is a 3amp max connector with three wires connected: red for 5v, green for data, and white for gnd. We will be matching up our red, green, and white wires already attached to the GPIO add-on pins in the MSR-2 (using IO7 as the data pin for this tutorial)
+1. Keep glue out of the header's female pins. It will ruin the addon.
- 
+{ width="200" }
-Make sure to connect to the correct side of the LED strip. The led strip will have an arrow going down the led strip showing one direction for the data line. you want the data channel going FROM the msr-2 TO the led strip going in a "forward" direction as shown below.
+## Adding the strip to your YAML
- 
+The AIR-1 knows nothing about the strip until you tell it how many LEDs there are and which pin they sit on.
-**Edit the YAML of your MSR-2 to let it know about your new LED strip**
+1. Open the **ESPHome Device Builder** app, find your AIR-1, and click **Edit**.
-Finally, we need to tell the MSR-2 that we connected an LED strip. We need to tell it how many LEDs we have and we need to tell it that it's our second LED since the built-in LED is the first. This tutorial assumes you are comfortable with the ESPHome dashboard.
+ { width="480" }
-Step 1. Open ESPhome Dashboard and click edit to bring up the yaml your sensor is currently using.
+2. Add the block below at the bottom of the file, flush with the left margin so `light:` lines up with `packages:` and `wifi:`. Set `num_leds` to the number of LEDs on your strip, and change `pin` if you wired to a different port.
-
+ ```yaml
+ light:
+ - platform: esp32_rmt_led_strip
+ id: bed_led
+ name: "Bed LED"
+ pin: GPIO7
+ chipset: WS2812
+ rgb_order: grb
+ num_leds: 60
+ default_transition_length: 0s
+ effects:
+ - pulse:
+ name: "Slow Pulse"
+ transition_length: 1000ms
+ update_interval: 1000ms
+ min_brightness: 50%
+ max_brightness: 100%
+ - pulse:
+ name: "Fast Pulse"
+ transition_length: 100ms
+ update_interval: 100ms
+ min_brightness: 50%
+ max_brightness: 100%
+ - addressable_rainbow:
+ ```
-You will see some YAML code here and you do NOT want to touch anything above line 20. If you need to, click your cursor at the end of wifi\_password and hit enter to create a new line then make sure you backspace until you are "flush" with the line numbers like how wifi: is.
+3. Check that the editor shows no red error markers.
-Step 2. Copy the code below and paste it to line 20 in your ESPHome yaml for this device.
+ { width="300" }
-```yaml
-light:
- - platform: esp32_rmt_led_strip
- id: bed_led
- name: "Bed LED"
- pin: GPIO7
- rmt_channel: 1
- default_transition_length: 0s
- chipset: WS2812
- num_leds: 60
- rgb_order: grb
- effects:
- - pulse:
- name: "Slow Pulse"
- transition_length: 1000ms
- update_interval: 1000ms
- min_brightness: 50%
- max_brightness: 100%
- - pulse:
- name: "Fast Pulse"
- transition_length: 100ms
- update_interval: 100ms
- min_brightness: 50%
- max_brightness: 100%
- - addressable_rainbow:
-```
+4. Click **Save**, then **Install**, and pick **Wirelessly**. ESPHome compiles the firmware and sends it to the AIR-1. The first build takes a few minutes.
-This is where you can change your number of LEDs as well as the GPIO pin used for the LED data!
Make sure to check out [https://esphome.io/components/light/index.html#light-effects](https://esphome.io/components/light/index.html#light-effects) for all the effects supported such as addressable scan effect!
+Older versions of this guide set `rmt_channel: 1` on the light. ESPHome dropped that option, and leaving it in now fails validation, so the block above does not use it.
-Step 3. Confirm you do not have any red lines showing errors in your codeYou change the rmt\_channel to 1 because 0 is being used by the built-in LED of the MSR-2.
+The [ESPHome light effects reference](https://esphome.io/components/light/index.html#light-effects) covers everything else you can add under `effects:`, including `addressable_scan`.
-Step 4. Hit save and then install in the top right. It should have a popup where you select "wirelessly" then it will begin compiling the firmware and finally installing the compiled firmware to your MSR-2.
+## Controlling it from Home Assistant
-Step 5. Go into home assistant and confirm you now have a new light entity called Bed LED
+Once the install finishes, the AIR-1 exposes a new light entity called **Bed LED**.
-
+{ width="500" }
-Step 6. Click on the name "Bed LED" circled and it will pop up a color picker. You can then choose the color wheel option to pick any color of the rainbow, or select "effect" and choose an effect.
+Click the entity name to open the light card. The color wheel covers the full range, and the effects list holds the two pulses and the rainbow from the YAML above.
-  
+{ width="190" } { width="195" } { width="190" }
-
+{ width="260" }
-
\ No newline at end of file
+That's all folks! Thanks to Smart Home Sellout for putting this tutorial together.
diff --git a/docs/products/general/tutorials/how-to-use-the-apollo-gpio-header-to-control-an-led-strip.md b/docs/products/general/tutorials/how-to-use-the-apollo-gpio-header-to-control-an-led-strip.md
index ca920eb211..aa83981b42 100755
--- a/docs/products/general/tutorials/how-to-use-the-apollo-gpio-header-to-control-an-led-strip.md
+++ b/docs/products/general/tutorials/how-to-use-the-apollo-gpio-header-to-control-an-led-strip.md
@@ -1,131 +1,5 @@
---
-title: How To Use The Apollo GPIO Header To Control An LED Strip
-description: Tutorial on How To Use The Apollo GPIO Header To Control An LED Strip
+title: Control an LED strip with the GPIO Header
+description: Wire a WS2812B LED strip to the Apollo GPIO Header and control it from Home Assistant.
---
-# How To Use The Apollo GPIO Header To Control An LED Strip
-
-This tutorial will guide you through setting up one of our MSR-2 devices (works with any mezzanine port on any Apollo Device) with the optional $4.99 GPIO Header which adds pins for you to easily add functionality to your device! In this tutorial, however, we will be focusing on adding an LED strip to your Apollo device.
-
-**Materials Needed for tutorial:**
-
-- [Apollo MSR-2](https://apolloautomation.com/products/msr-2 "Apollo MSR-2 mmWave Sensor"), [Apollo MTR-1](https://apolloautomation.com/products/mtr-1 "Apollo MTR-1 mmWave Sensor"), [Apollo Air-1](https://apolloautomation.com/products/air-1 "Apollo Air-1 Multisensor") and all other future Apollo Automation products with the mezzanine port.
-- [Apollo GPIO Header](https://apolloautomation.com/products/msr-2-gpio-header)
-- ws2812b aka neopixel RGB led strip or similar. sk6812 RGBW strip will also work.
-- Optional DuPont Cables for GPIO Header but any DuPont cables will do.
-- USB-C cable and power brick to power MSR-2
-
-You are limited to 300mA of power output from the 5v port. You can either attach an external power supply and power the MSR-2 via 5v and gnd pins or work with the limited power output of the port
-
-
-
-Above is an image of the GPIO Header and its pinouts. We can use ports 2,4,6,7 for our data channel to an LED strip or multiple LED strips. We will also use the top two ports which are ground and 5v for power.
-
-Did you know you can power the esp32 from the 5v and gnd pin? That means you can connect an external power supply and power it without the side USB port being used! This also allows for more power to be given to your LEDs!
-
-We cannot use the IO ports 0,1,18, or 19 for LEDs but you can use ports 0 and 1 for i2c sensors.
-
-
-
-**Connecting the GPIO Header to the MSR-2**
-
-The first thing we will do is remove our MSR-2 back plate and connect our GPIO Header to our MSR-2 and then put the new GPIO back plate on (blue).
-
-Step 1. Remove the backplate of the MSR-2
-
- 
-
-Step 2. Line up the Xs shown on the msr-2 and the GPIO Header. They should both be facing in the same direction as shown below.
-
-
-
-Step 3. Gently push down onto the GPIO Header as shown below:
-
-
-
-Step 4. Confirm the GPIO Header is seated properly as shown below.
-
-
-
-Step 5. Slide the GPIO Header back plate for the MSR-2 over your sensor and gently push down until it clicks into place.
-
-
-
-If the back plate does not gently go onto the sensor please investigate and confirm it is in the right orientation.
-
-**Connecting DuPont pins to proper GPIO ports**
-Now we need to reference the GPIO pinout we looked at above and then connect three wires. You will need three male-to-male DuPont wires included in your kit. I suggest using red for power aka 5v, White for ground aka GND, and green for data aka port IO7. Most LED strips will also have this same color scheme and it's easier to match like colors together.
-
-
-
-
-
-
-
-You can add a bit of hot glue to the Dupont wires to hold them together. DO NOT put hot glue into the GPIO Header's female pins that will ruin the addon. I am only suggesting that you can hot-glue the Dupont pins outer shell themselves together to stiffen them up.
-
-
-
-**Connecting DuPont pins to LED Strip**
-
-Next, we need to connect the other side of the Dupont pins to the LED strip. Most likely your LED strip will have a JST-SM connector which is a 3amp max connector with three wires connected: red for 5v, green for data, and white for gnd. We will be matching up our red, green, and white wires already attached to the GPIO add-on pins in the MSR-2 (using IO7 as the data pin for this tutorial)
-
- 
-
-Make sure to connect to the correct side of the LED strip. The led strip will have an arrow going down the led strip showing one direction for the data line. you want the data channel going FROM the msr-2 TO the led strip going in a "forward" direction as shown below.
-
- 
-
-**Edit the YAML of your MSR-2 to let it know about your new LED strip**
-
-Finally, we need to tell the MSR-2 that we connected an LED strip. We need to tell it how many LEDs we have and we need to tell it that it's our second LED since the built-in LED is the first. This tutorial assumes you are comfortable with the ESPHome dashboard.
-
-Step 1. Open ESPhome Dashboard and click edit to bring up the yaml your sensor is currently using.
-
-
-
-You will see some YAML code here and you do NOT want to touch anything above line 20. If you need to, click your cursor at the end of wifi\_password and hit enter to create a new line then make sure you backspace until you are "flush" with the line numbers like how wifi: is.
-
-Step 2. Copy the code below and paste it to line 20 in your ESPHome yaml for this device.
-
-```generic
-light:
- - platform: esp32_rmt_led_strip
- id: bed_led
- name: "Bed LED"
- pin: GPIO7
- rmt_channel: 1
- default_transition_length: 0s
- chipset: WS2812
- num_leds: 60
- rgb_order: grb
- effects:
- - pulse:
- name: "Slow Pulse"
- transition_length: 1000ms
- update_interval: 1000ms
- min_brightness: 50%
- max_brightness: 100%
- - pulse:
- name: "Fast Pulse"
- transition_length: 100ms
- update_interval: 100ms
- min_brightness: 50%
- max_brightness: 100%
- - addressable_rainbow:
-```
-
-
-This is where you can change your number of LEDs as well as the GPIO pin used for the LED data!
-Make sure to check out [https://esphome.io/components/light/index.html#light-effects](https://esphome.io/components/light/index.html#light-effects) for all the effects supported such as addressable scan effect!Step 3. Confirm you do not have any red lines showing errors in your code
-You change the rmt\_channel to 1 because 0 is being used by the built-in LED of the MSR-2.
-Step 4. Hit save and then install in the top right. It should have a popup where you select "wirelessly" then it will begin compiling the firmware and finally installing the compiled firmware to your MSR-2.Step 5. Go into home assistant and confirm you now have a new light entity called Bed LED
-
-
-
-Step 6. Click on the name "Bed LED" circled and it will pop up a color picker. You can then choose the color wheel option to pick any color of the rainbow, or select "effect" and choose an effect.
-
-  
-
-
-
-That's all folks! Thanks to Smart Home Sellout for putting this tutorial together!
\ No newline at end of file
+--8<-- "products/msr2/examples/gpio-header-control-an-led-strip.md:5:"
diff --git a/docs/products/msr2/examples/gpio-header-control-an-led-strip.md b/docs/products/msr2/examples/gpio-header-control-an-led-strip.md
index a9e7924087..020265a913 100755
--- a/docs/products/msr2/examples/gpio-header-control-an-led-strip.md
+++ b/docs/products/msr2/examples/gpio-header-control-an-led-strip.md
@@ -1,131 +1,126 @@
---
-title: How To Use The Apollo GPIO Header To Control An LED Strip
-description: A tutorial for how To Use The Apollo GPIO Header To Control An LED Strip.
+title: Control an LED strip with the GPIO Header
+description: Wire a WS2812B LED strip to the Apollo GPIO Header and control it from Home Assistant.
---
-# How To Use The Apollo GPIO Header To Control An LED Strip
+# Control an LED strip with the GPIO Header
-This tutorial will guide you through setting up one of our MSR-2 devices (works with any mezzanine port on any Apollo Device) with the optional $4.99 GPIO Header which adds pins for you to easily add functionality to your device! In this tutorial, however, we will be focusing on adding an LED strip to your Apollo device.
+The GPIO Header addon brings the MSR-2's spare pins out to a row of headers, so you can hang your own hardware off the sensor. This guide wires a WS2812B strip to one of those pins and gets it into Home Assistant as its own light entity, color picker and effects included.
-**Materials Needed for tutorial:**
+The same steps work on any Apollo device with a mezzanine port, including the MTR-1 and AIR-1. Click any photo to see it full size.
-- [Apollo MSR-2](https://apolloautomation.com/products/msr-2), [Apollo MTR-1](https://apolloautomation.com/products/mtr-1), and all other future Apollo Automation products with the mezzanine port.
-- [Apollo GPIO Header](https://apolloautomation.com/products/msr-2-gpio-header)
-- ws2812b aka neopixel RGB led strip or similar. sk6812 RGBW strip will also work.
-- Optional DuPont Cables for GPIO Header but any DuPont cables will do.
-- USB-C cable and power brick to power MSR-2
+## What you need
-You are limited to 300mA of power output from the 5v port. You can either attach an external power supply and power the MSR-2 via 5v and gnd pins or work with the limited power output of the port
+- An [Apollo MSR-2](https://apolloautomation.com/products/msr-2), or any Apollo device with a mezzanine port.
+- The [Apollo GPIO Header](https://apolloautomation.com/products/msr-2-gpio-header) addon.
+- A WS2812B (neopixel) RGB strip. SK6812 RGBW strips work too.
+- Three male-to-male DuPont wires. A set comes with the header.
+- A USB-C cable and power brick.
-
+!!! warning "Watch the current draw"
-Above is an image of the GPIO Header and its pinouts. We can use ports 2,4,6,7 for our data channel to an LED strip or multiple LED strips. We will also use the top two ports which are ground and 5v for power.
+ The 5V pin supplies up to 300mA. A meter of 60 LEDs at full white draws far more than that, so anything longer than a short strip needs its own 5V supply. You can power the MSR-2 itself from the 5V and GND pins instead of the USB-C port, but use one or the other, never both.
-Did you know you can power the esp32 from the 5v and gnd pin? That means you can connect an external power supply and power it without the side USB port being used! This also allows for more power to be given to your LEDs!
+## Choosing a data pin
-We cannot use the IO ports 0,1,18, or 19 for LEDs but you can use ports 0 and 1 for i2c sensors.
+IO2, IO4, IO6, and IO7 are free for LED data, and you can drive more than one strip by giving each its own pin. IO18 and IO19 are unavailable, and IO0 and IO1 are reserved for I2C sensors. This guide uses **IO7**, plus the 5V and GND pins at the top of the header for power.
+{ width="480" }
+## Attaching the GPIO Header
-**Connecting the GPIO Header to the MSR-2**
+1. Unplug the MSR-2 from power and pull the back plate off.
-The first thing we will do is remove our MSR-2 back plate and connect our GPIO Header to our MSR-2 and then put the new GPIO back plate on (blue).
+ { width="360" } { width="200" }
-Step 1. Remove the backplate of the MSR-2
+2. Line up the X marked on the MSR-2 PCB with the X on the GPIO Header. Both face the same way.
- 
+ { width="200" }
-Step 2. Line up the Xs shown on the msr-2 and the GPIO Header. They should both be facing in the same direction as shown below.
+3. Press the header down onto the small black mezzanine connector, then check it sits flat with no gap along either edge.
-
+ { width="200" } { width="200" }
-Step 3. Gently push down onto the GPIO Header as shown below:
+4. Slide the blue GPIO back plate that came with the addon over the sensor and press until it clicks. If it needs more than light pressure, stop and check the orientation rather than forcing it.
-
+ { width="200" }
-Step 4. Confirm the GPIO Header is seated properly as shown below.
+## Wiring the strip
-
+1. Run three wires from the header to the strip: 5V, GND, and data. Matching the colors to the strip's own wiring saves a lot of squinting later, so use red for 5V, white for GND, and green for data on IO7.
-Step 5. Slide the GPIO Header back plate for the MSR-2 over your sensor and gently push down until it clicks into place.
+ { width="200" } { width="200" } { width="200" }
-
+2. Plug the other end into the strip. Most strips come with a JST-SM pigtail carrying the same three colors, so the wires match up directly. The connector is rated to 3A.
-If the back plate does not gently go onto the sensor please investigate and confirm it is in the right orientation.
+ { width="200" } { width="200" }
-**Connecting DuPont pins to proper GPIO ports**
-Now we need to reference the GPIO pinout we looked at above and then connect three wires. You will need three male-to-male DuPont wires included in your kit. I suggest using red for power aka 5v, White for ground aka GND, and green for data aka port IO7. Most LED strips will also have this same color scheme and it's easier to match like colors together.
+3. Check the direction before you power anything on. Arrows printed along the strip show which way data flows, and they need to point away from the MSR-2.
-
+ { width="200" } { width="200" }
-
+A dab of hot glue across the outer shells of the three DuPont connectors stiffens them into a single plug. (1)
+{ .annotate }
-
+1. Keep glue out of the header's female pins. It will ruin the addon.
-You can add a bit of hot glue to the Dupont wires to hold them together. DO NOT put hot glue into the GPIO Header's female pins that will ruin the addon. I am only suggesting that you can hot-glue the Dupont pins outer shell themselves together to stiffen them up.
+{ width="200" }
-
+## Adding the strip to your YAML
-**Connecting DuPont pins to LED Strip**
+The MSR-2 knows nothing about the strip until you tell it how many LEDs there are and which pin they sit on.
-Next, we need to connect the other side of the Dupont pins to the LED strip. Most likely your LED strip will have a JST-SM connector which is a 3amp max connector with three wires connected: red for 5v, green for data, and white for gnd. We will be matching up our red, green, and white wires already attached to the GPIO add-on pins in the MSR-2 (using IO7 as the data pin for this tutorial)
+1. Open the **ESPHome Device Builder** app, find your MSR-2, and click **Edit**.
- 
+ { width="480" }
-Make sure to connect to the correct side of the LED strip. The led strip will have an arrow going down the led strip showing one direction for the data line. you want the data channel going FROM the msr-2 TO the led strip going in a "forward" direction as shown below.
+2. Add the block below at the bottom of the file, flush with the left margin so `light:` lines up with `packages:` and `wifi:`. Set `num_leds` to the number of LEDs on your strip, and change `pin` if you wired to a different port.
- 
+ ```yaml
+ light:
+ - platform: esp32_rmt_led_strip
+ id: bed_led
+ name: "Bed LED"
+ pin: GPIO7
+ chipset: WS2812
+ rgb_order: grb
+ num_leds: 60
+ default_transition_length: 0s
+ effects:
+ - pulse:
+ name: "Slow Pulse"
+ transition_length: 1000ms
+ update_interval: 1000ms
+ min_brightness: 50%
+ max_brightness: 100%
+ - pulse:
+ name: "Fast Pulse"
+ transition_length: 100ms
+ update_interval: 100ms
+ min_brightness: 50%
+ max_brightness: 100%
+ - addressable_rainbow:
+ ```
-**Edit the YAML of your MSR-2 to let it know about your new LED strip**
+3. Check that the editor shows no red error markers.
-Finally, we need to tell the MSR-2 that we connected an LED strip. We need to tell it how many LEDs we have and we need to tell it that it's our second LED since the built-in LED is the first. This tutorial assumes you are comfortable with the ESPHome dashboard.
+ { width="300" }
-Step 1. Open ESPhome Dashboard and click edit to bring up the yaml your sensor is currently using.
+4. Click **Save**, then **Install**, and pick **Wirelessly**. ESPHome compiles the firmware and sends it to the MSR-2. The first build takes a few minutes.
-
+Older versions of this guide set `rmt_channel: 1` on the light. ESPHome dropped that option, and leaving it in now fails validation, so the block above does not use it.
-You will see some YAML code here and you do NOT want to touch anything above line 20. If you need to, click your cursor at the end of wifi\_password and hit enter to create a new line then make sure you backspace until you are "flush" with the line numbers like how wifi: is.
+The [ESPHome light effects reference](https://esphome.io/components/light/index.html#light-effects) covers everything else you can add under `effects:`, including `addressable_scan`.
-Step 2. Copy the code below and paste it to line 20 in your ESPHome yaml for this device.
+## Controlling it from Home Assistant
-```generic
-light:
- - platform: esp32_rmt_led_strip
- id: bed_led
- name: "Bed LED"
- pin: GPIO7
- rmt_channel: 1
- default_transition_length: 0s
- chipset: WS2812
- num_leds: 60
- rgb_order: grb
- effects:
- - pulse:
- name: "Slow Pulse"
- transition_length: 1000ms
- update_interval: 1000ms
- min_brightness: 50%
- max_brightness: 100%
- - pulse:
- name: "Fast Pulse"
- transition_length: 100ms
- update_interval: 100ms
- min_brightness: 50%
- max_brightness: 100%
- - addressable_rainbow:
-```
+Once the install finishes, the MSR-2 exposes a new light entity called **Bed LED**.
+{ width="500" }
-This is where you can change your number of LEDs as well as the GPIO pin used for the LED data!
-Make sure to check out [https://esphome.io/components/light/index.html#light-effects](https://esphome.io/components/light/index.html#light-effects) for all the effects supported such as addressable scan effect!Step 3. Confirm you do not have any red lines showing errors in your code
-You change the rmt\_channel to 1 because 0 is being used by the built-in LED of the MSR-2.
-Step 4. Hit save and then install in the top right. It should have a popup where you select "wirelessly" then it will begin compiling the firmware and finally installing the compiled firmware to your MSR-2.Step 5. Go into home assistant and confirm you now have a new light entity called Bed LED
+Click the entity name to open the light card. The color wheel covers the full range, and the effects list holds the two pulses and the rainbow from the YAML above.
-
+{ width="190" } { width="195" } { width="190" }
-Step 6. Click on the name "Bed LED" circled and it will pop up a color picker. You can then choose the color wheel option to pick any color of the rainbow, or select "effect" and choose an effect.
+{ width="260" }
-  
-
-
-
-That's all folks! Thanks to Smart Home Sellout for putting this tutorial together!
\ No newline at end of file
+That's all folks! Thanks to Smart Home Sellout for putting this tutorial together.