{"title":"Under Canopy Grow Lights","description":"\u003cp\u003eUnder canopy grow lights are designed to reach the lower parts of the plant, often shaded by dense foliage. They enhance uniformity in flowering crops, increasing yield from bud sites that would otherwise underperform.\u003c\/p\u003e\n\u003cp\u003eThese low-profile under canopy lights supplement top fixtures, running cool with high efficacy. Perfect for flowering rooms, SCROG setups, and high-density grows where light penetration is key.\u003c\/p\u003e\n\u003cp\u003eDiscover \u003ca title=\"Grow Light Central for Commercial \u0026amp; Bulk Ordering\" href=\"https:\/\/growlightcentral.com\/pages\/commercial-orders\"\u003ebulk pricing\u003c\/a\u003e and \u003ca title=\"Grow Light Central Indoor Horticulture Energy Efficiency Rebate \u0026amp; Incentive Programs\" href=\"https:\/\/growlightcentral.com\/pages\/indoor-horticulture-energy-efficiency-rebate-incentive-programs\"\u003eenergy rebate qualifications\u003c\/a\u003e to save more! Plus, \u003ca href=\"https:\/\/growlightcentral.com\/blogs\/news\/understanding-ppfd-and-light-penetration-in-plant-canopies\" title=\"Grow Light Central Blog - Understanding PPFD and Light Penetration in Plant Canopies\"\u003elearn why under-canopy lights are important\u003c\/a\u003e in ensuring even light distribution and better canopy coverage.\u003c\/p\u003e","products":[{"product_id":"ac-infinity-ionbeam-s11-full-spectrum-led-grow-light-bars-samsung-lm301h-11","title":"AC Infinity IONBEAM S11 Full Spectrum LED Grow Light Bars","description":"\u003ch2\u003eMaximize inter-canopy coverage with magnet-mount, full-spectrum Samsung LM301H EVO bars for uniform yields.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eAC Infinity Inter-Canopy LED Bar Kit\u003c\/strong\u003e includes four IP65-rated light bars built with \u003cstrong\u003eSamsung LM301H EVO diodes\u003c\/strong\u003e - delivering high-intensity, full-spectrum lighting at 3.14 umol\/J PPE. Whether you're targeting lower branches or supplementing shadows in wide setups, this kit improves yield by pushing more light into the canopy's hard-to-reach areas. Easily mount bars on your grow tent's frame or canvas using \u003cstrong\u003emagnetic steel bars\u003c\/strong\u003e or fixed screws for smaller grow spaces.\u003c\/p\u003e\n\u003cp\u003ePerfect for inter-canopy, supplemental, or primary lighting in seedling tents, propagation trays, or side lighting in high-density grows. Backed by smart control features and heavy-duty design, this bar kit fits seamlessly into \u003cstrong\u003eAC Infinity's UIS ecosystem\u003c\/strong\u003e with app integration and environmental automation.\u003c\/p\u003e\n\u003ch3\u003eIs this LED bar kit energy-efficient?\u003c\/h3\u003e\n\u003cp\u003eAbsolutely. With an \u003cstrong\u003eefficacy of 3.14 umol\/J\u003c\/strong\u003e, these bars outperform most toplights and match the efficiency of high-end commercial LEDs. They deliver intense brightness at low wattage, reducing power costs while improving your total light footprint. Perfect for growers aiming to increase yield without increasing overhead.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFour 11\" LED bars designed for inter-canopy or supplemental lighting to boost plant yields.\u003c\/li\u003e\n\u003cli\u003eProvides expanded light coverage to areas that your primary grow lights have trouble reaching.\u003c\/li\u003e\n\u003cli\u003eCan magnetically mount onto your grow tent's frame or canvas using the included steel bars.\u003c\/li\u003e\n\u003cli\u003eUtilizes Samsung LM301H EVO LEDs each rated at 3.14 umol\/J PPE for powerful lighting with unmatched efficiency.\u003c\/li\u003e\n\u003cli\u003eFeatures a digital controller with ten light intensity levels and daily schedule programming.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1x Light Bar (Single-Corded)\u003c\/li\u003e\n\u003cli\u003e3x Light Bar (Dual-Corded)\u003c\/li\u003e\n\u003cli\u003e4x Mounting Bar\u003c\/li\u003e\n\u003cli\u003e1x Schedule Controller\u003c\/li\u003e\n\u003cli\u003e1x EC Power Adapter\u003c\/li\u003e\n\u003cli\u003e6x Bar Extension Cord (M-F)\u003c\/li\u003e\n\u003cli\u003e1x UIS Extension Cord (M-M)\u003c\/li\u003e\n\u003cli\u003e11x Wood Screws (Wall Mount)\u003c\/li\u003e\n\u003cli\u003e2x Controller Plate Bolts\u003c\/li\u003e\n\u003cli\u003e3x Hex Nuts\u003c\/li\u003e\n\u003cli\u003e4x Hook and Loop Cable Ties\u003c\/li\u003e\n\u003cli\u003e8x Wire Mount\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/AC_Infinity_IONBEAM_Series_Manual.pdf?v=1749827660\"\u003eProduct Manual\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","brand":"AC Infinity","offers":[{"title":"None","offer_id":48157925736740,"sku":"AC-NES11","price":99.39,"currency_code":"USD","in_stock":true},{"title":"CONTROLLER 69 PRO Independent Programming UIS Controller (+$99)","offer_id":48157925802276,"sku":"AC-NES13\/CTR69P","price":198.39,"currency_code":"USD","in_stock":true},{"title":"CONTROLLER 69 PRO+ Independent Programming UIS Controller 8-Port (+$139)","offer_id":48157925835044,"sku":"AC-NES14\/CTR69Q","price":238.39,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/products\/AC-Infinity-IONBEAM-S11-Full-Spectrum-LED-Grow-Light-Bars.jpg?v=1750187546"},{"product_id":"ac-infinity-ionbeam-u2-2-bar-kit-targeted-spectrum-uv-led-grow-light","title":"AC Infinity IONBEAM U2 2-Bar Kit Targeted Spectrum UV LED Grow Light","description":"\u003ch2\u003eTargeted UVA bars enhance resin, terpene and flavonoid production with magnetic mounting and smart scheduling.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eIONBEAM U2\u003c\/strong\u003e is a high-performance \u003cstrong\u003eUV LED grow light\u003c\/strong\u003e designed to \u003cstrong\u003eenhance plant quality\u003c\/strong\u003e by simulating the natural ultraviolet spectrum. Engineered for \u003cstrong\u003eserious growers\u003c\/strong\u003e, this \u003cstrong\u003e2-bar kit\u003c\/strong\u003e supplements primary lighting, stimulating terpenes, flavonoids, and resin production during the \u003cstrong\u003efruiting and flowering stages\u003c\/strong\u003e. Each 11\" UV bar features targeted 365nm and 395nm UVA diodes, ensuring optimal exposure for higher potency yields. Built for durability, these bars boast a unibody aluminum construction, IP65 water resistance, and magnetic mounting for effortless integration into any grow tent, rack, or hydroponic system.\u003c\/p\u003e\n\u003ch3\u003eIs the IONBEAM U2 Energy-Efficient?\u003c\/h3\u003e\n\u003cp\u003eAbsolutely. With \u003cstrong\u003eUV-specific diodes\u003c\/strong\u003e running at optimized efficiency, the IONBEAM U2 delivers more usable light per watt compared to older HPS UV systems. Unlike outdated HPS fixtures that operate at ~1.3-2.1 umol\/J, modern LED grow lights like this model achieve 2.5-3.5+ umol\/J, providing superior energy savings while generating higher-quality harvests. The low heat output further reduces cooling costs, making it an eco-friendly upgrade for any grow room.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTwo 11\" UV LED bars designed for supplemental ultraviolet lighting to assist primary grow lights.\u003c\/li\u003e\n\u003cli\u003eHelps improve grow light quality to draw out plant expressions by simulating the sun's UV rays.\u003c\/li\u003e\n\u003cli\u003eEnhances fruit and flowering stages by utilizing a targeted UVA spectrum of 365nm and 395nm.\u003c\/li\u003e\n\u003cli\u003eFeatures a digital controller with ten light intensity levels and daily schedule programming.\u003c\/li\u003e\n\u003cli\u003eCan magnetically mount onto your grow tent's frame or canvas using the included steel bars.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1 x Light Bar (Single-Corded)\u003c\/li\u003e\n\u003cli\u003e1 x Light Bar (Dual-Corded)\u003c\/li\u003e\n\u003cli\u003e2 x Mounting Bar\u003c\/li\u003e\n\u003cli\u003e1 x Schedule Controller\u003c\/li\u003e\n\u003cli\u003e1 x EC Power Adapter\u003c\/li\u003e\n\u003cli\u003e3 x Bar Extension Cord (M-F)\u003c\/li\u003e\n\u003cli\u003e1 x UIS Extension Cord (M-M)\u003c\/li\u003e\n\u003cli\u003e7 x Wood Screws (Wall Mount)\u003c\/li\u003e\n\u003cli\u003e2 x Controller Plate Bolts\u003c\/li\u003e\n\u003cli\u003e3 x Hex Nuts\u003c\/li\u003e\n\u003cli\u003e4 x Hook and Loop Cable Ties\u003c\/li\u003e\n\u003cli\u003e4 x Wire Mount\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/acinfinity.com\/content\/NE2302X2_230201_IONBEAM%20Manual.SUNSET.pdf\"\u003eProduct Manual\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","brand":"AC Infinity","offers":[{"title":"None","offer_id":48340069548324,"sku":"AC-NEU11-2","price":75.14,"currency_code":"USD","in_stock":true},{"title":"CONTROLLER 69 PRO Independent Programming UIS Controller (+$99)","offer_id":48340186562852,"sku":"AC-NEU11-2\/CTR69P","price":174.14,"currency_code":"USD","in_stock":true},{"title":"CONTROLLER 69 PRO+ Independent Programming UIS Controller 8-Port (+$139)","offer_id":48340186595620,"sku":"AC-NEU11-2\/CTR69Q","price":214.14,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/AC-Infinity-IONBEAM-U2-2-Bar-Kit-Targeted-Spectrum-UV-LED-Grow-Light.jpg?v=1750309816"},{"product_id":"under-canopy-lights","title":"Faven 120W Under Canopy Lights","description":"\u003ch2\u003eBoost yields from the bottom up with 120W under-canopy bars that improve bud size, reduce lollipopping, and work with any commercial grow setup.\u003c\/h2\u003e\n\u003cp\u003e\u003cstrong\u003eThese are lights designed to sit beneath plant canopies where top lights can’t reach.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eFaven lighting under canopy bars are the best way to improve the yield and health of your plants with minimal increase to operational costs. Made to supplement overhead light installations, this under-canopy light offers a low-maintenance way to:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease bud creation and size\u003c\/li\u003e\n\u003cli\u003eGive your plants more consistent growth and color\u003c\/li\u003e\n\u003cli\u003eIncrease the concentration and terpene compounds\u003c\/li\u003e\n\u003cli\u003eDecreases labor costs by eliminating the need for under-clearing or \"lollipopping\"\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFaven provides a spectrum-balancing feature for their under-canopy lights\u003c\/strong\u003e, catering to different types of top lighting used in grow rooms or greenhouses. This allows for the supplementation of additional spectrums and wavelengths that may be lacking in current lighting setups, \u003cstrong\u003egiving cultivators more control over the quality of their crops. \u003c\/strong\u003eSupplementing your lighting with Faven under-canopy lighting will give you better yields and denser plants and give you an round healthier plant.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eR6 lights (60% red) complement HID top lights that are high in ROY\u003c\/li\u003e\n\u003cli\u003eR8 lights (80% red) complement full-spectrum LED top lights.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eConsistent Light Spread\u003c\/h3\u003e\n\u003cp\u003eThe lenses on both types have a bubbled shape to diffuse light evenly and increase canopy penetration.\u003c\/p\u003e\n\u003ch3\u003eDimming Capabilities\u003c\/h3\u003e\n\u003cp\u003eThese lights are compatible with dimming controllers, so you will have complete control over light intensity throughout the growth process. Faven's lights can dim down to 35 - 40% of their maximum intensity.\u003c\/p\u003e\n\u003ch3\u003eWaterproof and Able to Connect\u003c\/h3\u003e\n\u003cp\u003eWaterproof connectors with an IP66 rating allow you to connect up to 20 lights with extension cords (sold separately) for a large layout that will be perfectly safe with any irrigation system.\u003c\/p\u003e\n\u003ch3\u003eR6W Spectrum\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Faven-120W-Under-Canopy-Lights-R6W-Spectrum.jpg?v=1756660069\" alt=\"R6W Spectrum Graph\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eR8W Spectrum\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Faven-120W-Under-Canopy-Lights-R8W-Spectrum.jpg?v=1756660069\" alt=\"R8W Spectrum Graph\" style=\"margin-bottom: 16px; float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eR8 FR Spectrum +12% Far Red\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Faven-120W-Under-Canopy-Lights-R8-FR-Spectrum.jpg?v=1756660069\" alt=\"R8FR Spectrum Graph\" style=\"margin-bottom: 16px; float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCompatible with Trolmaster and Vivosun dimming controllers\u003c\/li\u003e\n\u003cli\u003eCan daisy chain up to 20 lights together\u003c\/li\u003e\n\u003cli\u003eCome in either a 60% red spectrum or an 80% red spectrum\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eInterconnect Cables, Power Cords, and Stands\u003c\/h3\u003e\n\u003cp\u003eThese must be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eTo illustrate:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e1 power cord can charge many lights, and 2 interconnecting cables can connect 3 lights.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your \u003ca href=\"https:\/\/growlightcentral.com\/products\/under-canopy-lighting-extension-cord\"\u003eInterconnect Cables \u003c\/a\u003eand \u003ca href=\"https:\/\/growlightcentral.com\/products\/power-cords-for-under-canopy-lights\"\u003ePower Cords.\u003c\/a\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSelect either 8\" or 12\" \u003ca href=\"https:\/\/growlightcentral.com\/products\/faven-lighting-under-canopy-led-grow-light-bar-stands?variant=49441522614564\"\u003eLight Bar Stands\u003c\/a\u003e \u003c\/strong\u003e(they come in a pack of 2 stands, each good for 1 light).\u003c\/p\u003e\n\u003cp\u003eTo increase\/decrease the light intensity, add the \u003ca href=\"https:\/\/growlightcentral.com\/products\/faven-lighting-controller\" title=\"Faven Lighting Mini Controller\"\u003e\u003cstrong\u003eMini Controller\u003c\/strong\u003e.\u003c\/a\u003e\u003c\/p\u003e\n\u003ch3\u003eLock Your Lights in Place with Faven Couplings\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/faven-coupling\" title=\"Faven Coupling\"\u003eFaven Couplings\u003c\/a\u003e\u003c\/strong\u003e are designed to keep your under-canopy lights firmly connected. Since these lights \u003cstrong\u003econnect directly to each other without cords\u003c\/strong\u003e, any movement of tables can cause those connections to wiggle loose over time. A coupling slides over the joint where two lights meet, \u003cstrong\u003elocking them together so they stay tight and waterproof.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMost growers find they need couplings equal to about 80% of their total light count.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eExample: \u003c\/strong\u003eIf you're installing 24 under canopy lights, plan on ordering around 19 couplers to keep every connection point secure.\u003c\/p\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFaven 120 Watt Under Canopy Grow Light Bar\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/R6___R8___R8_FR_Faven_Specs.pdf?v=1756659564\"\u003eSpecs Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/FavenUserManual.pdf?v=1721774252\"\u003eUser Manual\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Faven_Install_Guide.pdf?v=1721774259\"\u003eInstallation Guide\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Faven_Lighting_Layout_Examples.pdf?v=1721774259\"\u003eLighting Examples\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Faven Lighting","offers":[{"title":"R6 - 60% Red | HPS Equivalent","offer_id":48928587940132,"sku":"3101012835-15","price":149.0,"currency_code":"USD","in_stock":true},{"title":"R8 - 80% Red | LED Equivalent","offer_id":51031373480228,"sku":"10-010501-060","price":159.0,"currency_code":"USD","in_stock":true},{"title":"R8 Far Red - 80% Red","offer_id":48928587972900,"sku":"10-010602-418","price":174.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/faven-lighting-under-canopy-grow-lights-1.jpg?v=1753840286"},{"product_id":"power-cords-for-under-canopy-lights","title":"Faven Lighting Power Cords for Under Canopy Lights R6 + R8","description":"\u003ch2\u003e\u003cspan\u003e\u003cmeta charset=\"utf-8\"\u003e Power Up Your Grow with Reliable Connections with Power Cords For Under Canopy Lights\u003c\/span\u003e\u003c\/h2\u003e\n\u003cdiv\u003e\u003cspan\u003e\u003cmeta charset=\"utf-8\"\u003eEfficiently and securely connect your Faven under canopy lights with our specially designed power cords. These cords are engineered for reliable power transmission, ensuring optimal lighting system performance.\u003c\/span\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003e\u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003cspan\u003e\u003cmeta charset=\"utf-8\"\u003eIdeal for expanding your lighting setup or replacing existing power cords, these cables ensure your under-canopy lights receive consistent power for optimal plant growth. Perfect for commercial growers and home enthusiasts alike, they offer the reliability and flexibility needed to maintain an efficient and productive grow space.\u003c\/span\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003e\u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003cspan\u003e\u003cmeta charset=\"utf-8\"\u003e \u003cspan style=\"color: rgb(191, 38, 47);\"\u003e\u003cstrong\u003ePlease note: This product is engineered exclusively for the Faven Under Canopy Lights and cannot be used across different products\/brands.\u003c\/strong\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003e\u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003ch3\u003e\u003cspan\u003eFeatures:\u003c\/span\u003e\u003c\/h3\u003e\n\u003cdiv\u003e\n\u003cspan\u003e10 ft power cable for Faven under canopy LED lights. This cable works for both the \u003c\/span\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/under-canopy-lights\" title=\"Faven 120 Watt Under Canopy Grow Light Bar\"\u003eR6\u003cspan\u003e and \u003c\/span\u003eR8\u003c\/a\u003e\u003cspan\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/under-canopy-lights\" title=\"Faven 120 Watt Under Canopy Grow Light Bar\"\u003e lights\u003c\/a\u003e.\u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cspan\u003e10’ cords \u003c\/span\u003e\u003cbr\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan\u003eAvailable in 120v\/240v\/277v \u003c\/span\u003e\u003cbr\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan\u003e277v plug features NEMA L7 connector \u003c\/span\u003e\u003cbr\u003e\n\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eAccessory dimming wire included \u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Faven Lighting","offers":[{"title":"120V","offer_id":48928616382756,"sku":"10-010704-154","price":22.0,"currency_code":"USD","in_stock":true},{"title":"240V","offer_id":48928616349988,"sku":"10-010704-140","price":22.0,"currency_code":"USD","in_stock":true},{"title":"277V","offer_id":48928616317220,"sku":"10-010704-148","price":22.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/faven-lighting-power-cords-for-under-canopy-lights-1.jpg?v=1753838840"},{"product_id":"under-canopy-lighting-extension-cord","title":"Faven Under Canopy Lighting Jumper Cable","description":"\u003ch2\u003eConnects Chroma under canopy lights across benches for daisy chaining. Available in 3’, 9’, and 20’ lengths.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eFaven Under Canopy Lighting Jumper Cable\u003c\/strong\u003e is designed to connect multiple Chroma fixtures across benches, allowing you to daisy-chain your under-canopy lighting system with ease. Available in 3’, 9’, or 20’ lengths, these extensions link lights that don’t directly connect to each other, making them ideal for spanning adjacent rows on a bench.\u003c\/p\u003e\n\u003cp\u003eEach bench requires at least one power cord, and with jumper cables, you can extend connectivity between rows. If your setup exceeds the maximum daisy-chain number, you’ll need additional power cords per bench. Built for \u003cstrong\u003ereliable connectivity\u003c\/strong\u003e in demanding grow environments, these jumper cables keep your lighting layout flexible and efficient.\u003c\/p\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cspan\u003e\u003cspan style=\"color: rgb(191, 38, 47);\"\u003e\u003cstrong\u003ePlease note: This product is engineered exclusively for the Faven Under Canopy Lights and cannot be used across different products\/brands.\u003c\/strong\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003eHow many power cords and extensions do you need?\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eMax Daisy-Chain Capacity:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e1.0 Amps – 10 lights – 120V\u003c\/li\u003e\n\u003cli\u003e0.5 Amps – 17 lights – 240V\u003c\/li\u003e\n\u003cli\u003e0.43 Amps – 20 lights – 277V\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eExamples:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eScenario 1:\u003c\/strong\u003e 240V, 6 lights per row, 2 rows = One 240V power cord + one extension per bench\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eScenario 2:\u003c\/strong\u003e 240V, 12 lights per row, 2 rows = Two 240V power cords per bench\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eScenario 3:\u003c\/strong\u003e 240V, 8 lights per row, 3 rows = Two 240V power cords + one extension per bench\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Faven Lighting","offers":[{"title":"3' Jumper","offer_id":51031646830884,"sku":"10-010704-173","price":18.0,"currency_code":"USD","in_stock":true},{"title":"6' Jumper","offer_id":51031646896420,"sku":"10-010704-187","price":22.99,"currency_code":"USD","in_stock":false},{"title":"9' Jumper","offer_id":51031646863652,"sku":"10-010704-212","price":28.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/faven-lighting-extension-cord.jpg?v=1753838785"},{"product_id":"growpros-4-interconnect-cable-for-under-canopy-grow-lights","title":"GrowPros 3' Interconnect Cable for Under Canopy Grow Lights","description":"\u003ch2\u003e3-foot reach enabling daisy chaining, durable performance, and reliable power transfer for consistent lower canopy plant coverage.\u003c\/h2\u003e\n\u003cp\u003eThe Under Canopy Light Inter-connect Cable, measuring 3 feet, connects two under canopy grow light bars. Specifically, it ensures reliable power transfer, enhancing plant growth beneath grow trays. Thus, it’s ideal for horticultural setups.\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(191, 38, 47);\"\u003e\u003cstrong\u003ePlease note: This product is engineered exclusively for GrowPros Models 1-4 Under Canopy Lights and cannot be used across different products\/brands.\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eUse this 3′ extension cord when:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003ePower and data chaining a row of Grow Pros Solutions under canopy to the next row of under-canopy lights.\u003c\/li\u003e\n\u003cli\u003eSpanning a gap between benches.\u003c\/li\u003e\n\u003cli\u003eNeeding an extension cord for a power cord.\u003c\/li\u003e\n\u003cli\u003eRunning 2 under canopy lights parallel to each other in a grow tent or small grow area.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e3 ft interconnect cord for power and data chaining\u003c\/li\u003e\n\u003cli\u003eIP65 Waterproof connections designed for the rigors and water exposure in the under canopy\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros 3' Interconnect Cable\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"GrowPros","offers":[{"title":"Default Title","offer_id":49439094309156,"sku":"CON-UCL-3FT","price":25.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/growpros-interconnect-cable-for-under-canopy-grow-lights-1.jpg?v=1758797129"},{"product_id":"growpros-4-125w-under-canopy-grow-light-full-spectrum-ir-2-lights","title":"GrowPros 4′ Under Canopy Grow Light 125W Model 1 - Full Spectrum + Far Red","description":"\u003ch2\u003eBoost lower canopy yields and potency with 4 ft under canopy lights engineered for uniform light distribution and optimized flower development.\u003c\/h2\u003e\n\u003cp\u003e\u003cstrong\u003eGrowpros Solutions’ under canopy light 4ft\u003c\/strong\u003e is engineered to enhance the yield and color of lower flowers. These supplemental lights effectively enlarge B-buds and C-buds, promoting better growth and development in areas that typically underperform. By targeting the understory, GrowPros Solutions ensures a more uniform and abundant harvest, maximizing every plant's potential.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePlug and play performance\u003c\/strong\u003e designed for straightforward upgrades and supplemental lighting. UCL Model 1 delivers a balanced full-spectrum output that works exceptionally well as a replacement or supplement for \u003cstrong\u003eHPS top lights\u003c\/strong\u003e, \u003cstrong\u003eLED top lights older than 3 years\u003c\/strong\u003e, and \u003cstrong\u003egreenhouse applications\u003c\/strong\u003e. Ideal for growers looking for reliable output without spectrum adjustment.\u003c\/p\u003e\n\u003ch3\u003eMaximize Flowering\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eUnder canopy lights are designed to illuminate beneath the dense plant canopies where traditional overhead lights struggle to reach. \u003c\/strong\u003eThis strategic lighting approach not only boosts the yield but also enhances the quality of your crops by:\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eIncreasing Flowering: These lights provide essential light to lower canopy areas, promoting\u003c\/strong\u003e more extensive flowering even in the shaded parts of the plant.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancing Concentration: \u003c\/strong\u003eThe added light spectrum encourages the development of terpene compounds, improving the potency and profile of your harvest.\u003c\/p\u003e\n\u003ch3\u003eSpectrum Balancing for Optimal Growth\u003c\/h3\u003e\n\u003cp\u003eTo achieve these benefits, it’s crucial to select the right spectrum based on your existing setup:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eModel 1 Lights:\u003c\/strong\u003e Ideal for complementing HID top lights, which are rich in ROY (red, orange, yellow) spectrums.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eModel 2 Lights:\u003c\/strong\u003e Best paired with full spectrum LED top lights to ensure comprehensive coverage.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThis customization allows growers to balance light spectrums effectively, ensuring that every plant receives the optimal wavelengths necessary for peak growth and quality. By integrating these advanced lighting solutions, you can \u003cstrong\u003eachieve increased yields and superior product quality, \u003c\/strong\u003esetting your harvest apart in appearance and chemical composition.\u003c\/p\u003e\n\u003cdiv class=\"elementor-element elementor-element-6523d1e e-con-full e-flex e-con e-child\" data-id=\"6523d1e\" data-element_type=\"container\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"elementor-element elementor-element-1e5cf96 elementor-widget elementor-widget-heading\" data-id=\"1e5cf96\" data-element_type=\"widget\" data-widget_type=\"heading.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003ch3 class=\"elementor-heading-title elementor-size-default\" style=\"text-align: center;\"\u003eDIMMABLE SPECTRUM\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-9e83635 elementor-widget elementor-widget-text-editor\" data-id=\"9e83635\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n        \/* Chart Container *\/\n        #chartcontainer_4ftuclm1 .chart-container4ftuclm1 {\n            width: 100%;\n            margin: 10px auto;\n            display: flex;\n            justify-content: center;\n        }\n\n        \/* Control Panels *\/\n        #chartcontainer_4ftuclm1 #control-panels4ftuclm1 {\n            display: flex;\n            justify-content: space-around;\n            margin-bottom: 20px;\n            flex-wrap: wrap;\n        }\n\n        #chartcontainer_4ftuclm1 .control-panel4ftuclm1 {\n            width: 100%;\n            border: 1px dashed #000000;\n            padding: 20px;\n            margin-bottom: 20px;\n            border-radius: 2px;\n            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n        }\n\n        #chartcontainer_4ftuclm1 .slider-title { \n            font-family: Jost, sans-serif; \n            font-size: 20px; \n            margin-bottom: 15px;\n            color: #000000;\n        }\n\n        #chartcontainer_4ftuclm1 .slider-paratitle {\n            display: flex;\n            flex-direction: row;\n            justify-content: space-between;\n            margin-top: 10px;\n        }\n\n        #chartcontainer_4ftuclm1 .slider-paratitle .current-value {\n            text-align: right;\n            width: 100%;\n            font-weight: bold;\n            color: #000000;\n        }\n\t\t#chartcontainer_4ftuclm1 .slider-paratitle span {\n\t\tcolor:#000000;\n\t\t}\n        \/* Custom Process Bar Styles *\/\n        #chartcontainer_4ftuclm1 .process-container4ftuclm1 {\n            width: 100%;\n            height: 16px;\n            background-color: #333333;\n            position: relative;\n            cursor: pointer;\n\t\t\tborder-radius:2px;\n        }\n\n        #chartcontainer_4ftuclm1 .process-bar {\n            height: 100%;\n            background-color: #999999;\n            width: 0;\n            position: absolute;\n            top: 0;\n            left: 0;\n            transform: translateX(0);\n            will-change: width, transform;\n\t\t\tborder-radius:2px;\n        }\n\n        #chartcontainer_4ftuclm1 .process-thumb {\n            width: 20px;\n            height: 20px;\n            background-color: #046e82;\n            border: 1px solid #000000;\n            border-radius: 2px;\n            position: absolute;\n            top: 50%;\n            transform: translate(-50%, -50%);\n            left: 0;\n            cursor: pointer;\n            touch-action: none;\n            transform: translate(-50%, -50%) translateX(0);\n            transition: none;\n            will-change: transform;\n        }\n\n        \/* Responsive adjustments *\/\n        @media screen and (max-width: 767px) {\n            #chartcontainer_4ftuclm1 #control-panels4ftuclm1 { \n                flex-direction: column; \n            }\n            #chartcontainer_4ftuclm1 .control-panel4ftuclm1 { \n                width: 100%; \n                margin-bottom: 20px; \n\t\t\t\tpadding:10px;\n            }\n\t\t\t#chartcontainer_4ftuclm1 .slider-title { font-size:12px; }\n\t\t\t#chartcontainer_4ftuclm1 .process-container4ftuclm1 { height:14px; }\n\t\t\t#chartcontainer_4ftuclm1 .process-thumb { width: 22px; height: 22px; }\n\t\t\t#chartcontainer_4ftuclm1 .slider-paratitle span { font-size:10px; }\n        }\n\u003c\/style\u003e\n\u003cdiv class=\"elementor-element elementor-element-6523d1e e-con-full e-flex e-con e-child\" data-id=\"6523d1e\" data-element_type=\"container\" id=\"chartcontainer_4ftuclm1\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"elementor-element elementor-element-9e83635 elementor-widget elementor-widget-text-editor\" data-id=\"9e83635\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"chart-container4ftuclm1\"\u003e\u003ccanvas id=\"myChart_4ftuclm1\" style=\"display: block; box-sizing: border-box; height: 211px; width: 423px;\" width=\"847\" height=\"423\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n    var chart4ftuclm1 = jQuery.noConflict(true);\n    chart4ftuclm1(document).ready(function(chart4ftuclm1) {\n        \/\/ Chart.js Setup\n        const ctx = chart4ftuclm1('#myChart_4ftuclm1')[0].getContext('2d');\n        let chart;\n        const dataset14ftuclm1 = {\n            label: 'Channel 1',\n            labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n            data: [0, 0, 0, 0, 0, 0, 0, 0, 0.2, 2, 10, 30, 60, 95, 60, 42, 28, 36, 44, 50, 55, 58, 62, 67, 74, 84, 89, 90, 86, 78, 70, 69, 74, 85, 99, 68, 38, 22, 15, 12, 14, 16, 12, 6, 2, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n        };\n\n        const colors = ['#111a39','#111a39','#111a39', '#111a39', '#111a39','#111a39','#111a39', '#111a39', '#162143', '#162143', '#162143', '#053390', '#1c4a9d', '#1c4a9d','#265aa8', '#3173b8', '#3698d5','#45bee3','#6fc4be', '#6ebf80', '#69b72d','#69b72d', '#6bb72d', '#79bc28','#97c626','#a8cc2b', '#c8d933','#d8e036', '#f1eb36','#f4c41c','#f19518','#ed761b','#e95619','#e62718','#e11713','#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d','#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a','#440104', '#380103','#230304','#221714', '#221714', '#221714','#221714', '#221714', '#221714','#221714', '#221714','#221714', '#221714'];\n\t\t\n\t\tlet scale1 = 0;\n\n        function createGradient(ctx, chartArea, colors) {\n            const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n            colors.forEach((color, index) =\u003e {\n                gradient.addColorStop(index \/ (colors.length - 1), color);\n            });\n            return gradient;\n        }\n\n        function createChart(labels, combinedData) {\n            if (chart) {\n                chart.destroy();\n            }\n\n            chart = new Chart(ctx, {\n                type: 'line',\n                data: {\n                    labels: labels,\n                    datasets: [\n                        {\n                            type: 'line',\n                            label: 'PPF',\n                            data: combinedData,\n                            borderWidth: 0.1,\n                            backgroundColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            borderColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            fill: true,\n                            tension: 0.4 \/\/ Smoothing effect\n                        },\n                        {\n                            type: 'line',\n                            label: 'Outline',\n                            data: combinedData,\n                            borderWidth: 2,\n                            backgroundColor: 'transparent',\n                            borderColor: '#000000', \/\/ Outline color\n                            fill: false,\n                            tension: 0.4\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: {\n                        x: {\n                            stacked: true,\n                            grid: {\n                                display: false \/\/ Hide y-axis grid lines\n                            },\n                            ticks: {\n                                color: '#000000',\n                                autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                maxRotation: 0, \/\/ Prevent label rotation\n                                minRotation: 0, \/\/ Prevent label rotation\n                                maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                            },\n                            border: {\n\t\t\t\t\t\t\t\twidth:2,\n                                color: '#000000' \/\/ Change x-axis line color\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                            grid: {\n                                color: '#000000',\n                            },\n                            border: {\n\t\t\t\t\t\t\t\twidth:2,\n                                color: '#000000' \/\/ Change x-axis line color\n                            },\n                            ticks: {\n                                color: '#000000',\n                                callback: function(value) {\n                                    return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                }\n                            }\n                        }\n                    },\n                    events: null,\n                    radius: 0,\n                    plugins: {\n                        filler: {propagate: true}, \/\/ Enable filler\n                        legend: { display: false },\n                    },\n                    animation: {\n                        duration: 0 \/\/ Animation duration for smoother updates\n                    }\n                }\n            });\n        }\n\n        function updateChart() {\n            const scaledData1 = dataset14ftuclm1.data.map(value =\u003e value * scale1);\n            const combinedData = scaledData1;\n            \n            if (chart) {\n                chart.data.datasets[0].data = combinedData;\n                chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                chart.options.animation.duration = 300;\n                chart.update();\n            }\n        }\n\n        function createProcessBar(containerId, valueId) {\n            const $container = chart4ftuclm1(`#${containerId}`);\n            const $thumb = $container.find('.process-thumb');\n            const $bar = $container.find('.process-bar');\n            const $currentValue = chart4ftuclm1(`#${valueId}`);\n            let dragging = false;\n            let containerOffset = $container.offset().left;\n            let containerWidth = $container.width();\n            let currentW = 125; \/\/ Set initial wattage to 125W\n\n            \/\/ Update container metrics on resize\n            function updateContainerMetrics() {\n                containerOffset = $container.offset().left;\n                containerWidth = $container.width();\n                setBarByWattage(currentW);\n            }\n\n            chart4ftuclm1(window).on('resize', updateContainerMetrics);\n\n            \/\/ Initialize container metrics\n            updateContainerMetrics();\n\n            \/\/ Function to set the bar and thumb position based on wattage\n            function setBarByWattage(wattage) {\n                currentW = Math.min(Math.max(wattage, 0), 125); \/\/ Update maximum wattage to 125W\n                const newLeft = (currentW \/ 125) * containerWidth; \/\/ Update scaling factor to 125\n\n                \/\/ Update bar width\n                $bar.css('width', `${(currentW \/ 125) * 100}%`); \/\/ Update scaling factor to 125\n                \/\/ Update thumb position using transform for better performance\n                $thumb.css('transform', `translate(-50%, -50%) translateX(${newLeft}px)`);\n                \/\/ Update displayed value\n                $currentValue.text(`${currentW.toFixed(0)}W`); \/\/ Change display from '%' to 'W'\n                \/\/ Update the corresponding scale variable and chart\n                if (containerId === 'process-container14ftuclm1') {\n                    scale1 = currentW \/ 125; \/\/ Update scale1 to reflect 125W maximum\n                }\n                updateChart();\n            }\n\n            \/\/ Function to handle the dragging logic\n            function handleDrag(pageX) {\n                const newLeft = pageX - containerOffset;\n                const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                const newWattage = (clampedLeft \/ containerWidth) * 125; \/\/ Update scaling factor to 125\n                setBarByWattage(newWattage);\n            }\n\n            \/\/ Throttle dragging using requestAnimationFrame\n            let rafId = null;\n\n            function onDrag(pageX) {\n                if (rafId) return; \/\/ If a frame is already requested, do nothing\n                rafId = requestAnimationFrame(() =\u003e {\n                    handleDrag(pageX);\n                    rafId = null;\n                });\n            }\n\n            \/\/ Mouse events\n            $thumb.on('mousedown', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chart4ftuclm1(document).on('mousemove', function(e) {\n                if (dragging) {\n                    onDrag(e.pageX);\n                }\n            });\n\n            chart4ftuclm1(document).on('mouseup', function() {\n                dragging = false;\n            });\n\n            \/\/ Touch events\n            $thumb.on('touchstart', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chart4ftuclm1(document).on('touchmove', function(e) {\n                if (dragging) {\n                    const touch = e.originalEvent.touches[0];\n                    onDrag(touch.pageX);\n                }\n            });\n\n            chart4ftuclm1(document).on('touchend touchcancel', function() {\n                dragging = false;\n            });\n\n            \/\/ Click on the process container to set the thumb position\n            $container.on('click', function(e) {\n                const pageX = e.pageX;\n                onDrag(pageX);\n            });\n\n            \/\/ Initialize the bar to 125W\n            setBarByWattage(currentW);\n        }\n\n        \/\/ Initialize the chart\n        function initializeChart() {\n            const initialCombinedData = dataset14ftuclm1.data.map(value =\u003e value * scale1);\n            createChart(dataset14ftuclm1.labels, initialCombinedData);\n        }\n\n        \/\/ Initial load\n        initializeChart();\n\n        \/\/ Create Process Bars for Channel 1\n        createProcessBar('process-container14ftuclm1', 'global-value14ftuclm1');\n\n        \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n        let resizeTimeout;\n        chart4ftuclm1(window).on('resize', function(){\n            clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function(){\n                if(chart){\n                    chart.resize();\n                }\n            }, 200); \/\/ Adjust the timeout as needed\n        });\n    });\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-43df46f e-con-full e-flex e-con e-child\" data-id=\"43df46f\" data-element_type=\"container\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-15f6fe1 elementor-widget elementor-widget-text-editor\" data-id=\"15f6fe1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cdiv id=\"control-panels4ftuclm1\"\u003e\n\u003c!-- Channel 1 Control Panel --\u003e\n\u003cdiv class=\"control-panel4ftuclm1\"\u003e\n\u003ch3 class=\"elementor-heading-title elementor-size-default\" style=\"text-align: center;\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h3\u003e\n\u003cdiv id=\"process-container14ftuclm1\" class=\"process-container4ftuclm1\"\u003e\n\u003cdiv class=\"process-bar\" style=\"width: 0%;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-thumb\" style=\"transform: translate(-50%, -50%) translateX(0px);\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e\u003cbr\u003e\u003cspan id=\"global-value14ftuclm1\" class=\"current-value\"\u003e0W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eUsage Guidelines\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg style=\"float: none;\" alt=\"Illustration showing correct and incorrect methods for daisy-chaining under-canopy LED grow lights\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-4ft-Model-3-Attentions_3452f4f5-44a8-45c5-a535-472c1623bd70.jpg?v=1738839923\"\u003e\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCompatible with 120V or 240V power cords (sold separately)\u003c\/li\u003e\n\u003cli\u003eDLC Listed: Eligible for utility rebate programs (contact us for details)\u003c\/li\u003e\n\u003cli\u003e120-degree lens angle for wide, even light distribution\u003c\/li\u003e\n\u003cli\u003eBuilt-in driver with slim, lightweight design\u003c\/li\u003e\n\u003cli\u003eDeep + far red spectrum optimized for veg and flower stages\u003c\/li\u003e\n\u003cli\u003eBoosts lower bud growth up to 40% for denser, more colorful harvests\u003c\/li\u003e\n\u003cli\u003eEnhances B-bud structure, density, and overall quality\u003c\/li\u003e\n\u003cli\u003eCompact, durable construction that’s easy to move and uninstall between runs\u003c\/li\u003e\n\u003cli\u003eSingle connection for both power and data\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros 4' Under Canopy Grow Lights Model 1\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/wegrowpros.com\/specsheets\/UCLModel1-125W.pdf\" rel=\"noopener\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMaximum Power Electrical Data\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAC Current\u003c\/strong\u003e: 120V - 1.04A | 208V - 0.60A | 240V - 0.52A | 277V - 0.45A\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAC Power\u003c\/strong\u003e: 120V - 131.5W | 208V - 126.4W | 240V - 126.1W | 277V - 126.1W\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePower Factor\u003c\/strong\u003e: 120V - 0.99 | 208V - 0.99 | 240V - 0.98 | 277V - 0.97\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDaisy Chain\u003c\/strong\u003e: 8 pcs @120V | 13 pcs @208V | 15 pcs @240V | 18 pcs @277V\u003c\/p\u003e\n\u003ch3\u003eInterconnect Cables and Power Cords\u003c\/h3\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the above chart for limitations on how many lights can be connected on 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/growpros-4-interconnect-cable-for-under-canopy-grow-lights\" rel=\"noopener\" target=\"_blank\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/growpros-power-cord-with-rj-cable\" rel=\"noopener\" target=\"_blank\"\u003ePower Cords\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/power-adapter\" rel=\"noopener\" target=\"_blank\"\u003ePower Adaptors\u003c\/a\u003e (Convert 120V\/240V into 277V Male Plug)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eController\u003c\/h3\u003e\n\u003cp\u003eA controller with an RJ-12 signal is required to operate. We recommend the \u003ca href=\"https:\/\/growlightcentral.com\/products\/growpros-grow-room-light-controller\" title=\"Growpros grow light controller\" rel=\"noopener\" target=\"_blank\"\u003eGrowPros controller.\u003c\/a\u003e\u003c\/p\u003e","brand":"GrowPros","offers":[{"title":"120V \/ None","offer_id":50723425976612,"sku":"GPS-UCL1-4FT-120V","price":120.0,"currency_code":"USD","in_stock":true},{"title":"120V \/ Pair of Stands (+$25)","offer_id":50723445014820,"sku":"GPS-UCL1-4FT-120V-STAND","price":145.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ None","offer_id":50723426009380,"sku":"GPS-UCL1-4FT-240V","price":120.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pair of Stands (+$25)","offer_id":50723445047588,"sku":"GPS-UCL1-4FT-240V-STAND","price":145.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Model-1-Under-Canopy-Light-3.jpg?v=1753816109"},{"product_id":"growpros-8-250w-under-canopy-grow-light-full-spectrum-ir-4-lights","title":"GrowPros 8′ Under Canopy Grow Light 250W Model 1 - Full Spectrum + Far Red","description":"\u003ch2\u003eBoost lower canopy yields and potency with 8 ft under canopy lights engineered for uniform light distribution and optimized flower development.\u003c\/h2\u003e\n\u003cp\u003eGrowPros Solutions' under canopy grow light 8ft is engineered to enhance the yield and color of lower flowers. These supplemental lights effectively enlarge B-buds and C-buds, promoting better growth and development in areas that typically underperform. By targeting the understory, GrowPros Solutions ensures a more uniform and abundant harvest, maximizing the potential of every plant.\u003c\/p\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cstrong\u003ePlug and play performance\u003c\/strong\u003e designed for straightforward upgrades and supplemental lighting. UCL Model 1 delivers a balanced full-spectrum output that works exceptionally well as a replacement or supplement for \u003cstrong\u003eHPS top lights\u003c\/strong\u003e, \u003cstrong\u003eLED top lights older than 3 years\u003c\/strong\u003e, and \u003cstrong\u003egreenhouse applications\u003c\/strong\u003e. Ideal for growers looking for reliable output without spectrum adjustment.\u003c\/p\u003e\n\u003ch3\u003eMaximize Flowering\u003c\/h3\u003e\n\u003cp\u003eUnder canopy lights are designed to illuminate beneath the dense plant canopies where traditional overhead lights struggle to reach. This strategic lighting approach not only boosts the yield but also enhances the quality of your crops by:\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eIncreasing Flowering: These lights provide essential light to lower canopy areas, promoting\u003c\/strong\u003e more extensive flowering even in the shaded parts of the plant.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancing Concentration: \u003c\/strong\u003eThe added light spectrum encourages the development of terpene compounds, improving the potency and profile of your harvest.\u003c\/p\u003e\n\u003ch3\u003eSpectrum Balancing for Optimal Growth\u003c\/h3\u003e\n\u003cp\u003eTo achieve these benefits, it’s crucial to select the right spectrum based on your existing setup:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eModel 1 Lights: \u003c\/strong\u003eIdeal for complementing HID top lights, which are rich in ROY (red, orange, yellow) spectrums.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eModel 2 Lights:\u003c\/strong\u003e Best paired with full spectrum LED top lights to ensure comprehensive coverage.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThis customization \u003cstrong\u003eallows growers to balance light spectrums effectively, ensuring that every plant receives the optimal wavelengths necessary for peak growth and quality.\u003c\/strong\u003e By integrating these advanced lighting solutions, you can achieve not only increased yields but also superior product quality, setting your harvest apart in both appearance and chemical composition.\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"6523d1e\" class=\"elementor-element elementor-element-6523d1e e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"heading.default\" data-element_type=\"widget\" data-id=\"1e5cf96\" class=\"elementor-element elementor-element-1e5cf96 elementor-widget elementor-widget-heading\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003ch3 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eDIMMABLE SPECTRUM\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"9e83635\" class=\"elementor-element elementor-element-9e83635 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n        \/* Chart Container *\/\n        #chartcontainer_4ftuclm1 .chart-container4ftuclm1 {\n            width: 100%;\n            margin: 10px auto;\n            display: flex;\n            justify-content: center;\n        }\n\n        \/* Control Panels *\/\n        #chartcontainer_4ftuclm1 #control-panels4ftuclm1 {\n            display: flex;\n            justify-content: space-around;\n            margin-bottom: 20px;\n            flex-wrap: wrap;\n        }\n\n        #chartcontainer_4ftuclm1 .control-panel4ftuclm1 {\n            width: 100%;\n            border: 1px dashed #000000;\n            padding: 20px;\n            margin-bottom: 20px;\n            border-radius: 2px;\n            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n        }\n\n        #chartcontainer_4ftuclm1 .slider-title { \n            font-family: Jost, sans-serif; \n            font-size: 20px; \n            margin-bottom: 15px;\n            color: #000000;\n        }\n\n        #chartcontainer_4ftuclm1 .slider-paratitle {\n            display: flex;\n            flex-direction: row;\n            justify-content: space-between;\n            margin-top: 10px;\n        }\n\n        #chartcontainer_4ftuclm1 .slider-paratitle .current-value {\n            text-align: right;\n            width: 100%;\n            font-weight: bold;\n            color: #000000;\n        }\n\t\t#chartcontainer_4ftuclm1 .slider-paratitle span {\n\t\tcolor:#000000;\n\t\t}\n        \/* Custom Process Bar Styles *\/\n        #chartcontainer_4ftuclm1 .process-container4ftuclm1 {\n            width: 100%;\n            height: 16px;\n            background-color: #333333;\n            position: relative;\n            cursor: pointer;\n\t\t\tborder-radius:2px;\n        }\n\n        #chartcontainer_4ftuclm1 .process-bar {\n            height: 100%;\n            background-color: #999999;\n            width: 0;\n            position: absolute;\n            top: 0;\n            left: 0;\n            transform: translateX(0);\n            will-change: width, transform;\n\t\t\tborder-radius:2px;\n        }\n\n        #chartcontainer_4ftuclm1 .process-thumb {\n            width: 20px;\n            height: 20px;\n            background-color: #046e82;\n            border: 1px solid #000000;\n            border-radius: 2px;\n            position: absolute;\n            top: 50%;\n            transform: translate(-50%, -50%);\n            left: 0;\n            cursor: pointer;\n            touch-action: none;\n            transform: translate(-50%, -50%) translateX(0);\n            transition: none;\n            will-change: transform;\n        }\n\n        \/* Responsive adjustments *\/\n        @media screen and (max-width: 767px) {\n            #chartcontainer_4ftuclm1 #control-panels4ftuclm1 { \n                flex-direction: column; \n            }\n            #chartcontainer_4ftuclm1 .control-panel4ftuclm1 { \n                width: 100%; \n                margin-bottom: 20px; \n\t\t\t\tpadding:10px;\n            }\n\t\t\t#chartcontainer_4ftuclm1 .slider-title { font-size:12px; }\n\t\t\t#chartcontainer_4ftuclm1 .process-container4ftuclm1 { height:14px; }\n\t\t\t#chartcontainer_4ftuclm1 .process-thumb { width: 22px; height: 22px; }\n\t\t\t#chartcontainer_4ftuclm1 .slider-paratitle span { font-size:10px; }\n        }\n\u003c\/style\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' id=\"chartcontainer_4ftuclm1\" data-element_type=\"container\" data-id=\"6523d1e\" class=\"elementor-element elementor-element-6523d1e e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"9e83635\" class=\"elementor-element elementor-element-9e83635 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"chart-container4ftuclm1\"\u003e\u003ccanvas height=\"423\" width=\"847\" style=\"display: block; box-sizing: border-box; height: 211px; width: 423px;\" id=\"myChart_4ftuclm1\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n    var chart4ftuclm1 = jQuery.noConflict(true);\n    chart4ftuclm1(document).ready(function(chart4ftuclm1) {\n        \/\/ Chart.js Setup\n        const ctx = chart4ftuclm1('#myChart_4ftuclm1')[0].getContext('2d');\n        let chart;\n        const dataset14ftuclm1 = {\n            label: 'Channel 1',\n            labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n            data: [0, 0, 0, 0, 0, 0, 0, 0, 0.2, 2, 10, 30, 60, 95, 60, 42, 28, 36, 44, 50, 55, 58, 62, 67, 74, 84, 89, 90, 86, 78, 70, 69, 74, 85, 99, 68, 38, 22, 15, 12, 14, 16, 12, 6, 2, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n        };\n\n        const colors = ['#111a39','#111a39','#111a39', '#111a39', '#111a39','#111a39','#111a39', '#111a39', '#162143', '#162143', '#162143', '#053390', '#1c4a9d', '#1c4a9d','#265aa8', '#3173b8', '#3698d5','#45bee3','#6fc4be', '#6ebf80', '#69b72d','#69b72d', '#6bb72d', '#79bc28','#97c626','#a8cc2b', '#c8d933','#d8e036', '#f1eb36','#f4c41c','#f19518','#ed761b','#e95619','#e62718','#e11713','#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d','#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a','#440104', '#380103','#230304','#221714', '#221714', '#221714','#221714', '#221714', '#221714','#221714', '#221714','#221714', '#221714'];\n\t\t\n\t\tlet scale1 = 0;\n\n        function createGradient(ctx, chartArea, colors) {\n            const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n            colors.forEach((color, index) =\u003e {\n                gradient.addColorStop(index \/ (colors.length - 1), color);\n            });\n            return gradient;\n        }\n\n        function createChart(labels, combinedData) {\n            if (chart) {\n                chart.destroy();\n            }\n\n            chart = new Chart(ctx, {\n                type: 'line',\n                data: {\n                    labels: labels,\n                    datasets: [\n                        {\n                            type: 'line',\n                            label: 'PPF',\n                            data: combinedData,\n                            borderWidth: 0.1,\n                            backgroundColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            borderColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            fill: true,\n                            tension: 0.4 \/\/ Smoothing effect\n                        },\n                        {\n                            type: 'line',\n                            label: 'Outline',\n                            data: combinedData,\n                            borderWidth: 2,\n                            backgroundColor: 'transparent',\n                            borderColor: '#000000', \/\/ Outline color\n                            fill: false,\n                            tension: 0.4\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: {\n                        x: {\n                            stacked: true,\n                            grid: {\n                                display: false \/\/ Hide y-axis grid lines\n                            },\n                            ticks: {\n                                color: '#000000',\n                                autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                maxRotation: 0, \/\/ Prevent label rotation\n                                minRotation: 0, \/\/ Prevent label rotation\n                                maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                            },\n                            border: {\n\t\t\t\t\t\t\t\twidth:2,\n                                color: '#000000' \/\/ Change x-axis line color\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                            grid: {\n                                color: '#000000',\n                            },\n                            border: {\n\t\t\t\t\t\t\t\twidth:2,\n                                color: '#000000' \/\/ Change x-axis line color\n                            },\n                            ticks: {\n                                color: '#000000',\n                                callback: function(value) {\n                                    return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                }\n                            }\n                        }\n                    },\n                    events: null,\n                    radius: 0,\n                    plugins: {\n                        filler: {propagate: true}, \/\/ Enable filler\n                        legend: { display: false },\n                    },\n                    animation: {\n                        duration: 0 \/\/ Animation duration for smoother updates\n                    }\n                }\n            });\n        }\n\n        function updateChart() {\n            const scaledData1 = dataset14ftuclm1.data.map(value =\u003e value * scale1);\n            const combinedData = scaledData1;\n            \n            if (chart) {\n                chart.data.datasets[0].data = combinedData;\n                chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                chart.options.animation.duration = 300;\n                chart.update();\n            }\n        }\n\n        function createProcessBar(containerId, valueId) {\n            const $container = chart4ftuclm1(`#${containerId}`);\n            const $thumb = $container.find('.process-thumb');\n            const $bar = $container.find('.process-bar');\n            const $currentValue = chart4ftuclm1(`#${valueId}`);\n            let dragging = false;\n            let containerOffset = $container.offset().left;\n            let containerWidth = $container.width();\n            let currentW = 125; \/\/ Set initial wattage to 125W\n\n            \/\/ Update container metrics on resize\n            function updateContainerMetrics() {\n                containerOffset = $container.offset().left;\n                containerWidth = $container.width();\n                setBarByWattage(currentW);\n            }\n\n            chart4ftuclm1(window).on('resize', updateContainerMetrics);\n\n            \/\/ Initialize container metrics\n            updateContainerMetrics();\n\n            \/\/ Function to set the bar and thumb position based on wattage\n            function setBarByWattage(wattage) {\n                currentW = Math.min(Math.max(wattage, 0), 125); \/\/ Update maximum wattage to 125W\n                const newLeft = (currentW \/ 125) * containerWidth; \/\/ Update scaling factor to 125\n\n                \/\/ Update bar width\n                $bar.css('width', `${(currentW \/ 125) * 100}%`); \/\/ Update scaling factor to 125\n                \/\/ Update thumb position using transform for better performance\n                $thumb.css('transform', `translate(-50%, -50%) translateX(${newLeft}px)`);\n                \/\/ Update displayed value\n                $currentValue.text(`${currentW.toFixed(0)}W`); \/\/ Change display from '%' to 'W'\n                \/\/ Update the corresponding scale variable and chart\n                if (containerId === 'process-container14ftuclm1') {\n                    scale1 = currentW \/ 125; \/\/ Update scale1 to reflect 125W maximum\n                }\n                updateChart();\n            }\n\n            \/\/ Function to handle the dragging logic\n            function handleDrag(pageX) {\n                const newLeft = pageX - containerOffset;\n                const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                const newWattage = (clampedLeft \/ containerWidth) * 125; \/\/ Update scaling factor to 125\n                setBarByWattage(newWattage);\n            }\n\n            \/\/ Throttle dragging using requestAnimationFrame\n            let rafId = null;\n\n            function onDrag(pageX) {\n                if (rafId) return; \/\/ If a frame is already requested, do nothing\n                rafId = requestAnimationFrame(() =\u003e {\n                    handleDrag(pageX);\n                    rafId = null;\n                });\n            }\n\n            \/\/ Mouse events\n            $thumb.on('mousedown', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chart4ftuclm1(document).on('mousemove', function(e) {\n                if (dragging) {\n                    onDrag(e.pageX);\n                }\n            });\n\n            chart4ftuclm1(document).on('mouseup', function() {\n                dragging = false;\n            });\n\n            \/\/ Touch events\n            $thumb.on('touchstart', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chart4ftuclm1(document).on('touchmove', function(e) {\n                if (dragging) {\n                    const touch = e.originalEvent.touches[0];\n                    onDrag(touch.pageX);\n                }\n            });\n\n            chart4ftuclm1(document).on('touchend touchcancel', function() {\n                dragging = false;\n            });\n\n            \/\/ Click on the process container to set the thumb position\n            $container.on('click', function(e) {\n                const pageX = e.pageX;\n                onDrag(pageX);\n            });\n\n            \/\/ Initialize the bar to 125W\n            setBarByWattage(currentW);\n        }\n\n        \/\/ Initialize the chart\n        function initializeChart() {\n            const initialCombinedData = dataset14ftuclm1.data.map(value =\u003e value * scale1);\n            createChart(dataset14ftuclm1.labels, initialCombinedData);\n        }\n\n        \/\/ Initial load\n        initializeChart();\n\n        \/\/ Create Process Bars for Channel 1\n        createProcessBar('process-container14ftuclm1', 'global-value14ftuclm1');\n\n        \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n        let resizeTimeout;\n        chart4ftuclm1(window).on('resize', function(){\n            clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function(){\n                if(chart){\n                    chart.resize();\n                }\n            }, 200); \/\/ Adjust the timeout as needed\n        });\n    });\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-element_type=\"container\" data-id=\"43df46f\" class=\"elementor-element elementor-element-43df46f e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"15f6fe1\" class=\"elementor-element elementor-element-15f6fe1 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cdiv id=\"control-panels4ftuclm1\"\u003e\n\u003c!-- Channel 1 Control Panel --\u003e\n\u003cdiv class=\"control-panel4ftuclm1\"\u003e\n\u003ch3 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h3\u003e\n\u003cdiv class=\"process-container4ftuclm1\" id=\"process-container14ftuclm1\"\u003e\n\u003cdiv style=\"width: 0%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(0px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e\u003cbr\u003e\u003cspan class=\"current-value\" id=\"global-value14ftuclm1\"\u003e0W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eUsage Guidelines\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-4ft-Model-3-Attentions_3452f4f5-44a8-45c5-a535-472c1623bd70.jpg?v=1738839923\" alt=\"Instructions for using GrowPros 250W under-canopy LED grow lights for optimal plant coverage.\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCompatible with 120V or 240V power cords (sold separately)\u003c\/li\u003e\n\u003cli\u003eDimmable via RJ12 Data Cable, compatible with most controllers\u003c\/li\u003e\n\u003cli\u003e120-degree lens angle from a slim, single-bar design for optimal light coverage\u003c\/li\u003e\n\u003cli\u003eBuilt-in driver and lightweight profile for easy installation and handling\u003c\/li\u003e\n\u003cli\u003eDeep + far red spectrum optimized for veg and flowering stages\u003c\/li\u003e\n\u003cli\u003eBoosts lower bud growth up to 40%, improving density and color quality\u003c\/li\u003e\n\u003cli\u003eCompact and durable, designed for efficient canopy lighting and easy access during harvest\u003c\/li\u003e\n\u003cli\u003eSimple daisy-chain setup for power and data\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros 8′ Under Canopy Grow Lights Model 1\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/wegrowpros.com\/specsheets\/UCLModel1-250W.pdf\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMaximum Power Electrical Data\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAC Current\u003c\/strong\u003e: 120V - 2.08A | 208V - 1.20A | 240V - 1.04A | 277V - 0.90A\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAC Power\u003c\/strong\u003e: 120V - 252W | 208V - 245W | 240V - 244W | 277V - 244W\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePower Factor\u003c\/strong\u003e: 120V - 0.99 | 208V - 0.99 | 240V - 0.98 | 277V - 0.97\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDaisy Chain\u003c\/strong\u003e: 4 pcs @120V | 5 pcs @208V | 6 pcs @240V | 8 pcs @277V\u003c\/p\u003e\n\u003ch3\u003eInterconnect Cables and Power Cords\u003c\/h3\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the above chart for limitations on how many lights can be connected on 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/growpros-4-interconnect-cable-for-under-canopy-grow-lights\" target=\"_blank\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/products\/growpros-power-cord-with-rj-cable\" target=\"_blank\"\u003ePower Cords\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/power-adapter\" target=\"_blank\"\u003ePower Adaptors\u003c\/a\u003e (Convert 120V\/240V into 277V Male Plug)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eController\u003c\/h3\u003e\n\u003cp\u003eA controller with an RJ-12 signal is required to operate. We recommend the \u003ca rel=\"noopener\" title=\"Growpros grow light controller\" href=\"https:\/\/growlightcentral.com\/products\/growpros-grow-room-light-controller\" target=\"_blank\"\u003eGrowPros controller.\u003c\/a\u003e\u003c\/p\u003e","brand":"GrowPros","offers":[{"title":"120V \/ No","offer_id":49441120420132,"sku":"GPS-UCL1-8FT-120V","price":235.0,"currency_code":"USD","in_stock":true},{"title":"120V \/ Pair of Stands | $25","offer_id":50723445080356,"sku":"GPS-UCL1-8FT-120V-STAND","price":260.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ No","offer_id":49678185169188,"sku":"GPS-UCL1-8FT-240V","price":235.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pair of Stands | $25","offer_id":50723445113124,"sku":"GPS-UCL1-8FT-240V-STAND","price":260.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Model-1-Under-Canopy-Light-3.jpg?v=1753816109"},{"product_id":"growpros-4-125w-under-canopy-grow-light-deep-red-spectrum","title":"GrowPros 4′ Under Canopy Grow Light Model 2 - 80% Deep Red Spectrum 125W","description":"\u003ch2\u003eBoost lower canopy yields and flower density with 4 ft under canopy lights engineered for deep red spectrum and uniform light distribution.\u003c\/h2\u003e\n\u003cp\u003e\u003cstrong\u003eThe GrowPros Solutions 4' under canopy light red spectrum version\u003c\/strong\u003e is designed to provide supplemental light to the lower regions of plants in indoor cultivation environments by strategically placing them beneath the top canopy of plants to ensure leaves and flowers below the canopy receive optimal light exposure by eliminating shady areas. Under Canopy Grow Lights, benefits include uniform light distribution, maximized yield, and denser flowers.\u003c\/p\u003e\n\u003cp\u003eEngineered with \u003cstrong\u003eapproximately 80 percent 660nm deep red\u003c\/strong\u003e, paired with a refined blend of \u003cstrong\u003epure blue for improved color expression\u003c\/strong\u003e, \u003cstrong\u003e3000K warm white\u003c\/strong\u003e, and \u003cstrong\u003e730nm far red\u003c\/strong\u003e. This UCL Model 2 spectrum enhances \u003cstrong\u003ecanopy penetration\u003c\/strong\u003e, improves bud density, and supports more uniform development across plant layers.\u003c\/p\u003e\n\u003ch3\u003eMaximize Flowering\u003c\/h3\u003e\n\u003cp\u003eUnder canopy lights are designed to illuminate beneath the dense plant canopies where traditional overhead lights struggle to reach. This strategic lighting approach not only boosts the yield but also enhances the quality of your crops by:\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eIncreasing Flowering: \u003c\/strong\u003eBy providing essential light to lower canopy areas, these lights promote more extensive flowering even in the shaded parts of the plant.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancing Concentration: \u003c\/strong\u003eThe added light spectrum encourages the development and terpene compounds, improving the potency and profile of your harvest.\u003c\/p\u003e\n\u003ch3\u003eSpectrum Balancing for Optimal Growth\u003c\/h3\u003e\n\u003cp\u003eTo achieve these benefits, it’s crucial to select the right spectrum based on your existing setup:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eModel 1 Lights: \u003c\/strong\u003eIdeal for complementing HID top lights, which are rich in ROY (red, orange, yellow) spectrums.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eModel 2 Lights: \u003c\/strong\u003eBest paired with full-spectrum LED top lights to ensure comprehensive coverage.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThis customization allows growers to balance light spectrums effectively, \u003cstrong\u003eensuring that every plant receives the optimal wavelengths necessary for peak growth and quality.\u003c\/strong\u003e By integrating these advanced lighting solutions, you can achieve increased yields and superior product quality, setting your harvest apart in appearance and chemical composition.\u003c\/p\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"8ef47c1\" class=\"elementor-element elementor-element-8ef47c1 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"heading.default\" data-element_type=\"widget\" data-id=\"7767324\" class=\"elementor-element elementor-element-7767324 elementor-widget elementor-widget-heading\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003ch3 class=\"elementor-heading-title elementor-size-default\" style=\"text-align: center;\"\u003eDIMMABLE SPECTRUM\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"d816f17\" class=\"elementor-element elementor-element-d816f17 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    \/* Chart Container *\/\n    #chartcontainer_4ftuclm2 .chart-container4ftuclm2 {\n        width: 100%;\n        margin: 10px auto;\n        display: flex;\n        justify-content: center;\n    }\n\n    \/* Control Panels *\/\n    #chartcontainer_4ftuclm2 #control-panels4ftuclm2 {\n        display: flex;\n        justify-content: space-around;\n        margin-bottom: 20px;\n        flex-wrap: wrap;\n    }\n\n    #chartcontainer_4ftuclm2 .control-panel4ftuclm2 {\n        width: 100%;\n        border: 1px dashed #000000;\n        padding: 20px;\n        margin-bottom: 20px;\n        border-radius: 2px;\n        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n    }\n\n    #chartcontainer_4ftuclm2 .slider-title { \n        font-family: Jost, sans-serif; \n        font-size: 20px; \n        margin-bottom: 15px;\n        color: #000000;\n    }\n\n    #chartcontainer_4ftuclm2 .slider-paratitle {\n        display: flex;\n        flex-direction: row;\n        justify-content: space-between;\n        margin-top: 10px;\n    }\n\n    #chartcontainer_4ftuclm2 .slider-paratitle .current-value {\n        text-align: right;\n        width: 100%;\n        font-weight: bold;\n        color: #000000;\n    }\n    #chartcontainer_4ftuclm2 .slider-paratitle span {\n        color:#cccccc;\n    }\n    \/* Custom Process Bar Styles *\/\n    #chartcontainer_4ftuclm2 .process-container4ftuclm2 {\n        width: 100%;\n        height: 16px;\n        background-color: #333333;\n        position: relative;\n        cursor: pointer;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm2 .process-bar {\n        height: 100%;\n        background-color: #999999;\n        width: 0;\n        position: absolute;\n        top: 0;\n        left: 0;\n        transform: translateX(0);\n        will-change: width, transform;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm2 .process-thumb {\n        width: 20px;\n        height: 20px;\n        background-color: #046e82;\n        border: 1px solid #000000;\n        border-radius: 2px;\n        position: absolute;\n        top: 50%;\n        transform: translate(-50%, -50%) translateX(0);\n        left: 0;\n        cursor: pointer;\n        touch-action: none;\n        transition: none;\n        will-change: transform;\n    }\n\n    \/* Responsive adjustments *\/\n    @media screen and (max-width: 767px) {\n        #chartcontainer_4ftuclm2 #control-panels4ftuclm2 { \n            flex-direction: column; \n        }\n        #chartcontainer_4ftuclm2 .control-panel4ftuclm2 { \n            width: 100%; \n            margin-bottom: 20px; \n            padding:10px;\n        }\n        #chartcontainer_4ftuclm2 .slider-title { font-size:12px; }\n        #chartcontainer_4ftuclm2 .process-container4ftuclm2 { height:14px; }\n        #chartcontainer_4ftuclm2 .process-thumb { width: 22px; height: 22px; }\n        #chartcontainer_4ftuclm2 .slider-paratitle span { font-size:10px; }\n    }\n\u003c\/style\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' id=\"chartcontainer_4ftuclm2\" data-element_type=\"container\" data-id=\"8ef47c1\" class=\"elementor-element elementor-element-8ef47c1 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"d816f17\" class=\"elementor-element elementor-element-d816f17 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"chart-container4ftuclm2\"\u003e\u003ccanvas height=\"423\" width=\"847\" style=\"display: block; box-sizing: border-box; height: 211px; width: 423px;\" id=\"myChart_4ftuclm2\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n    var chart4ftuclm2 = jQuery.noConflict(true);\n    chart4ftuclm2(document).ready(function($) {\n        \/\/ Chart.js Setup\n        const ctx = chart4ftuclm2('#myChart_4ftuclm2')[0].getContext('2d');\n        let chart;\n        const dataset14ftuclm2 = {\n            label: 'Channel 1',\n            labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n            data: [0, 0, 0, 0, 0, 0, 0, 0, 0.2, 1, 2, 4, 14.2, 27, 14, 4, 2, 1.4, 2, 2.6, 3.1, 3.6, 4.4, 4.8, 5, 5.4, 5.8, 6.2, 6.4, 7.4, 9.4, 16, 34, 64, 99, 24, 7.4, 2.8, 1.6, 3.2, 7.2, 12, 7.2, 4, 2.1, 1, 0.4, 0.1, 0, 0, 0, 0, 0, 0 ]\n        };\n\n        const colors = ['#111a39','#111a39','#111a39', '#111a39', '#111a39','#111a39','#111a39', '#111a39', '#162143', '#162143', '#162143', '#053390', '#1c4a9d', '#1c4a9d','#265aa8', '#3173b8', '#3698d5','#45bee3','#6fc4be', '#6ebf80', '#69b72d','#69b72d', '#6bb72d', '#79bc28','#97c626','#a8cc2b', '#c8d933','#d8e036', '#f1eb36', '#f4c41c', '#f19518', '#ed761b', '#e95619','#e62718','#e11713','#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d','#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a','#440104', '#380103','#230304','#221714', '#221714', '#221714','#221714', '#221714', '#221714','#221714', '#221714','#221714', '#221714'];\n\n        let scale1 = 1;\n\n        function createGradient(ctx, chartArea, colors) {\n            const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n            colors.forEach((color, index) =\u003e {\n                gradient.addColorStop(index \/ (colors.length - 1), color);\n            });\n            return gradient;\n        }\n\n        function createChart(labels, combinedData) {\n            if (chart) {\n                chart.destroy();\n            }\n\n            chart = new Chart(ctx, {\n                type: 'line',\n                data: {\n                    labels: labels,\n                    datasets: [\n                        {\n                            type: 'line',\n                            label: 'PPF',\n                            data: combinedData,\n                            borderWidth: 0.1,\n                            backgroundColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            borderColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            fill: true,\n                            tension: 0.4 \/\/ Smoothing effect\n                        },\n                        {\n                            type: 'line',\n                            label: 'Outline',\n                            data: combinedData,\n                            borderWidth: 2,\n                            backgroundColor: 'transparent',\n                            borderColor: '#000000', \/\/ Outline color\n                            fill: false,\n                            tension: 0.4\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: {\n                        x: {\n                            stacked: true,\n                            grid: {\n                                display: false \/\/ Hide y-axis grid lines\n                            },\n                            ticks: {\n                                color: '#000000',\n                                autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                maxRotation: 0, \/\/ Prevent label rotation\n                                minRotation: 0, \/\/ Prevent label rotation\n                                maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                            },\n                            border: {\n                                width: 2,\n                                color: '#000000' \/\/ Change x-axis line color\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                            grid: {\n                                color: '#000000',\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000' \/\/ Change y-axis line color\n                            },\n                            ticks: {\n                                color: '#000000',\n                                callback: function(value) {\n                                    return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                }\n                            }\n                        }\n                    },\n                    events: null,\n                    radius: 0,\n                    plugins: {\n                        filler: {propagate: true}, \/\/ Enable filler\n                        legend: { display: false },\n                    },\n                    animation: {\n                        duration: 0 \/\/ Animation duration for smoother updates\n                    }\n                }\n            });\n        }\n\n        function updateChart() {\n            const scaledData1 = dataset14ftuclm2.data.map(value =\u003e value * scale1);\n            const combinedData = scaledData1;\n            \n            if (chart) {\n                chart.data.datasets[0].data = combinedData;\n                chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                chart.options.animation.duration = 300;\n                chart.update();\n            }\n        }\n\n        function createProcessBar(containerId, valueId) {\n            const $container = chart4ftuclm2(`#${containerId}`);\n            const $controlPanel = $container.closest('.control-panel4ftuclm2');\n            const $thumb = $container.find('.process-thumb');\n            const $bar = $container.find('.process-bar');\n            const $currentValue = chart4ftuclm2(`#${valueId}`);\n            let dragging = false;\n            let containerOffset = $controlPanel.offset().left;\n            let containerWidth = $controlPanel.width();\n            let processContainerWidth = $container.width();\n            let currentW = 125; \/\/ Set initial wattage to 125W\n\n            \/\/ Update container metrics on resize\n            function updateContainerMetrics() {\n                containerOffset = $controlPanel.offset().left;\n                containerWidth = $controlPanel.width();\n                processContainerWidth = $container.width();\n                setBarByWattage(currentW);\n            }\n\n            chart4ftuclm2(window).on('resize', updateContainerMetrics);\n\n            \/\/ Initialize container metrics\n            updateContainerMetrics();\n\n            \/\/ Function to set the bar and thumb position based on wattage\n            function setBarByWattage(wattage) {\n                currentW = Math.min(Math.max(wattage, 0), 125); \/\/ Use 125W as max\n                const touchRatio = currentW \/ 125;\n                const thumbLeft = touchRatio * processContainerWidth;\n\n                \/\/ Update bar width\n                $bar.css('width', `${touchRatio * 100}%`);\n                \/\/ Update thumb position\n                $thumb.css('transform', `translate(-50%, -50%) translateX(${thumbLeft}px)`);\n                \/\/ Update displayed value\n                $currentValue.text(`${currentW.toFixed(0)}W`);\n                \/\/ Update the corresponding scale variable and chart\n                scale1 = currentW \/ 125;\n                updateChart();\n            }\n\n            \/\/ Function to handle the dragging logic\n            function handleDrag(pageX) {\n                const newLeft = pageX - containerOffset;\n                const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                const touchRatio = clampedLeft \/ containerWidth;\n                const newWattage = touchRatio * 125; \/\/ Use 125W as max\n                setBarByWattage(newWattage);\n            }\n\n            \/\/ Throttle dragging using requestAnimationFrame\n            let rafId = null;\n\n            function onDrag(pageX) {\n                if (rafId) return;\n                rafId = requestAnimationFrame(() =\u003e {\n                    handleDrag(pageX);\n                    rafId = null;\n                });\n            }\n\n            \/\/ Mouse events\n            $thumb.on('mousedown', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chart4ftuclm2(document).on('mousemove', function(e) {\n                if (dragging) {\n                    onDrag(e.pageX);\n                }\n            });\n\n            chart4ftuclm2(document).on('mouseup', function() {\n                dragging = false;\n            });\n\n            \/\/ Touch events bound to control panel\n            $controlPanel.on('touchstart', function(e) {\n                e.preventDefault();\n                dragging = true;\n                const touch = e.originalEvent.touches[0];\n                onDrag(touch.pageX);\n            });\n\n            chart4ftuclm2(document).on('touchmove', function(e) {\n                if (dragging) {\n                    const touch = e.originalEvent.touches[0];\n                    onDrag(touch.pageX);\n                    e.preventDefault();\n                }\n            });\n\n            chart4ftuclm2(document).on('touchend touchcancel', function() {\n                dragging = false;\n            });\n\n            \/\/ Click on the control panel to set the thumb position\n            $controlPanel.on('click', function(e) {\n                const pageX = e.pageX;\n                onDrag(pageX);\n            });\n\n            \/\/ Initialize the bar to 125W\n            setBarByWattage(currentW);\n        }\n\n        \/\/ Initialize the chart\n        function initializeChart() {\n            const scaledData1 = dataset14ftuclm2.data.map(value =\u003e value * scale1);\n            createChart(dataset14ftuclm2.labels, scaledData1);\n        }\n\n        \/\/ Initial load\n        initializeChart();\n\n        \/\/ Create Process Bars for Channel 1\n        createProcessBar('process-container14ftuclm2', 'global-value14ftuclm2');\n\n        \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n        let resizeTimeout;\n        chart4ftuclm2(window).on('resize', function(){\n            clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function(){\n                if(chart){\n                    chart.resize();\n                }\n            }, 200); \/\/ Adjust the timeout as needed\n        });\n    });\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"control-panels4ftuclm2\" data-element_type=\"container\" data-id=\"a8ce3a9\" class=\"elementor-element elementor-element-a8ce3a9 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"6c1f34f\" class=\"elementor-element elementor-element-6c1f34f elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cdiv class=\"control-panel4ftuclm2\"\u003e\n\u003cdiv class=\"slider-title\"\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003ch3 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"process-container4ftuclm2\" id=\"process-container14ftuclm2\"\u003e\n\u003cdiv style=\"width: 100%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(212.094px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\" class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e\u003cbr\u003e\u003cspan class=\"current-value\" id=\"global-value14ftuclm2\"\u003e125W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eUser Guidelines\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg style=\"float: none;\" alt=\"GrowPros under-canopy light user guidelines showing dimming and electrical setup\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-4ft-Model-3-Attentions_3452f4f5-44a8-45c5-a535-472c1623bd70.jpg?v=1738839923\"\u003e\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCompatible with 120V or 240V power cords (sold separately)\u003c\/li\u003e\n\u003cli\u003eDimmable via RJ12 Data Cable, compatible with most controllers\u003c\/li\u003e\n\u003cli\u003e120-degree lens angle from a slim single-bar design for wide, even light spread\u003c\/li\u003e\n\u003cli\u003eBuilt-in driver and lightweight profile for easy setup and handling\u003c\/li\u003e\n\u003cli\u003eDeep red + full spectrum optimized for veg and flowering stages\u003c\/li\u003e\n\u003cli\u003eBoosts lower bud growth up to 40%, improving density, color, and B-bud structure\u003c\/li\u003e\n\u003cli\u003eDurable and compact design makes it easy to work around during harvest\u003c\/li\u003e\n\u003cli\u003eQuick daisy-chain connections for power and data\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros 4' Under Canopy Grow Lights Model 2 125W\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/wegrowpros.com\/specsheets\/UCLModel2-125W.pdf\" rel=\"noopener\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMaximum Power Electrical Data\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAC Current\u003c\/strong\u003e: 120V - 1.04A | 208V - 0.60A | 240V - 0.52A | 277V - 0.45A\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAC Power\u003c\/strong\u003e: 120V - 131.5W | 208V - 126.9W | 240V - 126.4W | 277V - 126.1W\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePower Factor\u003c\/strong\u003e: 120V - 0.99 | 208V - 0.99 | 240V - 0.98 | 277V - 0.97\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDaisy Chain\u003c\/strong\u003e: 8 pcs @120V | 13 pcs @208V | 15 pcs @240V | 18 pcs @277V\u003c\/p\u003e\n\u003ch3\u003eInterconnect Cables and Power Cords\u003c\/h3\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the above chart for limitations on how many lights can be connected on 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/growpros-4-interconnect-cable-for-under-canopy-grow-lights\" rel=\"noopener\" target=\"_blank\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/growpros-power-cord-with-rj-cable\" rel=\"noopener\" target=\"_blank\"\u003ePower Cords\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/power-adapter\" rel=\"noopener\" target=\"_blank\"\u003ePower Adaptors\u003c\/a\u003e (Convert 120V\/240V into 277V Male Plug)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eController\u003c\/h3\u003e\n\u003cp\u003eA controller with an RJ-12 signal is required to operate. We recommend the \u003ca rel=\"noopener\" title=\"Growpros grow light controller\" href=\"https:\/\/growlightcentral.com\/products\/growpros-grow-room-light-controller\" target=\"_blank\"\u003eGrowPros controller.\u003c\/a\u003e\u003c\/p\u003e","brand":"GrowPros","offers":[{"title":"120V \/ No","offer_id":49612475892004,"sku":"GPS-UCL2-4FT-RED-120V","price":140.0,"currency_code":"USD","in_stock":true},{"title":"120V \/ Pair of Stands | $25","offer_id":49612475957540,"sku":"GPS-UCL2-4FT-RED-120V-STAND","price":165.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ No","offer_id":49678165803300,"sku":"GPS-UCL2-4FT-RED-240V","price":140.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pair of Stands | $25","offer_id":49678165836068,"sku":"GPS-UCL2-4FT-RED-240V-STAND","price":165.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-Model-2-Deep-Red-Spectrum-4.jpg?v=1753793633"},{"product_id":"faven-lighting-under-canopy-led-grow-light-bar-stands","title":"Faven Lighting Under-Canopy LED Grow Light Bar Stands","description":"\u003ch2\u003eSecure and adjustable under-canopy LED light bar stands built for stability and optimized light distribution in any grow environment.\u003c\/h2\u003e\n\u003cp\u003eThe Faven Lighting LED under canopy light bar stands work for both the R6 and R8 lights. All needed hardware is included. These stands are available in 8 or 12 inches heights to suit your growing environment. Sold in pairs.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eOptimized for R6 and R8 LEDs\u003c\/strong\u003e for seamless compatibility and maximum under-canopy light distribution.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAdjustable between 8\", 10\" and 12\" height option\u003c\/strong\u003e to accommodate different plant structures and grow styles.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eImproves lower canopy growth\u003c\/strong\u003e by delivering light to shaded areas, increasing yield potential.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eHeavy-duty construction\u003c\/strong\u003e ensures stability and longevity in demanding grow environments.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIncludes all necessary hardware\u003c\/strong\u003e for quick and hassle-free installation.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eSpecifications\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eCompatible with:\u003c\/strong\u003e Faven Lighting R6 and R8 LED fixtures\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eHeight options:\u003c\/strong\u003e 8\", 10\" or 12\" \u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMaterial:\u003c\/strong\u003e Heavy-duty metal construction\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e2 x Faven Lighting Under-Canopy Bar Stands\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Faven Lighting","offers":[{"title":"Default Title","offer_id":49441522614564,"sku":"10-010506-004","price":19.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/faven-lighting-under-canopy-led-grow-light-bar-stands-1.jpg?v=1753840314"},{"product_id":"grand-master-leds-tarantula-predator","title":"Grand Master LEDs Tarantula Predator","description":"\u003ch2\u003eBoost canopy penetration and spectral precision with ultra-efficient 10W light bars—built to scale, daisy-chain, and thrive in humid grow environments.\u003c\/h2\u003e\n\u003cp\u003eFor \u003cstrong\u003egrowers looking to enhance their lighting strategy with ultra-efficient supplemental lighting\u003c\/strong\u003e, the \u003cstrong\u003eTarantula Predator\u003c\/strong\u003e delivers \u003cstrong\u003etargeted spectrum support\u003c\/strong\u003e in a \u003cstrong\u003elow-wattage, high-impact design\u003c\/strong\u003e. Each pair of 5W bars (10W per set) covers a 4' x 4' to 5' x 5' area, making it perfect for grow tents, propagation setups, or additional canopy penetration in larger grows. IP66 waterproofing ensures durability in high-humidity environments, while daisy-chaining support (up to 55 units on 120V and 110 on 240V) allows for seamless scalability in commercial and home grows alike.\u003c\/p\u003e\n\u003ch3\u003eIs the Tarantula Predator Energy-Efficient?\u003c\/h3\u003e\n\u003cp\u003eAbsolutely. With a \u003cstrong\u003emax draw of just 10W per set\u003c\/strong\u003e, the \u003cstrong\u003eTarantula Predator consumes a fraction of the power of traditional supplemental lighting\u003c\/strong\u003e while \u003cstrong\u003edelivering targeted spectral enhancement\u003c\/strong\u003e. Unlike bulky, inefficient fixtures, this compact and scalable system ensures optimal light distribution with zero wasted energy—making it ideal for growers focused on efficiency and precision lighting.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEach Pair covers a 4-5ft x 4-5ft area, Tent or Table.\u003c\/li\u003e\n\u003cli\u003eIP 66 Waterproof\u003c\/li\u003e\n\u003cli\u003eComes with 2, 5 watt bars.\u003c\/li\u003e\n\u003cli\u003eSupports Daisy-Chaining (max 55 on 120V and 110 lights on 240V)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e2 x Light Bars\u003c\/li\u003e\n\u003cli\u003e4 x Hooks\u003c\/li\u003e\n\u003cli\u003e1 x LED Driver with Cord\u003c\/li\u003e\n\u003cli\u003e2 x 6.5ft Stainless Steel Ropes\u003c\/li\u003e\n\u003cli\u003e2 x 10.5ft Stainless Steel Ropes\u003c\/li\u003e\n\u003cli\u003e4 x Lockers\u003c\/li\u003e\n\u003cli\u003e1 x 120V AC Plug with 10ft Cord (Optional)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0615\/7837\/9513\/files\/TARANTULA_PREDATOR_Manual.pdf?v=1734462306\"\u003eProduct Manual\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Grand Master LEDs","offers":[{"title":"120V","offer_id":52053528183076,"sku":null,"price":225.0,"currency_code":"USD","in_stock":true},{"title":"240V","offer_id":52053528215844,"sku":null,"price":225.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Grand-Master-LEDs-Tarantula-Predator-3.jpg?v=1753361737"},{"product_id":"growpros-power-cord-with-rj-cable","title":"GrowPros Power Cord with RJ Cable","description":"\u003ch4\u003e\u003cstrong\u003eFEATURES \u0026amp; BENEFITS\u003c\/strong\u003e\u003c\/h4\u003e\n\u003cul\u003e\n\u003cli\u003e8-foot power cord with RJ-12 data cable for power plug-in and data chaining\u003c\/li\u003e\n\u003cli\u003eIP65 Waterproof connections designed for the rigors and water exposure in the under canopy\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch4\u003e\u003cstrong\u003eUses\u003c\/strong\u003e\u003c\/h4\u003e\n\u003cdiv\u003eUse this power cord with RJ-12 data cable when..\u003c\/div\u003e\n\u003col\u003e\n\u003cli\u003ePower plug-in and data chaining for the lead unit in a row of Grow Pros Solutions under-canopy lights.\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003ch4\u003eUnder Canopy Light Power Cord\u003c\/h4\u003e\n\u003cp\u003eThe Under Canopy light 120V and 240V power cords are 8 feet long. They are specifically designed to provide power to under-canopy lights while also supporting dimming functionality.\u003c\/p\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cspan\u003e\u003cspan style=\"color: rgb(191, 38, 47);\"\u003e\u003cstrong\u003ePlease note: This product is engineered exclusively for GrowPros Models 1-4 Under Canopy Lights and cannot be used across different products\/brands.\u003c\/strong\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003ch4\u003eAbout Under Canopy Grow Lights\u003c\/h4\u003e\n\u003cp\u003eOur under-canopy lights offer a solution to enhance the growth of lower flowers on plants grown in environments where limited lighting reaches beneath the top canopy. By strategically installing under-canopy grow lights, overall plant development is significantly improved. These lights ensure that the lower parts of the plants receive adequate light, promoting healthier and more robust growth throughout the entire plant.\u003c\/p\u003e\n\u003cp\u003eFeaturing an attached RJ-12 data cable, which enables dimming functionality for the under-canopy lights. This dimming capability allows growers to precisely control the light intensity, ensuring optimal conditions for different stages of plant growth. The 15-foot length of the cords provides ample reach, making it easy to integrate the lights into various indoor cultivation setups.\u003c\/p\u003e\n\u003ch4\u003eNOTE:\u003c\/h4\u003e\n\u003cp\u003eCord types have changed with design improvements\u003c\/p\u003e\n\u003cp\u003ePush Lock – 9\/1\/2025 to Current\u003cbr\u003e8Pin Twist Lock – 8\/1\/2024 to 9\/1\/2025\u003cbr\u003e5Pin Twist Lock – 1\/1\/2024 to 8\/1\/2024\u003c\/p\u003e\n\u003c!----\u003e","brand":"GrowPros","offers":[{"title":"120V (+ 240V to 120V Adapter) \/ Pushlock","offer_id":49617637736740,"sku":"UCL-ACPC-120V","price":37.5,"currency_code":"USD","in_stock":true},{"title":"120V (+ 240V to 120V Adapter) \/ 5 Pin","offer_id":53944000413988,"sku":null,"price":37.5,"currency_code":"USD","in_stock":true},{"title":"120V (+ 240V to 120V Adapter) \/ 8 Pin","offer_id":53944000446756,"sku":null,"price":37.5,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pushlock","offer_id":49617637769508,"sku":"UCL-ACPC-240V","price":30.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ 5 Pin","offer_id":53944000479524,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ 8 Pin","offer_id":53944000512292,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"277V (+ 240V to 277V Adapter) \/ Pushlock","offer_id":53825678410020,"sku":null,"price":37.5,"currency_code":"USD","in_stock":true},{"title":"277V (+ 240V to 277V Adapter) \/ 5 Pin","offer_id":53944000545060,"sku":null,"price":37.5,"currency_code":"USD","in_stock":true},{"title":"277V (+ 240V to 277V Adapter) \/ 8 Pin","offer_id":53944000577828,"sku":null,"price":37.5,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Power-Cord-with-RJ-Cable-3.jpg?v=1744187447"},{"product_id":"power-adapter","title":"GrowPros Power Adapter 277V","description":"\u003ch2\u003e\u003cstrong\u003ePower Adapter\u003c\/strong\u003e\u003c\/h2\u003e\n\u003ch4\u003e\u003cstrong\u003eFEATURES \u0026amp; BENEFITS\u003c\/strong\u003e\u003c\/h4\u003e\n\u003cul\u003e\n\u003cli\u003e6 inch length\u003c\/li\u003e\n\u003cli\u003eConvert a 120V or 240V plug to 277V\u003c\/li\u003e\n\u003cli\u003eMaximum 15 Amp capacity\u003c\/li\u003e\n\u003cli\u003eTwist lock\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cspan\u003e\u003cspan style=\"color: rgb(191, 38, 47);\"\u003e\u003cstrong\u003ePlease note: This product is engineered exclusively for GrowPros lights and cannot be used across different products\/brands.\u003c\/strong\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003e\u003cspan style=\"color: rgb(191, 38, 47);\"\u003e\u003cstrong\u003eThis is not a transformer. Please ensure that your light is compatible with 277V power.\u003c\/strong\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003eVersatile 277V Power Adapter for All Your Needs\u003c\/h3\u003e\n\u003cp\u003eThe 120V\/240V to 277V Power Adapter NEMA standard is designed for seamless power cord conversion and plug-in compatibility, featuring a twist-to-lock 277V socket for secure connections. This 20 Amp heavy-duty adapter ensures that your equipment can operate efficiently regardless of the power supply. It simplifies the process of adapting your power cords to fit various outlets, making it an essential tool for both residential and commercial applications.\u003c\/p\u003e\n\u003ch3\u003eEnhanced Security and Stability\u003c\/h3\u003e\n\u003cp\u003eIn addition to its adaptability, the twist-to-lock 277V socket provides enhanced security and stability for your power connections. This feature prevents accidental disconnections and ensures a stable power supply to your devices, which is crucial for maintaining the continuous operation of sensitive equipment. The robust design of the adapter ensures it can withstand regular use in demanding environments, making it a reliable choice for both temporary and permanent installations. The adapter also includes an 6-15C,6-20C,5-15C,5-20C (5-15R, 5-20R, 6-15R, 6-20R) to L7-15P conversion, further increasing its utility and flexibility.\u003c\/p\u003e\n\u003ch3\u003eImproved Device Performance and Longevity\u003c\/h3\u003e\n\u003cp\u003eMoreover, the 120V\/240V to 277V Power Adapter enhances the performance and longevity of your devices by ensuring they receive the appropriate voltage. Incorrect voltage can lead to inefficiencies, overheating, and potentially damaging your equipment. By using this adapter, you can prevent such issues and ensure your devices operate within their optimal voltage range. This not only improves their performance but also extends their lifespan, providing you with greater value and reliability. Investing in this adapter means investing in the long-term health and efficiency of your electrical equipment.\u003cstrong\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003c!----\u003e","brand":"GrowPros","offers":[{"title":"Default Title","offer_id":49660724150564,"sku":"L7-15P","price":15.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Plug-Adapter-120V-240V-to-277V-1.jpg?v=1744187420"},{"product_id":"growpros-under-canopy-telescopic-light-stands","title":"GrowPros Under Canopy Telescopic Light Stands | 2 Legs","description":"\u003ch2\u003eSupport your under-canopy lights with rust-proof telescopic stands that adjust from 12 to 18 inches for precise, stable plant lighting.\u003c\/h2\u003e\n\u003cp\u003eExperience the perfect combination of stability and versatility with our innovative Telescopic Leg Stands, which provide the ideal support for your under-canopy light and ensure the optimal growth of your plants.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncludes 2 telescopic leg stands for supporting one 4′ or 8′ Grow Pros Undercanopy fixture\u003c\/li\u003e\n\u003cli\u003ePlastic base is rust-proof and won’t interact with your runoff or root zone\u003cbr\u003e\n\u003c\/li\u003e\n\u003cli\u003eEffortlessly adjust the height according to your needs, ranging from 12 inches to 18 inches, while accommodating a substantial maximum load capacity of\u003c\/li\u003e\n\u003cli\u003e40 lbs, ensuring a hassle-free setup\u003c\/li\u003e\n\u003cli\u003e1\/4″ Hash Marks on telescoping uprights make setting the height of each stand easy and uniform\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e2 x GrowPros Under Canopy Telescopic Stands\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"GrowPros","offers":[{"title":"For Model 1 \u0026 2","offer_id":50468503191844,"sku":"[ECO] UCL12-LEGS-PAIR","price":20.0,"currency_code":"USD","in_stock":true},{"title":"For Model 3 \u0026 4","offer_id":50468503224612,"sku":"[ECO] UCL34-LEGS-PAIR","price":20.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-Stands.jpg?v=1750148215"},{"product_id":"growpros-manual-shut-off-switch","title":"GrowPros Manual Over Ride Switch","description":"\u003ch3\u003eManual Switch for Under Canopy Light 2ft 8 Pin\u003c\/h3\u003e\n\u003cp\u003e\u003cbr\u003ePerfect for both emergency shut off or regularly scheduled maintenance like IPM spraying, de-leafting, irrigation work, trellis installation, room resets, harvest, and fixture cleaning. Install the Manual Switch between the power cord and the first Under Canopy Light in the row of fixtures. Please refer to the Grow Pros Solutions recommended power chaining capabilities for your specific Under canopy model, the Manual Switch is rated for the same amount of current, do not exceed the recommended number of fixtures connected to the same power source.\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch4\u003e\u003cstrong\u003eFEATURES \u0026amp; BENEFITS\u003c\/strong\u003e\u003c\/h4\u003e\n\u003cul\u003e\n\u003cli\u003eManual Switch for Under Canopy Light 2ft 8 pins.\u003c\/li\u003e\n\u003cli\u003eIP65 Waterproof connections designed for the rigors and water exposure in the under canopy.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch4\u003e\u003cstrong\u003eUses\u003c\/strong\u003e\u003c\/h4\u003e\n\u003cdiv\u003eUse this 2′ UCL switch when..\u003c\/div\u003e\n\u003cul\u003e\n\u003cli\u003eindependant power control is desired for all the UCL fixtures connected to a single power cord.\u003c\/li\u003e\n\u003cli\u003eallows laborers to manually turn off the UCLs in a power chained row of fixtures to preform plant and cultivation maintenace with out the UCLs affecting their vision.\u003c\/li\u003e\n\u003cli\u003eprevents laborers who are unqualified to use lighting controllers from needing to shut the lights off via the controller.\u003c\/li\u003e\n\u003cli\u003eallows for individual rows of lights to be manually turned off instead of turning off all the UCL lights in one room\/data chain at the lighting controller.\u003c\/li\u003e\n\u003cli\u003emanual switch does not affect data signal, it only affects the electricity being sent on or off to the row of lights. When Switch is turned off – the light in the row will shut off, when switch is turned on – the lights in the row will resume their program setting.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c!----\u003e","brand":"GrowPros","offers":[{"title":"Default Title","offer_id":50018332049700,"sku":"UCL-SWITCH","price":60.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/growprosmanualoverrideswitch.jpg?v=1744133266"},{"product_id":"growpros-4-under-canopy-grow-lights-model-3-dual-channel-150w-pack-of-2","title":"GrowPros 4' Cobra Under Canopy Grow Lights Model 3 - 150W Dual Channel UVA + Blue + 5000K \/ Deep Red + Far Red + 3000K","description":"\u003ch2\u003ePush more light through your canopy layers using this compact 4ft dual-channel fixture built for B-bud boost and consistent growth below the tops.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eGrowPros Solutions 4ft Under Canopy Light Model 3\u003c\/strong\u003e is designed to provide supplemental light to the lower regions of plants in indoor cultivation environments by strategically placing it beneath the top canopy of plants. This ensures leaves and flowers below the canopy receive optimal light exposure by eliminating shady areas. Under Canopy Grow Lights' benefits include uniform light distribution, maximized yield, and denser flowers.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eGrowPros Solutions' first-ever under-canopy grow lights dual channel\u003c\/strong\u003e is engineered to \u003cstrong\u003eenhance the yield and color of lower flowers\u003c\/strong\u003e. These supplemental lights can significantly enlarge B-buds and C-buds, promoting better growth and development in areas that typically underperform.\u003c\/p\u003e\n\u003cp\u003eBuilt with \u003cstrong\u003epremium housing and glass lenses\u003c\/strong\u003e, the \u003cmeta charset=\"utf-8\"\u003eCobra UCL Model 3 is a \u003cstrong\u003edual-channel LED grow light\u003c\/strong\u003e designed for growers who want full control. One channel focuses on \u003cstrong\u003eUV and blue wavelengths\u003c\/strong\u003e to drive resin production and quality, while the second channel emphasizes \u003cstrong\u003ered spectrum output\u003c\/strong\u003e for yield. This flexibility makes it ideal for \u003cstrong\u003ecraft operations\u003c\/strong\u003e aiming to fine-tune plant response through each stage.\u003c\/p\u003e\n\u003ch3 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eADJUSTABLE SPECTRUM\u003c\/h3\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"b8cbdd1\" class=\"elementor-element elementor-element-b8cbdd1 e-flex e-con-boxed e-con e-parent e-lazyloaded\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"567dbcc\" class=\"elementor-element elementor-element-567dbcc e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"a47eaa5\" class=\"elementor-element elementor-element-a47eaa5 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    \/* Chart Container *\/\n    #chartcontainer_4ftuclm3 .chart-container4ftuclm3 {\n        width: 100%;\n        margin: 10px auto;\n        display: flex;\n        justify-content: center;\n    }\n\n    \/* Control Panels *\/\n    #chartcontainer_4ftuclm3 #control-panels4ftuclm3 {\n        display: flex;\n        justify-content: space-around;\n        margin-bottom: 20px;\n        flex-wrap: wrap;\n    }\n\n    #chartcontainer_4ftuclm3 .control-panel4ftuclm3 {\n        width: 100%;\n        border: 1px dashed #000000;\n        padding: 20px;\n        border-radius: 2px;\n        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n    }\n\n    #chartcontainer_4ftuclm3 .slider-title { \n        font-family: Jost, sans-serif; \n        font-size: 20px; \n        margin-bottom: 15px;\n        color: #000000;\n    }\n\n    #chartcontainer_4ftuclm3 .slider-paratitle {\n        display: flex;\n        flex-direction: row;\n        justify-content: space-between;\n        margin-top: 10px;\n    }\n\n    #chartcontainer_4ftuclm3 .slider-paratitle .current-value {\n        text-align: right;\n        width: 100%;\n        font-weight: bold;\n        color: #000000;\n    }\n    #chartcontainer_4ftuclm3 .slider-paratitle span {\n        color:#000000;\n    }\n    \/* Custom Process Bar Styles *\/\n    #chartcontainer_4ftuclm3 .process-container4ftuclm3 {\n        width: 100%;\n        height: 16px;\n        background-color: #333333;\n        position: relative;\n        cursor: pointer;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm3 .process-bar {\n        height: 100%;\n        background-color: #999999;\n        width: 0;\n        position: absolute;\n        top: 0;\n        left: 0;\n        transform: translateX(0);\n        will-change: width, transform;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm3 .process-thumb {\n        width: 20px;\n        height: 20px;\n        background-color: #046e82;\n        border: 1px solid #000000;\n        border-radius: 2px;\n        position: absolute;\n        top: 50%;\n        transform: translate(-50%, -50%) translateX(0);\n        left: 0;\n        cursor: pointer;\n        touch-action: none;\n        transition: none;\n        will-change: transform;\n    }\n    @media screen and (min-width: 768px) and (max-width: 1024px){\n        #chartcontainer_4ftuclm3 .control-panel4ftuclm3 { padding:10px 20px;}\n        #chartcontainer_4ftuclm3 .slider-title {\n            font-size:10px; \n            margin-bottom:8px ;\n        }\n        #chartcontainer_4ftuclm3 .process-container4ftuclm3 { height:14px; }\n        #chartcontainer_4ftuclm3 .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_4ftuclm3 .slider-paratitle span {font-size:12px;}\n    }\n    \/* Responsive adjustments *\/\n    @media screen and (max-width: 767px) {\n        #chartcontainer_4ftuclm3 #control-panels4ftuclm3 { \n            flex-direction: column; \n        }\n        #chartcontainer_4ftuclm3 .control-panel4ftuclm3 { \n            width: 100%; \n            margin-bottom: 20px; \n            padding:10px;\n        }\n        #chartcontainer_4ftuclm3 .slider-title { font-size:8px; margin-bottom:4px; }\n\t\t#chartcontainer_4ftuclm3 .slider-title span { font-size: 7px; }\n        #chartcontainer_4ftuclm3 .process-container4ftuclm3 { height:14px; }\n        #chartcontainer_4ftuclm3 .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_4ftuclm3 .slider-paratitle span { font-size:10px; }\n    }\n\u003c\/style\u003e\n\u003cdiv class=\"elementor-element elementor-element-b8cbdd1 e-flex e-con-boxed e-con e-parent e-lazyloaded\" data-id=\"b8cbdd1\" data-element_type=\"container\" id=\"chartcontainer_4ftuclm3\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-567dbcc e-con-full e-flex e-con e-child\" data-id=\"567dbcc\" data-element_type=\"container\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"elementor-element elementor-element-0b5c308 elementor-widget elementor-widget-text-editor\" data-id=\"0b5c308\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"chart-container4ftuclm3\"\u003e\u003ccanvas id=\"myChart_4ftuclm3\" style=\"display: block; box-sizing: border-box; height: 305px; width: 610px;\" width=\"1221\" height=\"610\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n    var chart4ftuclm3 = jQuery.noConflict(true);\n    chart4ftuclm3(document).ready(function($) {\n        \/\/ Chart.js Setup\n        const ctx = chart4ftuclm3('#myChart_4ftuclm3')[0].getContext('2d');\n        let chart;\n        const dataset14ftuclm3 = {\n            label: 'Channel 1',\n            labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n            data: [0, 0, 0, 0.2, 1.1, 3, 10, 23, 10, 2, 2, 8, 22, 53, 31, 15, 8, 12.2, 16, 18.4, 19.6, 20.2, 20.8, 21.4, 22, 22.6, 23.2, 23.8, 23.4, 22.2, 20, 17, 13, 9, 6, 4, 2.8, 2, 1.5, 1.1, 0.5, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n        };\n        const dataset24ftuclm3 = {\n            label: 'Channel 2',\n            data: [0, 0, 0, 0, 0, 0.2, 0.4, 0.9, 2.2, 3.6, 2.2, 1.3, 1.1, 1.1, 1.3, 1.5, 1.7, 2, 2.3, 2.6, 3, 3.4, 3.9, 4.4, 4.9, 5.4, 5.9, 6.4, 6.9, 7.8, 9.6, 12.6, 20.8, 50, 94, 50, 21.3, 10, 6.3, 8.3, 12.9, 17, 12.7, 7.3, 3.3, 1.4, 0.2, 0, 0, 0, 0, 0, 0]\n        };\n        const colors = ['#9b51e0','#9b51e0','#9b51e0', '#9b51e0', '#9b51e0','#9b51e0','#9b51e0', '#9b51e0', '#9b51e0', '#9b51e0', '#9b51e0', '#053390', '#1c4a9d', '#1c4a9d','#265aa8', '#3173b8', '#3698d5','#45bee3','#6fc4be', '#6ebf80', '#69b72d','#69b72d', '#6bb72d', '#79bc28','#97c626','#a8cc2b', '#c8d933','#d8e036', '#f1eb36', '#f4c41c', '#f19518', '#ed761b', '#e95619','#e62718','#e11713','#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d','#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a','#440104', '#380103','#230304','#221714', '#221714', '#221714','#221714', '#221714', '#221714','#221714', '#221714','#221714', '#221714'];\n\n        let scale1 = 1;\n        let scale2 = 1;\n\n        function createGradient(ctx, chartArea, colors) {\n            const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n            colors.forEach((color, index) =\u003e {\n                gradient.addColorStop(index \/ (colors.length - 1), color);\n            });\n            return gradient;\n        }\n\n        function createChart(labels, combinedData) {\n            if (chart) {\n                chart.destroy();\n            }\n\n            chart = new Chart(ctx, {\n                type: 'line',\n                data: {\n                    labels: labels,\n                    datasets: [\n                        {\n                            type: 'line',\n                            label: 'PPF',\n                            data: combinedData,\n                            borderWidth: 0.1,\n                            backgroundColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            borderColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            fill: true,\n                            tension: 0.4 \/\/ Smoothing effect\n                        },\n                        {\n                            type: 'line',\n                            label: 'Outline',\n                            data: combinedData,\n                            borderWidth: 2,\n                            backgroundColor: 'transparent',\n                            borderColor: '#000000', \/\/ Outline color\n                            fill: false,\n                            tension: 0.4\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: {\n                        x: {\n                            stacked: true,\n                            grid: {\n                                display: false \/\/ Hide y-axis grid lines\n                            },\n                            ticks: {\n                                color: '#000000',\n                                autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                maxRotation: 0, \/\/ Prevent label rotation\n                                minRotation: 0, \/\/ Prevent label rotation\n                                maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000',  \/\/ Change x-axis line color\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                            grid: {\n                                color: '#000000',\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000', \/\/ Change y-axis line color\n                            },\n                            ticks: {\n                                color: '#000000',\n                                callback: function(value) {\n                                    return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                }\n                            }\n                        }\n                    },\n                    events: null,\n                    radius: 0,\n                    plugins: {\n                        filler: {propagate: true}, \/\/ Enable filler\n                        legend: { display: false },\n                    },\n                    animation: {\n                        duration: 0 \/\/ Animation duration for smoother updates\n                    }\n                }\n            });\n        }\n\n        function combineData(data1, data2) {\n            return data1.map((value, index) =\u003e {\n                return value + data2[index];\n            });\n        }\n\n        function updateChart() {\n            const scaledData1 = dataset14ftuclm3.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset24ftuclm3.data.map(value =\u003e value * scale2);\n            const combinedData = combineData(scaledData1, scaledData2);\n            \n            if (chart) {\n                chart.data.datasets[0].data = combinedData;\n                chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                chart.options.animation.duration = 300;\n                chart.update();\n            }\n        }\n\n        function createProcessBar(containerId, valueId) {\n            const $container = chart4ftuclm3(`#${containerId}`);\n            const $controlPanel = $container.closest('.control-panel4ftuclm3');\n            const $thumb = $container.find('.process-thumb');\n            const $bar = $container.find('.process-bar');\n            const $currentValue = chart4ftuclm3(`#${valueId}`);\n            let dragging = false;\n            let containerOffset = $controlPanel.offset().left;\n            let containerWidth = $controlPanel.width();\n            let processContainerWidth = $container.width();\n            let currentW = 75; \/\/ Set initial wattage to 75W\n\n            \/\/ Update container metrics on resize\n            function updateContainerMetrics() {\n                containerOffset = $controlPanel.offset().left;\n                containerWidth = $controlPanel.width();\n                processContainerWidth = $container.width();\n                setBarByWattage(currentW);\n            }\n\n            chart4ftuclm3(window).on('resize', updateContainerMetrics);\n\n            \/\/ Initialize container metrics\n            updateContainerMetrics();\n\n            \/\/ Function to set the bar and thumb position based on wattage\n            function setBarByWattage(wattage) {\n                currentW = Math.min(Math.max(wattage, 0), 75);\n                const touchRatio = currentW \/ 75;\n                const thumbLeft = touchRatio * processContainerWidth;\n\n                \/\/ Update bar width\n                $bar.css('width', `${touchRatio * 100}%`);\n                \/\/ Update thumb position\n                $thumb.css('transform', `translate(-50%, -50%) translateX(${thumbLeft}px)`);\n                \/\/ Update displayed value\n                $currentValue.text(`${currentW.toFixed(0)}W`);\n                \/\/ Update the corresponding scale variable and chart\n                if (containerId === 'process-container14ftuclm3') {\n                    scale1 = currentW \/ 75;\n                } else if (containerId === 'process-container24ftuclm3') {\n                    scale2 = currentW \/ 75;\n                }\n                updateChart();\n            }\n\n            \/\/ Function to handle the dragging logic\n            function handleDrag(pageX) {\n                const newLeft = pageX - containerOffset;\n                const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                const touchRatio = clampedLeft \/ containerWidth;\n                const newWattage = touchRatio * 75;\n                setBarByWattage(newWattage);\n            }\n\n            \/\/ Throttle dragging using requestAnimationFrame\n            let rafId = null;\n\n            function onDrag(pageX) {\n                if (rafId) return; \/\/ If a frame is already requested, do nothing\n                rafId = requestAnimationFrame(() =\u003e {\n                    handleDrag(pageX);\n                    rafId = null;\n                });\n            }\n\n            \/\/ Mouse events\n            $thumb.on('mousedown', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chart4ftuclm3(document).on('mousemove', function(e) {\n                if (dragging) {\n                    onDrag(e.pageX);\n                }\n            });\n\n            chart4ftuclm3(document).on('mouseup', function() {\n                dragging = false;\n            });\n\n            \/\/ Touch events bound to control panel\n            $controlPanel.on('touchstart', function(e) {\n                e.preventDefault();\n                dragging = true;\n                const touch = e.originalEvent.touches[0];\n                onDrag(touch.pageX);\n            });\n\n            chart4ftuclm3(document).on('touchmove', function(e) {\n                if (dragging) {\n                    const touch = e.originalEvent.touches[0];\n                    onDrag(touch.pageX);\n                    e.preventDefault();\n                }\n            });\n\n            chart4ftuclm3(document).on('touchend touchcancel', function() {\n                dragging = false;\n            });\n\n            \/\/ Click on the control panel to set the thumb position\n            $controlPanel.on('click', function(e) {\n                const pageX = e.pageX;\n                onDrag(pageX);\n            });\n\n            \/\/ Initialize the bar to 75W\n            setBarByWattage(currentW);\n        }\n\n        \/\/ Initialize the chart\n        function initializeChart() {\n            const scaledData1 = dataset14ftuclm3.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset24ftuclm3.data.map(value =\u003e value * scale2);\n            const initialCombinedData = combineData(scaledData1, scaledData2);\n            createChart(dataset14ftuclm3.labels, initialCombinedData);\n        }\n\n        \/\/ Initial load\n        initializeChart();\n\n        \/\/ Create Process Bars for Channel 1 and Channel 2\n        createProcessBar('process-container14ftuclm3', 'global-value14ftuclm3');\n        createProcessBar('process-container24ftuclm3', 'global-value24ftuclm3');\n\n        \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n        let resizeTimeout;\n        chart4ftuclm3(window).on('resize', function(){\n\n            clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function(){\n                if(chart){\n                    chart.resize();\n                }\n                \/\/ Update container metrics for process bars\n                chart4ftuclm3('.process-container4ftuclm3').each(function(){\n                    const containerId = chart4ftuclm3(this).attr('id');\n                    const valueId = chart4ftuclm3(this).siblings('.slider-paratitle').find('.current-value').attr('id');\n                    \/\/ The process bars are already handling their own resize events\n                    \/\/ No additional action is needed here\n                });\n            }, 200); \/\/ Adjust the timeout as needed\n        });\n    });\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"9f42342\" class=\"elementor-element elementor-element-9f42342 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"heading.default\" data-element_type=\"widget\" data-id=\"9681445\" class=\"elementor-element elementor-element-9681445 elementor-widget__width-inherit elementor-widget elementor-widget-heading\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003ch3 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-9f233e7 e-flex e-con-boxed e-con e-child\" data-id=\"9f233e7\" data-element_type=\"container\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-508146d e-con-full e-flex e-con e-child\" data-id=\"508146d\" data-element_type=\"container\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-c92d4f2 elementor-widget elementor-widget-text-editor\" data-id=\"c92d4f2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"control-panel4ftuclm3\"\u003e\n\u003cdiv class=\"slider-title\"\u003e\u003cstrong\u003eChannel 1: \u003cspan style=\"color: #77a6fa;\"\u003eUVA + Blue + 5000K\u003c\/span\u003e\u003c\/strong\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-container4ftuclm3\" id=\"process-container14ftuclm3\"\u003e\n\u003cdiv class=\"process-bar\" style=\"width: 100%;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-thumb\" style=\"transform: translate(-50%, -50%) translateX(216.094px);\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan class=\"current-value\" id=\"global-value14ftuclm3\"\u003e75W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-62c2a7f e-con-full e-flex e-con e-child\" data-id=\"62c2a7f\" data-element_type=\"container\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-7be2e4d elementor-widget elementor-widget-text-editor\" data-id=\"7be2e4d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"control-panel4ftuclm3\"\u003e\n\u003cdiv class=\"slider-title\"\u003e\u003cstrong\u003eChannel 2: \u003cspan style=\"color: red;\"\u003eDeep Red + Far Red + 3000K\u003c\/span\u003e\u003c\/strong\u003e\u003c\/div\u003e\n\u003cdiv id=\"process-container24ftuclm3\" class=\"process-container4ftuclm3\"\u003e\n\u003cdiv class=\"process-bar\" style=\"width: 100%;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-thumb\" style=\"transform: translate(-50%, -50%) translateX(216.094px);\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e\u003cbr\u003e\u003cspan id=\"global-value24ftuclm3\" class=\"current-value\"\u003e75W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eUsage Guidelines\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Under-Canopy-Light-8ft-Model-4-Attentions_a1f0c090-e40f-4ede-8d46-ca41b2f490d5.jpg?v=1738834103\" alt=\"Instructional image demonstrating how to safely connect multiple under-canopy lights\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdapted with 120V power cord or 240V power cord \u003cstrong\u003e*Sold Separately*\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDual Channel:\u003c\/strong\u003e Blue + White + UVA \/ Red + IR + White spectrum for veg and flowering stages\u003c\/li\u003e\n\u003cli\u003eDimmable and compatible with most controllers on the market via RJ12 Data Cable (integrated with power cord)\u003c\/li\u003e\n\u003cli\u003eDesigned for enhancing plant growth and optimizing light availability to less exposed areas\u003c\/li\u003e\n\u003cli\u003eBuilt-in driver, slim profile\u003c\/li\u003e\n\u003cli\u003eImproves overall quality, especially B-bud structure, density, and coloring\u003c\/li\u003e\n\u003cli\u003eYields improvement and booster\u003c\/li\u003e\n\u003cli\u003eCompact and lightweight, heavy-duty components and quality\u003c\/li\u003e\n\u003cli\u003eEasy to work around during harvest\u003c\/li\u003e\n\u003cli\u003eQuick to uninstall between setting up and taking down runs\u003c\/li\u003e\n\u003cli\u003ePower and data chaining through same connections, no extra components required\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAccessories available:\u003c\/strong\u003e Under Canopy Grow Lights Stands and Inter-connect Cable \u003cstrong\u003e*Sold Separately*\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros 4' Under Canopy Grow Lights Model 3 Dual Channel 150W\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/wegrowpros.com\/specsheets\/UCLModel3-150W.pdf\" rel=\"noopener\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMaximum Power Electrical Data\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAC Current:\u003c\/strong\u003e 120V - 1.28A | 208V - 0.73A | 220V - 0.67A | 240V - 0.63A | 277V - 0.54A\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAC Power:\u003c\/strong\u003e 120V - 154W | 208V - 152W | 220V - 151W | 240V - 150W | 277V - 149.5W\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePower Factor:\u003c\/strong\u003e 120V - 0.99 | 208V - 0.98 | 220V - 0.97 | 240V - 0.97 | 277V - 0.95\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDaisy Chain:\u003c\/strong\u003e 8 pcs @120V | 12 pcs @208V | 14 pcs @220V | 16 pcs @240V | 18 pcs @277V\u003c\/p\u003e\n\u003ch3\u003eInterconnect Cables and Power Cords\u003c\/h3\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the above chart for limitations on how many lights can be connected on 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/growpros-4-interconnect-cable-for-under-canopy-grow-lights\" target=\"_blank\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/products\/growpros-power-cord-with-rj-cable\" target=\"_blank\"\u003ePower Cords\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/power-adapter\" target=\"_blank\"\u003ePower Adaptors\u003c\/a\u003e (Convert 120V\/240V into 277V Male Plug)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eController\u003c\/h3\u003e\n\u003cp\u003eA controller with an RJ-12 signal is required to operate. We recommend the \u003ca rel=\"noopener\" title=\"Growpros grow light controller\" href=\"https:\/\/growlightcentral.com\/products\/growpros-grow-room-light-controller\" target=\"_blank\"\u003eGrowPros controller.\u003c\/a\u003e\u003c\/p\u003e","brand":"GrowPros","offers":[{"title":"120V \/ No","offer_id":50351078277412,"sku":"GPS-UCL3-4FT-UV-120V","price":195.0,"currency_code":"USD","in_stock":true},{"title":"120V \/ Pair of Stands (+$25)","offer_id":50723445145892,"sku":"GPS-UCL3-4FT-UV-120V-STAND","price":220.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ No","offer_id":50354716967204,"sku":"GPS-UCL3-4FT-UV-240V","price":195.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pair of Stands (+$25)","offer_id":50723445178660,"sku":"GPS-UCL3-4FT-UV-240V-STAND","price":220.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-Model-3-1.jpg?v=1753795481"},{"product_id":"growpros-8-under-canopy-grow-lights-model-3-dual-channel-300w-pack-of-2","title":"GrowPros 8' Cobra Under Canopy Grow Lights Model 3 - 300W Dual Channel UVA + Blue + 5000K \/ Deep Red + Far Red + 3000K","description":"\u003ch2\u003eLight up the entire canopy from top to bottom with this 8ft dual-channel fixture that boosts both veg and flower performance using UVA, blue, red, and far-red.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eGrowPros Solutions 8ft Under Canopy Light Model 3\u003c\/strong\u003e is designed to provide \u003cstrong\u003esupplemental light\u003c\/strong\u003e to the lower regions of plants in indoor cultivation environments by strategically placing them beneath the top canopy of plants to ensure leaves and flowers below the canopy receive optimal light exposure by eliminating shady areas. Under Canopy Grow Lights, benefits include uniform light distribution, maximized yield, and denser flowers.\u003c\/p\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cstrong\u003eGrowPros Solutions' first-ever under-canopy grow lights dual channel\u003c\/strong\u003e is engineered to \u003cstrong\u003eenhance the yield and color of lower flowers\u003c\/strong\u003e. These supplemental lights can significantly enlarge B-buds and C-buds, promoting better growth and development in areas that typically underperform.\u003c\/p\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003eBuilt with \u003cstrong\u003epremium housing and glass lenses\u003c\/strong\u003e, the \u003cmeta charset=\"utf-8\"\u003eCobra UCL Model 3 is a \u003cstrong\u003edual-channel LED grow light\u003c\/strong\u003e designed for growers who want full control. One channel focuses on \u003cstrong\u003eUV and blue wavelengths\u003c\/strong\u003e to drive resin production and quality, while the second channel emphasizes \u003cstrong\u003ered spectrum output\u003c\/strong\u003e for yield. This flexibility makes it ideal for \u003cstrong\u003ecraft operations\u003c\/strong\u003e aiming to fine-tune plant response through each stage.\u003c\/p\u003e\n\u003ch3 class=\"elementor-heading-title elementor-size-default\" style=\"text-align: center;\"\u003eADJUSTABLE SPECTRUM\u003c\/h3\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"b8cbdd1\" class=\"elementor-element elementor-element-b8cbdd1 e-flex e-con-boxed e-con e-parent e-lazyloaded\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"567dbcc\" class=\"elementor-element elementor-element-567dbcc e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"a47eaa5\" class=\"elementor-element elementor-element-a47eaa5 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    \/* Chart Container *\/\n    #chartcontainer_4ftuclm3 .chart-container4ftuclm3 {\n        width: 100%;\n        margin: 10px auto;\n        display: flex;\n        justify-content: center;\n    }\n\n    \/* Control Panels *\/\n    #chartcontainer_4ftuclm3 #control-panels4ftuclm3 {\n        display: flex;\n        justify-content: space-around;\n        margin-bottom: 20px;\n        flex-wrap: wrap;\n    }\n\n    #chartcontainer_4ftuclm3 .control-panel4ftuclm3 {\n        width: 100%;\n        border: 1px dashed #000000;\n        padding: 20px;\n        border-radius: 2px;\n        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n    }\n\n    #chartcontainer_4ftuclm3 .slider-title { \n        font-family: Jost, sans-serif; \n        font-size: 20px; \n        margin-bottom: 15px;\n        color: #000000;\n    }\n\n    #chartcontainer_4ftuclm3 .slider-paratitle {\n        display: flex;\n        flex-direction: row;\n        justify-content: space-between;\n        margin-top: 10px;\n    }\n\n    #chartcontainer_4ftuclm3 .slider-paratitle .current-value {\n        text-align: right;\n        width: 100%;\n        font-weight: bold;\n        color: #000000;\n    }\n    #chartcontainer_4ftuclm3 .slider-paratitle span {\n        color:#000000;\n    }\n    \/* Custom Process Bar Styles *\/\n    #chartcontainer_4ftuclm3 .process-container4ftuclm3 {\n        width: 100%;\n        height: 16px;\n        background-color: #333333;\n        position: relative;\n        cursor: pointer;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm3 .process-bar {\n        height: 100%;\n        background-color: #999999;\n        width: 0;\n        position: absolute;\n        top: 0;\n        left: 0;\n        transform: translateX(0);\n        will-change: width, transform;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm3 .process-thumb {\n        width: 20px;\n        height: 20px;\n        background-color: #046e82;\n        border: 1px solid #000000;\n        border-radius: 2px;\n        position: absolute;\n        top: 50%;\n        transform: translate(-50%, -50%) translateX(0);\n        left: 0;\n        cursor: pointer;\n        touch-action: none;\n        transition: none;\n        will-change: transform;\n    }\n    @media screen and (min-width: 768px) and (max-width: 1024px){\n        #chartcontainer_4ftuclm3 .control-panel4ftuclm3 { padding:10px 20px;}\n        #chartcontainer_4ftuclm3 .slider-title {\n            font-size:10px; \n            margin-bottom:8px ;\n        }\n        #chartcontainer_4ftuclm3 .process-container4ftuclm3 { height:14px; }\n        #chartcontainer_4ftuclm3 .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_4ftuclm3 .slider-paratitle span {font-size:12px;}\n    }\n    \/* Responsive adjustments *\/\n    @media screen and (max-width: 767px) {\n        #chartcontainer_4ftuclm3 #control-panels4ftuclm3 { \n            flex-direction: column; \n        }\n        #chartcontainer_4ftuclm3 .control-panel4ftuclm3 { \n            width: 100%; \n            margin-bottom: 20px; \n            padding:10px;\n        }\n        #chartcontainer_4ftuclm3 .slider-title { font-size:8px; margin-bottom:4px; }\n\t\t#chartcontainer_4ftuclm3 .slider-title span { font-size: 7px; }\n        #chartcontainer_4ftuclm3 .process-container4ftuclm3 { height:14px; }\n        #chartcontainer_4ftuclm3 .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_4ftuclm3 .slider-paratitle span { font-size:10px; }\n    }\n\u003c\/style\u003e\n\u003cdiv class=\"elementor-element elementor-element-b8cbdd1 e-flex e-con-boxed e-con e-parent e-lazyloaded\" data-id=\"b8cbdd1\" data-element_type=\"container\" id=\"chartcontainer_4ftuclm3\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-567dbcc e-con-full e-flex e-con e-child\" data-id=\"567dbcc\" data-element_type=\"container\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"elementor-element elementor-element-0b5c308 elementor-widget elementor-widget-text-editor\" data-id=\"0b5c308\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"chart-container4ftuclm3\"\u003e\u003ccanvas id=\"myChart_4ftuclm3\" style=\"display: block; box-sizing: border-box; height: 305px; width: 610px;\" width=\"1221\" height=\"610\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n    var chart4ftuclm3 = jQuery.noConflict(true);\n    chart4ftuclm3(document).ready(function($) {\n        \/\/ Chart.js Setup\n        const ctx = chart4ftuclm3('#myChart_4ftuclm3')[0].getContext('2d');\n        let chart;\n        const dataset14ftuclm3 = {\n            label: 'Channel 1',\n            labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n            data: [0, 0, 0, 0.2, 1.1, 3, 10, 23, 10, 2, 2, 8, 22, 53, 31, 15, 8, 12.2, 16, 18.4, 19.6, 20.2, 20.8, 21.4, 22, 22.6, 23.2, 23.8, 23.4, 22.2, 20, 17, 13, 9, 6, 4, 2.8, 2, 1.5, 1.1, 0.5, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n        };\n        const dataset24ftuclm3 = {\n            label: 'Channel 2',\n            data: [0, 0, 0, 0, 0, 0.2, 0.4, 0.9, 2.2, 3.6, 2.2, 1.3, 1.1, 1.1, 1.3, 1.5, 1.7, 2, 2.3, 2.6, 3, 3.4, 3.9, 4.4, 4.9, 5.4, 5.9, 6.4, 6.9, 7.8, 9.6, 12.6, 20.8, 50, 94, 50, 21.3, 10, 6.3, 8.3, 12.9, 17, 12.7, 7.3, 3.3, 1.4, 0.2, 0, 0, 0, 0, 0, 0]\n        };\n        const colors = ['#9b51e0','#9b51e0','#9b51e0', '#9b51e0', '#9b51e0','#9b51e0','#9b51e0', '#9b51e0', '#9b51e0', '#9b51e0', '#9b51e0', '#053390', '#1c4a9d', '#1c4a9d','#265aa8', '#3173b8', '#3698d5','#45bee3','#6fc4be', '#6ebf80', '#69b72d','#69b72d', '#6bb72d', '#79bc28','#97c626','#a8cc2b', '#c8d933','#d8e036', '#f1eb36', '#f4c41c', '#f19518', '#ed761b', '#e95619','#e62718','#e11713','#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d','#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a','#440104', '#380103','#230304','#221714', '#221714', '#221714','#221714', '#221714', '#221714','#221714', '#221714','#221714', '#221714'];\n\n        let scale1 = 1;\n        let scale2 = 1;\n\n        function createGradient(ctx, chartArea, colors) {\n            const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n            colors.forEach((color, index) =\u003e {\n                gradient.addColorStop(index \/ (colors.length - 1), color);\n            });\n            return gradient;\n        }\n\n        function createChart(labels, combinedData) {\n            if (chart) {\n                chart.destroy();\n            }\n\n            chart = new Chart(ctx, {\n                type: 'line',\n                data: {\n                    labels: labels,\n                    datasets: [\n                        {\n                            type: 'line',\n                            label: 'PPF',\n                            data: combinedData,\n                            borderWidth: 0.1,\n                            backgroundColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            borderColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            fill: true,\n                            tension: 0.4 \/\/ Smoothing effect\n                        },\n                        {\n                            type: 'line',\n                            label: 'Outline',\n                            data: combinedData,\n                            borderWidth: 2,\n                            backgroundColor: 'transparent',\n                            borderColor: '#000000', \/\/ Outline color\n                            fill: false,\n                            tension: 0.4\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: {\n                        x: {\n                            stacked: true,\n                            grid: {\n                                display: false \/\/ Hide y-axis grid lines\n                            },\n                            ticks: {\n                                color: '#000000',\n                                autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                maxRotation: 0, \/\/ Prevent label rotation\n                                minRotation: 0, \/\/ Prevent label rotation\n                                maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000',  \/\/ Change x-axis line color\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                            grid: {\n                                color: '#000000',\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000', \/\/ Change y-axis line color\n                            },\n                            ticks: {\n                                color: '#000000',\n                                callback: function(value) {\n                                    return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                }\n                            }\n                        }\n                    },\n                    events: null,\n                    radius: 0,\n                    plugins: {\n                        filler: {propagate: true}, \/\/ Enable filler\n                        legend: { display: false },\n                    },\n                    animation: {\n                        duration: 0 \/\/ Animation duration for smoother updates\n                    }\n                }\n            });\n        }\n\n        function combineData(data1, data2) {\n            return data1.map((value, index) =\u003e {\n                return value + data2[index];\n            });\n        }\n\n        function updateChart() {\n            const scaledData1 = dataset14ftuclm3.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset24ftuclm3.data.map(value =\u003e value * scale2);\n            const combinedData = combineData(scaledData1, scaledData2);\n            \n            if (chart) {\n                chart.data.datasets[0].data = combinedData;\n                chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                chart.options.animation.duration = 300;\n                chart.update();\n            }\n        }\n\n        function createProcessBar(containerId, valueId) {\n            const $container = chart4ftuclm3(`#${containerId}`);\n            const $controlPanel = $container.closest('.control-panel4ftuclm3');\n            const $thumb = $container.find('.process-thumb');\n            const $bar = $container.find('.process-bar');\n            const $currentValue = chart4ftuclm3(`#${valueId}`);\n            let dragging = false;\n            let containerOffset = $controlPanel.offset().left;\n            let containerWidth = $controlPanel.width();\n            let processContainerWidth = $container.width();\n            let currentW = 150; \/\/ Set initial wattage to 150W\n\n            \/\/ Update container metrics on resize\n            function updateContainerMetrics() {\n                containerOffset = $controlPanel.offset().left;\n                containerWidth = $controlPanel.width();\n                processContainerWidth = $container.width();\n                setBarByWattage(currentW);\n            }\n\n            chart4ftuclm3(window).on('resize', updateContainerMetrics);\n\n            \/\/ Initialize container metrics\n            updateContainerMetrics();\n\n            \/\/ Function to set the bar and thumb position based on wattage\n            function setBarByWattage(wattage) {\n                currentW = Math.min(Math.max(wattage, 0), 150);\n                const touchRatio = currentW \/ 150;\n                const thumbLeft = touchRatio * processContainerWidth;\n\n                \/\/ Update bar width\n                $bar.css('width', `${touchRatio * 100}%`);\n                \/\/ Update thumb position\n                $thumb.css('transform', `translate(-50%, -50%) translateX(${thumbLeft}px)`);\n                \/\/ Update displayed value\n                $currentValue.text(`${currentW.toFixed(0)}W`);\n                \/\/ Update the corresponding scale variable and chart\n                if (containerId === 'process-container14ftuclm3') {\n                    scale1 = currentW \/ 150;\n                } else if (containerId === 'process-container24ftuclm3') {\n                    scale2 = currentW \/ 150;\n                }\n                updateChart();\n            }\n\n            \/\/ Function to handle the dragging logic\n            function handleDrag(pageX) {\n                const newLeft = pageX - containerOffset;\n                const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                const touchRatio = clampedLeft \/ containerWidth;\n                const newWattage = touchRatio * 150;\n                setBarByWattage(newWattage);\n            }\n\n            \/\/ Throttle dragging using requestAnimationFrame\n            let rafId = null;\n\n            function onDrag(pageX) {\n                if (rafId) return; \/\/ If a frame is already requested, do nothing\n                rafId = requestAnimationFrame(() =\u003e {\n                    handleDrag(pageX);\n                    rafId = null;\n                });\n            }\n\n            \/\/ Mouse events\n            $thumb.on('mousedown', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chart4ftuclm3(document).on('mousemove', function(e) {\n                if (dragging) {\n                    onDrag(e.pageX);\n                }\n            });\n\n            chart4ftuclm3(document).on('mouseup', function() {\n                dragging = false;\n            });\n\n            \/\/ Touch events bound to control panel\n            $controlPanel.on('touchstart', function(e) {\n                e.preventDefault();\n                dragging = true;\n                const touch = e.originalEvent.touches[0];\n                onDrag(touch.pageX);\n            });\n\n            chart4ftuclm3(document).on('touchmove', function(e) {\n                if (dragging) {\n                    const touch = e.originalEvent.touches[0];\n                    onDrag(touch.pageX);\n                    e.preventDefault();\n                }\n            });\n\n            chart4ftuclm3(document).on('touchend touchcancel', function() {\n                dragging = false;\n            });\n\n            \/\/ Click on the control panel to set the thumb position\n            $controlPanel.on('click', function(e) {\n                const pageX = e.pageX;\n                onDrag(pageX);\n            });\n\n            \/\/ Initialize the bar to 150W\n            setBarByWattage(currentW);\n        }\n\n        \/\/ Initialize the chart\n        function initializeChart() {\n            const scaledData1 = dataset14ftuclm3.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset24ftuclm3.data.map(value =\u003e value * scale2);\n            const initialCombinedData = combineData(scaledData1, scaledData2);\n            createChart(dataset14ftuclm3.labels, initialCombinedData);\n        }\n\n        \/\/ Initial load\n        initializeChart();\n\n        \/\/ Create Process Bars for Channel 1 and Channel 2\n        createProcessBar('process-container14ftuclm3', 'global-value14ftuclm3');\n        createProcessBar('process-container24ftuclm3', 'global-value24ftuclm3');\n\n        \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n        let resizeTimeout;\n        chart4ftuclm3(window).on('resize', function(){\n\n            clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function(){\n                if(chart){\n                    chart.resize();\n                }\n                \/\/ Update container metrics for process bars\n                chart4ftuclm3('.process-container4ftuclm3').each(function(){\n                    const containerId = chart4ftuclm3(this).attr('id');\n                    const valueId = chart4ftuclm3(this).siblings('.slider-paratitle').find('.current-value').attr('id');\n                    \/\/ The process bars are already handling their own resize events\n                    \/\/ No additional action is needed here\n                });\n            }, 200); \/\/ Adjust the timeout as needed\n        });\n    });\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"9f42342\" class=\"elementor-element elementor-element-9f42342 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"heading.default\" data-element_type=\"widget\" data-id=\"9681445\" class=\"elementor-element elementor-element-9681445 elementor-widget__width-inherit elementor-widget elementor-widget-heading\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003ch3 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-9f233e7 e-flex e-con-boxed e-con e-child\" data-id=\"9f233e7\" data-element_type=\"container\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-508146d e-con-full e-flex e-con e-child\" data-id=\"508146d\" data-element_type=\"container\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-c92d4f2 elementor-widget elementor-widget-text-editor\" data-id=\"c92d4f2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"control-panel4ftuclm3\"\u003e\n\u003cdiv class=\"slider-title\"\u003e\u003cstrong\u003eChannel 1: \u003cspan style=\"color: #77a6fa;\"\u003eUVA + Blue + 5000K\u003c\/span\u003e\u003c\/strong\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-container4ftuclm3\" id=\"process-container14ftuclm3\"\u003e\n\u003cdiv class=\"process-bar\" style=\"width: 100%;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-thumb\" style=\"transform: translate(-50%, -50%) translateX(216.094px);\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan class=\"current-value\" id=\"global-value14ftuclm3\"\u003e150W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-62c2a7f e-con-full e-flex e-con e-child\" data-id=\"62c2a7f\" data-element_type=\"container\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-7be2e4d elementor-widget elementor-widget-text-editor\" data-id=\"7be2e4d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"control-panel4ftuclm3\"\u003e\n\u003cdiv class=\"slider-title\"\u003e\u003cstrong\u003eChannel 2: \u003cspan style=\"color: red;\"\u003eDeep Red + Far Red + 3000K\u003c\/span\u003e\u003c\/strong\u003e\u003c\/div\u003e\n\u003cdiv id=\"process-container24ftuclm3\" class=\"process-container4ftuclm3\"\u003e\n\u003cdiv class=\"process-bar\" style=\"width: 100%;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-thumb\" style=\"transform: translate(-50%, -50%) translateX(216.094px);\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e\u003cbr\u003e\u003cspan id=\"global-value24ftuclm3\" class=\"current-value\"\u003e150W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eUsage Guidelines\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Under-Canopy-Light-8ft-Model-4-Attentions_a1f0c090-e40f-4ede-8d46-ca41b2f490d5.jpg?v=1738834103\" alt=\"Instructional guide on safely daisy-chaining under-canopy lights with power off steps\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdapted with 120V power cord or 240V power cord \u003cstrong\u003e*Sold Separately*\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDual Channel:\u003c\/strong\u003e Blue + White + UVA \/ Red + IR + White spectrum for veg and flowering stages\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDimmable\u003c\/strong\u003e and compatible with most controllers on the market via RJ12 Data Cable (integrated with power cord)\u003c\/li\u003e\n\u003cli\u003eDesigned for enhancing plant growth and optimizing light availability to less exposed areas\u003c\/li\u003e\n\u003cli\u003eBuilt-in driver, slim profile\u003c\/li\u003e\n\u003cli\u003eImproves overall quality, especially B-bud structure, density, and coloring\u003c\/li\u003e\n\u003cli\u003eYields improvement and booster\u003c\/li\u003e\n\u003cli\u003eCompact and lightweight, heavy-duty components and quality\u003c\/li\u003e\n\u003cli\u003eEasy to work around during harvest\u003c\/li\u003e\n\u003cli\u003eQuick to uninstall between setting up and taking down runs\u003c\/li\u003e\n\u003cli\u003ePower and data chaining through same connections, no extra components required\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAccessories available:\u003c\/strong\u003e Under Canopy Grow Lights Stands and Inter-connect Cable \u003cstrong\u003e*Sold Separately*\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros 8' Under Canopy Grow Lights Model 3 Dual Channel 300W\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/wegrowpros.com\/specsheets\/UCLModel3-300W.pdf\" rel=\"noopener\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMaximum Power Electrical Data\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAC Current\u003c\/strong\u003e: 120V - 2.57A | 208V - 1.46A | 220V - 1.37A | 240V - 1.25A | 277V - 1.08A\u003cbr\u003e\u003cstrong\u003eAC Power\u003c\/strong\u003e: 120V - 308W | 208V - 304W | 220V - 302W | 240V - 300W | 277V - 299W\u003cbr\u003e\u003cstrong\u003ePower Factor\u003c\/strong\u003e: 120V - 0.99 | 208V - 0.98 | 220V - 0.97 | 240V - 0.97 | 277V - 0.95\u003cbr\u003e\u003cstrong\u003eDaisy Chain\u003c\/strong\u003e: 4 pcs @120V | 6 pcs @208V | 7 pcs @220V | 8 pcs @240V | 9 pcs @277V\u003c\/p\u003e\n\u003ch3\u003eInterconnect Cables and Power Cords\u003c\/h3\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the above chart for limitations on how many lights can be connected on 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/growpros-4-interconnect-cable-for-under-canopy-grow-lights\" rel=\"noopener\" target=\"_blank\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/growpros-power-cord-with-rj-cable\" rel=\"noopener\" target=\"_blank\"\u003ePower Cords\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/power-adapter\" rel=\"noopener\" target=\"_blank\"\u003ePower Adaptors\u003c\/a\u003e (Convert 120V\/240V into 277V Male Plug)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eController\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(255, 42, 0);\"\u003eA controller with an RJ-12 signal is required to operate. We recommend the \u003ca rel=\"noopener\" title=\"Growpros grow light controller\" href=\"https:\/\/growlightcentral.com\/products\/growpros-grow-room-light-controller\" style=\"color: rgb(255, 42, 0);\" target=\"_blank\"\u003eGrowPros controller.\u003c\/a\u003e\u003c\/span\u003e\u003c\/p\u003e","brand":"GrowPros","offers":[{"title":"120V \/ No","offer_id":50351135326500,"sku":"GPS-UCL3-8FT-UV-120V","price":345.0,"currency_code":"USD","in_stock":true},{"title":"120V \/ Pair of Stands | $25","offer_id":50723445211428,"sku":"GPS-UCL3-8FT-UV-120V-STAND","price":400.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ No","offer_id":50354716639524,"sku":"GPS-UCL3-8FT-UV-240V","price":345.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pair of Stands | $25","offer_id":50723445244196,"sku":"GPS-UCL3-8FT-UV-240V-STAND","price":400.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-Model-3-1.jpg?v=1753795481"},{"product_id":"growpros-4-under-canopy-grow-lights-model-4-dual-channel-150w-pack-of-2","title":"GrowPros 4' Viper Under Canopy Grow Lights Model 4 - 150W Dual Channel 80% Red + White \/ Far Red (730nm)","description":"\u003ch2\u003eBoost bud quality and increase yields by lighting up the lower canopy with a compact dual-channel system designed for deeper, more uniform flower development.\u003c\/h2\u003e\n\u003cp\u003e\u003cstrong\u003eGrowPros Solutions' first-ever under-canopy lights with dual channels\u003c\/strong\u003e are engineered to enhance the yield and color of lower flowers. These supplemental lights can significantly enlarge B-buds and C-buds, promoting better growth and development in areas that typically underperform. By targeting the understory, Growpros Solutions ensures a more uniform and abundant harvest, maximizing the potential of every plant.\u003c\/p\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003eDesigned for aggressive flowering strategies, Viper UCL Model 4 delivers \u003cstrong\u003eapproximately 80 percent red spectrum on Channel 1\u003c\/strong\u003e, with an \u003cstrong\u003eindependent 730nm far red Channel 2\u003c\/strong\u003e. This setup activates the \u003cstrong\u003eEmerson Effect\u003c\/strong\u003e, where deep red and far red light together increase photosynthetic efficiency beyond their individual impact. The result is improved \u003cstrong\u003elight penetration\u003c\/strong\u003e, \u003cstrong\u003ephytochrome shifting\u003c\/strong\u003e, and \u003cstrong\u003eearlier bud set\u003c\/strong\u003e.\u003c\/p\u003e\n\u003ch3 class=\"elementor-heading-title elementor-size-default\" style=\"text-align: center;\"\u003eADJUSTABLE SPECTRUM\u003c\/h3\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"b8cbdd1\" class=\"elementor-element elementor-element-b8cbdd1 e-flex e-con-boxed e-con e-parent e-lazyloaded\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"567dbcc\" class=\"elementor-element elementor-element-567dbcc e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"a47eaa5\" class=\"elementor-element elementor-element-a47eaa5 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    \/* Chart Container *\/\n    #chartcontainer_4ftuclm4 .chart-container4ftuclm4 {\n        width: 100%;\n        margin: 10px auto;\n        display: flex;\n        justify-content: center;\n    }\n\n    \/* Control Panels *\/\n    #chartcontainer_4ftuclm4 #control-panels4ftuclm4 {\n        display: flex;\n        justify-content: space-around;\n        margin-bottom: 20px;\n        flex-wrap: wrap;\n    }\n\n    #chartcontainer_4ftuclm4 .control-panel4ftuclm4 {\n        width: 100%;\n        border: 1px dashed #000000;\n        padding: 20px;\n        border-radius: 2px;\n        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n    }\n\n    #chartcontainer_4ftuclm4 .slider-title { \n        font-family: Jost, sans-serif; \n        font-size: 20px; \n        margin-bottom: 15px;\n        color: #000000;\n    }\n\n    #chartcontainer_4ftuclm4 .slider-paratitle {\n        display: flex;\n        flex-direction: row;\n        justify-content: space-between;\n        margin-top: 10px;\n    }\n\n    #chartcontainer_4ftuclm4 .slider-paratitle .current-value {\n        text-align: right;\n        width: 100%;\n        font-weight: bold;\n        color: #000000;\n    }\n    #chartcontainer_4ftuclm4 .slider-paratitle span {\n        color:#cccccc;\n    }\n    \/* Custom Process Bar Styles *\/\n    #chartcontainer_4ftuclm4 .process-container4ftuclm4 {\n        width: 100%;\n        height: 16px;\n        background-color: #333333;\n        position: relative;\n        cursor: pointer;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm4 .process-bar {\n        height: 100%;\n        background-color: #999999;\n        width: 0;\n        position: absolute;\n        top: 0;\n        left: 0;\n        transform: translateX(0);\n        will-change: width, transform;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm4 .process-thumb {\n        width: 20px;\n        height: 20px;\n        background-color: #046e82;\n        border: 1px solid #111111;\n        border-radius: 2px;\n        position: absolute;\n        top: 50%;\n        transform: translate(-50%, -50%) translateX(0);\n        left: 0;\n        cursor: pointer;\n        touch-action: none;\n        transition: none;\n        will-change: transform;\n    }\n    @media screen and (min-width: 768px) and (max-width: 1024px){\n        #chartcontainer_4ftuclm4 .control-panel4ftuclm4 { padding:10px 20px;}\n        #chartcontainer_4ftuclm4 .slider-title {\n            font-size:10px; \n            margin-bottom:8px ;\n        }\n        #chartcontainer_4ftuclm4 .process-container4ftuclm4 { height:14px; }\n        #chartcontainer_4ftuclm4 .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_4ftuclm4 .slider-paratitle span {font-size:12px;}\n    }\n    \/* Responsive adjustments *\/\n    @media screen and (max-width: 767px) {\n        #chartcontainer_4ftuclm4 #control-panels4ftuclm4 { \n            flex-direction: column; \n        }\n        #chartcontainer_4ftuclm4 .control-panel4ftuclm4 { \n            width: 100%; \n            margin-bottom: 20px; \n            padding:10px;\n        }\n        #chartcontainer_4ftuclm4 .slider-title { font-size:8px; margin-bottom:4px; }\n        #chartcontainer_4ftuclm4 .slider-title span { font-size: 7px; }\n        #chartcontainer_4ftuclm4 .process-container4ftuclm4 { height:14px; }\n        #chartcontainer_4ftuclm4 .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_4ftuclm4 .slider-paratitle span { font-size:10px; }\n    }\n\u003c\/style\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' id=\"chartcontainer_4ftuclm4\" data-element_type=\"container\" data-id=\"b8cbdd1\" class=\"elementor-element elementor-element-b8cbdd1 e-flex e-con-boxed e-con e-parent e-lazyloaded\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"567dbcc\" class=\"elementor-element elementor-element-567dbcc e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"a47eaa5\" class=\"elementor-element elementor-element-a47eaa5 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"chart-container4ftuclm4\"\u003e\u003ccanvas height=\"610\" width=\"1221\" style=\"display: block; box-sizing: border-box; height: 305px; width: 610px;\" id=\"myChart_4ftuclm4\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n    var chart4ftuclm4 = jQuery.noConflict(true);\n    chart4ftuclm4(document).ready(function($) {\n        \/\/ Chart.js Setup\n        const ctx = chart4ftuclm4('#myChart_4ftuclm4')[0].getContext('2d');\n        let chart;\n        \n        const dataset14ftuclm4 = {\n            label: 'Channel 1',\n            labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n            data: [0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 2, 7, 12, 7.5, 3.6, 2.3, 2.5, 3.6, 4.8, 5.8, 6.8, 8, 8.6, 9.2, 9.6, 10.2, 10.43, 10.4, 10.5, 11.1, 16, 30, 60, 100, 50, 15, 6, 2.4, 1.1, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n        };\n        const dataset24ftuclm4 = {\n            label: 'Channel 2',\n            data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4, 1.2, 2.6, 5.6, 12, 18.2, 21, 18.2, 12, 6, 2.7, 1.2, 0.2, 0, 0, 0]\n        };\n        const colors = ['#111a39','#111a39','#111a39', '#111a39', '#111a39','#111a39','#111a39', '#111a39', '#162143', '#162143', '#162143', '#053390', '#1c4a9d', '#1c4a9d','#265aa8', '#3173b8', '#3698d5','#45bee3','#6fc4be', '#6ebf80', '#69b72d','#69b72d', '#6bb72d', '#79bc28','#97c626','#a8cc2b', '#c8d933','#d8e036', '#f1eb36','#f4c41c','#f19518', '#ed761b', '#e95619','#e62718','#e11713','#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d','#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a','#440104', '#380103','#230304','#221714', '#221714', '#221714','#221714', '#221714', '#221714','#221714', '#221714','#221714', '#221714'];\n        \n        let scale1 = 1;\n        let scale2 = 1;\n\n        function createGradient(ctx, chartArea, colors) {\n            const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n            colors.forEach((color, index) =\u003e {\n                gradient.addColorStop(index \/ (colors.length - 1), color);\n            });\n            return gradient;\n        }\n\n        function createChart(labels, combinedData) {\n            if (chart) {\n                chart.destroy();\n            }\n\n            chart = new Chart(ctx, {\n                type: 'line',\n                data: {\n                    labels: labels,\n                    datasets: [\n                        {\n                            type: 'line',\n                            label: 'PPF',\n                            data: combinedData,\n                            borderWidth: 0.1,\n                            backgroundColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            borderColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            fill: true,\n                            tension: 0.4 \/\/ Smoothing effect\n                        },\n                        {\n                            type: 'line',\n                            label: 'Outline',\n                            data: combinedData,\n                            borderWidth: 2,\n                            backgroundColor: 'transparent',\n                            borderColor: '#000000', \/\/ Outline color\n                            fill: false,\n                            tension: 0.4\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: {\n                        x: {\n                            stacked: true,\n                            grid: {\n                                display: false \/\/ Hide y-axis grid lines\n                            },\n                            ticks: {\n                                color: '#000000',\n                                autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                maxRotation: 0, \/\/ Prevent label rotation\n                                minRotation: 0, \/\/ Prevent label rotation\n                                maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000' \/\/ Change x-axis line color\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                            grid: {\n                                color: '#000000',\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000' \/\/ Change y-axis line color\n                            },\n                            ticks: {\n                                color: '#000000',\n                                callback: function(value) {\n                                    return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                }\n                            }\n                        }\n                    },\n                    events: null,\n                    radius: 0,\n                    plugins: {\n                        filler: {propagate: true}, \/\/ Enable filler\n                        legend: { display: false },\n                    },\n                    animation: {\n                        duration: 0 \/\/ Animation duration for smoother updates\n                    }\n                }\n            });\n        }\n\n        function combineData(data1, data2) {\n            return data1.map((value, index) =\u003e {\n                return value + data2[index];\n            });\n        }\n\n        function updateChart() {\n            const scaledData1 = dataset14ftuclm4.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset24ftuclm4.data.map(value =\u003e value * scale2);\n            const combinedData = combineData(scaledData1, scaledData2);\n            \n            if (chart) {\n                chart.data.datasets[0].data = combinedData;\n                chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                chart.options.animation.duration = 300;\n                chart.update();\n            }\n        }\n\n        function createProcessBar(containerId, valueId, maxWattage) { \/\/ Added maxWattage parameter\n            const $container = chart4ftuclm4(`#${containerId}`);\n            const $controlPanel = $container.closest('.control-panel4ftuclm4');\n            const $thumb = $container.find('.process-thumb');\n            const $bar = $container.find('.process-bar');\n            const $currentValue = chart4ftuclm4(`#${valueId}`);\n            let dragging = false;\n            let containerOffset = $controlPanel.offset().left;\n            let containerWidth = $controlPanel.width();\n            let processContainerWidth = $container.width();\n            let currentW = maxWattage; \/\/ Initialize to maxWattage\n\n            \/\/ Update container metrics on resize\n            function updateContainerMetrics() {\n                containerOffset = $controlPanel.offset().left;\n                containerWidth = $controlPanel.width();\n                processContainerWidth = $container.width();\n                setBarByWattage(currentW);\n            }\n\n            chart4ftuclm4(window).on('resize', updateContainerMetrics);\n\n            \/\/ Initialize container metrics\n            updateContainerMetrics();\n\n            \/\/ Function to set the bar and thumb position based on wattage\n            function setBarByWattage(wattage) {\n                currentW = Math.min(Math.max(wattage, 0), maxWattage);\n                const touchRatio = currentW \/ maxWattage;\n                const thumbLeft = touchRatio * processContainerWidth;\n\n                \/\/ Update bar width\n                $bar.css('width', `${touchRatio * 100}%`);\n                \/\/ Update thumb position\n                $thumb.css('transform', `translate(-50%, -50%) translateX(${thumbLeft}px)`);\n                \/\/ Update displayed value\n                $currentValue.text(`${currentW.toFixed(0)}W`);\n                \/\/ Update the corresponding scale variable and chart\n                if (containerId === 'process-container14ftuclm4') {\n                    scale1 = currentW \/ maxWattage;\n                } else if (containerId === 'process-container24ftuclm4') {\n                    scale2 = currentW \/ maxWattage;\n                }\n                updateChart();\n            }\n\n            \/\/ Function to handle the dragging logic\n            function handleDrag(pageX) {\n                const newLeft = pageX - containerOffset;\n                const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                const touchRatio = clampedLeft \/ containerWidth;\n                const newWattage = touchRatio * maxWattage;\n                setBarByWattage(newWattage);\n            }\n\n            \/\/ Throttle dragging using requestAnimationFrame\n            let rafId = null;\n\n            function onDrag(pageX) {\n                if (rafId) return; \/\/ If a frame is already requested, do nothing\n                rafId = requestAnimationFrame(() =\u003e {\n                    handleDrag(pageX);\n                    rafId = null;\n                });\n            }\n\n            \/\/ Mouse events\n            $thumb.on('mousedown', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chart4ftuclm4(document).on('mousemove', function(e) {\n                if (dragging) {\n                    onDrag(e.pageX);\n                }\n            });\n\n            chart4ftuclm4(document).on('mouseup', function() {\n                dragging = false;\n            });\n\n            \/\/ Touch events bound to control panel\n            $controlPanel.on('touchstart', function(e) {\n                e.preventDefault();\n                dragging = true;\n                const touch = e.originalEvent.touches[0];\n                onDrag(touch.pageX);\n            });\n\n            chart4ftuclm4(document).on('touchmove', function(e) {\n                if (dragging) {\n                    const touch = e.originalEvent.touches[0];\n                    onDrag(touch.pageX);\n                    e.preventDefault();\n                }\n            });\n\n            chart4ftuclm4(document).on('touchend touchcancel', function() {\n                dragging = false;\n            });\n\n            \/\/ Click on the control panel to set the thumb position\n            $controlPanel.on('click', function(e) {\n                const pageX = e.pageX;\n                onDrag(pageX);\n            });\n\n            \/\/ Initialize the bar to maxWattage\n            setBarByWattage(currentW);\n        }\n\n        \/\/ Initialize the chart\n        function initializeChart() {\n            const scaledData1 = dataset14ftuclm4.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset24ftuclm4.data.map(value =\u003e value * scale2);\n            const initialCombinedData = combineData(scaledData1, scaledData2);\n            createChart(dataset14ftuclm4.labels, initialCombinedData);\n        }\n\n        \/\/ Initial load\n        initializeChart();\n\n        \/\/ Create Process Bars for Channel 1 and Channel 2 with different max wattages\n        createProcessBar('process-container14ftuclm4', 'global-value14ftuclm4', 125); \/\/ Channel 1 with 125W max\n        createProcessBar('process-container24ftuclm4', 'global-value24ftuclm4', 25);  \/\/ Channel 2 with 25W max\n\n        \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n        let resizeTimeout;\n        chart4ftuclm4(window).on('resize', function(){\n\n            clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function(){\n                if(chart){\n                    chart.resize();\n                }\n                \/\/ Update container metrics for process bars\n                chart4ftuclm4('.process-container4ftuclm4').each(function(){\n                    const containerId = chart4ftuclm4(this).attr('id');\n                    const valueId = chart4ftuclm4(this).siblings('.slider-paratitle').find('.current-value').attr('id');\n                    \/\/ The process bars are already handling their own resize events\n                    \/\/ No additional action is needed here\n                });\n            }, 200); \/\/ Adjust the timeout as needed\n        });\n    });\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"9f42342\" class=\"elementor-element elementor-element-9f42342 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"heading.default\" data-element_type=\"widget\" data-id=\"9681445\" class=\"elementor-element elementor-element-9681445 elementor-widget__width-inherit elementor-widget elementor-widget-heading\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003ch3 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"control-panels4ftuclm4\" data-element_type=\"container\" data-id=\"214c828\" class=\"elementor-element elementor-element-214c828 e-flex e-con-boxed e-con e-child\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-element_type=\"container\" data-id=\"0c28797\" class=\"elementor-element elementor-element-0c28797 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"63a8a0a\" class=\"elementor-element elementor-element-63a8a0a elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"control-panel4ftuclm4\"\u003e\n\u003ch3 class=\"slider-title\"\u003eChannel 1: \u003cspan style=\"color: #ff3333;\"\u003e80% Red + White \u003c\/span\u003e\n\u003c\/h3\u003e\n\u003cdiv id=\"process-container14ftuclm4\" class=\"process-container4ftuclm4\"\u003e\n\u003cdiv style=\"width: 100%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(206.094px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\" class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan id=\"global-value14ftuclm4\" class=\"current-value\"\u003e125W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-element_type=\"container\" data-id=\"063d3cd\" class=\"elementor-element elementor-element-063d3cd e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"1d6dc00\" class=\"elementor-element elementor-element-1d6dc00 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"control-panel4ftuclm4\"\u003e\n\u003ch3 class=\"slider-title\"\u003eChannel 2: \u003cspan style=\"color: #cc0000;\"\u003eFar Red (730nm)\u003c\/span\u003e\n\u003c\/h3\u003e\n\u003cdiv id=\"process-container24ftuclm4\" class=\"process-container4ftuclm4\"\u003e\n\u003cdiv style=\"width: 100%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(206.094px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\" class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan id=\"global-value24ftuclm4\" class=\"current-value\"\u003e25W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eUsage Guidelines\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-4ft-Model-3-Attentions_3452f4f5-44a8-45c5-a535-472c1623bd70.jpg?v=1738839923\" alt=\"Installation safety instructions for under-canopy lighting\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCompatible with 120V or 240V power cords (sold separately)\u003c\/li\u003e\n\u003cli\u003eOptional accessories: stands, bench bridge stands, and interconnect cable (all sold separately)\u003c\/li\u003e\n\u003cli\u003eDual Channel Spectrum - Red + White \/ Far Red optimized for veg and flowering stages\u003c\/li\u003e\n\u003cli\u003eDimmable via RJ12 Data Cable, compatible with most major controllers\u003c\/li\u003e\n\u003cli\u003eEnhances plant growth by improving light exposure to lower canopy areas\u003c\/li\u003e\n\u003cli\u003eBuilt-in driver, compact slim profile, and low-heat operation\u003c\/li\u003e\n\u003cli\u003eBoosts lower flower and fruit growth to match top canopy size and quality\u003c\/li\u003e\n\u003cli\u003eImproves structure, density, and color for higher-quality harvests\u003c\/li\u003e\n\u003cli\u003eEasy to maneuver during harvest, especially with bench bridge stands\u003c\/li\u003e\n\u003cli\u003eQuick to install or remove between grow cycles\u003c\/li\u003e\n\u003cli\u003ePower + data chaining via single connection - no extra components required\u003c\/li\u003e\n\u003cli\u003eDo not mix or daisy-chain different models or lengths\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros 4' Under Canopy Grow Lights Model 4 Dual Channel 150W\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/wegrowpros.com\/specsheets\/UCLModel4-150W.pdf\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMaximum Power Electrical Data\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAC Current\u003c\/strong\u003e: 120V - 1.27A | 208V - 0.73A | 220V - 0.68A | 240V - 0.63A | 277V - 0.53A\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAC Power\u003c\/strong\u003e: 120V - 152W | 208V - 151W | 220V - 150.5W | 240V - 150W | 277V - 148W\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePower Factor\u003c\/strong\u003e: 120V - 0.99 | 208V - 0.98 | 220V - 0.97 | 240V - 0.96 | 277V - 0.94\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDaisy Chain\u003c\/strong\u003e: 8 pcs @120V | 12 pcs @208V | 14 pcs @220V | 16 pcs @240V | 18 pcs @277V\u003c\/p\u003e\n\u003ch3\u003eInterconnect Cables and Power Cords\u003c\/h3\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the above chart for limitations on how many lights can be connected on 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/growpros-4-interconnect-cable-for-under-canopy-grow-lights\" target=\"_blank\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/products\/growpros-power-cord-with-rj-cable\" target=\"_blank\"\u003ePower Cords\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/power-adapter\" target=\"_blank\"\u003ePower Adaptors\u003c\/a\u003e (Convert 120V\/240V into 277V Male Plug)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eController\u003c\/h3\u003e\n\u003cp\u003eA controller with an RJ-12 signal is required to operate. We recommend the \u003ca rel=\"noopener\" title=\"Growpros grow light controller\" href=\"https:\/\/growlightcentral.com\/products\/growpros-grow-room-light-controller\" target=\"_blank\"\u003eGrowPros controller.\u003c\/a\u003e\u003c\/p\u003e","brand":"GrowPros","offers":[{"title":"120V \/ No","offer_id":50351298838820,"sku":"GPS-UCL4-4FT-IR-120V","price":195.0,"currency_code":"USD","in_stock":true},{"title":"120V \/ Pair of Stands (+$25)","offer_id":50723445276964,"sku":"GPS-UCL4-4FT-IR-120V-STAND","price":220.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ No","offer_id":50354716475684,"sku":"GPS-UCL4-4FT-IR-240V","price":195.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pair of Stands (+$25)","offer_id":50723445309732,"sku":"GPS-UCL4-4FT-IR-240V-STAND","price":220.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-Model-4ft-1.jpg?v=1768590574"},{"product_id":"growpros-8-under-canopy-grow-lights-model-4-dual-channel-300w-pack-of-2","title":"GrowPros 8' Viper Under Canopy Grow Lights Model 4 - 300W Dual Channel 80% Red + White \/ Far Red (730nm)","description":"\u003ch2\u003eHit every layer of your canopy with dual-channel red, white, and infrared lighting to grow bigger buds, speed up flowering, and reduce labor at harvest.\u003c\/h2\u003e\n\u003cp\u003eGrowPros Solutions’ first-ever \u003cstrong\u003eunder canopy light dual channel\u003c\/strong\u003e are engineered to \u003cstrong\u003eenhance yield and color\u003c\/strong\u003e of lower flowers. These \u003cstrong\u003esupplemental lights\u003c\/strong\u003e can significantly \u003cstrong\u003eenlarge B-buds and C-buds\u003c\/strong\u003e, promoting better growth and development in areas that typically underperform. By targeting the \u003cstrong\u003eunderstory\u003c\/strong\u003e, Growpros Solutions ensures a \u003cstrong\u003emore uniform and abundant harvest\u003c\/strong\u003e, maximizing every plant's potential.\u003c\/p\u003e\n\u003cp\u003eDesigned for aggressive flowering strategies, Viper UCL Model 4 delivers \u003cstrong\u003eapproximately 80 percent red spectrum on Channel 1\u003c\/strong\u003e, with an \u003cstrong\u003eindependent 730nm far red Channel 2\u003c\/strong\u003e. This setup activates the \u003cstrong\u003eEmerson Effect\u003c\/strong\u003e, where deep red and far red light together increase photosynthetic efficiency beyond their individual impact. The result is improved \u003cstrong\u003elight penetration\u003c\/strong\u003e, \u003cstrong\u003ephytochrome shifting\u003c\/strong\u003e, and \u003cstrong\u003eearlier bud set\u003c\/strong\u003e.\u003c\/p\u003e\n\u003ch2 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eADJUSTABLE SPECTRUM\u003c\/h2\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"b8cbdd1\" class=\"elementor-element elementor-element-b8cbdd1 e-flex e-con-boxed e-con e-parent e-lazyloaded\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"567dbcc\" class=\"elementor-element elementor-element-567dbcc e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"a47eaa5\" class=\"elementor-element elementor-element-a47eaa5 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    \/* Chart Container *\/\n    #chartcontainer_4ftuclm4 .chart-container4ftuclm4 {\n        width: 100%;\n        margin: 10px auto;\n        display: flex;\n        justify-content: center;\n    }\n\n    \/* Control Panels *\/\n    #chartcontainer_4ftuclm4 #control-panels4ftuclm4 {\n        display: flex;\n        justify-content: space-around;\n        margin-bottom: 20px;\n        flex-wrap: wrap;\n    }\n\n    #chartcontainer_4ftuclm4 .control-panel4ftuclm4 {\n        width: 100%;\n        border: 1px dashed #000000;\n        padding: 20px;\n        border-radius: 2px;\n        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n    }\n\n    #chartcontainer_4ftuclm4 .slider-title { \n        font-family: Jost, sans-serif; \n        font-size: 20px; \n        margin-bottom: 15px;\n        color: #000000;\n    }\n\n    #chartcontainer_4ftuclm4 .slider-paratitle {\n        display: flex;\n        flex-direction: row;\n        justify-content: space-between;\n        margin-top: 10px;\n    }\n\n    #chartcontainer_4ftuclm4 .slider-paratitle .current-value {\n        text-align: right;\n        width: 100%;\n        font-weight: bold;\n        color: #000000;\n    }\n    #chartcontainer_4ftuclm4 .slider-paratitle span {\n        color:#cccccc;\n    }\n    \/* Custom Process Bar Styles *\/\n    #chartcontainer_4ftuclm4 .process-container4ftuclm4 {\n        width: 100%;\n        height: 16px;\n        background-color: #333333;\n        position: relative;\n        cursor: pointer;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm4 .process-bar {\n        height: 100%;\n        background-color: #999999;\n        width: 0;\n        position: absolute;\n        top: 0;\n        left: 0;\n        transform: translateX(0);\n        will-change: width, transform;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm4 .process-thumb {\n        width: 20px;\n        height: 20px;\n        background-color: #046e82;\n        border: 1px solid #111111;\n        border-radius: 2px;\n        position: absolute;\n        top: 50%;\n        transform: translate(-50%, -50%) translateX(0);\n        left: 0;\n        cursor: pointer;\n        touch-action: none;\n        transition: none;\n        will-change: transform;\n    }\n    @media screen and (min-width: 768px) and (max-width: 1024px){\n        #chartcontainer_4ftuclm4 .control-panel4ftuclm4 { padding:10px 20px;}\n        #chartcontainer_4ftuclm4 .slider-title {\n            font-size:10px; \n            margin-bottom:8px ;\n        }\n        #chartcontainer_4ftuclm4 .process-container4ftuclm4 { height:14px; }\n        #chartcontainer_4ftuclm4 .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_4ftuclm4 .slider-paratitle span {font-size:12px;}\n    }\n    \/* Responsive adjustments *\/\n    @media screen and (max-width: 767px) {\n        #chartcontainer_4ftuclm4 #control-panels4ftuclm4 { \n            flex-direction: column; \n        }\n        #chartcontainer_4ftuclm4 .control-panel4ftuclm4 { \n            width: 100%; \n            margin-bottom: 20px; \n            padding:10px;\n        }\n        #chartcontainer_4ftuclm4 .slider-title { font-size:8px; margin-bottom:4px; }\n        #chartcontainer_4ftuclm4 .slider-title span { font-size: 7px; }\n        #chartcontainer_4ftuclm4 .process-container4ftuclm4 { height:14px; }\n        #chartcontainer_4ftuclm4 .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_4ftuclm4 .slider-paratitle span { font-size:10px; }\n    }\n\u003c\/style\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' id=\"chartcontainer_4ftuclm4\" data-element_type=\"container\" data-id=\"b8cbdd1\" class=\"elementor-element elementor-element-b8cbdd1 e-flex e-con-boxed e-con e-parent e-lazyloaded\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"567dbcc\" class=\"elementor-element elementor-element-567dbcc e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"a47eaa5\" class=\"elementor-element elementor-element-a47eaa5 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"chart-container4ftuclm4\"\u003e\u003ccanvas height=\"610\" width=\"1221\" style=\"display: block; box-sizing: border-box; height: 305px; width: 610px;\" id=\"myChart_4ftuclm4\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n    var chart4ftuclm4 = jQuery.noConflict(true);\n    chart4ftuclm4(document).ready(function($) {\n        \/\/ Chart.js Setup\n        const ctx = chart4ftuclm4('#myChart_4ftuclm4')[0].getContext('2d');\n        let chart;\n        \n        const dataset14ftuclm4 = {\n            label: 'Channel 1',\n            labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n            data: [0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 2, 7, 12, 7.5, 3.6, 2.3, 2.5, 3.6, 4.8, 5.8, 6.8, 8, 8.6, 9.2, 9.6, 10.2, 10.43, 10.4, 10.5, 11.1, 16, 30, 60, 100, 50, 15, 6, 2.4, 1.1, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n        };\n        const dataset24ftuclm4 = {\n            label: 'Channel 2',\n            data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4, 1.2, 2.6, 5.6, 12, 18.2, 21, 18.2, 12, 6, 2.7, 1.2, 0.2, 0, 0, 0]\n        };\n        const colors = ['#111a39','#111a39','#111a39', '#111a39', '#111a39','#111a39','#111a39', '#111a39', '#162143', '#162143', '#162143', '#053390', '#1c4a9d', '#1c4a9d','#265aa8', '#3173b8', '#3698d5','#45bee3','#6fc4be', '#6ebf80', '#69b72d','#69b72d', '#6bb72d', '#79bc28','#97c626','#a8cc2b', '#c8d933','#d8e036', '#f1eb36','#f4c41c','#f19518', '#ed761b', '#e95619','#e62718','#e11713','#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d','#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a','#440104', '#380103','#230304','#221714', '#221714', '#221714','#221714', '#221714', '#221714','#221714', '#221714','#221714', '#221714'];\n        \n        let scale1 = 1;\n        let scale2 = 1;\n\n        function createGradient(ctx, chartArea, colors) {\n            const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n            colors.forEach((color, index) =\u003e {\n                gradient.addColorStop(index \/ (colors.length - 1), color);\n            });\n            return gradient;\n        }\n\n        function createChart(labels, combinedData) {\n            if (chart) {\n                chart.destroy();\n            }\n\n            chart = new Chart(ctx, {\n                type: 'line',\n                data: {\n                    labels: labels,\n                    datasets: [\n                        {\n                            type: 'line',\n                            label: 'PPF',\n                            data: combinedData,\n                            borderWidth: 0.1,\n                            backgroundColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            borderColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            fill: true,\n                            tension: 0.4 \/\/ Smoothing effect\n                        },\n                        {\n                            type: 'line',\n                            label: 'Outline',\n                            data: combinedData,\n                            borderWidth: 2,\n                            backgroundColor: 'transparent',\n                            borderColor: '#000000', \/\/ Outline color\n                            fill: false,\n                            tension: 0.4\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: {\n                        x: {\n                            stacked: true,\n                            grid: {\n                                display: false \/\/ Hide y-axis grid lines\n                            },\n                            ticks: {\n                                color: '#000000',\n                                autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                maxRotation: 0, \/\/ Prevent label rotation\n                                minRotation: 0, \/\/ Prevent label rotation\n                                maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000' \/\/ Change x-axis line color\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                            grid: {\n                                color: '#000000',\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000' \/\/ Change y-axis line color\n                            },\n                            ticks: {\n                                color: '#000000',\n                                callback: function(value) {\n                                    return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                }\n                            }\n                        }\n                    },\n                    events: null,\n                    radius: 0,\n                    plugins: {\n                        filler: {propagate: true}, \/\/ Enable filler\n                        legend: { display: false },\n                    },\n                    animation: {\n                        duration: 0 \/\/ Animation duration for smoother updates\n                    }\n                }\n            });\n        }\n\n        function combineData(data1, data2) {\n            return data1.map((value, index) =\u003e {\n                return value + data2[index];\n            });\n        }\n\n        function updateChart() {\n            const scaledData1 = dataset14ftuclm4.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset24ftuclm4.data.map(value =\u003e value * scale2);\n            const combinedData = combineData(scaledData1, scaledData2);\n            \n            if (chart) {\n                chart.data.datasets[0].data = combinedData;\n                chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                chart.options.animation.duration = 300;\n                chart.update();\n            }\n        }\n\n        function createProcessBar(containerId, valueId, maxWattage) { \/\/ Added maxWattage parameter\n            const $container = chart4ftuclm4(`#${containerId}`);\n            const $controlPanel = $container.closest('.control-panel4ftuclm4');\n            const $thumb = $container.find('.process-thumb');\n            const $bar = $container.find('.process-bar');\n            const $currentValue = chart4ftuclm4(`#${valueId}`);\n            let dragging = false;\n            let containerOffset = $controlPanel.offset().left;\n            let containerWidth = $controlPanel.width();\n            let processContainerWidth = $container.width();\n            let currentW = maxWattage; \/\/ Initialize to maxWattage\n\n            \/\/ Update container metrics on resize\n            function updateContainerMetrics() {\n                containerOffset = $controlPanel.offset().left;\n                containerWidth = $controlPanel.width();\n                processContainerWidth = $container.width();\n                setBarByWattage(currentW);\n            }\n\n            chart4ftuclm4(window).on('resize', updateContainerMetrics);\n\n            \/\/ Initialize container metrics\n            updateContainerMetrics();\n\n            \/\/ Function to set the bar and thumb position based on wattage\n            function setBarByWattage(wattage) {\n                currentW = Math.min(Math.max(wattage, 0), maxWattage);\n                const touchRatio = currentW \/ maxWattage;\n                const thumbLeft = touchRatio * processContainerWidth;\n\n                \/\/ Update bar width\n                $bar.css('width', `${touchRatio * 100}%`);\n                \/\/ Update thumb position\n                $thumb.css('transform', `translate(-50%, -50%) translateX(${thumbLeft}px)`);\n                \/\/ Update displayed value\n                $currentValue.text(`${currentW.toFixed(0)}W`);\n                \/\/ Update the corresponding scale variable and chart\n                if (containerId === 'process-container14ftuclm4') {\n                    scale1 = currentW \/ maxWattage;\n                } else if (containerId === 'process-container24ftuclm4') {\n                    scale2 = currentW \/ maxWattage;\n                }\n                updateChart();\n            }\n\n            \/\/ Function to handle the dragging logic\n            function handleDrag(pageX) {\n                const newLeft = pageX - containerOffset;\n                const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                const touchRatio = clampedLeft \/ containerWidth;\n                const newWattage = touchRatio * maxWattage;\n                setBarByWattage(newWattage);\n            }\n\n            \/\/ Throttle dragging using requestAnimationFrame\n            let rafId = null;\n\n            function onDrag(pageX) {\n                if (rafId) return; \/\/ If a frame is already requested, do nothing\n                rafId = requestAnimationFrame(() =\u003e {\n                    handleDrag(pageX);\n                    rafId = null;\n                });\n            }\n\n            \/\/ Mouse events\n            $thumb.on('mousedown', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chart4ftuclm4(document).on('mousemove', function(e) {\n                if (dragging) {\n                    onDrag(e.pageX);\n                }\n            });\n\n            chart4ftuclm4(document).on('mouseup', function() {\n                dragging = false;\n            });\n\n            \/\/ Touch events bound to control panel\n            $controlPanel.on('touchstart', function(e) {\n                e.preventDefault();\n                dragging = true;\n                const touch = e.originalEvent.touches[0];\n                onDrag(touch.pageX);\n            });\n\n            chart4ftuclm4(document).on('touchmove', function(e) {\n                if (dragging) {\n                    const touch = e.originalEvent.touches[0];\n                    onDrag(touch.pageX);\n                    e.preventDefault();\n                }\n            });\n\n            chart4ftuclm4(document).on('touchend touchcancel', function() {\n                dragging = false;\n            });\n\n            \/\/ Click on the control panel to set the thumb position\n            $controlPanel.on('click', function(e) {\n                const pageX = e.pageX;\n                onDrag(pageX);\n            });\n\n            \/\/ Initialize the bar to maxWattage\n            setBarByWattage(currentW);\n        }\n\n        \/\/ Initialize the chart\n        function initializeChart() {\n            const scaledData1 = dataset14ftuclm4.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset24ftuclm4.data.map(value =\u003e value * scale2);\n            const initialCombinedData = combineData(scaledData1, scaledData2);\n            createChart(dataset14ftuclm4.labels, initialCombinedData);\n        }\n\n        \/\/ Initial load\n        initializeChart();\n\n        \/\/ Create Process Bars for Channel 1 and Channel 2 with different max wattages\n        createProcessBar('process-container14ftuclm4', 'global-value14ftuclm4', 250); \/\/ Channel 1 with 250W max\n        createProcessBar('process-container24ftuclm4', 'global-value24ftuclm4', 50);  \/\/ Channel 2 with 50W max\n\n        \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n        let resizeTimeout;\n        chart4ftuclm4(window).on('resize', function(){\n\n            clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function(){\n                if(chart){\n                    chart.resize();\n                }\n                \/\/ Update container metrics for process bars\n                chart4ftuclm4('.process-container4ftuclm4').each(function(){\n                    const containerId = chart4ftuclm4(this).attr('id');\n                    const valueId = chart4ftuclm4(this).siblings('.slider-paratitle').find('.current-value').attr('id');\n                    \/\/ The process bars are already handling their own resize events\n                    \/\/ No additional action is needed here\n                });\n            }, 200); \/\/ Adjust the timeout as needed\n        });\n    });\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"9f42342\" class=\"elementor-element elementor-element-9f42342 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"heading.default\" data-element_type=\"widget\" data-id=\"9681445\" class=\"elementor-element elementor-element-9681445 elementor-widget__width-inherit elementor-widget elementor-widget-heading\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003ch3 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"control-panels4ftuclm4\" data-element_type=\"container\" data-id=\"214c828\" class=\"elementor-element elementor-element-214c828 e-flex e-con-boxed e-con e-child\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-element_type=\"container\" data-id=\"0c28797\" class=\"elementor-element elementor-element-0c28797 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"63a8a0a\" class=\"elementor-element elementor-element-63a8a0a elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"control-panel4ftuclm4\"\u003e\n\u003ch3 class=\"slider-title\"\u003eChannel 1: \u003cspan style=\"color: #ff3333;\"\u003e80%Red + White \u003c\/span\u003e\n\u003c\/h3\u003e\n\u003cdiv id=\"process-container14ftuclm4\" class=\"process-container4ftuclm4\"\u003e\n\u003cdiv style=\"width: 100%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(206.094px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\" class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan id=\"global-value14ftuclm4\" class=\"current-value\"\u003e250W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-element_type=\"container\" data-id=\"063d3cd\" class=\"elementor-element elementor-element-063d3cd e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"1d6dc00\" class=\"elementor-element elementor-element-1d6dc00 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"control-panel4ftuclm4\"\u003e\n\u003ch3 class=\"slider-title\"\u003eChannel 2: \u003cspan style=\"color: #cc0000;\"\u003eInfraRed (730nm)\u003c\/span\u003e\n\u003c\/h3\u003e\n\u003cdiv id=\"process-container24ftuclm4\" class=\"process-container4ftuclm4\"\u003e\n\u003cdiv style=\"width: 100%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(206.094px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\" class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan id=\"global-value24ftuclm4\" class=\"current-value\"\u003e50W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eUsage Guidelines\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-4ft-Model-3-Attentions_3452f4f5-44a8-45c5-a535-472c1623bd70.jpg?v=1738839923\" alt=\"Under canopy lighting daisy-chain setup instructions showing safe power disconnection steps\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCompatible with 120V or 240V power cords (sold separately)\u003c\/li\u003e\n\u003cli\u003eOptional accessories: stands, bench bridge stands, and interconnect cable (all sold separately)\u003c\/li\u003e\n\u003cli\u003eDual Channel Spectrum - Red + White \/ Far Red optimized for veg and flowering stages\u003c\/li\u003e\n\u003cli\u003eDimmable via RJ12 Data Cable, compatible with most major controllers\u003c\/li\u003e\n\u003cli\u003eEnhances plant growth by improving light exposure to lower canopy areas\u003c\/li\u003e\n\u003cli\u003eBuilt-in driver, compact slim profile, and low-heat operation\u003c\/li\u003e\n\u003cli\u003eBoosts lower flower and fruit growth to match top canopy size and quality\u003c\/li\u003e\n\u003cli\u003eImproves structure, density, and color for higher-quality harvests\u003c\/li\u003e\n\u003cli\u003eEasy to maneuver during harvest, especially with bench bridge stands\u003c\/li\u003e\n\u003cli\u003eQuick to install or remove between grow cycles\u003c\/li\u003e\n\u003cli\u003ePower + data chaining via single connection - no extra components required\u003c\/li\u003e\n\u003cli\u003eDo not mix or daisy-chain different models or lengths\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros 8' Under Canopy Grow Lights Model 4 Dual Channel 300W\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/wegrowpros.com\/specsheets\/UCLModel4-300W.pdf\" rel=\"noopener\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMaximum Power Electrical Data\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAC Current\u003c\/strong\u003e: 120V - 2.54A | 208V - 1.46A | 220V - 1.37A | 240V - 1.25A | 277V - 1.07A\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAC Power\u003c\/strong\u003e: 120V - 305W | 208V - 303W | 220V - 302W | 240V - 300W | 277V - 297W\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePower Factor\u003c\/strong\u003e: 120V - 0.99 | 208V - 0.98 | 220V - 0.98 | 240V - 0.97 | 277V - 0.97\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDaisy Chain\u003c\/strong\u003e: 6 pcs @120V | 7 pcs @208V | 8 pcs @220V | 8 pcs @240V | 9 pcs @277V\u003c\/p\u003e\n\u003ch3\u003eInterconnect Cables and Power Cords\u003c\/h3\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the above chart for limitations on how many lights can be connected on 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/growpros-4-interconnect-cable-for-under-canopy-grow-lights\" target=\"_blank\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/products\/growpros-power-cord-with-rj-cable\" target=\"_blank\"\u003ePower Cords\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/power-adapter\" target=\"_blank\"\u003ePower Adaptors\u003c\/a\u003e (Convert 120V\/240V into 277V Male Plug)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eController\u003c\/h3\u003e\n\u003cp\u003eA controller with an RJ-12 signal is required to operate. We recommend the \u003ca rel=\"noopener\" title=\"Growpros grow light controller\" href=\"https:\/\/growlightcentral.com\/products\/growpros-grow-room-light-controller\" target=\"_blank\"\u003eGrowPros controller.\u003c\/a\u003e\u003c\/p\u003e","brand":"GrowPros","offers":[{"title":"120V \/ No","offer_id":50351298969892,"sku":"GPS-UCL4-8FT-IR-120V","price":345.0,"currency_code":"USD","in_stock":true},{"title":"120V \/ Pair of Stands | $25","offer_id":50723445375268,"sku":"GPS-UCL4-8FT-IR-120V-STAND","price":365.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ No","offer_id":50354716344612,"sku":"GPS-UCL4-8FT-IR-240V","price":345.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pair of Stands | $25","offer_id":50723445408036,"sku":"GPS-UCL4-8FT-IR-240V-STAND","price":365.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/growpros-under-canopy-lights-8ft-1.jpg?v=1768599452"},{"product_id":"growpros-8-under-canopy-grow-lights-model-2-single-channel-250w-pack-of-2","title":"GrowPros 8' Under Canopy Grow Light Model 2 - 80% Deep Red Spectrum 250W","description":"\u003ch2\u003eAdd deep red spectrum under your canopy to boost bud density, and total yield with this high-efficiency 250W LED fixture.\u003c\/h2\u003e\n\u003cp\u003e\u003cstrong style=\"font-family: -apple-system, BlinkMacSystemFont, 'San Francisco', 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif; font-size: 0.875rem;\"\u003eThe Grow Pros Solutions 8' under canopy light red spectrum version\u003c\/strong\u003e\u003cspan style=\"font-family: -apple-system, BlinkMacSystemFont, 'San Francisco', 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif; font-size: 0.875rem;\"\u003e is designed to provide supplemental light to the lower regions of plants in indoor cultivation environments by strategically placing them beneath the top canopy of plants to ensure leaves and flowers below the canopy receive optimal light exposure by eliminating shady areas.\u003c\/span\u003e Under Canopy Grow Lights, benefits include uniform light distribution, maximized yield, and denser flowers.\u003c\/p\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003eEngineered with \u003cstrong\u003eapproximately 80 percent 660nm deep red\u003c\/strong\u003e, paired with a refined blend of \u003cstrong\u003epure blue for improved color expression\u003c\/strong\u003e, \u003cstrong\u003e3000K warm white\u003c\/strong\u003e, and \u003cstrong\u003e730nm far red\u003c\/strong\u003e. This UCL Model 2 spectrum enhances \u003cstrong\u003ecanopy penetration\u003c\/strong\u003e, improves bud density, and supports more uniform development across plant layers.\u003c\/p\u003e\n\u003ch3\u003eMaximize Flowering and Concentration\u003c\/h3\u003e\n\u003cp\u003eUnder canopy lights are designed to illuminate beneath the dense plant canopies where traditional overhead lights struggle to reach. This strategic lighting approach not only boosts the yield but also enhances the quality of your crops by:\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eIncreasing Flowering: \u003c\/strong\u003eBy providing essential light to lower canopy areas, these lights promote more extensive flowering even in the shaded parts of the plant.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancing Concentration: \u003c\/strong\u003eThe added light spectrum encourages terpene compounds, improving the potency and profile of your harvest.\u003c\/p\u003e\n\u003ch3\u003eSpectrum Balancing for Optimal Growth\u003c\/h3\u003e\n\u003cp\u003eTo achieve these benefits, it’s crucial to select the right spectrum based on your existing setup:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eModel 1 Lights: \u003c\/strong\u003eIdeal for complementing HID top lights, which are rich in ROY (red, orange, yellow) spectrums.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eModel 2 Lights:\u003c\/strong\u003e Best paired with full-spectrum LED top lights to ensure comprehensive coverage.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThis customization allows growers to balance light spectrums effectively, \u003cstrong\u003eensuring that every plant receives the optimal wavelengths necessary for peak growth and quality. \u003c\/strong\u003eBy integrating these advanced lighting solutions, you can achieve increased yields and superior product quality, setting your harvest apart in appearance and chemical composition.\u003c\/p\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"8ef47c1\" class=\"elementor-element elementor-element-8ef47c1 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"heading.default\" data-element_type=\"widget\" data-id=\"7767324\" class=\"elementor-element elementor-element-7767324 elementor-widget elementor-widget-heading\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003ch3 class=\"elementor-heading-title elementor-size-default\" style=\"text-align: center;\"\u003eDIMMABLE SPECTRUM\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"d816f17\" class=\"elementor-element elementor-element-d816f17 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    \/* Chart Container *\/\n    #chartcontainer_4ftuclm2 .chart-container4ftuclm2 {\n        width: 100%;\n        margin: 10px auto;\n        display: flex;\n        justify-content: center;\n    }\n\n    \/* Control Panels *\/\n    #chartcontainer_4ftuclm2 #control-panels4ftuclm2 {\n        display: flex;\n        justify-content: space-around;\n        margin-bottom: 20px;\n        flex-wrap: wrap;\n    }\n\n    #chartcontainer_4ftuclm2 .control-panel4ftuclm2 {\n        width: 100%;\n        border: 1px dashed #000000;\n        padding: 20px;\n        margin-bottom: 20px;\n        border-radius: 2px;\n        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n    }\n\n    #chartcontainer_4ftuclm2 .slider-title { \n        font-family: Jost, sans-serif; \n        font-size: 20px; \n        margin-bottom: 15px;\n        color: #000000;\n    }\n\n    #chartcontainer_4ftuclm2 .slider-paratitle {\n        display: flex;\n        flex-direction: row;\n        justify-content: space-between;\n        margin-top: 10px;\n    }\n\n    #chartcontainer_4ftuclm2 .slider-paratitle .current-value {\n        text-align: right;\n        width: 100%;\n        font-weight: bold;\n        color: #000000;\n    }\n    #chartcontainer_4ftuclm2 .slider-paratitle span {\n        color:#cccccc;\n    }\n    \/* Custom Process Bar Styles *\/\n    #chartcontainer_4ftuclm2 .process-container4ftuclm2 {\n        width: 100%;\n        height: 16px;\n        background-color: #333333;\n        position: relative;\n        cursor: pointer;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm2 .process-bar {\n        height: 100%;\n        background-color: #999999;\n        width: 0;\n        position: absolute;\n        top: 0;\n        left: 0;\n        transform: translateX(0);\n        will-change: width, transform;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm2 .process-thumb {\n        width: 20px;\n        height: 20px;\n        background-color: #046e82;\n        border: 1px solid #000000;\n        border-radius: 2px;\n        position: absolute;\n        top: 50%;\n        transform: translate(-50%, -50%) translateX(0);\n        left: 0;\n        cursor: pointer;\n        touch-action: none;\n        transition: none;\n        will-change: transform;\n    }\n\n    \/* Responsive adjustments *\/\n    @media screen and (max-width: 767px) {\n        #chartcontainer_4ftuclm2 #control-panels4ftuclm2 { \n            flex-direction: column; \n        }\n        #chartcontainer_4ftuclm2 .control-panel4ftuclm2 { \n            width: 100%; \n            margin-bottom: 20px; \n            padding:10px;\n        }\n        #chartcontainer_4ftuclm2 .slider-title { font-size:12px; }\n        #chartcontainer_4ftuclm2 .process-container4ftuclm2 { height:14px; }\n        #chartcontainer_4ftuclm2 .process-thumb { width: 22px; height: 22px; }\n        #chartcontainer_4ftuclm2 .slider-paratitle span { font-size:10px; }\n    }\n\u003c\/style\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' id=\"chartcontainer_4ftuclm2\" data-element_type=\"container\" data-id=\"8ef47c1\" class=\"elementor-element elementor-element-8ef47c1 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"d816f17\" class=\"elementor-element elementor-element-d816f17 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"chart-container4ftuclm2\"\u003e\u003ccanvas height=\"423\" width=\"847\" style=\"display: block; box-sizing: border-box; height: 211px; width: 423px;\" id=\"myChart_4ftuclm2\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n    var chart4ftuclm2 = jQuery.noConflict(true);\n    chart4ftuclm2(document).ready(function($) {\n        \/\/ Chart.js Setup\n        const ctx = chart4ftuclm2('#myChart_4ftuclm2')[0].getContext('2d');\n        let chart;\n        const dataset14ftuclm2 = {\n            label: 'Channel 1',\n            labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n            data: [0, 0, 0, 0, 0, 0, 0, 0, 0.2, 1, 2, 4, 14.2, 27, 14, 4, 2, 1.4, 2, 2.6, 3.1, 3.6, 4.4, 4.8, 5, 5.4, 5.8, 6.2, 6.4, 7.4, 9.4, 16, 34, 64, 99, 24, 7.4, 2.8, 1.6, 3.2, 7.2, 12, 7.2, 4, 2.1, 1, 0.4, 0.1, 0, 0, 0, 0, 0, 0 ]\n        };\n\n        const colors = ['#111a39','#111a39','#111a39', '#111a39', '#111a39','#111a39','#111a39', '#111a39', '#162143', '#162143', '#162143', '#053390', '#1c4a9d', '#1c4a9d','#265aa8', '#3173b8', '#3698d5','#45bee3','#6fc4be', '#6ebf80', '#69b72d','#69b72d', '#6bb72d', '#79bc28','#97c626','#a8cc2b', '#c8d933','#d8e036', '#f1eb36', '#f4c41c', '#f19518', '#ed761b', '#e95619','#e62718','#e11713','#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d','#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a','#440104', '#380103','#230304','#221714', '#221714', '#221714','#221714', '#221714', '#221714','#221714', '#221714','#221714', '#221714'];\n\n        let scale1 = 1;\n\n        function createGradient(ctx, chartArea, colors) {\n            const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n            colors.forEach((color, index) =\u003e {\n                gradient.addColorStop(index \/ (colors.length - 1), color);\n            });\n            return gradient;\n        }\n\n        function createChart(labels, combinedData) {\n            if (chart) {\n                chart.destroy();\n            }\n\n            chart = new Chart(ctx, {\n                type: 'line',\n                data: {\n                    labels: labels,\n                    datasets: [\n                        {\n                            type: 'line',\n                            label: 'PPF',\n                            data: combinedData,\n                            borderWidth: 0.1,\n                            backgroundColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            borderColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            fill: true,\n                            tension: 0.4 \/\/ Smoothing effect\n                        },\n                        {\n                            type: 'line',\n                            label: 'Outline',\n                            data: combinedData,\n                            borderWidth: 2,\n                            backgroundColor: 'transparent',\n                            borderColor: '#000000', \/\/ Outline color\n                            fill: false,\n                            tension: 0.4\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: {\n                        x: {\n                            stacked: true,\n                            grid: {\n                                display: false \/\/ Hide y-axis grid lines\n                            },\n                            ticks: {\n                                color: '#000000',\n                                autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                maxRotation: 0, \/\/ Prevent label rotation\n                                minRotation: 0, \/\/ Prevent label rotation\n                                maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                            },\n                            border: {\n                                width: 2,\n                                color: '#000000' \/\/ Change x-axis line color\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                            grid: {\n                                color: '#000000',\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000' \/\/ Change y-axis line color\n                            },\n                            ticks: {\n                                color: '#000000',\n                                callback: function(value) {\n                                    return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                }\n                            }\n                        }\n                    },\n                    events: null,\n                    radius: 0,\n                    plugins: {\n                        filler: {propagate: true}, \/\/ Enable filler\n                        legend: { display: false },\n                    },\n                    animation: {\n                        duration: 0 \/\/ Animation duration for smoother updates\n                    }\n                }\n            });\n        }\n\n        function updateChart() {\n            const scaledData1 = dataset14ftuclm2.data.map(value =\u003e value * scale1);\n            const combinedData = scaledData1;\n            \n            if (chart) {\n                chart.data.datasets[0].data = combinedData;\n                chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                chart.options.animation.duration = 300;\n                chart.update();\n            }\n        }\n\n        function createProcessBar(containerId, valueId) {\n            const $container = chart4ftuclm2(`#${containerId}`);\n            const $controlPanel = $container.closest('.control-panel4ftuclm2');\n            const $thumb = $container.find('.process-thumb');\n            const $bar = $container.find('.process-bar');\n            const $currentValue = chart4ftuclm2(`#${valueId}`);\n            let dragging = false;\n            let containerOffset = $controlPanel.offset().left;\n            let containerWidth = $controlPanel.width();\n            let processContainerWidth = $container.width();\n            let currentW = 250; \/\/ Set initial wattage to 250W\n\n            \/\/ Update container metrics on resize\n            function updateContainerMetrics() {\n                containerOffset = $controlPanel.offset().left;\n                containerWidth = $controlPanel.width();\n                processContainerWidth = $container.width();\n                setBarByWattage(currentW);\n            }\n\n            chart4ftuclm2(window).on('resize', updateContainerMetrics);\n\n            \/\/ Initialize container metrics\n            updateContainerMetrics();\n\n            \/\/ Function to set the bar and thumb position based on wattage\n            function setBarByWattage(wattage) {\n                currentW = Math.min(Math.max(wattage, 0), 250); \/\/ Use 250W as max\n                const touchRatio = currentW \/ 250;\n                const thumbLeft = touchRatio * processContainerWidth;\n\n                \/\/ Update bar width\n                $bar.css('width', `${touchRatio * 100}%`);\n                \/\/ Update thumb position\n                $thumb.css('transform', `translate(-50%, -50%) translateX(${thumbLeft}px)`);\n                \/\/ Update displayed value\n                $currentValue.text(`${currentW.toFixed(0)}W`);\n                \/\/ Update the corresponding scale variable and chart\n                scale1 = currentW \/ 250;\n                updateChart();\n            }\n\n            \/\/ Function to handle the dragging logic\n            function handleDrag(pageX) {\n                const newLeft = pageX - containerOffset;\n                const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                const touchRatio = clampedLeft \/ containerWidth;\n                const newWattage = touchRatio * 250; \/\/ Use 250W as max\n                setBarByWattage(newWattage);\n            }\n\n            \/\/ Throttle dragging using requestAnimationFrame\n            let rafId = null;\n\n            function onDrag(pageX) {\n                if (rafId) return;\n                rafId = requestAnimationFrame(() =\u003e {\n                    handleDrag(pageX);\n                    rafId = null;\n                });\n            }\n\n            \/\/ Mouse events\n            $thumb.on('mousedown', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chart4ftuclm2(document).on('mousemove', function(e) {\n                if (dragging) {\n                    onDrag(e.pageX);\n                }\n            });\n\n            chart4ftuclm2(document).on('mouseup', function() {\n                dragging = false;\n            });\n\n            \/\/ Touch events bound to control panel\n            $controlPanel.on('touchstart', function(e) {\n                e.preventDefault();\n                dragging = true;\n                const touch = e.originalEvent.touches[0];\n                onDrag(touch.pageX);\n            });\n\n            chart4ftuclm2(document).on('touchmove', function(e) {\n                if (dragging) {\n                    const touch = e.originalEvent.touches[0];\n                    onDrag(touch.pageX);\n                    e.preventDefault();\n                }\n            });\n\n            chart4ftuclm2(document).on('touchend touchcancel', function() {\n                dragging = false;\n            });\n\n            \/\/ Click on the control panel to set the thumb position\n            $controlPanel.on('click', function(e) {\n                const pageX = e.pageX;\n                onDrag(pageX);\n            });\n\n            \/\/ Initialize the bar to 250W\n            setBarByWattage(currentW);\n        }\n\n        \/\/ Initialize the chart\n        function initializeChart() {\n            const scaledData1 = dataset14ftuclm2.data.map(value =\u003e value * scale1);\n            createChart(dataset14ftuclm2.labels, scaledData1);\n        }\n\n        \/\/ Initial load\n        initializeChart();\n\n        \/\/ Create Process Bars for Channel 1\n        createProcessBar('process-container14ftuclm2', 'global-value14ftuclm2');\n\n        \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n        let resizeTimeout;\n        chart4ftuclm2(window).on('resize', function(){\n            clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function(){\n                if(chart){\n                    chart.resize();\n                }\n            }, 200); \/\/ Adjust the timeout as needed\n        });\n    });\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"control-panels4ftuclm2\" data-element_type=\"container\" data-id=\"a8ce3a9\" class=\"elementor-element elementor-element-a8ce3a9 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"6c1f34f\" class=\"elementor-element elementor-element-6c1f34f elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cdiv class=\"control-panel4ftuclm2\"\u003e\n\u003cdiv class=\"slider-title\"\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003ch3 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"process-container4ftuclm2\" id=\"process-container14ftuclm2\"\u003e\n\u003cdiv style=\"width: 100%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(212.094px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\" class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e\u003cbr\u003e\u003cspan class=\"current-value\" id=\"global-value14ftuclm2\"\u003e250W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eUsage Guidelines\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-4ft-Model-3-Attentions_3452f4f5-44a8-45c5-a535-472c1623bd70.jpg?v=1738839923\" alt=\"LED grow light setup guide highlighting correct and incorrect daisy-chain practices\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCompatible with 120V or 240V power cords (sold separately)\u003c\/li\u003e\n\u003cli\u003eDimmable via RJ12 Data Cable, compatible with most controllers\u003c\/li\u003e\n\u003cli\u003e120-degree lens angle from a slim single-bar design for wide, even light spread\u003c\/li\u003e\n\u003cli\u003eBuilt-in driver and lightweight profile for easy setup and handling\u003c\/li\u003e\n\u003cli\u003eDeep red + full spectrum optimized for veg and flowering stages\u003c\/li\u003e\n\u003cli\u003eBoosts lower bud growth up to 40%, improving density, color, and B-bud structure\u003c\/li\u003e\n\u003cli\u003eDurable and compact design makes it easy to work around during harvest\u003c\/li\u003e\n\u003cli\u003eQuick daisy-chain connections for power and data\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros 8' Under Canopy Grow Lights Model 2 250W\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/wegrowpros.com\/specsheets\/UCLModel2-250W.pdf\" title=\"Grow Pros Under canopy 80% Red Spec Sheet\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMaximum Power Electrical Data\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAC Current\u003c\/strong\u003e: 120V - 2.08A | 208V - 1.20A | 240V - 1.04A | 277V - 0.90A\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAC Power\u003c\/strong\u003e: 120V - 252W | 208V - 245W | 240V - 244W | 277V - 244W\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePower Factor\u003c\/strong\u003e: 120V - 0.99 | 208V - 0.99 | 240V - 0.98 | 277V - 0.97\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDaisy Chain\u003c\/strong\u003e: 4 pcs @120V | 5 pcs @208V | 6 pcs @240V | 8 pcs @277V\u003c\/p\u003e\n\u003ch3\u003eInterconnect Cables and Power Cords\u003c\/h3\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the above chart for limitations on how many lights can be connected on 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/growpros-4-interconnect-cable-for-under-canopy-grow-lights\" rel=\"noopener\" target=\"_blank\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/growpros-power-cord-with-rj-cable\" rel=\"noopener\" target=\"_blank\"\u003ePower Cords\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/power-adapter\" rel=\"noopener\" target=\"_blank\"\u003ePower Adaptors\u003c\/a\u003e (Convert 120V\/240V into 277V Male Plug)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eController\u003c\/h3\u003e\n\u003cp\u003eA controller with an RJ-12 signal is required to operate. We recommend the \u003ca href=\"https:\/\/growlightcentral.com\/products\/growpros-grow-room-light-controller\" title=\"Growpros grow light controller\" rel=\"noopener\" target=\"_blank\"\u003eGrowPros controller.\u003c\/a\u003e\u003c\/p\u003e","brand":"GrowPros","offers":[{"title":"120V \/ No","offer_id":50351299363108,"sku":"GPS-UCL2-8FT-RED-120V","price":250.0,"currency_code":"USD","in_stock":true},{"title":"120V \/ Pair of Stands | $25","offer_id":50723445473572,"sku":"GPS-UCL2-8FT-RED-120V-STAND","price":275.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ No","offer_id":50354715001124,"sku":"GPS-UCL2-8FT-RED-240V","price":250.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pair of Stands | $25","offer_id":50723445506340,"sku":"GPS-UCL2-8FT-RED-240V-STAND","price":275.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-Model-2-Deep-Red-Spectrum-4.jpg?v=1753793633"},{"product_id":"grand-master-leds-tarantula-volcano-under-canopy-side-lighting","title":"Grand Master LEDs Tarantula Volcano 120W Under Canopy\/Side Lighting","description":"\u003ch2\u003eBoost lower bud sites with high-efficiency side or under canopy lighting that’s waterproof, compact, and easy to install.\u003c\/h2\u003e\n\u003cp\u003eThis side and under canopy LED light is built for serious growers who demand more out of every square foot. \u003cstrong\u003eWith 385 PPF total output, a high-efficiency 3.21 µmol\/J rating, and a slim 48\" profile\u003c\/strong\u003e, the Tarantula Volcano slides under your canopy or mounts vertically to hit lower bud sites with intense, usable light. It’s housed in durable metal for superior heat dissipation, fully waterproof (IP66), and wired with plug-and-play connectors, making installation fast and painless. \u003cstrong\u003eWorks with 0–10V and PWM dimmers for full control across growth stages.\u003c\/strong\u003e\u003c\/p\u003e\n\u003ch3\u003eIs the Tarantula Volcano Energy-Efficient?\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAbsolutely. At 3.21 µmol\/J\u003c\/strong\u003e, it more than doubles the efficiency of standard HPS (1.7 µmol\/J) and beats out many premium HPS fixtures (1.8–2.1 µmol\/J). That means \u003cstrong\u003emore usable light per watt\u003c\/strong\u003e, less wasted energy, and better ROI in both small- and large-scale grow setups.\u003c\/p\u003e\n\u003ch3\u003eInterconnect Cables and Power Cords\u003c\/h3\u003e\n\u003cp\u003eWhether you're testing under canopy for your grow operation or just need 1 unit for your home grow, here's all you will need:\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSingle-Light Setup\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e1 x Tarantula Volcano Light\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e1 x \u003ca href=\"https:\/\/growlightcentral.com\/products\/grand-master-leds-10ft-power-cord-50ft-rj14-cord\"\u003e10ft Power Cord\/50ft RJ14 Cord\u003c\/a\u003e\u003c\/strong\u003e - Sold separately.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMulti-Light Setup (2-9 on 120V; 2-18 on 240V; 2-21 on 277V)\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/grand-master-leds-10ft-power-cord-50ft-rj14-cord\"\u003e1 x Power Cord\u003c\/a\u003e\u003cstrong\u003e \u003c\/strong\u003e\u003c\/strong\u003e- Only the first light in the chain needs power\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/grand-master-leds-interconnect-for-booster-bars\"\u003e1 x Interconnect Cable\u003c\/a\u003e \u003c\/strong\u003eis only needed where you are running parallel lights on a single power cord and you need to daisy chain to the other side of your plants.\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003e\u003cem\u003eTip\u003c\/em\u003e:\u003c\/strong\u003e A single 4ft interconnect is sufficient at the end of a run to cross to the other side of a table; an 8ft cable is ideal for jumping an aisle. Each light connects via onboard cables.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eUnder Canopy Placement Options\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eThe \u003ca href=\"https:\/\/growlightcentral.com\/products\/grand-master-leds-under-mount-kit\"\u003eUnder Mount Kit\u003c\/a\u003e can support one pair of Volcano lights.\u003c\/strong\u003e (It is also possible to have 3 lights on one under-mount kit.)\u003c\/p\u003e\n\u003ch3\u003eSide Placement Option\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eThe \u003ca href=\"https:\/\/growlightcentral.com\/products\/grand-master-leds-side-mount-kit\"\u003eSide Mount Kit (10ft)\u003c\/a\u003e can vertically support 1–2 lights on trellis poles or tent frames\u003c\/strong\u003e. Great for increasing yield with directional lighting.\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Tarantula-Volcano-Mounting-Options_9fe8f29a-9f0a-4834-aab3-d306a9e2a568.jpg?v=1743001340\" alt=\"Tarantula Volcano grow light mount options for multi-tier cultivation racks\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cdiv\u003e\n\u003cul\u003e\n\u003cli\u003eMetal housing for superior heat dissipation and extended lifespan\u003c\/li\u003e\n\u003cli\u003eFlexible installation options to suit various needs\u003c\/li\u003e\n\u003cli\u003ePlug-and-play connectors for effortless wiring\u003c\/li\u003e\n\u003cli\u003e0-10V and PWM dimming for enhanced control\u003c\/li\u003e\n\u003cli\u003eIP66-rated waterproof protection\u003c\/li\u003e\n\u003cli\u003e5-year warranty\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1 x Grand Master LEDs Tarantula Volcano Light\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eSee note on Interconnect Cables and Power Cords below.\u003c\/p\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0615\/7837\/9513\/files\/TARANTULA_VOLCANO_MANUAL.pdf\"\u003eProduct Manual\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Grand Master LEDs","offers":[{"title":"120V (NEMA 5-15P)","offer_id":50505851568420,"sku":null,"price":199.0,"currency_code":"USD","in_stock":true},{"title":"240V (NEMA 6-15P)","offer_id":50505851601188,"sku":null,"price":199.0,"currency_code":"USD","in_stock":true},{"title":"277V (NEMA LV-15)","offer_id":50509330284836,"sku":null,"price":199.0,"currency_code":"USD","in_stock":true},{"title":"277V (NEMA LV-20)","offer_id":50509330317604,"sku":null,"price":199.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Grand-Master-LEDs-Tarantula-Volcano-Spectrum-2.jpg?v=1753397414"},{"product_id":"grand-master-leds-under-mount-kit","title":"Grand Master LEDs Under Mount Kit","description":"\u003ch2\u003eSecure Tarantula Volcano fixtures in tight grow spaces with a sturdy under-mount kit built for vertical rack systems.\u003c\/h2\u003e\n\u003cp\u003e\u003cstrong\u003eThis under mount kit is built specifically for the Grand Master LEDs Tarantula Volcano\u003c\/strong\u003e, giving you a solid, adjustable way to secure the fixture directly to vertical racking or low-clearance grow systems. It’s perfect for growers who need to maximize canopy space without sacrificing light spread or coverage.\u003c\/p\u003e\n\u003ch3\u003eFeatures and Specifications\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eMounting type:\u003c\/strong\u003e Under-mount bracket system\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eApplication:\u003c\/strong\u003e Vertical racking, low ceilings, compact grows\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMaterial:\u003c\/strong\u003e Heavy-duty metal construction\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrand Master LEDs Under Mount Kit\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Grand Master LEDs","offers":[{"title":"Default Title","offer_id":50505938010404,"sku":null,"price":20.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Grand-Master-LEDs-Tarantula-Volcano-Under-Mount-Kit.jpg?v=1753398117"},{"product_id":"grand-master-leds-under-mount-tripods-pair","title":"Grand Master LEDs Under Mount Tripods (Pair)","description":"\u003ch2\u003eMount Tarantula fixtures from the ground up with adjustable under-mount tripods for flexible, rack-free light placement.\u003c\/h2\u003e\n\u003cp\u003eThe Grand Master LEDs Under Mount Tripods are \u003cstrong\u003edesigned for growers who need a stable, standalone mounting solution for Tarantula fixtures without hanging from the ceiling or racks.\u003c\/strong\u003e Sold as a pair, these tripods give you flexible, ground-based placement to run tests, set up supplemental lighting, or light a canopy from below with full adjustability.\u003c\/p\u003e\n\u003ch3\u003eFeatures and Specifications\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003e\u003cstrong\u003eCompatibility:\u003c\/strong\u003e \u003c\/strong\u003eDesigned for Grand Master LEDs Tarantula fixtures\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e\u003cstrong\u003eMount type:\u003c\/strong\u003e \u003c\/strong\u003eUnder-mount tripod system\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e\u003cstrong\u003eUse case:\u003c\/strong\u003e \u003c\/strong\u003eGround-level mounting, mobile light placement, non-permanent setups\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e\u003cstrong\u003eAdjustability:\u003c\/strong\u003e \u003c\/strong\u003eTelescoping tripod legs for variable height settings\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e2 x Grand Master LEDs Under Mount Tripods\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Grand Master LEDs","offers":[{"title":"Default Title","offer_id":50505961865508,"sku":null,"price":20.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Grand-Master-LEDs-Under-Mount-Tripods.jpg?v=1753398249"},{"product_id":"growpros-grow-room-light-controller","title":"GrowPros Grow Room Light Controller","description":"\u003ch2\u003eDial in the perfect lighting environment with this controller designed for both GrowPros top lights and under-canopy LEDs.\u003c\/h2\u003e\n\u003cp\u003eTake full control of your grow lighting with the \u003cstrong\u003eGrowPros Grow Room Light Controller,\u003c\/strong\u003e designed to help growers fine-tune their environment and maximize results. Whether you're running a compact tent or a large-scale greenhouse, this controller offers \u003cstrong\u003ereliable dimming and light management \u003c\/strong\u003efor every stage of growth.\u003c\/p\u003e\n\u003cp\u003eBuilt for compatibility with top and under-canopy LED lights, it's the tool you need for consistent performance and healthy yields.\u003c\/p\u003e\n\u003ch4\u003ePlaned Daisy Chaining\u003c\/h4\u003e\n\u003cul\u003e\n\u003cli\u003eWhen connecting under-canopy lights, do not exceed our recommended maximum daisy-chaining limit. Exceeding this limit can lead to performance issues or safety hazards. Please refer to our guidelines for the maximum number of lights allowed per daisy-chain configuration.\u003c\/li\u003e\n\u003cli\u003eUse our 2-way or 3-way data splitters to control all under-canopy lights with a single controller. These splitters efficiently distribute control signals, simplifying your installation and enhancing system performance. They are designed for seamless integration with your existing lighting setup.\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg style=\"float: none;\" alt=\"Under-canopy LED controller setup with daisy-chaining for efficient, safe operation\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Planed-Daisy-Chaining.jpg?v=1754298419\"\u003e\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrecise dimming control for top lights and under-canopy fixtures\u003c\/li\u003e\n\u003cli\u003eSupports multiple growth stages with adjustable light intensity\u003c\/li\u003e\n\u003cli\u003eIdeal for personal grow rooms or commercial-scale facilities\u003c\/li\u003e\n\u003cli\u003eEnables advanced environmental customization with simple operation\u003c\/li\u003e\n\u003cli\u003eHelps prevent light stress and optimize photosynthesis efficiency\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros Grow Room Light Controller\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eGrowPros Light Controller Video\u003c\/h3\u003e\n\u003cp\u003e\u003ciframe title=\"YouTube video player\" src=\"https:\/\/www.youtube.com\/embed\/q4SzIl8RK04?si=v9uH3qnR0yHAEcEH\" height=\"315\" width=\"560\"\u003e\u003c\/iframe\u003e\u003c\/p\u003e","brand":"GrowPros","offers":[{"title":"Default Title","offer_id":50948725539108,"sku":"LR-43-C","price":150.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Grow-Room-Light-Controller.jpg?v=1754317342"},{"product_id":"gavita-under-canopy-led-light","title":"Gavita Under Canopy 150W LED Light - 120-277V | MOQ 6","description":"\u003ch2\u003eMaximize lower canopy yield with Gavita’s 150W dual-sided LED pushing 3.0 µmol\/J and 155° under-canopy coverage.\u003c\/h2\u003e\n\u003cp\u003eStack heavier colas by bathing lower branches in a \u003cspan style=\"box-sizing: border-box; margin: 0px; padding: 0px;\"\u003e\u003cstrong\u003e155-degree\u003c\/strong\u003e spread that drives 450 PPF of full-spectrum photons at 3.0 µmol J. Dual-sided\u003c\/span\u003e bars slip neatly between rows, pushing light where top fixtures fade so your under canopy finishes as ripe as the crown.\u003c\/p\u003e\n\u003cp\u003eA slim fan-free body hugs trellis lines, while \u003cstrong\u003e10 percent\u003c\/strong\u003e to full dimming lets you match veg, early flower, or late finish without heat spikes. Rated for 50,000 hours and backed by a five-year warranty, it keeps paying off long after budget strips burn out.\u003c\/p\u003e\n\u003cp\u003eNOTE: This is one of the few UCL brands which include cords and stands for free.\u003c\/p\u003e\n\u003ch3\u003eIs Gavita Under Canopy 150W LED Energy Efficient?\u003c\/h3\u003e\n\u003cp\u003eYes. At 3.0 µmol\/J, it delivers over twice the usable light of older HPS and still outshines premium double-ended bulbs, giving you cooler rooms and lower bills.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eHigh Light Output: \u003c\/strong\u003eDelivers 450 pmol\/s, providing sufficient light intensity for robust plant growth\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEnergy Efficient: \u003c\/strong\u003eWith an efficiency rating of 3.0 pmol\/J, this LED ensures maximum output with minimal\u003cbr\u003eenergy consumption\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eBroad Light Distribution: \u003c\/strong\u003eThe 155° light spread ensures even light coverage across the under canopy, reducing shadowing and promoting uniform development.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDual-Sided Design:\u003c\/strong\u003e Innovative design enhances light penetration from multiple angles, increasing yields by reaching all parts of the under canopy.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDimmable Functionality:\u003c\/strong\u003e Offers adjustable light output from 10% to 100%, catering to various stages of growth and optimizing energy use.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGavita Under Canopy 150W LED 120-277V\u003c\/li\u003e\n\u003cli\u003e1 x Power cord for every 5 lights purchased\u003c\/li\u003e\n\u003cli\u003e2 x Telescoping stands\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/HGC907092_Gavita_Under_Canopy_LED_Detailed_Sellsheet.pdf?v=1754554855\" title=\"Gavita Under Canopy 150W LED Specs Sheet\"\u003eSpec Sheet\u003c\/a\u003e\u003ca href=\"https:\/\/scotts-hawthorne-public-prod.s3-us-west-2.amazonaws.com\/PROD\/documents\/Documents\/1000878995_HGC907087_Gavita_LED_Clone_Bar_Instructions_240112aSD.pdf\"\u003e\u003c\/a\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Gavita","offers":[{"title":"Default Title","offer_id":50963253231908,"sku":"HGC907092","price":189.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Gavita-Under-Canopy-150W-LED-Light.jpg?v=1754557865"},{"product_id":"faven-lighting-controller","title":"Faven Lighting Mini Controller","description":"\u003ch2\u003eSimple 0-10V dimming for R6, R8 \u0026amp; R8 FR lets you customize light intensity.\u003c\/h2\u003e\n\u003cdiv\u003e\n\u003cp\u003eThe Faven Mini-Controller gives growers a simple 0-10v dimming solution without the need for a primary lighting controller. Perfect for both hobbyists and commercial cultivation, it lets you fine-tune fixture intensity for sensitive genetics or to match your grow stage. Compact and easy to use, this controller is a reliable add-on for dialing in light levels.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003e0–10v dimming: \u003c\/strong\u003eAdjust light intensity from levels 1–9 or set to “F” for full power\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSimple control: \u003c\/strong\u003e\"+\" increases intensity, \"–\" decreases intensity\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePlug-and-play setup: \u003c\/strong\u003eConnects via RJ jack into the fixture communication line\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCompatibility:\u003c\/strong\u003e Works with Faven R6, R8, and R8 FR fixtures\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eImportant note: \u003c\/strong\u003eDoes not control on\/off functions and cannot replace a timer\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFaven Lighting Mini Controller\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Faven Lighting","offers":[{"title":"Default Title","offer_id":51033428132132,"sku":"10-010701-053","price":39.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/faven-mini-controller.jpg?v=1756471910"},{"product_id":"floraflex-far-red-under-canopy-lights-3-bar","title":"FloraFlex 3 Bar 360W Far Red Under Canopy Lights - 4x4 to 4x6","description":"\u003ch2\u003eDrives 3.3 µmol\/J efficiency and fuller plant growth for healthier lower canopy and consistent high yields.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eFloraFlex 3 Bar 360W\u003c\/strong\u003e far red plant LED grow light is designed to hit what most lights miss—the lower canopy. With 1188 µmol\/s output at an impressive 3.3 µmol\/J efficiency, it brings full spectrum custom diodes and Osram 6.24 far red chips directly to shaded leaves. Perfect for 4' x 4' to 4' x 6' coverage, this under canopy system improves photosynthesis where your main overhead light cannot reach.\u003c\/p\u003e\n\u003cp\u003eBuilt with \u003cstrong\u003epassive cooling\u003c\/strong\u003e, 0-10V dimming, and IP65 durability, this LED indoor plant grow light runs efficiently and reliably for years. Backed by a 10-year warranty and ETL\/DLC certification, it’s a long-term investment for serious growers aiming for uniform growth, healthier plants, and bigger harvests across soil and hydro setups.\u003c\/p\u003e\n\u003ch3\u003eIs the FloraFlex 360W energy-efficient?\u003c\/h3\u003e\n\u003cp\u003eWith an efficacy of 3.3 µmol\/J, this under-canopy light far surpasses HPS technology. By comparison, older HPS lights average 1.3 µmol\/J, and premium DE HPS max out around 2.1 µmol\/J. This means the FloraFlex delivers \u003cstrong\u003emore usable light\u003c\/strong\u003e per watt, driving higher yields while lowering your energy costs.\u003c\/p\u003e\n\u003ch3\u003eAdd-On Tip: Keep Your Lights Steady with Under Canopy Light Stands\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eGrab the \u003ca href=\"https:\/\/growlightcentral.com\/products\/floraflex-under-canopy-adjustable-stand\" title='FloraFlex Under Canopy Adjustable Stand - 6.75\" to 11.25\"'\u003eUnder Canopy Adjustable Stand (6.75\"–11.25\")\u003c\/a\u003e\u003c\/strong\u003e to lock in the perfect light position for your grow. \u003cstrong\u003eNote\u003c\/strong\u003e: Each under-canopy light needs 2 stands for secure support.\u003c\/p\u003e\n\u003cp\u003e\u003cimg height=\"600\" width=\"800\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/FloraFlex-Under-Canopy-Light-Stands.jpg?v=1758017584\" alt=\"Set of FloraFlex LED bar lights on stands with a power supply on a green background.\"\u003e\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet of 3 120W under canopy light bars (total of 360W)\u003c\/li\u003e\n\u003cli\u003e4' x 4' - 4' x 6' coverage\u003c\/li\u003e\n\u003cli\u003eIndustry-leading far-red custom diodes\u003c\/li\u003e\n\u003cli\u003eBoosts flowering, enhances photosynthesis, and optimizes yields\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e3 x FloraFlex 120W Far Red Under Canopy Lights\u003c\/li\u003e\n\u003cli\u003eDriver\u003c\/li\u003e\n\u003cli\u003eHardware \u0026amp; Cables\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca title=\"FloraFlex 3 Bar - 360W Far Red Under Canopy DLC Listing\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/DLC_6003.pdf?v=1759743121\"\u003eDLC Listing\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/FloraFlex-360W-Under-Canopy-Spec-Sheet.pdf?v=1759743246\" title=\"FloraFlex 3 Bar - 360W Far Red Under Canopy Spec Sheet\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"FloraFlex","offers":[{"title":"120V \/ Pallet of 90","offer_id":51080959033636,"sku":"6003-PLT","price":45936.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pallet of 90","offer_id":51080959099172,"sku":"6015-PLT","price":45936.0,"currency_code":"USD","in_stock":true},{"title":"277V \/ Pallet of 90","offer_id":51080959164708,"sku":"6017-PLT","price":45936.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/floraflex-3-bar-far-red-under-canopy-lights-set.jpg?v=1758541716"},{"product_id":"floraflex-6-bar-far-red-under-canopy-lights","title":"FloraFlex 6 Bar 720W Far Red Under Canopy Lights - 4x8 to 4x12","description":"\u003ch2\u003e6-bar LEDs delivering 3.3 µmol\/J efficiency for stronger lower canopy growth bigger yields and reliable indoor performance.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eFloraFlex 6 Bar 720W\u003c\/strong\u003e far red under canopy LED grow light is built to unlock the lower levels of your plants where top lighting cannot reach. With a powerful 2376 µmol\/s output and 3.3 µmol\/J efficiency, this system covers 4' x 8' to 4' x 12' spaces with uniform intensity. Featuring Osram 6.24 far red chips and full-spectrum custom diodes, it drives photosynthesis in shaded canopy zones for healthier, fuller growth.\u003c\/p\u003e\n\u003cp\u003eDesigned with \u003cstrong\u003epassive cooling\u003c\/strong\u003e, 0-10V dimming, and IP65 durability, this LED indoor plant grow light operates efficiently in demanding grow environments. ETL and DLC certified, and backed by a 10-year warranty, it’s engineered for long-term use in both hydroponic and soil systems where consistent results matter most.\u003c\/p\u003e\n\u003ch3\u003eIs the FloraFlex 720W energy-efficient?\u003c\/h3\u003e\n\u003cp\u003eWith 3.3 µmol\/J efficiency, this full spectrum LED grow light outperforms HPS technology. Standard HPS averages 1.3 µmol\/J, while even premium DE HPS systems only reach 2.1 µmol\/J. The FloraFlex delivers \u003cstrong\u003emore usable light\u003c\/strong\u003e per watt, driving stronger harvests and lowering your long-term energy costs.\u003c\/p\u003e\n\u003ch3\u003eAdd-On Tip: Keep Your Lights Steady with Under Canopy Light Stands\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eGrab the \u003ca title='FloraFlex Under Canopy Adjustable Stand - 6.75\" to 11.25\"' href=\"https:\/\/growlightcentral.com\/products\/floraflex-under-canopy-adjustable-stand\"\u003eUnder Canopy Adjustable Stand (6.75\"–11.25\")\u003c\/a\u003e\u003c\/strong\u003e to lock in the perfect light position for your grow. \u003cstrong\u003eNote\u003c\/strong\u003e: Each under-canopy light needs 2 stands for secure support.\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"Set of FloraFlex LED bar lights on stands with a power supply on a green background.\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/FloraFlex-Under-Canopy-Light-Stands.jpg?v=1758017584\" width=\"800\" height=\"600\"\u003e\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet of 6 120W under canopy light bars (total of 720W)\u003c\/li\u003e\n\u003cli\u003e4' x 8' - 4' x 12' coverage\u003c\/li\u003e\n\u003cli\u003eIndustry-leading far-red custom diodes\u003c\/li\u003e\n\u003cli\u003eBoosts flowering, enhances photosynthesis, and optimizes yields\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e6 x FloraFlex 120W Far Red Under Canopy Bars\u003c\/li\u003e\n\u003cli\u003eDriver\u003c\/li\u003e\n\u003cli\u003eHardware \u0026amp; Cables\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca title=\"FloraFlex 6 Bar - 720W Far Red Under Canopy 4x8 DLC Listing\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/DLC_6001.pdf?v=1759743551\"\u003eDLC Listing\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/FloraFlex-720W-Under-Canopy-Spec-Sheet.pdf?v=1759743572\" title=\"FloraFlex 6 Bar - 720W Far Red Under Canopy 4x8 Spec Sheet\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"FloraFlex","offers":[{"title":"120V \/ Pallet of 55","offer_id":51081001926948,"sku":"6001-PLT","price":50573.6,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pallet of 55","offer_id":51081001992484,"sku":"6011-PLT","price":50573.6,"currency_code":"USD","in_stock":true},{"title":"277V \/ Pallet of 55","offer_id":51081002058020,"sku":"6013-PLT","price":50573.6,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/floraflex-6-bar-far-red-under-canopy-lights-3.jpg?v=1758541478"},{"product_id":"floraflex-full-spectrum-under-canopy-lights-3-bar","title":"FloraFlex 3 Bar 360W Full Spectrum Under Canopy Lights - 4x4 to 4x6","description":"\u003ch2\u003eDelivers full spectrum coverage for healthier lower growth and stronger yields.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eFloraFlex 3 Bar 360W\u003c\/strong\u003e full spectrum LED grow light is built to strengthen the parts of your plants that overhead lights miss. With 972 µmol\/s output at 2.7 µmol\/J efficiency, it covers 4' x 4' to 4' x 6' spaces with uniform intensity, driving photosynthesis where light rarely reaches. Featuring top brand diodes and Osram red chips, this bar system ensures fuller growth from seedling through harvest.\u003c\/p\u003e\n\u003cp\u003eEngineered with \u003cstrong\u003epassive cooling\u003c\/strong\u003e, 0-10V dimming, and IP65 durability, this indoor plant LED grow light is built for tough environments while staying energy efficient. ETL\/DLC certified and backed by a 5-year warranty, it’s designed for growers who need consistent results in soil or hydro setups, from hobby tents to commercial facilities.\u003c\/p\u003e\n\u003ch3\u003eIs the FloraFlex 360W energy-efficient?\u003c\/h3\u003e\n\u003cp\u003eAt 2.7 µmol\/J, this LED grow plant light outperforms HPS fixtures. Older HPS units average 1.3 µmol\/J, standard 1000W DE HPS reach 1.7 µmol\/J, and premium DE HPS peak around 2.1 µmol\/J. The FloraFlex delivers \u003cstrong\u003emore usable light\u003c\/strong\u003e per watt, keeping power costs lower while increasing harvest returns.\u003c\/p\u003e\n\u003ch3\u003eAdd-On Tip: Keep Your Lights Steady with Under Canopy Light Stands\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eGrab the \u003ca title='FloraFlex Under Canopy Adjustable Stand - 6.75\" to 11.25\"' href=\"https:\/\/growlightcentral.com\/products\/floraflex-under-canopy-adjustable-stand\"\u003eUnder Canopy Adjustable Stand (6.75\"–11.25\")\u003c\/a\u003e\u003c\/strong\u003e to lock in the perfect light position for your grow. \u003cmeta charset=\"utf-8\"\u003e\u003cstrong\u003eNote\u003c\/strong\u003e: Each under-canopy light needs 2 stands for secure support.\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"Set of FloraFlex LED bar lights on stands with a power supply on a green background.\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/FloraFlex-Under-Canopy-Light-Stands.jpg?v=1758017584\" width=\"800\" height=\"600\"\u003e\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet of 3 120W under canopy light bars (total of 360W)\u003c\/li\u003e\n\u003cli\u003e4' x 4' - 4' x 6' coverage\u003c\/li\u003e\n\u003cli\u003eIndustry-leading full-spectrum custom diodes\u003c\/li\u003e\n\u003cli\u003eBoosts flowering, enhances photosynthesis, and optimizes yields\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e3 x FloraFlex 120W Far Red Under Canopy Bars\u003c\/li\u003e\n\u003cli\u003eDriver\u003c\/li\u003e\n\u003cli\u003eHardware \u0026amp; Cables\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca title=\"FloraFlex 6 Bar - 360W Full Spectrum Under Canopy DLC Listing\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/DLC_6027.pdf?v=1759744450\"\u003eDLC Listing\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/FloraFlex-360W-Under-Canopy-Full-Spectrum-Spec-Sheet.pdf?v=1759744478\" title=\"FloraFlex 6 Bar - 360W Full Spectrum Under Canopy Spec Sheet\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"FloraFlex","offers":[{"title":"120V \/ Pallet of 90","offer_id":51085834486052,"sku":"6027-PLT","price":21874.5,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pallet of 90","offer_id":51085834551588,"sku":"6029-PLT","price":21874.5,"currency_code":"USD","in_stock":true},{"title":"277V \/ Pallet of 90","offer_id":51085834617124,"sku":"6031-PLT","price":21874.5,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/floraflex-3bar-full-spectrum-under-canopy-light-7.jpg?v=1758541692"},{"product_id":"floraflex-full-spectrum-under-canopy-lights-6-bar","title":"FloraFlex 6 Bar 720W Full Spectrum Under Canopy Lights - 4x8 to 4x12","description":"\u003ch2\u003eDelivers full-spectrum coverage for healthier lower growth and bigger harvests.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eFloraFlex 6 Bar 720W\u003c\/strong\u003e full-spectrum LED grow light is designed to power the parts of your plants that overhead fixtures miss. With 1944 µmol\/s output at 2.7 µmol\/J efficiency, it provides uniform coverage for 4' x 8' to 4' x 12' spaces. Featuring top-brand diodes and Osram chips, this system ensures stronger lower canopy development and consistent production across large-scale grows.\u003c\/p\u003e\n\u003cp\u003eBuilt with \u003cstrong\u003epassive cooling\u003c\/strong\u003e, 0-10V dimming, and IP65 durability, this indoor plant LED grow light runs efficiently in demanding grow environments. ETL and DLC certified and backed by a 5-year warranty, it delivers reliable performance in both soil and hydroponic systems, making it a long-term solution for commercial and large-scale growers.\u003c\/p\u003e\n\u003ch3\u003eAdd-On Tip: Keep Your Lights Steady with Under Canopy Light Stands\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eGrab the \u003ca href=\"https:\/\/growlightcentral.com\/products\/floraflex-under-canopy-adjustable-stand\" title='FloraFlex Under Canopy Adjustable Stand - 6.75\" to 11.25\"'\u003eUnder Canopy Adjustable Stand (6.75\"–11.25\")\u003c\/a\u003e\u003c\/strong\u003e to lock in the perfect light position for your grow. \u003cmeta charset=\"utf-8\"\u003e\u003cstrong\u003eNote\u003c\/strong\u003e: Each under-canopy light needs 2 stands for secure support.\u003c\/p\u003e\n\u003cp\u003e\u003cimg height=\"600\" width=\"800\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/FloraFlex-Under-Canopy-Light-Stands.jpg?v=1758017584\" alt=\"Set of FloraFlex LED bar lights on stands with a power supply on a green background.\"\u003e\u003c\/p\u003e\n\u003ch3\u003eIs the FloraFlex 720W energy-efficient?\u003c\/h3\u003e\n\u003cp\u003eAt 2.7 µmol\/J, this LED grow plant light is significantly more efficient than HPS fixtures. Older HPS average 1.3 µmol\/J, standard 1000W DE HPS reach 1.7 µmol\/J, and premium DE HPS top out around 2.1 µmol\/J. The FloraFlex produces \u003cstrong\u003emore usable light\u003c\/strong\u003e per watt, giving growers higher returns with lower operating costs.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet of 6 120W under canopy light bars (total of 720W)\u003c\/li\u003e\n\u003cli\u003e4' x 8' - 4' x 12' coverage\u003c\/li\u003e\n\u003cli\u003eIndustry-leading full-spectrum custom diodes\u003c\/li\u003e\n\u003cli\u003eBoosts flowering, enhances photosynthesis, and optimizes yields\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e6 x FloraFlex 120W Far Red Under Canopy Bars\u003c\/li\u003e\n\u003cli\u003eDriver\u003c\/li\u003e\n\u003cli\u003eHardware \u0026amp; Cables\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca title=\"FloraFlex 6 Bar - 720W Full Spectrum Under Canopy 4x8 DLC Listing\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/DLC_6021.pdf?v=1759744146\"\u003eDLC Listing\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/FloraFlex-720W-Under-Canopy-Full-Spectrum-Spec-Sheet.pdf?v=1759744226\" title=\"FloraFlex 6 Bar - 720W Full Spectrum Under Canopy 4x8 Spec Sheet\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"FloraFlex","offers":[{"title":"120V \/ Pallet of 55","offer_id":51085871513892,"sku":"6021-PLT","price":23021.9,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pallet of 55","offer_id":51085871579428,"sku":"6023-PLT","price":23021.9,"currency_code":"USD","in_stock":true},{"title":"277V \/ Pallet of 55","offer_id":51085871644964,"sku":"6025-PLT","price":23021.9,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/floraflex-6-bar-full-spectrum-under-canopy-light-3.jpg?v=1758541315"},{"product_id":"floraflex-under-canopy-adjustable-stand","title":"FloraFlex Under Canopy Adjustable Stand - 6.75\" to 11.25\"","description":"\u003ch2\u003eOffers stable secure support with a height range of 6.75 to 11.25 inches for precise positioning of under canopy lights and consistent indoor plant coverage.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eFloraFlex Under Canopy Adjustable Stand\u003c\/strong\u003e is designed to securely hold your FloraFlex Under Canopy Lights at the perfect height. With an adjustable range from 6.75\" to 11.25\", this stand ensures your lights are positioned exactly where your plants need them most. Built for stability and compatibility, it makes dialing in your under-canopy lighting setup simple and reliable.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eHeight adjustable:\u003c\/strong\u003e 6.75\" to 11.25\" for flexible positioning\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOptimized design:\u003c\/strong\u003e Made to fit FloraFlex Under Canopy Lights\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eStable support:\u003c\/strong\u003e Keeps lights secure for consistent plant coverage\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEasy to use:\u003c\/strong\u003e Adjust and lock in place for precise light targeting\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFloraFlex Under Canopy Adjustable Stand\u003c\/li\u003e\n\u003c\/ul\u003e\n","brand":"FloraFlex","offers":[{"title":"Default Title","offer_id":51085968539940,"sku":"6019","price":10.99,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/floraflex-under-canopy-adjustable-stand-1.jpg?v=1758540490"},{"product_id":"faven-chroma-under-canopy-light","title":"Faven Chroma 120W Under Canopy Light with Spectrum Control","description":"\u003ch2\u003eBoosts yields by 20-30% with spectrum control, 2.9 umol\/J efficiency, and far red enhancement for full canopy performance.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eFaven Chroma Under Canopy Light\u003c\/strong\u003e is the most advanced tool yet for growers looking to unlock the full potential of their canopy. Built with \u003cstrong\u003espectrum tunability (R4-R9)\u003c\/strong\u003e and an \u003cstrong\u003eindependent far-red channel\u003c\/strong\u003e, Chroma lets you dial in growth from stretch to finish while boosting yield, quality, and ROI. With up to \u003cstrong\u003e2.9 umol\/J efficacy\u003c\/strong\u003e packed into a compact, waterproof design, it's purpose-built for under-canopy performance and engineered for serious results.\u003c\/p\u003e\n\u003cp\u003eChroma isn't just another bar light. Adjustable spectrum (R4-R9) means you can fine-tune morphology, stacking, and finishing color, while the far-red channel can shave \u003cstrong\u003e5-7 days off flowering cycles\u003c\/strong\u003e. That's not just efficiency - that's profit. Over \u003cstrong\u003e85% of Faven customers report a one-run ROI\u003c\/strong\u003e, thanks to yield bumps of \u003cstrong\u003e20-30%+, fewer smalls, and less plant labor\u003c\/strong\u003e.\u003c\/p\u003e\n\u003ch3\u003eMore Diodes, Smarter Performance: What Makes Chroma a Winner\u003c\/h3\u003e\n\u003cp\u003eMost tunable lights on the market don't actually shut off their diodes - they just dim them down. That means even when a channel is set to \"0%,\" the diodes are still running in the background, wearing out and wasting energy.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe Faven Chroma is different. \u003c\/strong\u003eIt's \u003cstrong\u003epacked with twice as many diodes \u003c\/strong\u003eand designed so they switch completely on or off. When you adjust from R4 to R9, you're not dimming the same diodes - you're lighting up more of them. This gives your plants the full power of the spectrum at every setting, while extending the life of the fixture.\u003c\/p\u003e\n\u003ch3\u003eADD-ONS TO MAKE A MORE SOLID GROW SETUP\u003c\/h3\u003e\n\u003ch4\u003eControllers\u003c\/h4\u003e\n\u003cp\u003e\u003cstrong\u003eThe real power of Chroma is unlocked with CX2 or GrowFlux controls, available as add-ons.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca title=\"Faven Chroma CX2 Controller\" href=\"https:\/\/growlightcentral.com\/products\/faven-chroma-cx2-controller\"\u003e\u003cstrong\u003eCX2 Controller\u003c\/strong\u003e\u003c\/a\u003e - Perfect for smaller grows or first-time Chroma users. Adjust spectrum, dimming, and far red scheduling with an intuitive interface. Now with a \u003cstrong\u003eclearer R Value breakdown (R4 = 40% red, R8 = 80% red), spectrum performance guidance by range, and a \u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/CX2_Chroma_R_Values.pdf\" title=\"Faven CX2 Chroma R Values\"\u003esuggested production schedule\u003c\/a\u003e\u003c\/strong\u003e so your growers always know what to run and when. One CX2 can run up to 100 to 150 lights, keeping things simple and cost-effective.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGrowFlux Wireless System\u003c\/strong\u003e \u003cstrong\u003e(\u003ca href=\"https:\/\/growlightcentral.com\/products\/hlg-growflux-access-point\" title=\"Growflux Access Point\"\u003eAccess Point\u003c\/a\u003e and \u003ca href=\"https:\/\/growlightcentral.com\/products\/growflux-universal-dimmer\" title=\"Growflux Universal Dimmer\"\u003eUniversal Dimmer\u003c\/a\u003e)\u003c\/strong\u003e - Designed for large-scale facilities. Control hundreds of lights from your phone or computer, set complex recipes, and manage multiple zones with ease. Built-in spectrum tuning and remote scheduling mean you can oversee your facility from anywhere.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eNOTE: A controller is required to run the Chroma since it has 2 drivers and works on a RS485 protocol vs the standard 0-10V\u003c\/p\u003e\n\u003ch4\u003eInterconnect Cables and Power Cords\u003c\/h4\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the chart below for limitations on how many lights can be connected to 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/under-canopy-lighting-extension-cord\" title=\"Faven Under Canopy Lighting Jumper Cable\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/faven-chroma-power-cord\" title=\"Faven Chroma Power Cord for Under Canopy Lights\"\u003ePower Cords\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch4\u003eMax Daisy-Chain Capacity\u003c\/h4\u003e\n\u003cul\u003e\n\u003cli\u003e1.0 Amps - 10 lights - \u003cstrong\u003e120V\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e0.5 Amps - 17 lights - \u003cstrong\u003e240V\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e0.43 Amps - 20 lights - \u003cstrong\u003e277V\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch4\u003eLock Your Lights in Place with Faven Couplings\u003c\/h4\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/faven-coupling\" title=\"Faven Coupling for Under Canopy Lights\"\u003eFaven Couplings\u003c\/a\u003e\u003c\/strong\u003e are designed to keep your under-canopy lights firmly connected. Since Chroma fixtures \u003cstrong\u003econnect directly to each other without cords\u003c\/strong\u003e, any movement of tables can cause those connections to wiggle loose over time. A coupling slides over the joint where two lights meet, \u003cstrong\u003elocking them together so they stay tight and waterproof.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMost growers find they need couplings equal to about 80% of their total light count.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eExample: \u003c\/strong\u003eIf you're installing 24 Chroma lights, plan on ordering around 19 couplers to keep every connection point secure.\u003c\/p\u003e\n\u003ch3\u003eIs Chroma Energy Efficient?\u003c\/h3\u003e\n\u003cp\u003eAbsolutely. \u003cstrong\u003eChroma runs at 2.9 umol\/J\u003c\/strong\u003e, so you're getting top-tier efficiency on par with premium overhead lights. Most tunable under-canopy fixtures waste power by dimming diodes. Chroma solves that with \u003cstrong\u003edouble the diode count\u003c\/strong\u003e, cycling them at full strength for even output and longer lifespan.\u003c\/p\u003e\n\u003ch3\u003eGrow Smarter with Chroma Recipes\u003c\/h3\u003e\n\u003cp\u003eWith Chroma, you can adjust the spectrum as your plants grow. The \u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Growing_with_Faven.pdf\" title=\"Growing With Faven Lightning Guide\"\u003eGrowing with Faven Guide\u003c\/a\u003e shows you exactly how to do it step by step:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eEarly Stage\u003c\/strong\u003e: Use R4-R5 for a few weeks to keep plants compact and well-stacked.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMid Stage\u003c\/strong\u003e: Switch to R6-R7 for balanced growth and canopy strength.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFinishing\u003c\/strong\u003e: End with R8-R9 plus far-red to boost color, density, and speed up ripening.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eGrowers using these recipes have reported \u003cstrong\u003e5-7 days faster harvests\u003c\/strong\u003e and more uniform quality across their canopy.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eSpectrum Tunability (R4 to R9):\u003c\/strong\u003e Adjust red from 40% to 90% to control stretch, stack, and finish.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIndependent Far-Red Channel:\u003c\/strong\u003e Run before and after lights-on to accelerate flowering and ripening.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eController Compatibility:\u003c\/strong\u003e Works with CX2, GrowFlux, approved RS485 adapters, and even 0-10V systems.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e120W + 15W Far Red LED:\u003c\/strong\u003e Dimmable with internal driver.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eWaterproof \u0026amp; Certified:\u003c\/strong\u003e IP66 rating, ETL, DLC, CE, and FCC certified.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDurable Build:\u003c\/strong\u003e 46\" L x 2.9\" W x 3.3\" H, 5-year warranty.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFaven Chroma Under Canopy Light\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca title=\"Faven Chroma Under Canopy Light Spec Sheet\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/faven-chroma-under-canopy-lights-specs-sheet.pdf?v=1758110068\"\u003eChroma Spec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca title=\"Faven CX2 Controller Spec Sheet\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Faven_CX2_Controller.pdf?v=1758272092\"\u003eFaven CX2 Controller Spec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Faven Lighting","offers":[{"title":"Default Title","offer_id":51089393615140,"sku":"10-010602-485","price":199.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/faven-chroma-under-canopy-light-1.jpg?v=1758136486"},{"product_id":"faven-chroma-cx2-controller","title":"Faven Chroma CX2 Controller","description":"\u003ch2\u003eGives manual spectrum tuning, dimming, and far-red scheduling for up to 150 fixtures with simple, reliable control.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eFaven Chroma CX2 Controller\u003c\/strong\u003e is the easiest way to unlock the full potential of your Chroma Under Canopy Lights. Built exclusively for the Chroma series, the CX2 is a \u003cstrong\u003estandalone lighting controller\u003c\/strong\u003e designed with \u003cstrong\u003esmaller cultivators and first-time Chroma users\u003c\/strong\u003e in mind. No third-party systems, no complex setups — just simple, reliable control at your fingertips.\u003c\/p\u003e\n\u003ch3\u003eWhy It’s Ideal for Small to Mid-Size Grows\u003c\/h3\u003e\n\u003cp\u003eWith the CX2, growers get direct access to Chroma’s most powerful features without needing wireless networks or enterprise-level systems. Two independent channels put you in command of \u003cstrong\u003edimming, spectrum tuning (R4–R9), and far-red scheduling\u003c\/strong\u003e, so you can fine-tune plant growth at every stage. And because it’s fully hand-operated, you can adjust your lights on the fly with complete confidence.\u003c\/p\u003e\n\u003ch3\u003eScalable Yet Simple\u003c\/h3\u003e\n\u003cp\u003eEach CX2 line supports \u003cstrong\u003eup to 100 Chroma fixtures\u003c\/strong\u003e — and in some setups as many as 150. That makes it ideal for multi-bench rooms or small commercial grows looking for a cost-effective way to run multiple lights in sync.\u003c\/p\u003e\n\u003cp\u003eUnlike wireless enterprise options such as GrowFlux, the CX2 is \u003cstrong\u003emanual only\u003c\/strong\u003e — no apps, no remote access. Just plug in, set your preferences, and let it run. For growers who value simplicity and control without added complexity, the CX2 is the perfect fit.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eManual Dimming:\u003c\/strong\u003e Adjust intensity to match your canopy’s needs.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSpectrum Tuning:\u003c\/strong\u003e Shift from R4 to R9 to control stretch, stack, and finishing color.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIndependent Far-Red Channel:\u003c\/strong\u003e Schedule pre- and post-light cycles to accelerate flowering.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTime-Based Scheduling:\u003c\/strong\u003e Program lighting changes throughout the day for consistent results.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFaven Chroma CX2 Controller\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Faven_CX2_Manual_2026.pdf\" title=\"Faven Chroma CX2 Controller Manual\"\u003eProduct Manual\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Faven Lighting","offers":[{"title":"Default Title","offer_id":51089437557028,"sku":"10-010701-061","price":199.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/faven-chroma-cx2-controller-1.jpg?v=1758136471"},{"product_id":"faven-chroma-power-cord","title":"Faven Chroma Power Cord for Under Canopy Lights","description":"\u003ch2\u003ePowers and communicates with Chroma fixtures using digital protocol, designed exclusively for Chroma under canopy LED grow lights.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eFaven Chroma Power Cord\u003c\/strong\u003e is a critical accessory designed exclusively for \u003cstrong\u003eFaven Chroma Under Canopy Lights\u003c\/strong\u003e. More than just a power source, this cord also enables \u003cstrong\u003edigital protocol communication\u003c\/strong\u003e between your fixtures and controllers, ensuring reliable performance and seamless spectrum control.\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(191, 38, 47);\"\u003e\u003cstrong\u003ePlease note: This product is engineered exclusively for the Faven Chroma Under Canopy Lights and cannot be used across different products\/brands.\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003eBuilt for Chroma\u003c\/h3\u003e\n\u003cp\u003eThe Chroma Power Cord is engineered to handle both \u003cstrong\u003epower delivery\u003c\/strong\u003e and \u003cstrong\u003eRS485 digital communication\u003c\/strong\u003e, making it essential for spectrum tuning, dimming, and far-red scheduling. Because of this specialized design, it is \u003cstrong\u003enot compatible with Faven base models\u003c\/strong\u003e — it’s built only for Chroma under canopy lights.\u003c\/p\u003e\n\u003ch3\u003eWhy You Need It\u003c\/h3\u003e\n\u003cp\u003eEvery bench requires at least one Chroma Power Cord, with additional cords or extensions needed for larger setups. The cord ensures:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eReliable power flow\u003c\/strong\u003e for consistent light output\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSecure data communication\u003c\/strong\u003e for advanced spectrum and far-red control\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSafe, waterproof connections\u003c\/strong\u003e to withstand tough grow environments\u003c\/p\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eOrdering Made Simple\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eEach bench needs at least one power cord\u003c\/strong\u003e to operate Chroma fixtures.\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eDaisy chain extensions\u003c\/strong\u003e may be added to connect multiple lights in sequence.\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cp\u003eLarger installs may require \u003cstrong\u003etwo or more power cords per bench\u003c\/strong\u003e, depending on your total light count and voltage.\u003c\/p\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMax Daisy-Chain Capacity:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e120V – up to 10 lights\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cp\u003e240V – up to 17 lights\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cp\u003e277V – up to 20 lights\u003c\/p\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFaven Chroma Power Cord\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Faven Lighting","offers":[{"title":"120V","offer_id":51089463247140,"sku":"10-010704-317","price":22.0,"currency_code":"USD","in_stock":true},{"title":"240V","offer_id":51089463279908,"sku":"10-010704-333","price":22.0,"currency_code":"USD","in_stock":true},{"title":"277V","offer_id":51089463312676,"sku":"10-010704-348","price":22.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/faven-120v-chroma-power-cord-1.jpg?v=1758136476"},{"product_id":"faven-coupling-i","title":"Faven Coupling for Under Canopy Lights","description":"\u003ch2\u003eSecure long-lasting connections for your under-canopy lighting system.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eFaven Coupling\u003c\/strong\u003e is designed to keep your Chroma under canopy lights securely connected, ensuring reliable performance across your grow. Built for \u003cstrong\u003edurability and stability\u003c\/strong\u003e, it provides the strength needed to maintain consistent operation in demanding environments.\u003c\/p\u003e\n\u003cp\u003eEach coupling is sold individually, not as a pair. When setting up or expanding your lighting system, these couplings are essential for maintaining safe and long-term connections between fixtures.\u003c\/p\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFaven Coupling\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Faven Lighting","offers":[{"title":"Default Title","offer_id":51092711112996,"sku":"10-010506-020","price":3.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/faven-coupling-1.jpg?v=1758207996"},{"product_id":"mammoth-lighting-clone-and-intercanopy-led-grow-light-bar","title":"Mammoth Lighting Clone \u0026 Intercanopy LED Grow Light Bar","description":"\u003ch2\u003eExperience natural sunlight precision featuring the Sunspec Spectrum for balanced growth and canopy health.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eMammoth Lighting Clone \u0026amp; Inter-Canopy Light\u003c\/strong\u003e is designed to replicate \u003cstrong\u003enatural sunlight\u003c\/strong\u003e using our advanced \u003cstrong\u003eSunspec Spectrum\u003c\/strong\u003e, delivering vibrant growth and balanced morphology in cloning, propagation, or inter-canopy applications. Each 50W bar runs cool and efficiently, promoting healthier plants without overheating your environment. Ideal for side lighting or dense canopy penetration, it’s the professional solution for consistent light quality across your entire grow.\u003c\/p\u003e\n\u003ch3\u003eIs the Mammoth Clone \u0026amp; Inter-Canopy Light energy-efficient?\u003c\/h3\u003e\n\u003cp\u003eYes. Each bar delivers \u003cstrong\u003e2.1 µmol\/J efficiency, \u003c\/strong\u003esurpassing older HPS systems that average 1.7 µmol\/J and rivaling early-generation LEDs. You get more usable plant light per watt, meaning less power draw and cooler temps without sacrificing growth speed or canopy density. Daisy-chain up to 8 bars on 120V or 16 on 240V for scalable lighting control that fits any grow setup.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003e2 bars per box\u003c\/strong\u003e (50W per bar = 100W total)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSunspec Full Spectrum\u003c\/strong\u003e – proprietary design closest to natural sunlight\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eSlim, easy-to-install design\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eDaisy-chain up to 8 bars on 120V, or 16 bars on 240V\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eCovers up to a 4' x 4' area\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eWaterproof cords \u0026amp; protective lens\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eModular, compact, and powerful\u003c\/strong\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e2 x Mammoth Lighting Clone LED Bars\u003c\/li\u003e\n\u003cli\u003eWaterproof Daisy Chain Cords\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Mammoth Lighting","offers":[{"title":"No","offer_id":51157743796516,"sku":null,"price":149.0,"currency_code":"USD","in_stock":true},{"title":"Yes | +$60","offer_id":51157743829284,"sku":null,"price":209.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/mammoth-lighting-clone-intercanopy-light-1.jpg?v=1759937715"},{"product_id":"mammoth-lighting-nova-sun-series-multi-use-bars","title":"Mammoth Lighting Nova Sun Series Multi-Use Bars - Inter-Canopy, Side Lighting, Under-Canopy, Overhead","description":"\u003ch2\u003eUpgrade spectrum without replacing fixtures. Nova Sun Series delivers deeper penetration, balanced full-spectrum light, and real quality gains serious growers can see and measure.\u003c\/h2\u003e\n\u003cp\u003eThe Nova Sun Series by Mammoth Lighting is\u003cstrong\u003e built for growers who already have lighting in place but know spectrum quality is the missing piece\u003c\/strong\u003e. These multi-use LED bars are designed to layer in true sunlike CMH-style light that penetrates deeper, balances plant response, and improves bud quality without ripping out existing fixtures.\u003c\/p\u003e\n\u003cp\u003ePurpose-built for side lighting, inter canopy, under canopy, and overhead gap fill, Nova Sun Bars solve the real-world problem of uneven PPFD and red-blue heavy spectrums. This is a targeted spectrum upgrade for growers chasing structure, density, aroma, and consistency not just raw numbers.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMulti use LED bar design supports side lighting inter canopy under canopy and overhead gap fill in one system\u003c\/li\u003e\n\u003cli\u003eTrue sunlike CMH style full spectrum corrects red blue heavy LED rooms and improves overall plant expression\u003c\/li\u003e\n\u003cli\u003eDual red terp boost using 640nm and 660nm improves flower density and terpene production at higher PPFD\u003c\/li\u003e\n\u003cli\u003eEmerald green and teal blue wavelengths improve canopy penetration morphology and circadian signaling\u003c\/li\u003e\n\u003cli\u003eFar red 730nm supports flowering response biomass and plant architecture\u003c\/li\u003e\n\u003cli\u003eSlim low profile bars designed for vertical racks multi tier systems and tight retrofits\u003c\/li\u003e\n\u003cli\u003eModular field serviceable bar construction built for long term commercial use\u003c\/li\u003e\n\u003cli\u003eStandard dimmer knob and RJ ports allow simple grouping and control\u003c\/li\u003e\n\u003cli\u003eLightweight bars install fast and integrate easily into existing grow rooms\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMammoth Lighting Nova Sun Series Multi-Use Bars\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Mammoth Lighting","offers":[{"title":"2 Bar Kit with 300W Power Driver","offer_id":51482122944804,"sku":null,"price":349.0,"currency_code":"USD","in_stock":true},{"title":"4 Bar Kit with 600W Power Driver","offer_id":51482122977572,"sku":null,"price":599.0,"currency_code":"USD","in_stock":true},{"title":"8 Bar Kit with 1200W Power Driver (240V Plug Pnly)","offer_id":51482123010340,"sku":null,"price":999.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/mammoth-lighting-nova-sun-series-multi-use-bars-1.jpg?v=1766778899"},{"product_id":"growpros-bench-bridge-stands","title":"GrowPros Bench Bridge Stands for Under Canopy Lights","description":"\u003ch2\u003eA rugged adjustable bench bridge system designed to support under canopy lights improve workflow efficiency and deliver consistent lower canopy coverage in professional grow operations.\u003c\/h2\u003e\n\u003cp\u003eThe GrowPros Bench Bridge Stands are built for growers who want under canopy lighting done right without makeshift brackets or unstable mounts. Designed to span rolling benches and grow racks, these stands hold canopy lights exactly where they need to be for consistent lower-canopy coverage and repeatable results across every cycle.\u003c\/p\u003e\n\u003cp\u003eWith \u003cstrong\u003eadjustable height and extendable width\u003c\/strong\u003e, these bridge stands fit seamlessly into professional grow rooms running soil, coco, or hydro systems. They allow growers to clean trays and maintain workflows without removing or repositioning lights, saving time while protecting light placement accuracy in high-output bud production environments.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDurable metal construction for superior strength and corrosion resistance\u003c\/li\u003e\n\u003cli\u003eAdjustable height from 9 to 19 inches, compatible with leading under canopy light brands\u003c\/li\u003e\n\u003cli\u003eExtendable design fits rolling benches and grow racks with widths from 4 to 5 feet\u003c\/li\u003e\n\u003cli\u003eFlexible extendable holders enable precise placement of under canopy lights\u003c\/li\u003e\n\u003cli\u003eEasy grow tray cleaning without repositioning lights\u003c\/li\u003e\n\u003cli\u003eVersatile for grow tables supporting consistent cultivation cycles\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros Bench Bridge Stands for Under Canopy Lights\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"GrowPros","offers":[{"title":"Default Title","offer_id":51936963985700,"sku":"GPS-UCL1234-LEGS-BenchBridge","price":55.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/growpros-bench-bridge-stands-1.jpg?v=1768783307"},{"product_id":"growers-choice-ag140-led-grow-light","title":"Grower's Choice AG-140 LED Grow Light - Full Phase or Red Enhanced","description":"\u003ch2\u003eAG140 Full Phase and AG140 Red Enhanced are precision LED grow lights engineered to correct canopy VPD and eliminate low-quality bud production.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eAG140\u003c\/strong\u003e \u003cstrong\u003eLED grow light\u003c\/strong\u003e solution serious growers use when canopy consistency becomes the limiting factor. The AG140 platform is designed to balance Vapor Pressure Deficit across the entire canopy, driving uniform transpiration and eliminating underdeveloped lower buds. \u003cspan style=\"box-sizing: border-box; margin: 0px; padding: 0px;\"\u003e\u003cstrong\u003eAvailable as Full Phase 3K or Red Enhanced,\u003c\/strong\u003e this full-spectrum LED grow light supports aggressive flowering, tighter node stacking, and improved density in high-intensity indoor rooms.\u003c\/span\u003e Ideal for rolling benches, vertical racks, and dense commercial layouts running soil or hydro.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSmart investment\u003c\/strong\u003e comes from solving problems that other fixtures ignore. By stabilizing canopy VPD, this LED indoor plant grow light improves flower consistency top to bottom while reducing wasted energy on non-productive biomass. IP66 waterproof construction allows washdowns, IPM sprays, and high-humidity operation without failure. Single connection power and data chaining reduces wiring clutter and labor time, making this plant grow light LED easy to scale across large facilities.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnergy-efficient\u003c\/strong\u003e performance focuses on usable plant response rather than raw wattage. As a modern grow light full spectrum LED system, AG140 delivers significantly more effective canopy level performance than legacy HPS fixtures operating around 1.3 to 2.1 µmol per joule. The result is better flower quality, reduced HVAC load, and a more controlled production environment.\u003c\/p\u003e\n\u003ch3\u003eInterconnect Cables and Power Cords\u003c\/h3\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the above chart for limitations on how many lights can be connected to 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/growers-choice-rj-14-data-cable\" title=\"Grower's Choice RJ-14 Data Cable\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003ePower Cords\n\u003cul\u003e\n\u003cli\u003e\u003ca title=\"Grower's Choice M-25 120V Adapter Cord\" href=\"https:\/\/growlightcentral.com\/products\/growers-choice-m-25-120v-adapter-cord\"\u003eM-25 120V Adapter Cord\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca title=\"Grower's Choice M-25 240V Adapter Cord\" href=\"https:\/\/growlightcentral.com\/products\/growers-choice-m-25-240v-adapter-cord\"\u003eM-25 240V Adapter Cord\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca title=\"Grower's Choice M-25 277V Adapter Cord\" href=\"https:\/\/growlightcentral.com\/products\/growers-choice-m-25-277v-adapter-cord\"\u003eM-25 277V Adapter Cord\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/growlightcentral.com\/products\/growers-choice-adapter\" title=\"Grower’s Choice Power Plug Adapter\"\u003ePower Adaptors\u003c\/a\u003e (Convert 120V to 240V or 240V to 120V)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eNote: \u003c\/strong\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Grower_s_Choice_UCL_What_Accessories_Do_You_Need.pdf?v=1758283962\" title=\"Grower's Choice UCL What Accessories Do You Need\"\u003eUse this guide\u003c\/a\u003e to see exactly what you’ll need for your setup!\u003c\/p\u003e\n\u003ch3\u003eIs the Grower's Choice Under Canopy Light energy-efficient?\u003c\/h3\u003e\n\u003cp\u003eAbsolutely. With a \u003cstrong\u003e3.07 µmol\/J efficacy\u003c\/strong\u003e, this light performs better than most toplights and blows HPS efficiency out of the water. It delivers more usable light per watt exactly where your plants need it—low in the canopy—helping you produce higher quality buds without increasing your electricity bill.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli data-end=\"946\" data-start=\"836\"\u003e\n\u003cstrong data-end=\"872\" data-start=\"836\"\u003eFull phase LED grow light design\u003c\/strong\u003e supports uniform VPD across the canopy for improved flower consistency.\u003c\/li\u003e\n\u003cli data-end=\"1051\" data-start=\"949\"\u003e\n\u003cstrong data-end=\"988\" data-start=\"949\"\u003e3K or red enhanced spectrum options\u003c\/strong\u003e allow growers to dial in flower density, quality, and yield.\u003c\/li\u003e\n\u003cli data-end=\"1153\" data-start=\"1054\"\u003e\n\u003cstrong data-end=\"1081\" data-start=\"1054\"\u003eIP66-rated construction\u003c\/strong\u003e resists water, dust, and IPM sprays for easy cleaning and durability.\u003c\/li\u003e\n\u003cli data-end=\"1256\" data-start=\"1156\"\u003e\n\u003cstrong data-end=\"1186\" data-start=\"1156\"\u003eUniform light distribution\u003c\/strong\u003e helps eliminate lower-quality buds and improves canopy performance.\u003c\/li\u003e\n\u003cli data-end=\"1360\" data-start=\"1259\"\u003e\n\u003cstrong data-end=\"1304\" data-start=\"1259\"\u003eSingle connection power and data chaining\u003c\/strong\u003e reduces wiring complexity and speeds up installation.\u003c\/li\u003e\n\u003cli data-end=\"1460\" data-start=\"1363\"\u003e\n\u003cstrong data-end=\"1395\" data-start=\"1363\"\u003eCommercial-grade reliability\u003c\/strong\u003e built for continuous operation in demanding indoor grow rooms.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrower's Choice AG140 LED Grow Light\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca title=\"Grower's Choice AG140 110V-277V Full Phase LED Grow Light Spec Sheet\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/growers-choice-ag140-full-phase-110v-277v-spec-sheet.pdf?v=1769255548\"\u003eAG140 Full Phase 110V-277V Spec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca title=\"Grower's Choice AG140 277V-480V Full Phase LED Grow Light Spec Sheet\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/growers-choice-ag140-full-phase-277v-480v-spec-sheet.pdf?v=1769255548\"\u003eAG140 Full Phase 277V-480V Spec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/growers-choice-ag140-r80-110v-277v-spec-sheet.pdf?v=1769255548\" title=\"Grower's Choice AG140 110V-277V Red Enhanced LED Grow Light Spec Sheet\"\u003eAG140 Red Enhanced 110V-277V Spec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/growers-choice-ag140-r80-277v-480v-spec-sheet.pdf?v=1769255548\" title=\"Grower's Choice AG140 277V-480V Red Enhanced LED Grow Light Spec Sheet\"\u003eAG140 Red Enhanced 277V-480V Spec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Grower's Choice","offers":[{"title":"Full Phase \/ 110-277V","offer_id":51955799261476,"sku":"AG-140LW","price":225.0,"currency_code":"USD","in_stock":true},{"title":"Full Phase \/ 277-480V","offer_id":51955799294244,"sku":"AG-140HW","price":300.0,"currency_code":"USD","in_stock":true},{"title":"Red Enhanced \/ 110-277V","offer_id":51955799785764,"sku":"AG-140LR","price":250.0,"currency_code":"USD","in_stock":true},{"title":"Red Enhanced \/ 277-480V","offer_id":51955799818532,"sku":"AG-140HR","price":320.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/growers-choice-ag140-led-grow-light-1.jpg?v=1769272095"},{"product_id":"growpros-air-circulation-under-canopy-grow-light","title":"GrowPros Under Canopy Light Model 5 Air Circulation - 80% Deep Red Spectrum","description":"\u003ch2\u003eAn under canopy LED grow light with integrated air circulation delivering deep red spectrum to improve lower bud density and overall yield.\u003c\/h2\u003e\n\u003cp\u003eThe GrowPros Under Canopy Light Model 5 is \u003cstrong\u003ebuilt for growers who are tired of larfy lowers and uneven bud development.\u003c\/strong\u003e Designed with an 80% deep red spectrum, this LED grow light targets the lower canopy where traditional top lighting falls short. By bringing focused energy under the canopy, it increases flower density and helps lower bud sites finish closer to the top tier.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat sets this unit apart is the integrated aluminum air circulation tube.\u003c\/strong\u003e This is not just a plant LED grow light, it is a combined light and airflow system. Mounted beneath the canopy, it moves air along the row while delivering optimized spectrum to shaded zones, eliminating the need for extra ducting that blocks light or disrupts layout. Available in 4ft and 8ft options, it is built for high-density flowering rooms running rolling benches or fixed tables.\u003c\/p\u003e\n\u003ch3\u003eDual Function: Yield Support + Microclimate Control\u003c\/h3\u003e\n\u003cp\u003eIn high-density canopy environments, the under-canopy tier is where both light levels and air movement drop off first. This system is built to address both at the same time:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eCommercial-proven spectrum:\u003c\/strong\u003e Full-spectrum output with roughly 60% red content supports higher yields and helps lower flowers finish denser and larger.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAirflow through the canopy: \u003c\/strong\u003eThe aluminum ventilation tube lets air from external fans move along the row and through the canopy across the whole grow layer, and can be paired with the \u003cstrong\u003eQuetzalcoatl Air Circulation System\u003c\/strong\u003e from Grow Pros Solutions or other compatible inline\/duct fans (fans sold separately) to keep airflow more even around the crop from top to lower flowers.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eAluminum Ventilation Tube, Built to Scale\u003c\/h3\u003e\n\u003cp\u003eEach unit uses a built-in aluminum ventilation tube, making the fixture part of the under-canopy air system, not just a light bar. Each fixture connects to the next using a rubber duct connector to create a continuous airflow path along the row.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eBuilt-in aluminum ventilation tube\u003c\/strong\u003e for durability in demanding grow-room conditions\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRubber duct connector compatibility\u003c\/strong\u003e for easy multi-unit extension along rows\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCompatible with multiple Grow Pros Solutions fan\u003c\/strong\u003e options to match different room layouts and airflow paths\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"elementor-element elementor-element-8ef47c1 e-con-full e-flex e-con e-child\" data-id=\"8ef47c1\" data-element_type=\"container\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"elementor-element elementor-element-7767324 elementor-widget elementor-widget-heading\" data-id=\"7767324\" data-element_type=\"widget\" data-widget_type=\"heading.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003ch3 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eDIMMABLE SPECTRUM\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-d816f17 elementor-widget elementor-widget-text-editor\" data-id=\"d816f17\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    \/* Chart Container *\/\n    #chartcontainer_4ftuclm2 .chart-container4ftuclm2 {\n        width: 100%;\n        margin: 10px auto;\n        display: flex;\n        justify-content: center;\n    }\n\n    \/* Control Panels *\/\n    #chartcontainer_4ftuclm2 #control-panels4ftuclm2 {\n        display: flex;\n        justify-content: space-around;\n        margin-bottom: 20px;\n        flex-wrap: wrap;\n    }\n\n    #chartcontainer_4ftuclm2 .control-panel4ftuclm2 {\n        width: 100%;\n        border: 1px dashed #000000;\n        padding: 20px;\n        margin-bottom: 20px;\n        border-radius: 2px;\n        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n    }\n\n    #chartcontainer_4ftuclm2 .slider-title { \n        font-family: Jost, sans-serif; \n        font-size: 20px; \n        margin-bottom: 15px;\n        color: #000000;\n    }\n\n    #chartcontainer_4ftuclm2 .slider-paratitle {\n        display: flex;\n        flex-direction: row;\n        justify-content: space-between;\n        margin-top: 10px;\n    }\n\n    #chartcontainer_4ftuclm2 .slider-paratitle .current-value {\n        text-align: right;\n        width: 100%;\n        font-weight: bold;\n        color: #000000;\n    }\n    #chartcontainer_4ftuclm2 .slider-paratitle span {\n        color:#cccccc;\n    }\n    \/* Custom Process Bar Styles *\/\n    #chartcontainer_4ftuclm2 .process-container4ftuclm2 {\n        width: 100%;\n        height: 16px;\n        background-color: #333333;\n        position: relative;\n        cursor: pointer;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm2 .process-bar {\n        height: 100%;\n        background-color: #999999;\n        width: 0;\n        position: absolute;\n        top: 0;\n        left: 0;\n        transform: translateX(0);\n        will-change: width, transform;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm2 .process-thumb {\n        width: 20px;\n        height: 20px;\n        background-color: #046e82;\n        border: 1px solid #000000;\n        border-radius: 2px;\n        position: absolute;\n        top: 50%;\n        transform: translate(-50%, -50%) translateX(0);\n        left: 0;\n        cursor: pointer;\n        touch-action: none;\n        transition: none;\n        will-change: transform;\n    }\n\n    \/* Responsive adjustments *\/\n    @media screen and (max-width: 767px) {\n        #chartcontainer_4ftuclm2 #control-panels4ftuclm2 { \n            flex-direction: column; \n        }\n        #chartcontainer_4ftuclm2 .control-panel4ftuclm2 { \n            width: 100%; \n            margin-bottom: 20px; \n            padding:10px;\n        }\n        #chartcontainer_4ftuclm2 .slider-title { font-size:12px; }\n        #chartcontainer_4ftuclm2 .process-container4ftuclm2 { height:14px; }\n        #chartcontainer_4ftuclm2 .process-thumb { width: 22px; height: 22px; }\n        #chartcontainer_4ftuclm2 .slider-paratitle span { font-size:10px; }\n    }\n\u003c\/style\u003e\n\u003cdiv class=\"elementor-element elementor-element-8ef47c1 e-con-full e-flex e-con e-child\" data-id=\"8ef47c1\" data-element_type=\"container\" id=\"chartcontainer_4ftuclm2\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"elementor-element elementor-element-d816f17 elementor-widget elementor-widget-text-editor\" data-id=\"d816f17\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"chart-container4ftuclm2\"\u003e\u003ccanvas id=\"myChart_4ftuclm2\" style=\"display: block; box-sizing: border-box; height: 211px; width: 423px;\" width=\"847\" height=\"423\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n    var chart4ftuclm2 = jQuery.noConflict(true);\n    chart4ftuclm2(document).ready(function($) {\n        \/\/ Chart.js Setup\n        const ctx = chart4ftuclm2('#myChart_4ftuclm2')[0].getContext('2d');\n        let chart;\n        const dataset14ftuclm2 = {\n            label: 'Channel 1',\n            labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n            data: [0, 0, 0, 0, 0, 0, 0, 0, 0.2, 1, 2, 4, 14.2, 27, 14, 4, 2, 1.4, 2, 2.6, 3.1, 3.6, 4.4, 4.8, 5, 5.4, 5.8, 6.2, 6.4, 7.4, 9.4, 16, 34, 64, 99, 24, 7.4, 2.8, 1.6, 3.2, 7.2, 12, 7.2, 4, 2.1, 1, 0.4, 0.1, 0, 0, 0, 0, 0, 0 ]\n        };\n\n        const colors = ['#111a39','#111a39','#111a39', '#111a39', '#111a39','#111a39','#111a39', '#111a39', '#162143', '#162143', '#162143', '#053390', '#1c4a9d', '#1c4a9d','#265aa8', '#3173b8', '#3698d5','#45bee3','#6fc4be', '#6ebf80', '#69b72d','#69b72d', '#6bb72d', '#79bc28','#97c626','#a8cc2b', '#c8d933','#d8e036', '#f1eb36', '#f4c41c', '#f19518', '#ed761b', '#e95619','#e62718','#e11713','#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d','#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a','#440104', '#380103','#230304','#221714', '#221714', '#221714','#221714', '#221714', '#221714','#221714', '#221714','#221714', '#221714'];\n\n        let scale1 = 1;\n\n        function createGradient(ctx, chartArea, colors) {\n            const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n            colors.forEach((color, index) =\u003e {\n                gradient.addColorStop(index \/ (colors.length - 1), color);\n            });\n            return gradient;\n        }\n\n        function createChart(labels, combinedData) {\n            if (chart) {\n                chart.destroy();\n            }\n\n            chart = new Chart(ctx, {\n                type: 'line',\n                data: {\n                    labels: labels,\n                    datasets: [\n                        {\n                            type: 'line',\n                            label: 'PPF',\n                            data: combinedData,\n                            borderWidth: 0.1,\n                            backgroundColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            borderColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            fill: true,\n                            tension: 0.4 \/\/ Smoothing effect\n                        },\n                        {\n                            type: 'line',\n                            label: 'Outline',\n                            data: combinedData,\n                            borderWidth: 2,\n                            backgroundColor: 'transparent',\n                            borderColor: '#000000', \/\/ Outline color\n                            fill: false,\n                            tension: 0.4\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: {\n                        x: {\n                            stacked: true,\n                            grid: {\n                                display: false \/\/ Hide y-axis grid lines\n                            },\n                            ticks: {\n                                color: '#000000',\n                                autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                maxRotation: 0, \/\/ Prevent label rotation\n                                minRotation: 0, \/\/ Prevent label rotation\n                                maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                            },\n                            border: {\n                                width: 2,\n                                color: '#000000' \/\/ Change x-axis line color\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                            grid: {\n                                color: '#000000',\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000' \/\/ Change y-axis line color\n                            },\n                            ticks: {\n                                color: '#000000',\n                                callback: function(value) {\n                                    return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                }\n                            }\n                        }\n                    },\n                    events: null,\n                    radius: 0,\n                    plugins: {\n                        filler: {propagate: true}, \/\/ Enable filler\n                        legend: { display: false },\n                    },\n                    animation: {\n                        duration: 0 \/\/ Animation duration for smoother updates\n                    }\n                }\n            });\n        }\n\n        function updateChart() {\n            const scaledData1 = dataset14ftuclm2.data.map(value =\u003e value * scale1);\n            const combinedData = scaledData1;\n            \n            if (chart) {\n                chart.data.datasets[0].data = combinedData;\n                chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                chart.options.animation.duration = 300;\n                chart.update();\n            }\n        }\n\n        function createProcessBar(containerId, valueId) {\n            const $container = chart4ftuclm2(`#${containerId}`);\n            const $controlPanel = $container.closest('.control-panel4ftuclm2');\n            const $thumb = $container.find('.process-thumb');\n            const $bar = $container.find('.process-bar');\n            const $currentValue = chart4ftuclm2(`#${valueId}`);\n            let dragging = false;\n            let containerOffset = $controlPanel.offset().left;\n            let containerWidth = $controlPanel.width();\n            let processContainerWidth = $container.width();\n            let currentW = 250; \/\/ Set initial wattage to 250W\n\n            \/\/ Update container metrics on resize\n            function updateContainerMetrics() {\n                containerOffset = $controlPanel.offset().left;\n                containerWidth = $controlPanel.width();\n                processContainerWidth = $container.width();\n                setBarByWattage(currentW);\n            }\n\n            chart4ftuclm2(window).on('resize', updateContainerMetrics);\n\n            \/\/ Initialize container metrics\n            updateContainerMetrics();\n\n            \/\/ Function to set the bar and thumb position based on wattage\n            function setBarByWattage(wattage) {\n                currentW = Math.min(Math.max(wattage, 0), 250); \/\/ Use 250W as max\n                const touchRatio = currentW \/ 250;\n                const thumbLeft = touchRatio * processContainerWidth;\n\n                \/\/ Update bar width\n                $bar.css('width', `${touchRatio * 100}%`);\n                \/\/ Update thumb position\n                $thumb.css('transform', `translate(-50%, -50%) translateX(${thumbLeft}px)`);\n                \/\/ Update displayed value\n                $currentValue.text(`${currentW.toFixed(0)}W`);\n                \/\/ Update the corresponding scale variable and chart\n                scale1 = currentW \/ 250;\n                updateChart();\n            }\n\n            \/\/ Function to handle the dragging logic\n            function handleDrag(pageX) {\n                const newLeft = pageX - containerOffset;\n                const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                const touchRatio = clampedLeft \/ containerWidth;\n                const newWattage = touchRatio * 250; \/\/ Use 250W as max\n                setBarByWattage(newWattage);\n            }\n\n            \/\/ Throttle dragging using requestAnimationFrame\n            let rafId = null;\n\n            function onDrag(pageX) {\n                if (rafId) return;\n                rafId = requestAnimationFrame(() =\u003e {\n                    handleDrag(pageX);\n                    rafId = null;\n                });\n            }\n\n            \/\/ Mouse events\n            $thumb.on('mousedown', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chart4ftuclm2(document).on('mousemove', function(e) {\n                if (dragging) {\n                    onDrag(e.pageX);\n                }\n            });\n\n            chart4ftuclm2(document).on('mouseup', function() {\n                dragging = false;\n            });\n\n            \/\/ Touch events bound to control panel\n            $controlPanel.on('touchstart', function(e) {\n                e.preventDefault();\n                dragging = true;\n                const touch = e.originalEvent.touches[0];\n                onDrag(touch.pageX);\n            });\n\n            chart4ftuclm2(document).on('touchmove', function(e) {\n                if (dragging) {\n                    const touch = e.originalEvent.touches[0];\n                    onDrag(touch.pageX);\n                    e.preventDefault();\n                }\n            });\n\n            chart4ftuclm2(document).on('touchend touchcancel', function() {\n                dragging = false;\n            });\n\n            \/\/ Click on the control panel to set the thumb position\n            $controlPanel.on('click', function(e) {\n                const pageX = e.pageX;\n                onDrag(pageX);\n            });\n\n            \/\/ Initialize the bar to 250W\n            setBarByWattage(currentW);\n        }\n\n        \/\/ Initialize the chart\n        function initializeChart() {\n            const scaledData1 = dataset14ftuclm2.data.map(value =\u003e value * scale1);\n            createChart(dataset14ftuclm2.labels, scaledData1);\n        }\n\n        \/\/ Initial load\n        initializeChart();\n\n        \/\/ Create Process Bars for Channel 1\n        createProcessBar('process-container14ftuclm2', 'global-value14ftuclm2');\n\n        \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n        let resizeTimeout;\n        chart4ftuclm2(window).on('resize', function(){\n            clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function(){\n                if(chart){\n                    chart.resize();\n                }\n            }, 200); \/\/ Adjust the timeout as needed\n        });\n    });\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-a8ce3a9 e-con-full e-flex e-con e-child\" data-id=\"a8ce3a9\" data-element_type=\"container\" id=\"control-panels4ftuclm2\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-6c1f34f elementor-widget elementor-widget-text-editor\" data-id=\"6c1f34f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cdiv class=\"control-panel4ftuclm2\"\u003e\n\u003cdiv class=\"slider-title\"\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003ch3 class=\"elementor-heading-title elementor-size-default\" style=\"text-align: center;\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"process-container14ftuclm2\" class=\"process-container4ftuclm2\"\u003e\n\u003cdiv class=\"process-bar\" style=\"width: 100%;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-thumb\" style=\"transform: translate(-50%, -50%) translateX(212.094px);\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\" style=\"color: rgb(0, 0, 0);\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e\u003cbr\u003e\u003cspan id=\"global-value14ftuclm2\" class=\"current-value\"\u003e125W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eUsage Guidelines\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg style=\"float: none;\" alt=\"LED grow light setup guide highlighting correct and incorrect daisy-chain practices\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-4ft-Model-3-Attentions_3452f4f5-44a8-45c5-a535-472c1623bd70.jpg?v=1738839923\"\u003e\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDual-function airflow and under canopy grow light with universal-fit dimensions\u003c\/li\u003e\n\u003cli\u003eCommercial proven spectrum significantly increases yields and lower bud structure and size\u003c\/li\u003e\n\u003cli\u003eAir flow fans blow air through the undercanopy and reduce microclimates\u003c\/li\u003e\n\u003cli\u003eWaterproof and easy to clean\u003c\/li\u003e\n\u003cli\u003ePower chain and data control through the same connection\u003c\/li\u003e\n\u003cli\u003eMultiple options for fans\u003c\/li\u003e\n\u003cli\u003eCan be used on any bench system, but we suggest using it with the \u003ca title=\"GrowPros Bench Bridge Stands for Under Canopy Lights\" href=\"https:\/\/growlightcentral.com\/products\/growpros-bench-bridge-stands\"\u003eGrowPros Bench Bridge Stands\u003c\/a\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros Under Canopy Light Model 5 Air Circulation\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/UCLModel5-125W.pdf?v=1771934266\" title=\"GrowPros Under Canopy Light Model 5 Air Circulation 4ft Spec Sheet\" rel=\"noopener\" target=\"_blank\"\u003e4FT Spec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca title=\"GrowPros Under Canopy Light Model 5 Air Circulation 8ft Spec Sheet\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/UCLModel5-250W.pdf?v=1771934282\"\u003e8FT Spec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eInterconnect Cables and Power Cords\u003c\/h3\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the above chart for limitations on how many lights can be connected on 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/growpros-4-interconnect-cable-for-under-canopy-grow-lights\" target=\"_blank\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/products\/growpros-power-cord-with-rj-cable\" target=\"_blank\"\u003ePower Cords\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/power-adapter\" target=\"_blank\"\u003ePower Adaptors\u003c\/a\u003e (Convert 120V\/240V into 277V Male Plug)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eController\u003c\/h3\u003e\n\u003cp\u003eA controller with a RJ-12 signal is required to operate. We recommend the \u003ca rel=\"noopener\" title=\"Growpros grow light controller\" href=\"https:\/\/growlightcentral.com\/products\/growpros-grow-room-light-controller\" target=\"_blank\"\u003eGrowPros controller\u003c\/a\u003e\u003c\/p\u003e","brand":"GrowPros","offers":[{"title":"120V","offer_id":52038453887268,"sku":null,"price":250.0,"currency_code":"USD","in_stock":true},{"title":"240V","offer_id":52038453952804,"sku":null,"price":250.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/growpros-under-canopy-light-model-5-air-circulation_-1.jpg?v=1771945130"},{"product_id":"growpros-under-canopy-lights-storage-rack","title":"GrowPros Under Canopy Lights Storage Rack","description":"\u003ch2\u003eDesigned to protect under canopy lights, improve organization, and streamline room turnover workflows in professional cultivation facilities.\u003c\/h2\u003e\n\u003cdiv\u003e\n\u003cp\u003eThe \u003cstrong\u003eGrowPros Under Canopy LED Light Storage Rack System\u003c\/strong\u003e is built for commercial growers who need a smarter way to manage valuable lighting equipment during room resets, cleaning cycles, and facility upgrades. Instead of stacking expensive fixtures against walls or leaving them vulnerable to damage, this system keeps under-canopy lights organized, protected, and ready for the next production cycle.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eBuilt with a heavy-duty steel frame and high-capacity design\u003c\/strong\u003e, the rack holds over 90 under-canopy fixtures while maintaining quick access and smooth mobility. Large facilities running rolling benches, room turnovers, or frequent maintenance cycles will see immediate workflow improvements by reducing clutter, protecting equipment, and minimizing downtime between harvests.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHeavy-duty steel frame built for commercial cultivation environments\u003c\/li\u003e\n\u003cli\u003e16 pairs of arms to hold up 90+ Under Canopy Lights\u003c\/li\u003e\n\u003cli\u003eSwivel and fixed wheels for smooth mobility and stable positioning\u003c\/li\u003e\n\u003cli\u003eGreat base provides extra storage space for accessories or components\u003c\/li\u003e\n\u003cli\u003eMaximizes space efficiency while protecting valuable lighting equipment\u003c\/li\u003e\n\u003cli\u003eIdeal for organized, professional grow operations\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros Under Canopy Lights Storage Rack\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/STORAGERACK.pdf\" title=\"GrowPros Under Canopy Lights Storage Rack Spec Sheet\" rel=\"noopener\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"GrowPros","offers":[{"title":"Default Title","offer_id":54052919673124,"sku":"UCL-STORAGE RACK","price":295.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/growpros-under-canopy-lights-storage-rack-1.jpg?v=1779917904"}],"url":"https:\/\/growlightcentral.com\/collections\/under-canopy\/grow-space-equipment-type_rolling-bench.oembed","provider":"Grow Light Central","version":"1.0","type":"link"}