{"id":1357,"date":"2022-05-08T13:48:32","date_gmt":"2022-05-08T04:18:32","guid":{"rendered":"https:\/\/ale.chenonetta.com\/blog\/?p=1357"},"modified":"2022-12-21T19:42:03","modified_gmt":"2022-12-21T10:12:03","slug":"put-your-twitch-chat-in-control","status":"publish","type":"post","link":"https:\/\/ale.chenonetta.com\/blog\/2022\/05\/put-your-twitch-chat-in-control\/","title":{"rendered":"Put your Twitch Chat in control"},"content":{"rendered":"\n<p>Follow these steps to set up WLED colour changes as channel point rewards using Kruiz Control. These instructions are written specifically for my Squid Lamps but can be modified for use with any WLED project.<\/p>\n\n\n\n<p>Example video of this setup in action:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"twitter-tweet\" data-width=\"550\" data-dnt=\"true\"><p lang=\"en\" dir=\"ltr\">Tonight\u2019s project! <a href=\"https:\/\/t.co\/YcWZjQHnWd\">pic.twitter.com\/YcWZjQHnWd<\/a><\/p>&mdash; @alecat@aus.social (@alecatmew) <a href=\"https:\/\/twitter.com\/alecatmew\/status\/1512064635737845769?ref_src=twsrc%5Etfw\">April 7, 2022<\/a><\/blockquote><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script>\n<\/div><\/figure>\n\n\n\n<p><strong>EDIT updated 2022-12-21<\/strong><\/p>\n\n\n\n<p>Check out Riekelt&#8217;s project, KrakenCommand for an alternative setup!<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/riek-lt\/KrakenCommand\">https:\/\/github.com\/riek-lt\/KrakenCommand<\/a><\/p>\n\n\n\n<p><strong>Original post follows<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Download Kruiz Control<\/h2>\n\n\n\n<p><a href=\"https:\/\/github.com\/Kruiser8\/Kruiz-Control\/releases\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/Kruiser8\/Kruiz-Control\/releases<\/a><\/p>\n\n\n\n<p>Download and extract these files to somewhere you can remember.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Edit the Kruiz Control settings files<\/h2>\n\n\n\n<p>Inside the Kruiz Control directory is a \u201csettings\u201d folder containing a number of files that configure plugins against various services.<\/p>\n\n\n\n<p>We need to modify <code>settings\/chat\/oauth.txt<\/code> and <code>settings\/twitch\/user.txt<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">OAuth Token<\/h3>\n\n\n\n<p>Generating an OAuth token allows us to talk with the Twitch API.<\/p>\n\n\n\n<p><a href=\"https:\/\/id.twitch.tv\/oauth2\/authorize?response_type=token&amp;client_id=lavpr320qswa5w1whfcnpj6sb9lz7p&amp;redirect_uri=https:\/\/twitchapps.com\/tokengen\/&amp;scope=channel:manage:redemptions%20channel:read:redemptions%20chat:edit%20chat:read%20user:read:email\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/id.twitch.tv\/oauth2\/authorize?response_type=token&amp;client_id=lavpr320qswa5w1whfcnpj6sb9lz7p&amp;redirect_uri=https:\/\/twitchapps.com\/tokengen\/&amp;scope=channel:manage:redemptions%20channel:read:redemptions%20chat:edit%20chat:read%20user:read:email<\/a><\/p>\n\n\n\n<p>Click the above link to generate a token. You\u2019ll be prompted to authorize permissions as a Twitch account.<\/p>\n\n\n\n<p><em>Do not share this token with anyone else! It has permissions to manage your channel redemptions, to send messages in chat as the Twitch account that you choose and to see the email associated with the account. (I dunno why email address is needed but Comfy.js won\u2019t work without that permission)<\/em><\/p>\n\n\n\n<p>Open <code>settings\/chat\/oauth.txt<\/code> and replace the \u201ctoken\u201d part of the file with the generated token. Remove any spaces.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Channel Name<\/h3>\n\n\n\n<p>In <code>settings\/twitch\/user.txt<\/code> set the name of the channel that you want to watch for channel point redemptions. (Usually, your channel)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Chat User (Optional &#8211; not currently used)<\/h3>\n\n\n\n<p>Set <code>settings\/chat\/user.txt<\/code> to a Twitch channel. Setting this would allow Kruiz Control to send messages on your behalf to that channel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Make the Custom Rewards in Twitch<\/h2>\n\n\n\n<p><a href=\"https:\/\/dashboard.twitch.tv\/viewer-rewards\/channel-points\/rewards\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/dashboard.twitch.tv\/viewer-rewards\/channel-points\/rewards<\/a><\/p>\n\n\n\n<p>Make one reward per lamp colour.<\/p>\n\n\n\n<p>Suggested list:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Rainbow Lamp<\/li>\n\n\n\n<li>Blue Lamp<\/li>\n\n\n\n<li>Cyan Lamp<\/li>\n\n\n\n<li>Green Lamp<\/li>\n\n\n\n<li>Yellow Lamp<\/li>\n\n\n\n<li>Orange Lamp<\/li>\n\n\n\n<li>Red Lamp<\/li>\n\n\n\n<li>Magenta Lamp<\/li>\n<\/ul>\n\n\n\n<p>Optional: icons in 112&#215;112, 56&#215;56 and 28&#215;28 here: <a href=\"https:\/\/ale.chenonetta.com\/stuff\/ChannelPointIcons.zip\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/ale.chenonetta.com\/stuff\/ChannelPointIcons.zip<\/a>&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-8 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/uqifpdBaw8qaC-7opl7mfKCXvCSKJ_67DGURX1uJ1y5EY87UejR3ZczfqMYBw2W_oTfoFmD7t4WIPp-9gHPZGu-OVrEPuWKQbadYX_a3KlCd-3bJZ1oO8rKezjUZsX7_LPUwVGJAP9swXXmI2w\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/NiJ3XcLLbvcvXnQJyFRBwuf1SV2dDnWmH2jSw5RxzAEHpUGTCtKW5evk5RYmEg0MBu9OZ7GUAyMDltC4m_uABpJdP5Jutax3ZCW2PzBwHgpMEGRq5B3yLg0bPM4xSKilJIz2mjwjAA-I09ExPg\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/F0wot_BolqirWOQVT8st-FBDpxgHoiJUgvG1tMs4nCebO4wktSdZ32jkZ-k5k5STJ2RkFJO1-KJPJOLbiRGNblzw8Q-IU085P0L0LTwEH8BnTQu0uNuchOZQmbLOwN8seY1tUqlKcNRhMM35AA\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/JoN06rhjjfkNZ36I74ENJzAni2LdE24ucxX2a0MhAzVTiacPWDZP2ea4HIs_ziHfH4dVWljK5dSfKWnqivsTBaYN59A9yiMXq8y050F6OuovncPsHY3LEFO8F6gEQyZDLSCGHx7_GYoAAWTV4A\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/jHb_8GkcpjkH6XNUTfRw-Hq_VNXd2_W_uvBNOQ9pzBtCpQHQP31cwROsl4d3R2E5WcLutsf5papZx_p51a0vlRuuhb0LvoO4CdkyJkRooIbQjuYzEXI6fdl7tZIJS3jlfdWBTB6mz25rR3U0hg\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/kYkN0vB-Xqfwv6scenIGjSkSyfMs7u3SEmtMawOVtlcmagq3nIK0KOpv6dZZ4wJu7mgRQurwhDZwP0vfturnwRUjWSo7XgxIbqHzLXF0enVFzwKAmc76977c21Na43pybax4h_SRRqZzX6UL3w\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/bBq0HTOsh0IzjVzBlqGyYt-41lJL4dHVOh70Cp-Y9k_NEtovPqtnS_SgMy9O6xjEsq9fOgvUrGf6lRObl-QJqcvr8KzytJ-gneX5Y5SUyjBOgPf9mY01zW98ELZOCucg06sMCB66EYCSUKfn-Q\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/CfFAl0IBPN2xkMRjDYfcZSoman0yw7iN372O9MO01dEFI3bt7EGBCJth4Bc1rwNDZ3_tnQ8CJByITgEGewGsa8psbBlodTY3iOA0mii1Ke7-8oQBvH70OFR1l0w8mN-1a92P5qvNbW_BCajK7A\" alt=\"\"\/><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Edit the Kruiz Control triggers.txt file<\/h2>\n\n\n\n<p>Replace the contents of <code>triggers.txt<\/code> with the following. Note that the OnChannelPoint triggers need to match the names of the rewards from the step above.<\/p>\n\n\n\n<p><strong>Replace the IP address on line 2 (<\/strong><strong>http:\/\/192.168.0.113<\/strong><strong>) with the IP of the lamp.<\/strong><strong><\/strong><\/p>\n\n\n\n<p>Your lamp needs to be connected to the same network as your streaming PC.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>OnInit\nAPI Url SquidBeakon \"http:\/\/192.168.0.113\/json\/state\"\nAPI Method SquidBeakon POST\nAPI Header SquidBeakon \"Content-Type\" \"application\/json\"\n\nOnChannelPoint \"Rainbow Lamp\"\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{\\\"of\\\": 4, \\\"fx\\\": 110, \\\"sx\\\": 128, \\\"ix\\\": 128, \\\"pal\\\": 11}]}\"\nAPI Send SquidBeakon\n\nOnChannelPoint \"Blue Lamp\"\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{\\\"fx\\\": 0, \\\"col\\\": &#91;&#91;0, 0, 255]]}]}\"\nAPI Send SquidBeakon\n\nOnChannelPoint \"Cyan Lamp\"\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{\\\"fx\\\": 0, \\\"col\\\": &#91;&#91;0, 255, 200]]}]}\"\nAPI Send SquidBeakon\n\nOnChannelPoint \"Green Lamp\"\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{\\\"fx\\\": 0, \\\"col\\\": &#91;&#91;8, 255, 0]]}]}\"\nAPI Send SquidBeakon\n\nOnChannelPoint \"Yellow Lamp\"\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{\\\"fx\\\": 0, \\\"col\\\": &#91;&#91;255, 200, 0]]}]}\"\nAPI Send SquidBeakon\n\nOnChannelPoint \"Orange Lamp\"\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{\\\"fx\\\": 0, \\\"col\\\": &#91;&#91;255, 160, 0]]}]}\"\nAPI Send SquidBeakon\n\nOnChannelPoint \"Red Lamp\"\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{\\\"fx\\\": 0, \\\"col\\\": &#91;&#91;255, 0, 0]]}]}\"\nAPI Send SquidBeakon\n\nOnChannelPoint \"Magenta Lamp\"\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{\\\"fx\\\": 0, \\\"col\\\": &#91;&#91;255, 0, 255]]}]}\"\nAPI Send SquidBeakon<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Future enhancements:<\/h3>\n\n\n\n<p>There is a feature request to enable accepting or rejecting of channel point requests. <a href=\"https:\/\/github.com\/Kruiser8\/Kruiz-Control\/issues\/39\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/Kruiser8\/Kruiz-Control\/issues\/39<\/a><\/p>\n\n\n\n<p>Once this is implemented, we can update the trigger code to refund channel points if the lamp failed to update, and clear items out of the queue if it\u2019s successful.<\/p>\n\n\n\n<p>Alternatively, we could write our own code using Comfy.js!<\/p>\n\n\n\n<p>Twitch currently only allows cooldowns on a per-reward basis. Kruiz Control has the ability to track its own cooldowns. See <a href=\"https:\/\/github.com\/Kruiser8\/Kruiz-Control\/blob\/master\/js\/Documentation.md#cooldown\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/Kruiser8\/Kruiz-Control\/blob\/master\/js\/Documentation.md#cooldown<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Add Kruiz Control as a browser source in OBS<\/h2>\n\n\n\n<p>Add a new browser source. Select \u201cLocal File\u201d and pick the <code>index.html<\/code> file from the Kruiz Control directory that you extracted in step 1. Keeping this browser source active will listen for Channel Point redemptions.<\/p>\n\n\n\n<p>Select a reward in Twitch and if everything has been set up correctly, the lamp colours will change!<\/p>\n\n\n\n<p>If you make any changes to the files inside the Kruiz Control directory, including the settings or triggers.txt files, you <strong>must refresh your browser source in OBS <\/strong>for the changes to take effect.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Appendix: A single reward with user-provided colour<\/h2>\n\n\n\n<p>If you don\u2019t want to crowd your rewards with the lamp options, you can create one reward and allow it to control the lamp colours with the redemption message from your viewers.<\/p>\n\n\n\n<p>Using a single reward also allows for the Twitch cooldowns to be used. This means that a viewer can\u2019t override the colours set by another viewer until the cooldown ends.<\/p>\n\n\n\n<p>Replace triggers.txt with the text from the code block below. Create a single reward named \u201cSet Lamp Color\u201d and turn on the \u201cRequire Viewer to Enter Text\u201d checkbox.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>This trigger will search the text of the message that was attached to the points redemption and if one of the color keywords is found then the lamp colour will change. It\u2019s worth suggesting to the user what to enter in their message in the reward description, eg:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-style-default is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Set my squid lamp to rainbow, blue, cyan, green, yellow, orange, red or magenta by including one of these words in your message!<\/em><\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code>OnInit\nAPI Url SquidBeakon \"http:\/\/192.168.0.113\/json\/state\"\nAPI Method SquidBeakon POST\nAPI Header SquidBeakon \"Content-Type\" \"application\/json\"\n\nOnChannelPoint \"Set Lamp Color\"\nParam Lower message\nParam Keyword message \"rainbow\"\nIf 3 {matched} == true\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{\\\"of\\\": 4, \\\"fx\\\": 110, \\\"sx\\\": 128, \\\"ix\\\": 128, \\\"pal\\\": 11}]}\"\nAPI Send SquidBeakon\nExit\nParam Keyword message \"blue\"\nIf 3 {matched} == true\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{\\\"fx\\\": 0, \\\"col\\\": &#91;&#91;0, 0, 255]]}]}\"\nAPI Send SquidBeakon\nExit\nParam Keyword message \"cyan\"\nIf 3 {matched} == true\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{\\\"fx\\\": 0, \\\"col\\\": &#91;&#91;0, 255, 200]]}]}\"\nAPI Send SquidBeakon\nExit\nParam Keyword message \"green\"\nIf 3 {matched} == true\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{\\\"fx\\\": 0, \\\"col\\\": &#91;&#91;8, 255, 0]]}]}\"\nAPI Send SquidBeakon\nExit\nParam Keyword message \"yellow\"\nIf 3 {matched} == true\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{\\\"fx\\\": 0, \\\"col\\\": &#91;&#91;255, 200, 0]]}]}\"\nAPI Send SquidBeakon\nExit\nParam Keyword message \"orange\"\nIf 3 {matched} == true\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{\\\"fx\\\": 0, \\\"col\\\": &#91;&#91;255, 160, 0]]}]}\"\nAPI Send SquidBeakon\nExit\nParam Keyword message \"red\"\nIf 3 {matched} == true\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{\\\"fx\\\": 0, \\\"col\\\": &#91;&#91;255, 0, 0]]}]}\"\nAPI Send SquidBeakon\nExit\nParam Keyword message \"magenta\"\nIf 3 {matched} == true\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{\\\"fx\\\": 0, \\\"col\\\": &#91;&#91;255, 0, 255]]}]}\"\nAPI Send SquidBeakon\nExit<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Appendix: Customising Eye colours<\/h2>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/Sn-7I90V-8uFT9Fp4RNY61hUzG6ho6BhUIEBB71yDiu4neU1qGtoURl2a2MVkEvg0kpwJgGZQSFcVYvPg6SiNpiq2xxJ2myTd_SCpip_rClIZZ_WSy3geYsNARMKjbXepNQzUd9R3cPmPQ7OFQ\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/ckJg0mUht2b0ww0tdOK6iB5c2wY52pu1A4PwPWMfhjGGeLRjAUgM_rBmPXOWs9I6n7NGgeQ3qgsHtg-jMyhmBPlKhxqY43MXrTMldWLHFE_YYTDrQDRTjVOz5SdbYNWPv4Vody5MpUAH4U5vxA\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/_zvRMb635Mz5v5B4B_Qv93clFE3hvs58dQCZ5pptEsm4u57yoZBZyxNDbrOoBgF632m_E-H5xq7iOQteyxymEtFqCxqj3srryGcio1SJJbcl6p3IIicbputCnXv5JW4Idjy_rM6PVvoBMBouag\" alt=\"\"\/><\/figure>\n<\/figure>\n\n\n\n<p>Add the following trigger commands to triggers.txt. Make sure to create the corresponding rewards in the Twitch dashboard!<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>OnChannelPoint \"Red Eyes\"\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{},{\\\"col\\\": &#91;&#91;255, 0, 0]]}]}\"\nAPI Send SquidBeakon\n\nOnChannelPoint \"Lime Eyes\"\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{},{\\\"col\\\": &#91;&#91;255, 255, 0]]}]}\"\nAPI Send SquidBeakon\n\nOnChannelPoint \"White Eyes\"\nAPI RawData SquidBeakon \"{\\\"seg\\\": &#91;{},{\\\"col\\\": &#91;&#91;255, 255, 255]]}]}\"\nAPI Send SquidBeakon<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Appendix: Multiple Lamps<\/h2>\n\n\n\n<p>This sample sets up SquidBeakon1 and SquidBeakon2 with their own URLs so that they can be driven by separate rewards. Full support for multiple channel point settings is left as an exercise for the reader.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>OnInit\nAPI Url SquidBeakon1 \"http:\/\/192.168.0.113\/json\/state\"\nAPI Method SquidBeakon1 POST\nAPI Header SquidBeakon1 \"Content-Type\" \"application\/json\"\nAPI Url SquidBeakon2 \"http:\/\/192.168.0.114\/json\/state\"\nAPI Method SquidBeakon2 POST\nAPI Header SquidBeakon2 \"Content-Type\" \"application\/json\"\nOnChannelPoint \"Rainbow Lamp 1\"\nAPI RawData SquidBeakon1 \"{\\\"seg\\\": &#91;{\\\"of\\\": 4, \\\"fx\\\": 110, \\\"sx\\\": 128, \\\"ix\\\": 128, \\\"pal\\\": 11}]}\"\nAPI Send SquidBeakon1\n\nOnChannelPoint \"Rainbow Lamp 2\"\nAPI RawData SquidBeakon2 \"{\\\"seg\\\": &#91;{\\\"of\\\": 4, \\\"fx\\\": 110, \\\"sx\\\": 128, \\\"ix\\\": 128, \\\"pal\\\": 11}]}\"\nAPI Send SquidBeakon2<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Appendix: Tips for displaying your lamps on stream<\/h2>\n\n\n\n<p>The lamps are emitting light, which can be difficult to capture on camera. Some tips to improve the appearance of the lights:<\/p>\n\n\n\n<p><strong>Reflected surfaces<\/strong><\/p>\n\n\n\n<p>Nearby white or other reflective surfaces will convey the colours of the light<\/p>\n\n\n\n<p><strong>Ambient lighting<\/strong><\/p>\n\n\n\n<p>The lights will be washed out by bright ambient lighting. The frequencies of sunlight can be especially effective at washing out the lamp colours. Indoor lighting or a dimmed room are best!<\/p>\n\n\n\n<p><strong>Diffusion<\/strong><\/p>\n\n\n\n<p>A piece of printer paper or baking paper in front of the lights can be used to diffuse the colours. <a href=\"https:\/\/www.patreon.com\/file?h=66147772&amp;i=10698985\">This file<\/a> contains templates for paper cutouts that can be placed in or on the lamp.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">WLED JSON API<\/h2>\n\n\n\n<p>The commands in this document send JSON data via the WLED JSON API.<\/p>\n\n\n\n<p>API documentation here:<\/p>\n\n\n\n<p><a href=\"https:\/\/kno.wled.ge\/interfaces\/json-api\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/kno.wled.ge\/interfaces\/json-api\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Follow these steps to set up WLED colour changes as channel point rewards using Kruiz Control. These instructions are written specifically for my Squid Lamps but can be modified for use with any WLED project. Example video of this setup in action: EDIT updated 2022-12-21 Check out Riekelt&#8217;s project, KrakenCommand for an alternative setup! https:\/\/github.com\/riek-lt\/KrakenCommand &#8230; <a class=\"more-link\" href=\"https:\/\/ale.chenonetta.com\/blog\/2022\/05\/put-your-twitch-chat-in-control\/\"><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[54,511],"tags":[508,510,512],"class_list":{"0":"entry","1":"post","2":"publish","3":"author-admin","4":"post-1357","6":"format-standard","7":"category-code-2","8":"category-streaming","9":"post_tag-leds","10":"post_tag-squid-lamp","11":"post_tag-twitch"},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ale.chenonetta.com\/blog\/wp-json\/wp\/v2\/posts\/1357","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ale.chenonetta.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ale.chenonetta.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ale.chenonetta.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ale.chenonetta.com\/blog\/wp-json\/wp\/v2\/comments?post=1357"}],"version-history":[{"count":0,"href":"https:\/\/ale.chenonetta.com\/blog\/wp-json\/wp\/v2\/posts\/1357\/revisions"}],"wp:attachment":[{"href":"https:\/\/ale.chenonetta.com\/blog\/wp-json\/wp\/v2\/media?parent=1357"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ale.chenonetta.com\/blog\/wp-json\/wp\/v2\/categories?post=1357"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ale.chenonetta.com\/blog\/wp-json\/wp\/v2\/tags?post=1357"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}