UNPKG

@keload/node-red-contrib-js-philips-tv-control

Version:

A collection of nodes to control Philips TV with Node-RED, including Ambilight control.

92 lines (82 loc) 22.4 kB
<script type="text/html" data-template-name="ambilight"><div class="keload-node-red-contrib-js-philips-tv-control"><div id="keload-node-red-contrib-js-philips-tv-control-ambilight"><div class="dxp-template-form-row"><label for="node-input-tv"><i class="fa fa-tv"></i><span data-i18n="ambilight.TV">TV</span></label><div class="content"><input type="text" id="node-input-tv" data-i18n="[placeholder]ambilight.TV" placeholder=""></div></div><div class="dxp-template-form-row"><label for="node-input-name"><i class="fa fa-tag"></i><span data-i18n="ambilight.name">Name</span></label><div class="content"><input type="text" id="node-input-name" data-i18n="[placeholder]ambilight.name" placeholder="name"></div></div><div class="dxp-template-form-row"><label for="node-input-action"><i class="fa fa-bolt"></i><span data-i18n="ambilight.Action">Action</span></label><div class="content"><select id="node-input-action"></select></div></div><div class="dxp-template-form-row"><label for="node-input-value"><i class="fa fa-cube"></i><span data-i18n="ambilight.Value">Value</span></label><div class="content"><select id="node-input-value"></select></div></div><div class="dxp-template-form-row"><label for="node-input-returnInfo"><i class="fa fa-table"></i><span data-i18n="ambilight.return info">Return info</span></label><div class="content"><div class="checkbox"><input type="checkbox" id="node-input-returnInfo"><span class="italic">Return ambilight information after operation</span></div></div></div></div></div></script><script type="text/html" data-template-name="info"><div class="keload-node-red-contrib-js-philips-tv-control"><div id="keload-node-red-contrib-js-philips-tv-control-info"><div class="dxp-template-form-row"><label for="node-input-tv"><i class="fa fa-tv"></i><span data-i18n="info.TV">TV</span></label><div class="content"><input type="text" id="node-input-tv" data-i18n="[placeholder]info.TV" placeholder=""></div></div><div class="dxp-template-form-row"><label for="node-input-name"><i class="fa fa-tag"></i><span data-i18n="info.name">Name</span></label><div class="content"><input type="text" id="node-input-name" data-i18n="[placeholder]info.name" placeholder="name"></div></div><div class="dxp-template-form-row"><label for="node-input-kind"><i class="fa fa-bolt"></i><span data-i18n="info.Action">Action</span></label><div class="content"><select id="node-input-kind"></select></div></div></div></div></script><script type="text/html" data-template-name="philips-tv-config"><div class="keload-node-red-contrib-js-philips-tv-control"><div id="keload-node-red-contrib-js-philips-tv-control-philips-tv-config"><div class="dxp-template-form-row"><label for="node-config-input-name" data-i18n="philips-tv-config.name"><i class="fa fa-tag"></i></label><div class="content"><input type="text" id="node-config-input-name" data-i18n="[placeholder]philips-tv-config.name"></div></div><div class="dxp-template-form-row"><label for="node-config-input-ip"><i class="fa fa-link"></i>TV IP</label><div class="content"><input type="text" id="node-config-input-ip" placeholder="192.168.1.22"></div></div><div class="dxp-template-form-row"><label for="node-config-input-url"><i class="fa fa-link"></i>API URL</label><div class="content"><input type="text" id="node-config-input-url" disabled="disabled"><div class="hint"><i class="fa fa-info-circle"></i> Port<span class="font-bold">1926</span> and version<span class="font-bold">6</span> is automatically added to the API Url.</div></div></div><div class="alert alert-info mb:2 text-center"><i class="fa fa-info-circle"></i><br>If you already have credentials, you can fill in the following fields<br>Otherwise, you can try to pair the TV below.</div><div class="dxp-template-form-row"><label for="node-config-input-digest_user"><i class="fa fa-user"></i>Digest User</label><div class="content"><input type="text" id="node-config-input-digest_user" placeholder="Digest user name"></div></div><div class="dxp-template-form-row"><label for="node-config-input-digest_user"><i class="fa fa-lock"></i>Digest Password</label><div class="content"><input type="password" id="node-config-input-digest_password" placeholder="Digest password"></div></div><div class="form-row text-center hidden" id="pairing-section"><button class="bg-blue-500 hover:bg-blue-700 text-white py-2 px-4 rounded mb-2" id="trigger-action-start-pairing">Start Pairing</button><div class="hidden" id="pairing-ready"><div class="alert alert-success">Your TV is ready to pair. 🎉<br>Please enter the pin code displayed on your TV.</div><div><input class="text-center !w-[30%]" id="pairing-pin-input" type="text"></div><div class="hidden text-red-800" id="invalid-pin">Pin must be 4 digits.</div><button class="bg-blue-500 hover:bg-blue-700 text-white py-2 px-4 rounded mt-4 mb-4" id="trigger-action-complete-pairing">Complete Pairing</button><div class="hidden alert alert-success" id="paring-success">Your TV is successfully paired. 🎉</div></div></div></div></div></script><script type="text/html" data-template-name="send-key"><div class="keload-node-red-contrib-js-philips-tv-control"><div id="keload-node-red-contrib-js-philips-tv-control-send-key"><div class="dxp-template-form-row"><label for="node-input-tv"><i class="fa fa-tv"></i><span data-i18n="send-key.TV">TV</span></label><div class="content"><input type="text" id="node-input-tv" data-i18n="[placeholder]send-key.TV" placeholder=""></div></div><div class="dxp-template-form-row"><label for="node-input-name"><i class="fa fa-tag"></i><span data-i18n="send-key.name">Name</span></label><div class="content"><input type="text" id="node-input-name" data-i18n="[placeholder]send-key.name" placeholder="name"></div></div><div class="dxp-template-form-row"><label for="node-input-key"><i class="fa fa-keyboard-o"></i><span data-i18n="send-key.Key">Key</span></label><div class="content"><select id="node-input-key"></select></div></div></div></div></script> <style>.keload-node-red-contrib-js-philips-tv-control{.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mt-4{margin-top:1rem}.\!block{display:block!important}.block{display:block}.\!hidden{display:none!important}.hidden{display:none}.\!w-\[30\%\]{width:30%!important}.rounded{border-radius:.25rem}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.text-center{text-align:center}.\!font-bold{font-weight:700!important}.font-bold{font-weight:700}.italic{font-style:italic}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.alert{border-radius:.5rem;font-size:.875rem;line-height:1.25rem;margin-bottom:1rem;padding:1rem}.alert-info{background-color:rgb(239 246 255/var(--tw-bg-opacity,1));color:rgb(30 64 175/var(--tw-text-opacity,1))}.alert-info,.alert-success{--tw-bg-opacity:1;--tw-text-opacity:1}.alert-success{background-color:rgb(240 253 244/var(--tw-bg-opacity,1));color:rgb(22 101 52/var(--tw-text-opacity,1))}div.form-row{select{width:70%}input[type=checkbox]{margin-top:0!important;width:auto!important}}.dxp-template-form-row{align-items:flex-start;display:flex;margin-bottom:1rem;label{flex:none;margin-right:1rem;overflow:hidden;padding-bottom:.375rem;padding-top:.375rem;position:relative;text-overflow:ellipsis;white-space:nowrap;width:100px}label{i{margin-right:.25rem}}.content{flex:1 1 0%}.content{.red-ui-typedInput-container,input,select,textarea{width:100%!important}.red-ui-typedInput-container{border:1px solid var(--red-ui-form-input-border-color);.red-ui-typedInput-type-select{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.red-ui-typedInput-type-select{.red-ui-typedInput-type-label{display:inline!important}.red-ui-typedInput-icon{margin-left:5px!important}}.red-ui-typedInput-option-trigger{.red-ui-typedInput-option-label{background-color:transparent!important;margin-top:.5rem!important}}}div.checkbox{margin-top:.35rem!important}div.checkbox{input[type=checkbox]{width:auto!important}}&.force-w-full{>div{width:100%!important}}}.hint{font-size:.875rem;line-height:1.25rem;margin-top:.25rem;--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.hint{&.hint-info{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}&.hint-danger{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}&.hint-success{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}&.hint-warning{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity,1))}}}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: } /* ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com */*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}}</style> <script type="application/javascript">(()=>{function C(e){return Object.prototype.toString.call(e).slice(8,-1)}function v(e){if(C(e)!=="Object")return!1;let t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function O(e){return C(e)==="Symbol"}function A(e,t,r,i){let o={}.propertyIsEnumerable.call(i,t)?"enumerable":"nonenumerable";o==="enumerable"&&(e[t]=r),o==="nonenumerable"&&Object.defineProperty(e,t,{value:r,enumerable:!1,writable:!0,configurable:!0})}function _(e,t,r){if(!v(t))return t;let i={};if(v(e)){let h=Object.getOwnPropertyNames(e),d=Object.getOwnPropertySymbols(e);i=[...h,...d].reduce((a,n)=>{if(n==="__proto__")return a;let N=e[n];return(!O(n)&&!Object.getOwnPropertyNames(t).includes(n)||O(n)&&!Object.getOwnPropertySymbols(t).includes(n))&&A(a,n,N,e),a},{})}let o=Object.getOwnPropertyNames(t),u=Object.getOwnPropertySymbols(t);return[...o,...u].reduce((h,d)=>{if(d==="__proto__")return h;let a=t[d],n=v(e)?e[d]:void 0;return n!==void 0&&v(a)&&(a=_(n,a)),A(h,d,a,t),h},i)}function K(e,...t){return t.reduce((r,i)=>_(r,i),e)}var M={};function s(e){return K(M,e)}function q(e){let t=e.startsWith("$"),r=e.startsWith("$$"),i=e.startsWith("#node-config-input")||e.startsWith("#node-input");return{isNodeIdShortcut:t,isNodeConfigIdShortcut:r,isFullSelector:i,value:t||r||i}}function y(e){let t=q(e);return t.isNodeConfigIdShortcut?`#node-config-input-${e.replace("$$","")}`:t.isNodeIdShortcut?`#node-input-${e.replace("$","")}`:e}function p(e,t,r){let i=y(e),o=t;r!=null&&r.emptyValue&&(o=[{value:"",text:r.emptyValue},...t]),$(i).empty().append(o.map(u=>$("<option>",{value:u.value,text:u.text,selected:u.value===(r==null?void 0:r.selected)})))}function b(e,t,r={additionalEvents:[]}){let i=(Array.isArray(e)?e:[e]).map(y).join(", "),o=["input",...r.additionalEvents];$(i).on(o.join(" "),()=>{let u=$(i).map(function(){return $(this).val()}).get();t(u)})}function I(e,t){let r=y(e);$(r).val(t)}function l(e){let t=y(e);return $(t)}var c="philips tv",f="#E28413",m="font-awesome/fa-tv";var G=["Adjust","AmbilightOnOff","Back","BlueColour","ChannelStepDown","ChannelStepUp","Confirm","CursorDown","CursorLeft","CursorRight","CursorUp","Digit0","Digit1","Digit2","Digit3","Digit4","Digit5","Digit6","Digit7","Digit8","Digit9","Dot","FastForward","Find","GreenColour","Home","Info","Mute","Next","Online","Options","Pause","PlayPause","Previous","Record","RedColour","Rewind","Source","Standby","Stop","Subtitle","Teletext","Viewmode","VolumeDown","VolumeUp","WatchTV","YellowColour"],U=["COMFORT","GAME","IMMERSIVE","NATURAL","RELAX","STANDARD","VIVID"],B=["ENERGY_ADAPTIVE_BRIGHTNESS","ENERGY_ADAPTIVE_COLORS","KNIGHT_RIDER_ALTERNATING","MODE_RANDOM","RANDOM_PIXEL_FLASH","SPECTRUM_ANALYSER","VU_METER"],x=[0,1,2,3,4,5,6,7,8,9,10],w=["increase","decrease"],E=["0","1","2","3","4","5","6","7","8","9","10"],Y=[...x,...E],P=[...x,...E,...w],Z=[...E,...w],g={ambilight:{followAudioMode:B,followVideoMode:U,brightnessAvailableValues:P,ambilightChangeBrightnessAvailableValues:P,ambilightBrightnessAvailableValues:Y,ambilightChangeBrightnessAvailableSinglesValues:Z},inputKeys:G};var D=[{text:"Set Brightness",value:"set_brightness"},{text:"Set Video Mode",value:"set_video_mode"}],J=g.ambilight.ambilightChangeBrightnessAvailableSinglesValues,W=g.ambilight.followVideoMode,T={set_brightness:J,set_video_mode:W};var H=s({category:c,color:f,defaults:{name:{value:""},action:{value:""},value:{value:""},returnInfo:{value:!1},tv:{value:"",type:"philips-tv-config",required:!0}},inputs:1,outputs:1,icon:m,paletteLabel:"Ambilight",label:function(){return this.name||this.action||"Ambilight"},oneditprepare:function(){p("$action",D,{emptyValue:"Select an action",selected:this.action});let e=t=>{let r=(T[t]||[]).map(i=>({value:i,text:i}));p("$value",r,{selected:this.value})};e(this.action),b(["$action"],([t])=>{e(t)})}}),V=H;var R={kinds:[{value:"tv_structure",text:"TV Structure"},{value:"tv_ambilight_info",text:"Ambilight Info"},{value:"tv_system",text:"System Info"}],getAvailableKinds(){return this.kinds.map(e=>e.value)}};var X=s({category:c,color:f,defaults:{name:{value:""},tv:{value:"",type:"philips-tv-config",required:!0},kind:{value:""}},inputs:1,outputs:1,icon:m,paletteLabel:"Info",label:function(){return this.name||this.kind||"Info"},oneditprepare:function(){p("$kind",R.kinds,{selected:this.kind,emptyValue:"-- from payload --"})}}),F=X;function z(e){return/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(e)}function Q(e){return/^(([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4}|:)|(([0-9a-fA-F]{1,4}:){1,6}:)|(([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2})|(([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3})|(([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4})|(([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5})|([0-9a-fA-F]{1,4}:)((:[0-9a-fA-F]{1,4}){1,6})|(:((:[0-9a-fA-F]{1,4}){1,7}|:))|(fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,})|(::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9])?[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9])?[0-9]))|(([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9])?[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9])?[0-9])))$/.test(e)}function S(e){return z(e)||Q(e)}var j=s({category:"config",defaults:{name:{value:"",required:!0},url:{value:"",required:!0},ip:{value:"",required:!0,validate:e=>S(e)}},credentials:{digest_user:{type:"text"},digest_password:{type:"password"}},label:function(){return this.name||"Philips TV Configuration"},oneditprepare:function(){let e=r=>`https://${r}:1926/6`,t=r=>{RED.notify(`Error : ${r}`,{type:"error",timeout:1e4})};$("#trigger-action-start-pairing").on("click",()=>{$.ajax({url:"js-philips-tv-control/pairing",type:"POST",data:{action:"start",ip:this.ip||l("$$ip").val()},beforeSend(){$("#pairing-ready").addClass("hidden")},success:r=>{$("#pairing-ready").removeClass("hidden")},error:r=>{t(r.responseJSON.message)}})}),$("#trigger-action-complete-pairing").on("click",()=>{$.ajax({url:"js-philips-tv-control/pairing",type:"POST",data:{action:"complete",pin:l("#pairing-pin-input").val()},beforeSend(){l("#invalid-pin").addClass("hidden");let r=l("#pairing-pin-input").val();if(!/^\d{4}$/.test(r))return l("#invalid-pin").removeClass("hidden"),!1},success:r=>{$("#paring-success").removeClass("hidden"),l("$$digest_user").val(r.user),l("$$digest_password").val(r.password)},error:r=>{t(r.responseJSON.message)}})}),this.ip&&S(this.ip)&&$("#pairing-section").removeClass("hidden"),b(["$$ip"],([r])=>{let i=e(r);I("$$url",i),S(r)?$("#pairing-section").removeClass("hidden"):$("#pairing-section").addClass("hidden")})}});var ee=g.inputKeys,k=ee.map(e=>({value:e,text:e}));var te=s({category:c,color:f,defaults:{name:{value:""},tv:{value:"",type:"philips-tv-config",required:!0},key:{value:""}},inputs:1,outputs:1,icon:m,paletteLabel:"Send Key",label:function(){return this.name||this.key||"Send Key"},oneditprepare:function(){p("$key",k,{selected:this.key,emptyValue:"-- from payload --"})}}),L=te;window.RED.nodes.registerType("ambilight",V);window.RED.nodes.registerType("info",F);window.RED.nodes.registerType("philips-tv-config",j);window.RED.nodes.registerType("send-key",L);})();</script> <script type="text/markdown" data-help-name="ambilight"> Manage Ambilight brightness and modes. _If payload is passed, it will set values passed in the payload. All other values configured in the node will be ignored._ Valid `msg.payload`: ``` { "action": "set_brightness", "value": "0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | increase | decrease" } ``` ``` { "action": "set_video_mode", "value": "COMFORT | GAME | IMMERSIVE | NATURAL | RELAX | STANDARD | VIVID" } ``` </script> <script type="text/markdown" data-help-name="info"> Get TV information System, Ambilight current information and TV structure. _If payload is passed, it will set values passed in the payload. All other values configured in the node will be ignored._ Valid `msg.payload`: * `tv_structure` * `tv_ambilight_info` * `tv_system` </script> <script type="text/markdown" data-help-name="send-key"> Send key to your TV (Play, Pause, Volume Up, Volume Down, etc.) _If payload is passed, it will set values passed in the payload. All other values configured in the node will be ignored._ Valid `msg.payload`: * `Adjust` * `AmbilightOnOff` * `Back` * `BlueColour` * `ChannelStepDown` * `ChannelStepUp` * `Confirm` * `CursorDown` * `CursorLeft` * `CursorRight` * `CursorUp` * `Digit0` * `Digit1` * `Digit2` * `Digit3` * `Digit4` * `Digit5` * `Digit6` * `Digit7` * `Digit8` * `Digit9` * `Dot` * `FastForward` * `Find` * `GreenColour` * `Home` * `Info` * `Mute` * `Next` * `Online` * `Options` * `Pause` * `PlayPause` * `Previous` * `Record` * `RedColour` * `Rewind` * `Source` * `Standby` * `Stop` * `Subtitle` * `Teletext` * `Viewmode` * `VolumeDown` * `VolumeUp` * `WatchTV` * `YellowColour` </script>